From cdc1b116de759fe6ffdf664bf7504fbb9dae8e0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Fri, 5 Dec 2025 10:47:49 +0800 Subject: [PATCH 01/57] =?UTF-8?q?fix(ai-demo):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=B8=8D=E5=BF=85=E8=A6=81=E6=8D=A2=E8=A1=8C=E7=AC=A6=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=9C=A8=E9=A1=B5=E9=9D=A2=20(#1540)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/assets/scripts/ai-chat-demo.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/assets/scripts/ai-chat-demo.js b/examples/assets/scripts/ai-chat-demo.js index 668ed333b..48bac8e03 100644 --- a/examples/assets/scripts/ai-chat-demo.js +++ b/examples/assets/scripts/ai-chat-demo.js @@ -144,8 +144,6 @@ function ensureChatDemoDom() { border-radius: 8px; padding: 10px 12px; box-shadow: 0 1px 2px rgba(0,0,0,0.04); - white-space: pre-wrap; - word-break: break-word; box-sizing: border-box; } From 7e36e89ac2f8ef038b30807e590db399317d670c Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Fri, 5 Dec 2025 11:39:04 +0800 Subject: [PATCH 02/57] Revise streaming rendering terminology in README Updated the README to reflect changes in streaming rendering terminology and added a section on incremental rendering. --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3650b8700..d6199985d 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Cherry Markdown Writer is a Javascript Markdown editor. It has the advantages su - [IMG WYSIWYG](https://tencent.github.io/cherry-markdown/examples/img.html) - [Table WYSIWYG](https://tencent.github.io/cherry-markdown/examples/table.html) - [Headers with Auto Num](https://tencent.github.io/cherry-markdown/examples/head_num.html) -- [Stream Input Mode (AI chat scenario)](https://tencent.github.io/cherry-markdown/examples/ai_chat.html) +- [Streaming rendering Mode (AI chat scenario)](https://tencent.github.io/cherry-markdown/examples/ai_chat.html) - [VIM Editing Mode](https://tencent.github.io/cherry-markdown/examples/vim.html) - [Utilize Your Own Mermaid.js](https://tencent.github.io/cherry-markdown/examples/mermaid.html) - [Custom Code Block Wrapper](https://tencent.github.io/cherry-markdown/examples/custom_codeblock_wrapper.html) @@ -50,6 +50,22 @@ Developer can call and instantiate Cherry Markdown Editor in a very simple way. When the syntax that Cherry Markdown writer support can not meet your needs, secondary development or function extension can be carried out quickly. At the same time, Cherry Markdown writer should be implemented by pure JavaScript, and should not rely on framework technology such as angular, vue and react. Framework only provide a container environment. +### Incremental / Progressive / Streaming rendering + +After enabling streaming rendering, Cherry will automatically complete the following syntax elements to avoid exposing Markdown source code, ensuring stable output during the streaming process([demo](https://tencent.github.io/cherry-markdown/examples/ai_chat.html)): +- Headings +- Bold and italic text +- Hyperlinks +- Images and audio/video +- Inline code blocks +- Block code blocks +- Inline formulas +- Block formulas +- Unordered lists +- Tables +- Mermaid diagrams +- Footnotes + ## Feature ### Syntax Feature From fc55588b38eb6e896c2482d34601b14b93eb9cbe Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Fri, 5 Dec 2025 11:42:06 +0800 Subject: [PATCH 03/57] Add stream rendering section to README.CN.md Added section on stream rendering and auto-completion features. --- README.CN.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.CN.md b/README.CN.md index 85000223b..e9a823347 100644 --- a/README.CN.md +++ b/README.CN.md @@ -50,6 +50,23 @@ Cherry Markdown Writer 是一款 Javascript Markdown 编辑器,具有开箱即 当 Cherry Markdown 编辑器默认支持的语法无法满足需求时,可以进行二次开发或功能扩展。Cherry 基于纯 JavaScript 实现,不依赖 Angular、Vue、React 等框架(框架仅作为容器环境)。 +### 流式渲染 + +开启流式渲染后,cherry会对以下语法进行**自动补全**,避免出现Markdown源码,以达到在流式输出过程中稳定输出的效果([demo](https://tencent.github.io/cherry-markdown/examples/ai_chat.html)): + +- 标题 +- 加粗、斜体 +- 超链接 +- 图片、音视频 +- 行内代码块 +- 段落代码块 +- 行内公式 +- 段落公式 +- 无序列表 +- 表格 +- mermaid画图 +- 脚注 + ## 功能 ### 语法功能 From 8d4fa9b0cddd507d072638eef7f227ac9b303f7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Fri, 5 Dec 2025 16:28:28 +0800 Subject: [PATCH 04/57] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20CNB=20?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E9=85=8D=E7=BD=AE=E5=92=8C=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81=20(#1542)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 添加 CNB 同步配置和工作流 * feat: 更新 README 文件以添加 CNB 云原生开发徽章 * fix: 修正 .cnb.yml 中的 secret.yml 链接格式 --- .cnb.yml | 16 ++++++++++++++++ .github/workflows/sync_to_cnb.yml | 21 +++++++++++++++++++++ README.CN.md | 2 +- README.md | 2 +- logo/cnb-badge.svg | 16 ++++++++++++++++ 5 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 .cnb.yml create mode 100644 .github/workflows/sync_to_cnb.yml create mode 100644 logo/cnb-badge.svg diff --git a/.cnb.yml b/.cnb.yml new file mode 100644 index 000000000..ed582eac1 --- /dev/null +++ b/.cnb.yml @@ -0,0 +1,16 @@ +# .cnb.yml +"**": + push: + - imports: + - https://cnb.cool/tencent/cherry-markdown/cherry-markdown-secret/-/blob/main/secret.yml + stages: + # cnb 同步代码到 github 仓库 https://cnb.cool/cnb/plugins/tencentcom/git-sync#%E4%BB%8E-cnb-%E5%90%8C%E6%AD%A5%E5%88%B0-github + - name: sync to github + image: tencentcom/git-sync + settings: + target_url: https://github.com/Tencent/cherry-markdown.git + auth_type: https + username: ${CHERRY_MARKDOWN_USERNAME} + password: ${CHERRY_MARKDOWN_GITHUB_BLOG_TOKEN} + insecure_skip_verify: true + timeout: 300 \ No newline at end of file diff --git a/.github/workflows/sync_to_cnb.yml b/.github/workflows/sync_to_cnb.yml new file mode 100644 index 000000000..90de21ad3 --- /dev/null +++ b/.github/workflows/sync_to_cnb.yml @@ -0,0 +1,21 @@ +# .github/workflows/sync-cnb.yml + +name: Sync to CNB +on: [push] + +jobs: + sync: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Sync to CNB Repository + uses: docker://tencentcom/git-sync + env: + PLUGIN_TARGET_URL: "https://cnb.cool/tencent/cherry-markdown/cherry-markdown.git" + PLUGIN_AUTH_TYPE: "https" + PLUGIN_USERNAME: "cnb" + PLUGIN_PASSWORD: ${{ secrets.CHERRY_MARKDOWN_CNB_SYNC_GITHUB }} + PLUGIN_FORCE: "true" diff --git a/README.CN.md b/README.CN.md index e9a823347..1ee88c2ae 100644 --- a/README.CN.md +++ b/README.CN.md @@ -2,7 +2,7 @@ # Cherry Markdown Writer -[![Cloud Studio Template](https://cs-res.codehub.cn/common/assets/icon-badge.svg)](https://cloudstudio.net#https://github.com/Tencent/cherry-markdown) +[![cnb 云原生开发](./logo/cnb-badge.svg)](https://cnb.cool/tencent/cherry-markdown/cherry-markdown) [![Cloud Studio Template](https://cs-res.codehub.cn/common/assets/icon-badge.svg)](https://cloudstudio.net#https://github.com/Tencent/cherry-markdown) 简体中文 | [English](./README.md) diff --git a/README.md b/README.md index d6199985d..99d0517ae 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Cherry Markdown Writer -[![Cloud Studio Template](https://cs-res.codehub.cn/common/assets/icon-badge.svg)](https://cloudstudio.net#https://github.com/Tencent/cherry-markdown) +[![cnb 云原生开发](./logo/cnb-badge.svg)](https://cnb.cool/tencent/cherry-markdown/cherry-markdown) [![Cloud Studio Template](https://cs-res.codehub.cn/common/assets/icon-badge.svg)](https://cloudstudio.net#https://github.com/Tencent/cherry-markdown) English | [简体中文](./README.CN.md) diff --git a/logo/cnb-badge.svg b/logo/cnb-badge.svg new file mode 100644 index 000000000..63f12d630 --- /dev/null +++ b/logo/cnb-badge.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + From a2967c343cddb61bddc066f31206fa77ed4a9290 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Fri, 5 Dec 2025 16:35:03 +0800 Subject: [PATCH 05/57] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20.cnb.yml=20?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=20GitHub=20=E4=BB=A4=E7=89=8C=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E5=90=8D=E7=A7=B0=20(#1543)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cnb.yml b/.cnb.yml index ed582eac1..aac9d8203 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -11,6 +11,6 @@ target_url: https://github.com/Tencent/cherry-markdown.git auth_type: https username: ${CHERRY_MARKDOWN_USERNAME} - password: ${CHERRY_MARKDOWN_GITHUB_BLOG_TOKEN} + password: ${CHERRY_MARKDOWN_GITHUB_TOKEN} insecure_skip_verify: true timeout: 300 \ No newline at end of file From b261e1633b067d09a0396ed156bc111661f0ecf5 Mon Sep 17 00:00:00 2001 From: liweijie0812 <674416404@qq.com> Date: Wed, 10 Dec 2025 09:09:19 +0800 Subject: [PATCH 06/57] =?UTF-8?q?chore:=20=20github=20=E5=88=86=E6=94=AF?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=90=8C=E6=AD=A5=E5=88=A0=E9=99=A4cnb=20?= =?UTF-8?q?=E5=88=86=E6=94=AF=20(#1550)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci(cnb): sync github delete branch * chore: upgrade checkout v6 --- .github/workflows/sync_to_cnb.yml | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/sync_to_cnb.yml b/.github/workflows/sync_to_cnb.yml index 90de21ad3..714349b50 100644 --- a/.github/workflows/sync_to_cnb.yml +++ b/.github/workflows/sync_to_cnb.yml @@ -1,13 +1,16 @@ # .github/workflows/sync-cnb.yml name: Sync to CNB -on: [push] +on: + - push + - delete + jobs: - sync: + sync-push: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 @@ -19,3 +22,14 @@ jobs: PLUGIN_USERNAME: "cnb" PLUGIN_PASSWORD: ${{ secrets.CHERRY_MARKDOWN_CNB_SYNC_GITHUB }} PLUGIN_FORCE: "true" + + sync-delete-branch: + if: ${{ github.repository == 'Tencent/cherry-markdown' && github.event_name == 'delete' && github.event.ref_type == 'branch' }} + runs-on: ubuntu-latest + steps: + - uses: TDesignOteam//tdesign-pr-trigger-action@develop + with: + repo: 'tencent/cherry-markdown/cherry-markdown' + token: ${{ secrets.CHERRY_MARKDOWN_CNB_SYNC_GITHUB }} + branch: ${{ github.event.ref }} + trigger: '/delete-cnb-branch' From a275692e01fb3f02055d1ec63fb363a3c8855222 Mon Sep 17 00:00:00 2001 From: lyngai Date: Thu, 11 Dec 2025 11:17:25 +0800 Subject: [PATCH 07/57] fix: image syntax compatibility (#1555) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(ref): fix use reference after empty alt text * fix(cache): fix broken data uri after bigdata restored * fix(checkbox): fix incorrect checkbox replacement from click * fix(url): fix empty url not restored * chore: update snapshot * chore: update yarn lock * chore: add changeset Addresses image syntax issues and resolves bug #1554. --------- Co-authored-by: 阿菜 Cai --- .changeset/tiny-items-scream.md | 5 + packages/cherry-markdown/src/Engine.js | 22 +- packages/cherry-markdown/src/UrlCache.js | 2 +- .../src/core/hooks/CommentReference.js | 26 +- .../src/toolbars/PreviewerBubble.js | 4 +- packages/cherry-markdown/src/utils/regexp.js | 2 +- .../__snapshots__/CommonMark.spec.ts.snap | 4 +- yarn.lock | 656 ++++-------------- 8 files changed, 185 insertions(+), 536 deletions(-) create mode 100644 .changeset/tiny-items-scream.md diff --git a/.changeset/tiny-items-scream.md b/.changeset/tiny-items-scream.md new file mode 100644 index 000000000..9f07413c3 --- /dev/null +++ b/.changeset/tiny-items-scream.md @@ -0,0 +1,5 @@ +--- +"cherry-markdown": patch +--- + +fix: image syntax compatibility, Fixes #1554 diff --git a/packages/cherry-markdown/src/Engine.js b/packages/cherry-markdown/src/Engine.js index 055918543..fda2f7d7d 100644 --- a/packages/cherry-markdown/src/Engine.js +++ b/packages/cherry-markdown/src/Engine.js @@ -19,7 +19,7 @@ import NestedError, { $expectTarget, $expectInherit, $expectInstance } from './u import CryptoJS from 'crypto-js'; import SyntaxBase from './core/SyntaxBase'; import ParagraphBase from './core/ParagraphBase'; -import { PUNCTUATION, longTextReg, imgBase64Reg, imgDrawioXmlReg } from './utils/regexp'; +import { PUNCTUATION, longTextReg, imgBase64Reg, imgDrawioXmlReg, base64Reg } from './utils/regexp'; import { escapeHTMLSpecialChar } from './utils/sanitize'; import Logger from './Logger'; import { configureMathJax } from './utils/mathjax'; @@ -343,7 +343,12 @@ export default class Engine { // 缓存大文本数据,用以提升渲染性能 $cacheBigData(md) { - let $md = md.replace(imgBase64Reg, (whole, m1, m2) => { + let $md = md.replace(base64Reg, (dataUri) => { + const cacheKey = `data:cherry/cache;sha256,${this.hash(dataUri)}`; + this.cachedBigData[cacheKey] = dataUri; + return cacheKey; + }); + $md = $md.replace(imgBase64Reg, (whole, m1, m2) => { const cacheKey = `bigDataBegin${this.hash(m2)}bigDataEnd`; this.cachedBigData[cacheKey] = m2; return `${m1}${cacheKey})`; @@ -361,10 +366,17 @@ export default class Engine { return $md; } + /** + * @param {string} md + */ $deCacheBigData(md) { - return md.replace(/bigDataBegin[^\n]+?bigDataEnd/g, (whole) => { - return this.cachedBigData[whole]; - }); + return md + .replace(/data:cherry\/cache;sha256,[0-9a-f]+/g, (cacheUri) => { + return this.cachedBigData[cacheUri]; + }) + .replace(/bigDataBegin[^\n]+?bigDataEnd/g, (whole) => { + return this.cachedBigData[whole]; + }); } /** diff --git a/packages/cherry-markdown/src/UrlCache.js b/packages/cherry-markdown/src/UrlCache.js index d606f1055..16dda9c25 100644 --- a/packages/cherry-markdown/src/UrlCache.js +++ b/packages/cherry-markdown/src/UrlCache.js @@ -84,7 +84,7 @@ export default class UrlCache { const cherryInnerLinkRegex = /cherry-inner:\/\/([0-9a-f]+)/gi; const $html = html.replace(cherryInnerLinkRegex, (match) => { const originalUrl = UrlCache.get(match); - return originalUrl || match; + return typeof originalUrl === 'string' ? originalUrl : match; }); return $html; } diff --git a/packages/cherry-markdown/src/core/hooks/CommentReference.js b/packages/cherry-markdown/src/core/hooks/CommentReference.js index b3e7cc40c..d5f02c947 100644 --- a/packages/cherry-markdown/src/core/hooks/CommentReference.js +++ b/packages/cherry-markdown/src/core/hooks/CommentReference.js @@ -38,9 +38,26 @@ export default class CommentReference extends ParagraphBase { this.commentCache = {}; } + /** + * 去除包裹 url 的尖括号 + * @param {string} wrappedUrl + */ + unwrapUrl(wrappedUrl) { + const url = wrappedUrl.trim(); + // 原始的尖括号 + if (url.startsWith('<') && url.endsWith('>')) { + return url.slice(1, -1); + } + // 被转义保护的尖括号 + if (url.startsWith('<') && url.endsWith('>')) { + return url.slice(5, -5); + } + return url; + } + pushCommentReferenceCache(key, cache) { const [url, ...args] = cache.split(/[ ]+/g); - const innerUrl = UrlCache.set(url); + const innerUrl = UrlCache.set(this.unwrapUrl(url)); this.commentCache[`${key}`.toLowerCase()] = [innerUrl, ...args].join(' '); } @@ -48,6 +65,11 @@ export default class CommentReference extends ParagraphBase { return this.commentCache[`${key}`.toLowerCase()] || null; } + /** + * + * @param {string} str + * @returns + */ beforeMakeHtml(str) { let $str = str; if (this.test($str)) { @@ -57,7 +79,7 @@ export default class CommentReference extends ParagraphBase { return lineFeeds.join(''); }); // 替换实际引用 - const refRegex = /(\[[^\]\n]+?\])?(?:\[([^\]\n]+?)\])/g; // 匹配[xxx][ref]形式的内容,不严格大小写 + const refRegex = /(\[[^\]]*?\])?(?:\[([^\]\n]+?)\])/g; // 匹配[xxx][ref]形式的内容,不严格大小写 $str = $str.replace(refRegex, (match, leadingContent, key) => { const cache = this.getCommentReferenceCache(key); if (cache) { diff --git a/packages/cherry-markdown/src/toolbars/PreviewerBubble.js b/packages/cherry-markdown/src/toolbars/PreviewerBubble.js index 4a1e31234..a40976bb2 100644 --- a/packages/cherry-markdown/src/toolbars/PreviewerBubble.js +++ b/packages/cherry-markdown/src/toolbars/PreviewerBubble.js @@ -246,11 +246,11 @@ export default class PreviewerBubble { let targetCh = -1; contents.forEach((lineContent, lineIdx) => { const tmp = lineContent.trim(); // 去掉句首的空格和制表符 - if (tmp.startsWith('- [ ]') || tmp.startsWith('- [x]')) { + if (/^-\s+\[[ x]\]/i.test(tmp)) { // 如果是个checkbox if (editorCheckboxCount === this.checkboxIdx) { targetLine = lineIdx; - targetCh = lineContent.indexOf('- [') + 3; + targetCh = lineContent.indexOf('[') + 1; } editorCheckboxCount += 1; } diff --git a/packages/cherry-markdown/src/utils/regexp.js b/packages/cherry-markdown/src/utils/regexp.js index aa79217cf..899efc1b9 100644 --- a/packages/cherry-markdown/src/utils/regexp.js +++ b/packages/cherry-markdown/src/utils/regexp.js @@ -263,7 +263,7 @@ export function getDetailRule() { export const imgBase64Reg = /(\[[^\n]*?\]\(data:image\/[a-z]{1,10};base64,)([^)]+)\)/g; // 匹配base64数据 -export const base64Reg = /(data:image\/[a-z]{1,10};base64,)([0-9a-zA-Z+/]+)/g; +export const base64Reg = /(data:image\/[a-z]{1,10};base64,)([0-9a-zA-Z+/=]+)/g; // 匹配内容非常多的单行文本,为了避免表格的场景,所以特意避免表格的识别 export const longTextReg = /([^\n]{100})([^\n|`\s]{5900,})/g; diff --git a/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap b/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap index 49276beb3..16f678c52 100644 --- a/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap +++ b/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap @@ -1360,7 +1360,7 @@ exports[`engine > CommonMark-192 1`] = ` `; exports[`engine > CommonMark-193 1`] = ` -"

/url
'the title'

[foo](cherry-inner://e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 )

+"

/url
'the title'

[foo]( )

" `; @@ -1395,7 +1395,7 @@ exports[`engine > CommonMark-199 1`] = ` `; exports[`engine > CommonMark-200 1`] = ` -"

foo

+"

foo

" `; diff --git a/yarn.lock b/yarn.lock index be3a3eb6b..be35be5b8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,7 +17,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.26.2", "@babel/code-frame@^7.27.1": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.26.2", "@babel/code-frame@^7.27.1": version "7.27.1" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== @@ -26,7 +26,7 @@ js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7", "@babel/compat-data@^7.26.8": +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.8": version "7.26.8" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== @@ -61,7 +61,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.24.7", "@babel/generator@^7.26.10", "@babel/generator@^7.27.0", "@babel/generator@^7.28.3": +"@babel/generator@^7.26.10", "@babel/generator@^7.28.3": version "7.28.3" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== @@ -72,22 +72,14 @@ "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.24.7", "@babel/helper-annotate-as-pure@^7.25.9": +"@babel/helper-annotate-as-pure@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== dependencies: "@babel/types" "^7.25.9" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz" - integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.26.5": +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.26.5": version "7.27.0" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz#de0c753b1cd1d9ab55d473c5a5cf7170f0a81880" integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA== @@ -111,7 +103,7 @@ "@babel/traverse" "^7.27.0" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.9": +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": version "7.27.0" resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz#0e41f7d38c2ebe06ebd9cf0e02fb26019c77cd95" integrity sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ== @@ -131,34 +123,12 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz" - integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-function-name@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz" - integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - "@babel/helper-globals@^7.28.0": version "7.28.0" resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== -"@babel/helper-hoist-variables@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz" - integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-member-expression-to-functions@^7.24.7", "@babel/helper-member-expression-to-functions@^7.25.9": +"@babel/helper-member-expression-to-functions@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== @@ -174,7 +144,7 @@ "@babel/traverse" "^7.27.1" "@babel/types" "^7.27.1" -"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": +"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": version "7.26.0" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== @@ -183,19 +153,19 @@ "@babel/helper-validator-identifier" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/helper-optimise-call-expression@^7.24.7", "@babel/helper-optimise-call-expression@^7.25.9": +"@babel/helper-optimise-call-expression@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== dependencies: "@babel/types" "^7.25.9" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5", "@babel/helper-plugin-utils@^7.8.0": version "7.26.5" resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== -"@babel/helper-remap-async-to-generator@^7.24.7", "@babel/helper-remap-async-to-generator@^7.25.9": +"@babel/helper-remap-async-to-generator@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== @@ -204,7 +174,7 @@ "@babel/helper-wrap-function" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.9", "@babel/helper-replace-supers@^7.26.5": +"@babel/helper-replace-supers@^7.25.9", "@babel/helper-replace-supers@^7.26.5": version "7.26.5" resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz#6cb04e82ae291dae8e72335dfe438b0725f14c8d" integrity sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg== @@ -213,15 +183,7 @@ "@babel/helper-optimise-call-expression" "^7.25.9" "@babel/traverse" "^7.26.5" -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.24.7", "@babel/helper-skip-transparent-expression-wrappers@^7.25.9": +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== @@ -229,14 +191,7 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helper-split-export-declaration@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz" - integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.24.7", "@babel/helper-string-parser@^7.25.9", "@babel/helper-string-parser@^7.27.1": +"@babel/helper-string-parser@^7.27.1": version "7.27.1" resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== @@ -246,12 +201,12 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== -"@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.25.9": +"@babel/helper-validator-option@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== -"@babel/helper-wrap-function@^7.24.7", "@babel/helper-wrap-function@^7.25.9": +"@babel/helper-wrap-function@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== @@ -260,7 +215,7 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helpers@^7.24.7", "@babel/helpers@^7.26.10": +"@babel/helpers@^7.26.10": version "7.27.0" resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808" integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg== @@ -268,7 +223,7 @@ "@babel/template" "^7.27.0" "@babel/types" "^7.27.0" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.24.7": +"@babel/highlight@^7.10.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz" integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== @@ -290,14 +245,14 @@ regenerator-runtime "^0.14.0" v8flags "^3.1.1" -"@babel/parser@^7.24.7", "@babel/parser@^7.25.3", "@babel/parser@^7.26.10", "@babel/parser@^7.27.0", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": +"@babel/parser@^7.25.3", "@babel/parser@^7.26.10", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": version "7.28.4" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== dependencies: "@babel/types" "^7.28.4" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.7", "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== @@ -312,14 +267,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== @@ -328,7 +283,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" "@babel/plugin-transform-optional-chaining" "^7.25.9" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.7", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== @@ -375,27 +330,6 @@ resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-decorators@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz" @@ -403,55 +337,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.24.7", "@babel/plugin-syntax-import-assertions@^7.26.0": +"@babel/plugin-syntax-import-assertions@^7.26.0": version "7.26.0" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.26.0": +"@babel/plugin-syntax-import-attributes@^7.26.0": version "7.26.0" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-meta@^7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" @@ -459,27 +358,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" @@ -487,20 +365,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" @@ -509,14 +373,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.24.7", "@babel/plugin-transform-arrow-functions@^7.25.9": +"@babel/plugin-transform-arrow-functions@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-async-generator-functions@^7.24.7", "@babel/plugin-transform-async-generator-functions@^7.26.8": +"@babel/plugin-transform-async-generator-functions@^7.26.8": version "7.26.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz#5e3991135e3b9c6eaaf5eff56d1ae5a11df45ff8" integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg== @@ -525,7 +389,7 @@ "@babel/helper-remap-async-to-generator" "^7.25.9" "@babel/traverse" "^7.26.8" -"@babel/plugin-transform-async-to-generator@^7.24.7", "@babel/plugin-transform-async-to-generator@^7.25.9": +"@babel/plugin-transform-async-to-generator@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== @@ -534,21 +398,21 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/helper-remap-async-to-generator" "^7.25.9" -"@babel/plugin-transform-block-scoped-functions@^7.24.7", "@babel/plugin-transform-block-scoped-functions@^7.26.5": +"@babel/plugin-transform-block-scoped-functions@^7.26.5": version "7.26.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz#3dc4405d31ad1cbe45293aa57205a6e3b009d53e" integrity sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ== dependencies: "@babel/helper-plugin-utils" "^7.26.5" -"@babel/plugin-transform-block-scoping@^7.24.7", "@babel/plugin-transform-block-scoping@^7.25.9": +"@babel/plugin-transform-block-scoping@^7.25.9": version "7.27.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz#acc2c0d98a7439bbde4244588ddbd4904701d47f" integrity sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ== dependencies: "@babel/helper-plugin-utils" "^7.26.5" -"@babel/plugin-transform-class-properties@^7.24.7", "@babel/plugin-transform-class-properties@^7.25.9": +"@babel/plugin-transform-class-properties@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== @@ -556,7 +420,7 @@ "@babel/helper-create-class-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-class-static-block@^7.24.7", "@babel/plugin-transform-class-static-block@^7.26.0": +"@babel/plugin-transform-class-static-block@^7.26.0": version "7.26.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== @@ -564,7 +428,7 @@ "@babel/helper-create-class-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-classes@^7.24.7", "@babel/plugin-transform-classes@^7.25.9": +"@babel/plugin-transform-classes@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== @@ -576,7 +440,7 @@ "@babel/traverse" "^7.25.9" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.7", "@babel/plugin-transform-computed-properties@^7.25.9": +"@babel/plugin-transform-computed-properties@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== @@ -584,14 +448,14 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/template" "^7.25.9" -"@babel/plugin-transform-destructuring@^7.24.7", "@babel/plugin-transform-destructuring@^7.25.9": +"@babel/plugin-transform-destructuring@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dotall-regex@^7.24.7", "@babel/plugin-transform-dotall-regex@^7.25.9": +"@babel/plugin-transform-dotall-regex@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== @@ -599,7 +463,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-duplicate-keys@^7.24.7", "@babel/plugin-transform-duplicate-keys@^7.25.9": +"@babel/plugin-transform-duplicate-keys@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== @@ -614,28 +478,28 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dynamic-import@^7.24.7", "@babel/plugin-transform-dynamic-import@^7.25.9": +"@babel/plugin-transform-dynamic-import@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-exponentiation-operator@^7.24.7", "@babel/plugin-transform-exponentiation-operator@^7.26.3": +"@babel/plugin-transform-exponentiation-operator@^7.26.3": version "7.26.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz#e29f01b6de302c7c2c794277a48f04a9ca7f03bc" integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-export-namespace-from@^7.24.7", "@babel/plugin-transform-export-namespace-from@^7.25.9": +"@babel/plugin-transform-export-namespace-from@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-for-of@^7.24.7", "@babel/plugin-transform-for-of@^7.26.9": +"@babel/plugin-transform-for-of@^7.26.9": version "7.26.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz#27231f79d5170ef33b5111f07fe5cafeb2c96a56" integrity sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg== @@ -643,7 +507,7 @@ "@babel/helper-plugin-utils" "^7.26.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-function-name@^7.24.7", "@babel/plugin-transform-function-name@^7.25.9": +"@babel/plugin-transform-function-name@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== @@ -652,35 +516,35 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-json-strings@^7.24.7", "@babel/plugin-transform-json-strings@^7.25.9": +"@babel/plugin-transform-json-strings@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-literals@^7.24.7", "@babel/plugin-transform-literals@^7.25.9": +"@babel/plugin-transform-literals@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-logical-assignment-operators@^7.24.7", "@babel/plugin-transform-logical-assignment-operators@^7.25.9": +"@babel/plugin-transform-logical-assignment-operators@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-member-expression-literals@^7.24.7", "@babel/plugin-transform-member-expression-literals@^7.25.9": +"@babel/plugin-transform-member-expression-literals@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-amd@^7.24.7", "@babel/plugin-transform-modules-amd@^7.25.9": +"@babel/plugin-transform-modules-amd@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== @@ -688,7 +552,7 @@ "@babel/helper-module-transforms" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-commonjs@^7.24.7", "@babel/plugin-transform-modules-commonjs@^7.26.3": +"@babel/plugin-transform-modules-commonjs@^7.26.3": version "7.26.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== @@ -696,7 +560,7 @@ "@babel/helper-module-transforms" "^7.26.0" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-systemjs@^7.24.7", "@babel/plugin-transform-modules-systemjs@^7.25.9": +"@babel/plugin-transform-modules-systemjs@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== @@ -706,7 +570,7 @@ "@babel/helper-validator-identifier" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-modules-umd@^7.24.7", "@babel/plugin-transform-modules-umd@^7.25.9": +"@babel/plugin-transform-modules-umd@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== @@ -714,7 +578,7 @@ "@babel/helper-module-transforms" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": +"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== @@ -722,28 +586,28 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-new-target@^7.24.7", "@babel/plugin-transform-new-target@^7.25.9": +"@babel/plugin-transform-new-target@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator@^7.26.6": +"@babel/plugin-transform-nullish-coalescing-operator@^7.26.6": version "7.26.6" resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz#fbf6b3c92cb509e7b319ee46e3da89c5bedd31fe" integrity sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw== dependencies: "@babel/helper-plugin-utils" "^7.26.5" -"@babel/plugin-transform-numeric-separator@^7.24.7", "@babel/plugin-transform-numeric-separator@^7.25.9": +"@babel/plugin-transform-numeric-separator@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-object-rest-spread@^7.24.7", "@babel/plugin-transform-object-rest-spread@^7.25.9": +"@babel/plugin-transform-object-rest-spread@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== @@ -752,7 +616,7 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-parameters" "^7.25.9" -"@babel/plugin-transform-object-super@^7.24.7", "@babel/plugin-transform-object-super@^7.25.9": +"@babel/plugin-transform-object-super@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== @@ -760,14 +624,14 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/helper-replace-supers" "^7.25.9" -"@babel/plugin-transform-optional-catch-binding@^7.24.7", "@babel/plugin-transform-optional-catch-binding@^7.25.9": +"@babel/plugin-transform-optional-catch-binding@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.25.9": +"@babel/plugin-transform-optional-chaining@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== @@ -775,14 +639,14 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-parameters@^7.24.7", "@babel/plugin-transform-parameters@^7.25.9": +"@babel/plugin-transform-parameters@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-methods@^7.24.7", "@babel/plugin-transform-private-methods@^7.25.9": +"@babel/plugin-transform-private-methods@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== @@ -790,7 +654,7 @@ "@babel/helper-create-class-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-property-in-object@^7.24.7", "@babel/plugin-transform-private-property-in-object@^7.25.9": +"@babel/plugin-transform-private-property-in-object@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== @@ -799,14 +663,14 @@ "@babel/helper-create-class-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-property-literals@^7.24.7", "@babel/plugin-transform-property-literals@^7.25.9": +"@babel/plugin-transform-property-literals@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-regenerator@^7.24.7", "@babel/plugin-transform-regenerator@^7.25.9": +"@babel/plugin-transform-regenerator@^7.25.9": version "7.27.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz#822feebef43d6a59a81f696b2512df5b1682db31" integrity sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA== @@ -822,7 +686,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-reserved-words@^7.24.7", "@babel/plugin-transform-reserved-words@^7.25.9": +"@babel/plugin-transform-reserved-words@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== @@ -841,14 +705,14 @@ babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.24.7", "@babel/plugin-transform-shorthand-properties@^7.25.9": +"@babel/plugin-transform-shorthand-properties@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-spread@^7.24.7", "@babel/plugin-transform-spread@^7.25.9": +"@babel/plugin-transform-spread@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== @@ -856,35 +720,35 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-sticky-regex@^7.24.7", "@babel/plugin-transform-sticky-regex@^7.25.9": +"@babel/plugin-transform-sticky-regex@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-template-literals@^7.24.7", "@babel/plugin-transform-template-literals@^7.26.8": +"@babel/plugin-transform-template-literals@^7.26.8": version "7.26.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz#966b15d153a991172a540a69ad5e1845ced990b5" integrity sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q== dependencies: "@babel/helper-plugin-utils" "^7.26.5" -"@babel/plugin-transform-typeof-symbol@^7.24.7", "@babel/plugin-transform-typeof-symbol@^7.26.7": +"@babel/plugin-transform-typeof-symbol@^7.26.7": version "7.27.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz#044a0890f3ca694207c7826d0c7a65e5ac008aae" integrity sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w== dependencies: "@babel/helper-plugin-utils" "^7.26.5" -"@babel/plugin-transform-unicode-escapes@^7.24.7", "@babel/plugin-transform-unicode-escapes@^7.25.9": +"@babel/plugin-transform-unicode-escapes@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-property-regex@^7.24.7", "@babel/plugin-transform-unicode-property-regex@^7.25.9": +"@babel/plugin-transform-unicode-property-regex@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== @@ -892,7 +756,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-regex@^7.24.7", "@babel/plugin-transform-unicode-regex@^7.25.9": +"@babel/plugin-transform-unicode-regex@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== @@ -900,7 +764,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-sets-regex@^7.24.7", "@babel/plugin-transform-unicode-sets-regex@^7.25.9": +"@babel/plugin-transform-unicode-sets-regex@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== @@ -1003,11 +867,6 @@ pirates "^4.0.6" source-map-support "^0.5.16" -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - "@babel/runtime-corejs3@^7.12.5": version "7.24.7" resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.7.tgz" @@ -1023,7 +882,7 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.24.7", "@babel/template@^7.25.9", "@babel/template@^7.26.9", "@babel/template@^7.27.0", "@babel/template@^7.27.2": +"@babel/template@^7.25.9", "@babel/template@^7.26.9", "@babel/template@^7.27.0", "@babel/template@^7.27.2": version "7.27.2" resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== @@ -1032,7 +891,7 @@ "@babel/parser" "^7.27.2" "@babel/types" "^7.27.1" -"@babel/traverse@^7.24.7", "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8", "@babel/traverse@^7.27.0", "@babel/traverse@^7.27.1": +"@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8", "@babel/traverse@^7.27.0", "@babel/traverse@^7.27.1": version "7.28.4" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz#8d456101b96ab175d487249f60680221692b958b" integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== @@ -1045,7 +904,7 @@ "@babel/types" "^7.28.4" debug "^4.3.1" -"@babel/types@^7.24.7", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.27.1", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.4.4": +"@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.27.1", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.4.4": version "7.28.4" resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== @@ -1684,11 +1543,6 @@ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - "@jridgewell/source-map@^0.3.3": version "0.3.6" resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz" @@ -1697,7 +1551,7 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": version "1.5.5" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== @@ -1867,151 +1721,51 @@ estree-walker "^2.0.2" picomatch "^4.0.2" -"@rollup/rollup-android-arm-eabi@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.37.0.tgz#9bedc746a97fe707154086365f269ced92ff4aa9" - integrity sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ== - -"@rollup/rollup-android-arm-eabi@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.2.tgz#c228d00a41f0dbd6fb8b7ea819bbfbf1c1157a10" - integrity sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg== - "@rollup/rollup-android-arm-eabi@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.3.tgz#7050c2acdc1214a730058e21f613ab0e1fe1ced9" integrity sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw== -"@rollup/rollup-android-arm64@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.37.0.tgz#6edc6ffc8af8773e4bc28c72894dd5e846b8ee6c" - integrity sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA== - -"@rollup/rollup-android-arm64@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.2.tgz#e2b38d0c912169fd55d7e38d723aada208d37256" - integrity sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw== - "@rollup/rollup-android-arm64@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.3.tgz#3f5b2afbfcbe9021649701cf6ff0d54b1fb7e4a5" integrity sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw== -"@rollup/rollup-darwin-arm64@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.37.0.tgz#737a7b8be9ff79bd24a7efaae0903e8c66ac0676" - integrity sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA== - -"@rollup/rollup-darwin-arm64@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.2.tgz#1fddb3690f2ae33df16d334c613377f05abe4878" - integrity sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w== - "@rollup/rollup-darwin-arm64@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz#70a1679fb4393ba7bafb730ee56a5278cbcdafb0" integrity sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg== -"@rollup/rollup-darwin-x64@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.37.0.tgz#a6a697bb685ca9462a7caeea5f22f6a686acff1f" - integrity sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ== - -"@rollup/rollup-darwin-x64@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.2.tgz#818298d11c8109e1112590165142f14be24b396d" - integrity sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ== - "@rollup/rollup-darwin-x64@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.3.tgz#ae75aec88fa72069de9bca3a3ec22bf4e6a962bf" integrity sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A== -"@rollup/rollup-freebsd-arm64@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.37.0.tgz#18113e8e133ccb6de4b9dc9d3e09f7acff344cb7" - integrity sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA== - -"@rollup/rollup-freebsd-arm64@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.2.tgz#91a28dc527d5bed7f9ecf0e054297b3012e19618" - integrity sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ== - "@rollup/rollup-freebsd-arm64@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.3.tgz#8a2bda997faa1d7e335ce1961ce71d1a76ac6288" integrity sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ== -"@rollup/rollup-freebsd-x64@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.37.0.tgz#5e56ffd4a0d7ccfcbc86867c40b8f0e6a2c0c81e" - integrity sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA== - -"@rollup/rollup-freebsd-x64@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.2.tgz#28acadefa76b5c7bede1576e065b51d335c62c62" - integrity sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q== - "@rollup/rollup-freebsd-x64@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.3.tgz#fc287bcc39b9a9c0df97336d68fd5f4458f87977" integrity sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A== -"@rollup/rollup-linux-arm-gnueabihf@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.37.0.tgz#5addf1a51e1495ae7ff28d26442a88adf629c980" - integrity sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w== - -"@rollup/rollup-linux-arm-gnueabihf@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.2.tgz#819691464179cbcd9a9f9d3dc7617954840c6186" - integrity sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q== - "@rollup/rollup-linux-arm-gnueabihf@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.3.tgz#5b5a2a55dffaa64d7c7a231e80e491219e33d4f3" integrity sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA== -"@rollup/rollup-linux-arm-musleabihf@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.37.0.tgz#00cddb9ab51086c5f2cd33cd4738259e24be4e73" - integrity sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag== - -"@rollup/rollup-linux-arm-musleabihf@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.2.tgz#d149207039e4189e267e8724050388effc80d704" - integrity sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg== - "@rollup/rollup-linux-arm-musleabihf@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.3.tgz#979eab95003c21837ea0fdd8a721aa3e69fa4aa3" integrity sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA== -"@rollup/rollup-linux-arm64-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.37.0.tgz#c3b4324496236b6fd9f31fda5701c6d6060b1512" - integrity sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA== - -"@rollup/rollup-linux-arm64-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.2.tgz#fa72ebddb729c3c6d88973242f1a2153c83e86ec" - integrity sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg== - "@rollup/rollup-linux-arm64-gnu@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.3.tgz#53b89f1289cbeca5ed9b6ca1602a6fe1a29dd4e2" integrity sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ== -"@rollup/rollup-linux-arm64-musl@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.37.0.tgz#b5222180bb1a50e6e9bc8263efd771c1ce770b6f" - integrity sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ== - -"@rollup/rollup-linux-arm64-musl@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.2.tgz#2054216e34469ab8765588ebf343d531fc3c9228" - integrity sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg== - "@rollup/rollup-linux-arm64-musl@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.3.tgz#3bbcf5e13c09d0c4c55bd9c75ec6a7aeee56fe28" @@ -2022,101 +1776,31 @@ resolved "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.3.tgz#1cc71838465a8297f92ccc5cc9c29756b71f6e73" integrity sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg== -"@rollup/rollup-linux-loongarch64-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.37.0.tgz#5660181c1c1efb7b19c7a531d496e685236c5ce7" - integrity sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA== - -"@rollup/rollup-linux-loongarch64-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.2.tgz#818de242291841afbfc483a84f11e9c7a11959bc" - integrity sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.37.0.tgz#8273166495d2f5d3fbc556cf42a5a6e24b78bdab" - integrity sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.2.tgz#0bb4cb8fc4a2c635f68c1208c924b2145eb647cb" - integrity sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q== - "@rollup/rollup-linux-ppc64-gnu@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.3.tgz#fe3fdf2ef57dc2d58fedd4f1e0678660772c843a" integrity sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw== -"@rollup/rollup-linux-riscv64-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.37.0.tgz#9677e39288ccc91ebcd707cdd794732d701cd174" - integrity sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw== - -"@rollup/rollup-linux-riscv64-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.2.tgz#4b3b8e541b7b13e447ae07774217d98c06f6926d" - integrity sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg== - "@rollup/rollup-linux-riscv64-gnu@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.3.tgz#eebc99e75832891d58532501879ca749b1592f93" integrity sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg== -"@rollup/rollup-linux-riscv64-musl@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.37.0.tgz#71cc5ca7be1ed263357618bfe4f8f50c09725a7e" - integrity sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA== - -"@rollup/rollup-linux-riscv64-musl@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.2.tgz#e065405e67d8bd64a7d0126c931bd9f03910817f" - integrity sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg== - "@rollup/rollup-linux-riscv64-musl@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.3.tgz#9a2df234d61763a44601eba17c36844a18f20539" integrity sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg== -"@rollup/rollup-linux-s390x-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.37.0.tgz#6b0b7df33eb32b0ee7423898b183acc1b5fee33e" - integrity sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A== - -"@rollup/rollup-linux-s390x-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.2.tgz#dda3265bbbfe16a5d0089168fd07f5ebb2a866fe" - integrity sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ== - "@rollup/rollup-linux-s390x-gnu@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.3.tgz#f0e45ea7e41ee473c85458b1ec8fab9572cc1834" integrity sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg== -"@rollup/rollup-linux-x64-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.37.0.tgz#52c27717d3c4819d13b5ebc2373ddea099d2e71b" - integrity sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ== - -"@rollup/rollup-linux-x64-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.2.tgz#90993269b8b995b4067b7b9d72ff1c360ef90a17" - integrity sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng== - "@rollup/rollup-linux-x64-gnu@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.3.tgz#ed63dec576799fa5571eee5b2040f65faa82b49b" integrity sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA== -"@rollup/rollup-linux-x64-musl@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.37.0.tgz#c134a22d30642345de8b799c816345674bf68019" - integrity sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w== - -"@rollup/rollup-linux-x64-musl@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.2.tgz#fdf5b09fd121eb8d977ebb0fda142c7c0167b8de" - integrity sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA== - "@rollup/rollup-linux-x64-musl@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.3.tgz#755c56ac79b17fbdf0359bce7e2293a11de30ad0" @@ -2127,31 +1811,11 @@ resolved "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.3.tgz#84b4170fe28c2b41e406add6ccf8513bf91195ea" integrity sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA== -"@rollup/rollup-win32-arm64-msvc@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.37.0.tgz#8063d5f8195dd1845e056d069366fbe06a424d09" - integrity sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg== - -"@rollup/rollup-win32-arm64-msvc@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.2.tgz#6397e1e012db64dfecfed0774cb9fcf89503d716" - integrity sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg== - "@rollup/rollup-win32-arm64-msvc@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.3.tgz#4fb0cd004183da819bec804eba70f1ef6936ccbf" integrity sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA== -"@rollup/rollup-win32-ia32-msvc@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.37.0.tgz#891d90e3b5517f9d290bb416afdfe2ebfb12139e" - integrity sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA== - -"@rollup/rollup-win32-ia32-msvc@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.2.tgz#df0991464a52a35506103fe18d29913bf8798a0c" - integrity sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA== - "@rollup/rollup-win32-ia32-msvc@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.3.tgz#1788ba80313477a31e6214390906201604ee38eb" @@ -2162,16 +1826,6 @@ resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.3.tgz#867222f288a9557487900c7836998123ebbadc9d" integrity sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ== -"@rollup/rollup-win32-x64-msvc@4.37.0": - version "4.37.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.37.0.tgz#a54d7304c3bd45573d8bcd1270de89771f8195fe" - integrity sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA== - -"@rollup/rollup-win32-x64-msvc@4.40.2": - version "4.40.2" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz#8dae04d01a2cbd84d6297d99356674c6b993f0fc" - integrity sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA== - "@rollup/rollup-win32-x64-msvc@4.52.3": version "4.52.3" resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.3.tgz#3f55b6e8fe809a7d29959d6bc686cce1804581f0" @@ -2331,16 +1985,6 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== -"@types/estree@1.0.6": - version "1.0.6" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== - -"@types/estree@1.0.7": - version "1.0.7" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" - integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== - "@types/glob@^7.1.3", "@types/glob@^7.2.0": version "7.2.0" resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" @@ -3393,7 +3037,7 @@ array.prototype.tosorted@^1.1.4: es-errors "^1.3.0" es-shim-unscopables "^1.0.2" -arraybuffer.prototype.slice@^1.0.3, arraybuffer.prototype.slice@^1.0.4: +arraybuffer.prototype.slice@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== @@ -3495,7 +3139,7 @@ babel-plugin-polyfill-corejs2@^0.4.10: "@babel/helper-define-polyfill-provider" "^0.6.2" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: +babel-plugin-polyfill-corejs3@^0.10.1: version "0.10.4" resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz" integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== @@ -3646,7 +3290,7 @@ browser-stdout@1.3.1: resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.0.0, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.4: +browserslist@^4.0.0, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.24.4: version "4.25.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== @@ -3725,7 +3369,7 @@ call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply- es-errors "^1.3.0" function-bind "^1.1.2" -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7, call-bind@^1.0.8: +call-bind@^1.0.0, call-bind@^1.0.7, call-bind@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== @@ -3787,7 +3431,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001629, caniuse-lite@^1.0.30001688, caniuse-lite@^1.0.30001726: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001726: version "1.0.30001726" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz#a15bd87d5a4bf01f6b6f70ae7c97fdfd28b5ae47" integrity sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw== @@ -4435,7 +4079,7 @@ copy-props@^4.0.0: each-props "^3.0.0" is-plain-object "^5.0.0" -core-js-compat@^3.31.0, core-js-compat@^3.36.1, core-js-compat@^3.40.0: +core-js-compat@^3.36.1, core-js-compat@^3.40.0: version "3.41.0" resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz#4cdfce95f39a8f27759b667cf693d96e5dda3d17" integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A== @@ -4939,7 +4583,7 @@ data-urls@^3.0.1: whatwg-mimetype "^3.0.0" whatwg-url "^11.0.0" -data-view-buffer@^1.0.1, data-view-buffer@^1.0.2: +data-view-buffer@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== @@ -4948,7 +4592,7 @@ data-view-buffer@^1.0.1, data-view-buffer@^1.0.2: es-errors "^1.3.0" is-data-view "^1.0.2" -data-view-byte-length@^1.0.1, data-view-byte-length@^1.0.2: +data-view-byte-length@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== @@ -4957,7 +4601,7 @@ data-view-byte-length@^1.0.1, data-view-byte-length@^1.0.2: es-errors "^1.3.0" is-data-view "^1.0.2" -data-view-byte-offset@^1.0.0, data-view-byte-offset@^1.0.1: +data-view-byte-offset@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== @@ -5071,7 +4715,7 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: es-errors "^1.3.0" gopd "^1.0.1" -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.1.3, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -5285,7 +4929,7 @@ eastasianwidth@^0.2.0: resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -electron-to-chromium@^1.4.796, electron-to-chromium@^1.5.173, electron-to-chromium@^1.5.73: +electron-to-chromium@^1.5.173: version "1.5.178" resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.178.tgz#6fc4d69eb5275bb13068931448fd822458901fbb" integrity sha512-wObbz/ar3Bc6e4X5vf0iO8xTN8YAjN/tgiAOJLr7yjYFtP9wAjq8Mb5h0yn6kResir+VYx2DXBj9NNobs0ETSA== @@ -5386,7 +5030,7 @@ error@^4.3.0: string-template "~0.2.0" xtend "~4.0.0" -es-abstract@^1.17.5, es-abstract@^1.18.0-next.1, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0: +es-abstract@^1.17.5, es-abstract@^1.18.0-next.1, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0: version "1.24.0" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== @@ -5467,7 +5111,7 @@ es-define-property@^1.0.0, es-define-property@^1.0.1: resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== -es-errors@^1.2.1, es-errors@^1.3.0: +es-errors@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== @@ -5523,7 +5167,7 @@ es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0: dependencies: hasown "^2.0.2" -es-to-primitive@^1.2.1, es-to-primitive@^1.3.0: +es-to-primitive@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== @@ -5563,7 +5207,7 @@ esbuild@^0.25.0, esbuild@~0.25.0: "@esbuild/win32-ia32" "0.25.1" "@esbuild/win32-x64" "0.25.1" -escalade@^3.1.1, escalade@^3.1.2, escalade@^3.2.0: +escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== @@ -6394,7 +6038,7 @@ get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== @@ -6433,7 +6077,7 @@ get-stream@^6.0.0: resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-symbol-description@^1.0.2, get-symbol-description@^1.1.0: +get-symbol-description@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== @@ -6615,7 +6259,7 @@ globals@^13.19.0, globals@^13.24.0, globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" -globalthis@^1.0.3, globalthis@^1.0.4: +globalthis@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz" integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== @@ -6848,7 +6492,7 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-bigints@^1.0.1, has-bigints@^1.0.2: +has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== @@ -6877,19 +6521,19 @@ has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: dependencies: es-define-property "^1.0.0" -has-proto@^1.0.1, has-proto@^1.0.3, has-proto@^1.2.0: +has-proto@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== dependencies: dunder-proto "^1.0.0" -has-symbols@^1.0.2, has-symbols@^1.0.3, has-symbols@^1.1.0: +has-symbols@^1.0.3, has-symbols@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== -has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: +has-tostringtag@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== @@ -6901,7 +6545,7 @@ has-unicode@^2.0.1: resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== -hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: +hasown@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== @@ -7148,7 +6792,7 @@ ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -internal-slot@^1.0.7, internal-slot@^1.1.0: +internal-slot@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== @@ -7218,7 +6862,7 @@ is-async-function@^2.0.0: has-tostringtag "^1.0.2" safe-regex-test "^1.1.0" -is-bigint@^1.0.1, is-bigint@^1.1.0: +is-bigint@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== @@ -7232,7 +6876,7 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.1.0, is-boolean-object@^1.2.1: +is-boolean-object@^1.2.1: version "1.2.2" resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== @@ -7245,7 +6889,7 @@ is-buffer@~1.1.6: resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: +is-callable@^1.2.7: version "1.2.7" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== @@ -7266,7 +6910,7 @@ is-data-view@^1.0.1, is-data-view@^1.0.2: get-intrinsic "^1.2.6" is-typed-array "^1.1.13" -is-date-object@^1.0.1, is-date-object@^1.0.5, is-date-object@^1.1.0: +is-date-object@^1.0.5, is-date-object@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== @@ -7355,7 +6999,7 @@ is-negative-zero@^2.0.3: resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz" integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== -is-number-object@^1.0.4, is-number-object@^1.1.1: +is-number-object@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== @@ -7422,7 +7066,7 @@ is-reference@1.2.1: dependencies: "@types/estree" "*" -is-regex@^1.1.4, is-regex@^1.2.1: +is-regex@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== @@ -7444,7 +7088,7 @@ is-set@^2.0.3: resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== -is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3, is-shared-array-buffer@^1.0.4: +is-shared-array-buffer@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== @@ -7456,7 +7100,7 @@ is-stream@^2.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-string@^1.0.5, is-string@^1.0.7, is-string@^1.1.1: +is-string@^1.0.7, is-string@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== @@ -7471,7 +7115,7 @@ is-subdir@^1.1.1: dependencies: better-path-resolve "1.0.0" -is-symbol@^1.0.2, is-symbol@^1.0.3, is-symbol@^1.0.4, is-symbol@^1.1.1: +is-symbol@^1.0.4, is-symbol@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== @@ -7518,7 +7162,7 @@ is-weakmap@^2.0.2: resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== -is-weakref@^1.0.2, is-weakref@^1.1.0, is-weakref@^1.1.1: +is-weakref@^1.0.2, is-weakref@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== @@ -7666,21 +7310,11 @@ jsdom@~19.0.0: ws "^8.2.3" xml-name-validator "^4.0.0" -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - jsesc@^3.0.2: version "3.1.0" resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - jsesc@~3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" @@ -8605,7 +8239,7 @@ nanoid@3.1.20: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== -nanoid@^3.3.7, nanoid@^3.3.8: +nanoid@^3.3.8: version "3.3.11" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== @@ -8681,7 +8315,7 @@ node-gyp@^9.0.0: tar "^6.1.2" which "^2.0.2" -node-releases@^2.0.14, node-releases@^2.0.19: +node-releases@^2.0.19: version "2.0.19" resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== @@ -8789,7 +8423,7 @@ object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.12.2, object-inspect@^1.13.1, object-inspect@^1.13.3, object-inspect@^1.13.4: +object-inspect@^1.12.2, object-inspect@^1.13.3, object-inspect@^1.13.4: version "1.13.4" resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== @@ -8799,7 +8433,7 @@ object-keys@^1.1.1: resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.4, object.assign@^4.1.5, object.assign@^4.1.7: +object.assign@^4.1.4, object.assign@^4.1.7: version "4.1.7" resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== @@ -9849,7 +9483,7 @@ reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: get-proto "^1.0.1" which-builtin-type "^1.2.1" -regenerate-unicode-properties@^10.1.0, regenerate-unicode-properties@^10.2.0: +regenerate-unicode-properties@^10.2.0: version "10.2.0" resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== @@ -9873,7 +9507,7 @@ regenerator-transform@^0.15.2: dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.5.2, regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4: +regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4: version "1.5.4" resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== @@ -9890,18 +9524,6 @@ regexpp@^3.1.0: resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - regexpu-core@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" @@ -9941,13 +9563,6 @@ regjsparser@^0.12.0: dependencies: jsesc "~3.0.2" -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" @@ -10131,7 +9746,7 @@ rollup-pluginutils@^2.3.3, rollup-pluginutils@^2.8.2: dependencies: estree-walker "^0.6.1" -rollup@4.52.3, rollup@^4.30.1, rollup@^4.34.9: +rollup@4.52.3, rollup@^4.34.9: version "4.52.3" resolved "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz#cc5c28d772b022ce48b235a97b347ccd9d88c1a3" integrity sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A== @@ -10215,7 +9830,7 @@ safe-push-apply@^1.0.0: es-errors "^1.3.0" isarray "^2.0.5" -safe-regex-test@^1.0.3, safe-regex-test@^1.1.0: +safe-regex-test@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== @@ -10336,7 +9951,7 @@ set-blocking@^2.0.0: resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-function-length@^1.2.1, set-function-length@^1.2.2: +set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== @@ -10348,7 +9963,7 @@ set-function-length@^1.2.1, set-function-length@^1.2.2: gopd "^1.0.1" has-property-descriptors "^1.0.2" -set-function-name@^2.0.1, set-function-name@^2.0.2: +set-function-name@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz" integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== @@ -10432,7 +10047,7 @@ side-channel-weakmap@^1.0.2: object-inspect "^1.13.3" side-channel-map "^1.0.1" -side-channel@^1.0.4, side-channel@^1.1.0: +side-channel@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== @@ -10801,7 +10416,7 @@ string.prototype.repeat@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" -string.prototype.trim@^1.2.10, string.prototype.trim@^1.2.9: +string.prototype.trim@^1.2.10: version "1.2.10" resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== @@ -10814,7 +10429,7 @@ string.prototype.trim@^1.2.10, string.prototype.trim@^1.2.9: es-object-atoms "^1.0.0" has-property-descriptors "^1.0.2" -string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9: +string.prototype.trimend@^1.0.9: version "1.0.9" resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== @@ -11196,11 +10811,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" @@ -11357,7 +10967,7 @@ type-fest@^2.13.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== -typed-array-buffer@^1.0.2, typed-array-buffer@^1.0.3: +typed-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== @@ -11366,7 +10976,7 @@ typed-array-buffer@^1.0.2, typed-array-buffer@^1.0.3: es-errors "^1.3.0" is-typed-array "^1.1.14" -typed-array-byte-length@^1.0.1, typed-array-byte-length@^1.0.3: +typed-array-byte-length@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== @@ -11377,7 +10987,7 @@ typed-array-byte-length@^1.0.1, typed-array-byte-length@^1.0.3: has-proto "^1.2.0" is-typed-array "^1.1.14" -typed-array-byte-offset@^1.0.2, typed-array-byte-offset@^1.0.4: +typed-array-byte-offset@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== @@ -11390,7 +11000,7 @@ typed-array-byte-offset@^1.0.2, typed-array-byte-offset@^1.0.4: is-typed-array "^1.1.15" reflect.getprototypeof "^1.0.9" -typed-array-length@^1.0.6, typed-array-length@^1.0.7: +typed-array-length@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== @@ -11436,7 +11046,7 @@ uglify-js@^3.1.4: resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz" integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A== -unbox-primitive@^1.0.2, unbox-primitive@^1.1.0: +unbox-primitive@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== @@ -11523,7 +11133,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -update-browserslist-db@^1.0.16, update-browserslist-db@^1.1.1, update-browserslist-db@^1.1.3: +update-browserslist-db@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== @@ -11539,7 +11149,7 @@ update-check@1.5.4: registry-auth-token "3.3.2" registry-url "3.1.0" -uri-js@^4.2.2, uri-js@^4.4.1: +uri-js@^4.2.2: version "4.4.1" resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -11955,7 +11565,7 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which-boxed-primitive@^1.0.2, which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: +which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== @@ -11995,7 +11605,7 @@ which-collection@^1.0.2: is-weakmap "^2.0.2" is-weakset "^2.0.3" -which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.16, which-typed-array@^1.1.18, which-typed-array@^1.1.19: +which-typed-array@^1.1.16, which-typed-array@^1.1.19: version "1.1.19" resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== From 08ef14b1e0c344a41c3bc0388ba1da071f0c964f Mon Sep 17 00:00:00 2001 From: liweijie0812 <674416404@qq.com> Date: Thu, 11 Dec 2025 16:44:53 +0800 Subject: [PATCH 08/57] =?UTF-8?q?chore(cnb):=20=E5=BC=80=E5=8F=91=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=20(#1544)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 开发环境 * 编辑文件 Dockerfile * 编辑文件 Dockerfile * chore: update vite config * chore: 增加 prettier 扩展 * chore: 增加vitest 插件 * chore: update dockerfile * chore: update cnb.yml * chore: update cnb.yml * chore: 兼容cnb访问 --- .cnb.yml | 16 ++++++++++++++- .cnb/Dockerfile | 23 ++++++++++++++++++++++ packages/cherry-markdown/index.html | 5 ++++- packages/cherry-markdown/vite.config.ts | 26 ++++++++++++++++++++++++- 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 .cnb/Dockerfile diff --git a/.cnb.yml b/.cnb.yml index aac9d8203..e3bb65fb0 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -13,4 +13,18 @@ username: ${CHERRY_MARKDOWN_USERNAME} password: ${CHERRY_MARKDOWN_GITHUB_TOKEN} insecure_skip_verify: true - timeout: 300 \ No newline at end of file + timeout: 300 +$: + vscode: + - docker: + image: docker.cnb.cool/tencent/cherry-markdown/cherry-markdown + # build: .cnb/Dockerfile + volumes: + - node_modules + services: + - vscode + - docker + stages: + - name: install dependencies + script: + - yarn install \ No newline at end of file diff --git a/.cnb/Dockerfile b/.cnb/Dockerfile new file mode 100644 index 000000000..da58b6ae9 --- /dev/null +++ b/.cnb/Dockerfile @@ -0,0 +1,23 @@ +FROM node:18 + +RUN sed -i 's@deb.debian.org@mirrors.cloud.tencent.com@g' /etc/apt/sources.list.d/debian.sources + +# 安装 ssh 服务,用于支持 VSCode 等客户端通过 Remote-SSH 访问开发环境 +RUN apt-get update && apt-get install -y wget unzip openssh-server + +RUN curl -fsSL https://code-server.dev/install.sh | sh \ + && code-server --install-extension cnbcool.cnb-welcome \ + && code-server --install-extension redhat.vscode-yaml \ + && code-server --install-extension dbaeumer.vscode-eslint \ + && code-server --install-extension esbenp.prettier-vscode \ + && code-server --install-extension waderyan.gitblame \ + && code-server --install-extension mhutchie.git-graph \ + && code-server --install-extension donjayamanne.githistory \ + && code-server --install-extension vitest.explorer \ + && code-server --install-extension tencent-cloud.coding-copilot \ + && echo done + + +ENV LANG=C.UTF-8 +ENV LANGUAGE=C.UTF-8 + diff --git a/packages/cherry-markdown/index.html b/packages/cherry-markdown/index.html index c6a8d621c..434fb1f62 100644 --- a/packages/cherry-markdown/index.html +++ b/packages/cherry-markdown/index.html @@ -77,7 +77,10 @@ let CONFIG ={}; - switch (window.location.pathname) { + // 使用注入的原始路径或当前路径 + const currentPath = window.__ORIGINAL_PATH__ || window.location.pathname; + + switch (currentPath) { case '/': CONFIG = Object.assign({}, basicConfig, { value: indexMd, ...devCompatibleConfig }); break; diff --git a/packages/cherry-markdown/vite.config.ts b/packages/cherry-markdown/vite.config.ts index a40921fb6..5166b6b27 100644 --- a/packages/cherry-markdown/vite.config.ts +++ b/packages/cherry-markdown/vite.config.ts @@ -40,6 +40,28 @@ function printLinks() { }; } +function spaFallback() { + return { + name: 'spa-fallback', + transformIndexHtml: (html: string, ctx: { path: string; filename?: string; server?: any }) => { + const path = ctx.path; + // 如果是配置的路径之一,注入脚本设置原始路径 + // 优化的路径匹配逻辑 + const isExactMatch = paths.includes(path); + const isPathWithoutHtmlMatch = path.endsWith('.html') && paths.includes(path.slice(0, -5)); + const matchedPath = isExactMatch || isPathWithoutHtmlMatch ? (isExactMatch ? path : path.slice(0, -5)) : null; + + if (matchedPath && matchedPath !== '/index.html') { + // 转义路径中的特殊字符以防止XSS注入 + const escapedPath = matchedPath.replace(/['"\\]/g, '\\$&'); + const script = ``; + return html.replace('', `${script}\n `); + } + return html; + }, + }; +} + export default defineConfig({ root: process.cwd(), base: '/', @@ -51,8 +73,10 @@ export default defineConfig({ ], }, server: { + host: '0.0.0.0', port: 5173, open: false, + allowedHosts: true, fs: { allow: [path.resolve(__dirname), path.resolve(__dirname, 'dist'), path.resolve(__dirname, '..', '..')], }, @@ -67,5 +91,5 @@ export default defineConfig({ BUILD_ENV: JSON.stringify(process.env.NODE_ENV || 'development'), __EXAMPLES_PATH__: JSON.stringify(path.resolve(__dirname, '../../examples').replace(/\\/g, '/')), }, - plugins: [printLinks()], + plugins: [spaFallback(), printLinks()], }); From e28d016aaf69ff845bf0bd96e0c1771954dcd47e Mon Sep 17 00:00:00 2001 From: liweijie0812 <674416404@qq.com> Date: Thu, 11 Dec 2025 16:45:41 +0800 Subject: [PATCH 09/57] ci(publish): use OIDC publish to npm (#1557) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci(publish): use OIDC publish to npm * chore: 补充权限 --- .github/workflows/release-cherry-markdown-build.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-cherry-markdown-build.yaml b/.github/workflows/release-cherry-markdown-build.yaml index ffa420003..676ee8297 100644 --- a/.github/workflows/release-cherry-markdown-build.yaml +++ b/.github/workflows/release-cherry-markdown-build.yaml @@ -1,5 +1,9 @@ name: 'Build Cherry Markdown Release' +permissions: + contents: read + id-token: write + on: workflow_call: jobs: @@ -25,6 +29,3 @@ jobs: cd packages/cherry-markdown npm publish --access public - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} From 0924e117ccffe0d517d634c1c88f163829889861 Mon Sep 17 00:00:00 2001 From: liweijie0812 <674416404@qq.com> Date: Thu, 11 Dec 2025 17:56:05 +0800 Subject: [PATCH 10/57] =?UTF-8?q?ci(pr-pkg-new):=20=E7=9F=AD=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E5=92=8C=E6=9B=B4=E5=A4=9A=E5=AE=89=E8=A3=85=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=20(#1560)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pr_preview-pkg.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_preview-pkg.yml b/.github/workflows/pr_preview-pkg.yml index 0327aac4d..c73da0a55 100644 --- a/.github/workflows/pr_preview-pkg.yml +++ b/.github/workflows/pr_preview-pkg.yml @@ -21,4 +21,4 @@ jobs: run: yarn build - name: Publish preview package run: | - npx pkg-pr-new publish './packages/cherry-markdown' + npx pkg-pr-new publish './packages/cherry-markdown' --compact --packageManager=pnpm,npm,yarn From 629053fce1257981d644640627f7901a40def9d1 Mon Sep 17 00:00:00 2001 From: liweijie0812 <674416404@qq.com> Date: Fri, 12 Dec 2025 17:07:24 +0800 Subject: [PATCH 11/57] =?UTF-8?q?fix(deps):=20=E5=8D=87=E7=BA=A7=20vite=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20CVE-2025-62522=20(#1563)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/cherry-markdown/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cherry-markdown/package.json b/packages/cherry-markdown/package.json index 3bfc09667..714a617bf 100644 --- a/packages/cherry-markdown/package.json +++ b/packages/cherry-markdown/package.json @@ -99,7 +99,7 @@ "replace-in-file": "^7.0.1", "rimraf": "^3.0.2", "rollup": "4.52.3", - "vite": "^6.0.0", + "vite": "^6.4.1", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-scss": "^4.0.1", "rollup-plugin-typescript2": "^0.36.0", diff --git a/yarn.lock b/yarn.lock index be35be5b8..785857f1b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11324,10 +11324,10 @@ vite-node@3.1.3: pathe "^2.0.3" vite "^5.0.0 || ^6.0.0" -"vite@^5.0.0 || ^6.0.0", vite@^6.0.0, vite@^6.0.3: - version "6.3.6" - resolved "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz#69a976b64930750d40219fbc68c5200874d315c1" - integrity sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA== +"vite@^5.0.0 || ^6.0.0", vite@^6.0.3, vite@^6.4.1: + version "6.4.1" + resolved "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz#afbe14518cdd6887e240a4b0221ab6d0ce733f96" + integrity sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g== dependencies: esbuild "^0.25.0" fdir "^6.4.4" From 0b0b13e95eabea3aeeb6fd0c3571d6b457b96778 Mon Sep 17 00:00:00 2001 From: liweijie0812 <674416404@qq.com> Date: Fri, 12 Dec 2025 18:16:25 +0800 Subject: [PATCH 12/57] ci: reduce dist size with `compressed-size action` (#1564) * ci: compressed size * chore: pattern * chore: format * chore: update pattern --- .github/workflows/pr-compressed-size.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/pr-compressed-size.yml diff --git a/.github/workflows/pr-compressed-size.yml b/.github/workflows/pr-compressed-size.yml new file mode 100644 index 000000000..240538aa7 --- /dev/null +++ b/.github/workflows/pr-compressed-size.yml @@ -0,0 +1,15 @@ +name: Compressed Size + +on: + pull_request: + types: [opened, synchronize] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v6 + - uses: preactjs/compressed-size-action@v2 + with: + pattern: './packages/cherry-markdown/dist/**/*.{js,css,d.ts}' From bc917e25e63954afcff681b45e94f6c910e0dade Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Sun, 14 Dec 2025 10:27:07 +0800 Subject: [PATCH 13/57] =?UTF-8?q?feat(client):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=9B=BE=E8=A1=A8=E3=80=81=E5=85=AC=E5=BC=8F=E3=80=81?= =?UTF-8?q?=E6=8B=BC=E9=9F=B3=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20(#1548)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 优化客户端功能,增加图表、公式、拼音等功能的支持 * feat: 客户端增加左侧目录管理功能,去掉顶部菜单,增加编辑内容实时保存的机制 * fix: 删掉draw.io相关逻辑,等组件化后在构建中动态加入,从而减少开发环境的文件冗余 * fix: 打开一个新目录后,无脑把这个目录添加到目录管理列表中 * fix: 调整悬浮目录的定位,调整一些公共资源的位置 * style: 优化按钮布局 * feat: 重构文件系统权限配置,优化目录访问权限 * style: 优化代码格式,移除冗余空行和多余导入 * feat: 更新文件管理和目录管理功能,优化路径处理和状态保存 * Fix integrity hash formatting in yarn.lock * refactor: 修复代码格式错误 * feat: add global shortcut plugin and implement save shortcut * chore: update dependencies in yarn.lock * Create kind-eagles-beam.md --------- Co-authored-by: RSS1102 --- .cargo/config.toml | 9 + .changeset/kind-eagles-beam.md | 5 + .changeset/loud-taxes-arrive.md | 5 + packages/client/index.html | 23 +- packages/client/package.json | 14 +- packages/client/public/data/china.json | 1 + packages/client/src-tauri/Cargo.lock | 1169 +++++++++++------ packages/client/src-tauri/Cargo.toml | 1 + .../src-tauri/capabilities/default.json | 63 +- .../src-tauri/src/implement/windows_menu.rs | 9 +- packages/client/src-tauri/src/main.rs | 1 + packages/client/src-tauri/tauri.conf.json | 8 +- packages/client/src/App.vue | 393 +++++- .../client/src/components/CherryMarkdown.ts | 481 +++---- .../client/src/components/DirectoryNode.vue | 179 +++ .../client/src/components/FileManager.vue | 124 ++ .../client/src/components/FolderManager.vue | 116 ++ .../composables/useDirectoryManager.ts | 362 +++++ .../components/composables/useFileManager.ts | 295 +++++ packages/client/src/components/fileUtils.ts | 329 +++++ .../client/src/components/icons/AddIcon.vue | 15 + .../client/src/components/icons/ArrowIcon.vue | 20 + .../client/src/components/icons/FileIcon.vue | 15 + .../src/components/icons/FolderIcon.vue | 18 + .../src/components/icons/IconLibrary.vue | 11 + .../src/components/icons/RefreshIcon.vue | 17 + packages/client/src/components/icons/index.ts | 32 + packages/client/src/components/types.ts | 130 ++ .../src/components/ui/ActionButtons.vue | 95 ++ .../client/src/components/ui/ContextMenu.vue | 58 + .../src/components/ui/DirectorySection.vue | 93 ++ .../src/components/ui/RecentFilesSection.vue | 179 +++ .../src/components/ui/SidebarHeader.vue | 64 + packages/client/src/store/modal/file.ts | 126 +- packages/client/src/types/pinyin.d.ts | 21 + packages/client/vite.config.ts | 5 + yarn.lock | 150 ++- 37 files changed, 3841 insertions(+), 795 deletions(-) create mode 100644 .cargo/config.toml create mode 100644 .changeset/kind-eagles-beam.md create mode 100644 .changeset/loud-taxes-arrive.md create mode 100644 packages/client/public/data/china.json create mode 100644 packages/client/src/components/DirectoryNode.vue create mode 100644 packages/client/src/components/FileManager.vue create mode 100644 packages/client/src/components/FolderManager.vue create mode 100644 packages/client/src/components/composables/useDirectoryManager.ts create mode 100644 packages/client/src/components/composables/useFileManager.ts create mode 100644 packages/client/src/components/fileUtils.ts create mode 100644 packages/client/src/components/icons/AddIcon.vue create mode 100644 packages/client/src/components/icons/ArrowIcon.vue create mode 100644 packages/client/src/components/icons/FileIcon.vue create mode 100644 packages/client/src/components/icons/FolderIcon.vue create mode 100644 packages/client/src/components/icons/IconLibrary.vue create mode 100644 packages/client/src/components/icons/RefreshIcon.vue create mode 100644 packages/client/src/components/icons/index.ts create mode 100644 packages/client/src/components/types.ts create mode 100644 packages/client/src/components/ui/ActionButtons.vue create mode 100644 packages/client/src/components/ui/ContextMenu.vue create mode 100644 packages/client/src/components/ui/DirectorySection.vue create mode 100644 packages/client/src/components/ui/RecentFilesSection.vue create mode 100644 packages/client/src/components/ui/SidebarHeader.vue create mode 100644 packages/client/src/types/pinyin.d.ts diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 000000000..ab2b2e58a --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,9 @@ +[registries.crates-io] +protocol = "sparse" + +[source.crates-io] +replace-with = "rsproxy-sparse" + + +[source.rsproxy-sparse] +registry = "sparse+https://rsproxy.cn/index/" diff --git a/.changeset/kind-eagles-beam.md b/.changeset/kind-eagles-beam.md new file mode 100644 index 000000000..d70cab077 --- /dev/null +++ b/.changeset/kind-eagles-beam.md @@ -0,0 +1,5 @@ +--- +"@cherry-markdown/client": minor +--- + +feat: 优化客户端功能,增加图表、公式、拼音等功能的支持 diff --git a/.changeset/loud-taxes-arrive.md b/.changeset/loud-taxes-arrive.md new file mode 100644 index 000000000..6df8b0ee9 --- /dev/null +++ b/.changeset/loud-taxes-arrive.md @@ -0,0 +1,5 @@ +--- +'@cherry-markdown/client': patch +--- + +feat: 优化客户端功能,增加图表、公式、拼音等功能的支持 diff --git a/packages/client/index.html b/packages/client/index.html index 3ce2eb62d..0853aafde 100644 --- a/packages/client/index.html +++ b/packages/client/index.html @@ -11,13 +11,25 @@ display: none; } - .markdown-preview-only .cherry-sidebar { + .cherry-highlight-line { + background-color: var(--base-previewer-bg) !important; + } + + .cherry-toolbar-pen.active { + color: var(--bubble-border) !important; + } + + .cherry-sidebar { display: block !important; top: 0 !important; - padding-top: 33px !important; + padding-top: 52px !important; height: auto !important; } + .cherry-flex-toc { + top: 216px !important; + } + .markdown-preview-only .cherry-editor { display: none; } @@ -27,12 +39,17 @@ max-height: 100% !important; display: block !important; } + + body { + border-top: 1px dashed #00000033; + } @@ -42,4 +59,4 @@ - \ No newline at end of file + diff --git a/packages/client/package.json b/packages/client/package.json index e95b0ff05..c1f890471 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -11,19 +11,23 @@ "lint:fix": "cd ../.. && npx prettier --write packages/client/src/**/*.{ts,vue} && npx eslint packages/client/src/**/*.{ts,vue} --fix" }, "dependencies": { - "vue": "^3.5.13", "@tauri-apps/api": "2.2.0", - "@tauri-apps/plugin-opener": "2.2.0", "@tauri-apps/plugin-dialog": "2.2.0", "@tauri-apps/plugin-fs": "2.2.0", + "@tauri-apps/plugin-global-shortcut": "^2.3.1", + "@tauri-apps/plugin-opener": "2.2.0", + "cherry-markdown": "*", + "echarts": "^6.0.0", + "katex": "^0.16.27", + "pinyin": "^2.11.2", "pinia": "^2.2.4", - "cherry-markdown": "*" + "vue": "^3.5.13" }, "devDependencies": { + "@tauri-apps/cli": "2.2.5", "@vitejs/plugin-vue": "^5.2.1", "typescript": "~5.6.2", "vite": "^6.0.3", - "vue-tsc": "^2.1.10", - "@tauri-apps/cli": "2.2.5" + "vue-tsc": "^2.1.10" } } diff --git a/packages/client/public/data/china.json b/packages/client/public/data/china.json new file mode 100644 index 000000000..ff2e85086 --- /dev/null +++ b/packages/client/public/data/china.json @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":110000,"name":"北京市","center":[116.405285,39.904989],"centroid":[116.41995,40.18994],"childrenNum":16,"level":"province","parent":{"adcode":100000},"subFeatureIndex":0,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.348611,40.581141],[117.389879,40.561593],[117.429915,40.576141],[117.412669,40.605226],[117.467487,40.649738],[117.467487,40.649738],[117.501364,40.636569],[117.514914,40.660181],[117.493973,40.675161],[117.408973,40.686961],[117.342451,40.673799],[117.319662,40.657911],[117.278394,40.664267],[117.208177,40.694675],[117.117018,40.70012],[117.11209,40.707379],[117.012308,40.693767],[116.964881,40.709647],[116.926692,40.745022],[116.924229,40.773581],[116.848468,40.839264],[116.81336,40.848319],[116.759773,40.889954],[116.713577,40.909858],[116.722201,40.927495],[116.677853,40.970888],[116.698795,41.021477],[116.688324,41.044501],[116.647672,41.059394],[116.615643,41.053076],[116.623034,41.021026],[116.598397,40.974503],[116.5676,40.992574],[116.519557,40.98128],[116.519557,40.98128],[116.455499,40.980828],[116.447492,40.953715],[116.477057,40.899907],[116.398216,40.90624],[116.370499,40.94377],[116.339702,40.929303],[116.334159,40.90443],[116.438253,40.81934],[116.46597,40.774487],[116.453651,40.765876],[116.316912,40.772221],[116.311369,40.754996],[116.273181,40.762703],[116.247311,40.791707],[116.22021,40.744115],[116.204812,40.740035],[116.171551,40.695582],[116.162928,40.662451],[116.133979,40.666536],[116.09887,40.630665],[116.005247,40.583868],[115.982457,40.578868],[115.971986,40.6025],[115.907929,40.617493],[115.885139,40.595229],[115.827857,40.587504],[115.819849,40.55932],[115.784741,40.55841],[115.755176,40.540221],[115.736082,40.503372],[115.781045,40.49336],[115.771806,40.443734],[115.864197,40.359422],[115.917784,40.354405],[115.95166,40.281852],[115.968907,40.264045],[115.89869,40.234354],[115.870356,40.185909],[115.855574,40.188652],[115.847567,40.147036],[115.806299,40.15344],[115.773654,40.176307],[115.75456,40.145663],[115.75456,40.145663],[115.599959,40.119583],[115.59072,40.096239],[115.527278,40.076092],[115.485394,40.040364],[115.454597,40.029825],[115.450286,39.992697],[115.428728,39.984443],[115.426264,39.950502],[115.481083,39.935819],[115.522967,39.899099],[115.515575,39.892212],[115.515575,39.892212],[115.526046,39.87568],[115.514344,39.837549],[115.567314,39.816407],[115.552532,39.794799],[115.50572,39.784222],[115.483547,39.798477],[115.483547,39.798477],[115.443511,39.785601],[115.439815,39.752022],[115.486626,39.741899],[115.491554,39.670074],[115.478619,39.650723],[115.478619,39.650723],[115.522351,39.640124],[115.518039,39.597252],[115.545756,39.618922],[115.587024,39.589873],[115.633836,39.599557],[115.633836,39.599557],[115.667712,39.615234],[115.698509,39.577881],[115.698509,39.577881],[115.699125,39.570039],[115.699125,39.570039],[115.716988,39.56035],[115.716988,39.56035],[115.718835,39.553891],[115.718835,39.553891],[115.720683,39.551122],[115.720683,39.551122],[115.722531,39.5442],[115.721299,39.543738],[115.722531,39.5442],[115.722531,39.543738],[115.721299,39.543738],[115.722531,39.543738],[115.724995,39.5442],[115.724995,39.5442],[115.738545,39.540046],[115.738545,39.539585],[115.738545,39.540046],[115.738545,39.539585],[115.752712,39.515581],[115.806299,39.510041],[115.806299,39.510041],[115.821081,39.522968],[115.821081,39.522968],[115.828473,39.541431],[115.867893,39.546507],[115.867893,39.546507],[115.91532,39.582955],[115.91532,39.582955],[115.910393,39.600479],[115.910393,39.600479],[115.957204,39.560812],[115.978146,39.595868],[115.995392,39.576958],[116.026189,39.587567],[116.036044,39.571884],[116.09887,39.575113],[116.130283,39.567732],[116.151841,39.583416],[116.198652,39.589412],[116.240536,39.564041],[116.257782,39.500344],[116.307057,39.488337],[116.337854,39.455536],[116.361876,39.455074],[116.361876,39.455074],[116.434557,39.442597],[116.454883,39.453226],[116.444412,39.482332],[116.411767,39.482794],[116.401912,39.528046],[116.443796,39.510041],[116.437637,39.526661],[116.478289,39.535431],[116.473361,39.552968],[116.50847,39.551122],[116.524484,39.596329],[116.592237,39.621227],[116.592237,39.621227],[116.620571,39.601863],[116.664918,39.605552],[116.723432,39.59264],[116.724048,39.59264],[116.723432,39.59264],[116.724048,39.59264],[116.726512,39.595407],[116.726512,39.595407],[116.709266,39.618],[116.748686,39.619844],[116.79057,39.595868],[116.812128,39.615695],[116.8497,39.66777],[116.906366,39.677444],[116.90575,39.688037],[116.889736,39.687576],[116.887272,39.72533],[116.916837,39.731314],[116.902055,39.763523],[116.949482,39.778703],[116.918069,39.84628],[116.907598,39.832494],[116.865714,39.843982],[116.812128,39.889916],[116.78441,39.891294],[116.782563,39.947749],[116.757925,39.967934],[116.781331,40.034866],[116.820135,40.02845],[116.831222,40.051359],[116.867562,40.041739],[116.927924,40.055024],[116.945171,40.04128],[117.025243,40.030283],[117.051728,40.059605],[117.105315,40.074261],[117.105315,40.074261],[117.140423,40.064185],[117.159517,40.077008],[117.204481,40.069681],[117.210024,40.082045],[117.224191,40.094865],[117.224191,40.094865],[117.254988,40.114548],[117.254988,40.114548],[117.254988,40.114548],[117.274082,40.105852],[117.307343,40.136971],[117.349227,40.136513],[117.367089,40.172649],[117.367089,40.173106],[117.367089,40.173106],[117.367089,40.172649],[117.383719,40.188195],[117.389879,40.227958],[117.351075,40.229786],[117.331365,40.289613],[117.295024,40.2782],[117.271618,40.325211],[117.271618,40.325211],[117.243285,40.369453],[117.226039,40.368997],[117.234046,40.417312],[117.263611,40.442367],[117.208793,40.501552],[117.262995,40.512927],[117.247597,40.539766],[117.269771,40.560684],[117.348611,40.581141],[117.348611,40.581141]]]]}},{"type":"Feature","properties":{"adcode":120000,"name":"天津市","center":[117.190182,39.125596],"centroid":[117.347043,39.288036],"childrenNum":16,"level":"province","parent":{"adcode":100000},"subFeatureIndex":1,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.765602,39.400527],[117.846906,39.407926],[117.871543,39.411625],[117.870311,39.455074],[117.899877,39.474479],[117.912195,39.517428],[117.912195,39.517428],[117.904804,39.533585],[117.933753,39.574191],[117.868464,39.59679],[117.829659,39.589873],[117.766834,39.598635],[117.753899,39.579726],[117.753899,39.579726],[117.745276,39.547892],[117.715711,39.529892],[117.707088,39.576036],[117.684914,39.58895],[117.654117,39.575113],[117.637486,39.603246],[117.66274,39.636437],[117.668899,39.666849],[117.627015,39.703693],[117.57774,39.726711],[117.595603,39.74604],[117.56111,39.754782],[117.546327,39.775943],[117.561726,39.799856],[117.529081,39.859144],[117.529081,39.859144],[117.508139,39.901854],[117.508139,39.901854],[117.512451,39.90874],[117.512451,39.90874],[117.513067,39.910576],[117.513067,39.910576],[117.514914,39.946832],[117.534625,39.954631],[117.546327,39.999116],[117.594987,39.994531],[117.594987,39.994531],[117.614697,39.97252],[117.671363,39.973896],[117.691073,39.984902],[117.756363,39.965181],[117.781616,39.966558],[117.781616,39.966558],[117.795167,39.996823],[117.795167,39.996823],[117.793319,40.005534],[117.793319,40.005534],[117.768681,40.022034],[117.768681,40.022034],[117.744044,40.018368],[117.74774,40.047236],[117.776073,40.059605],[117.752667,40.081588],[117.71879,40.082045],[117.71879,40.082045],[117.675059,40.082045],[117.655965,40.109514],[117.655965,40.109514],[117.654117,40.114548],[117.654117,40.114548],[117.651653,40.122786],[117.651653,40.122786],[117.613465,40.158014],[117.613465,40.158014],[117.609769,40.160301],[117.609769,40.160301],[117.576508,40.178593],[117.571581,40.219276],[117.548791,40.232527],[117.505059,40.227044],[117.450241,40.252627],[117.415748,40.248973],[117.389879,40.227958],[117.383719,40.188195],[117.367089,40.172649],[117.367089,40.173106],[117.367089,40.173106],[117.367089,40.172649],[117.349227,40.136513],[117.307343,40.136971],[117.274082,40.105852],[117.254988,40.114548],[117.254988,40.114548],[117.254988,40.114548],[117.224191,40.094865],[117.224191,40.094865],[117.210024,40.082045],[117.192162,40.066475],[117.198322,39.992697],[117.150894,39.944996],[117.162597,39.876598],[117.162597,39.876598],[117.227887,39.852712],[117.247597,39.860981],[117.251908,39.834332],[117.192162,39.832953],[117.156438,39.817326],[117.15767,39.796638],[117.205713,39.763984],[117.161981,39.748801],[117.165061,39.718886],[117.165061,39.718886],[117.177996,39.645194],[117.152742,39.623532],[117.10901,39.625375],[117.10901,39.625375],[117.016004,39.653949],[116.983359,39.638742],[116.983359,39.638742],[116.964265,39.64335],[116.948866,39.680668],[116.948866,39.680668],[116.944555,39.695405],[116.944555,39.695405],[116.932236,39.706456],[116.932236,39.706456],[116.90575,39.688037],[116.906366,39.677444],[116.8497,39.66777],[116.812128,39.615695],[116.808432,39.576497],[116.78749,39.554352],[116.819519,39.528507],[116.820751,39.482332],[116.785026,39.465702],[116.832454,39.435664],[116.876185,39.43474],[116.839845,39.413474],[116.840461,39.378326],[116.818287,39.3737],[116.829374,39.338994],[116.870642,39.357506],[116.889736,39.338068],[116.87249,39.291304],[116.881729,39.225966],[116.881729,39.225966],[116.855859,39.215766],[116.870026,39.153607],[116.909446,39.150822],[116.912526,39.110898],[116.91191,39.111362],[116.91191,39.111362],[116.912526,39.110898],[116.871874,39.054688],[116.812744,39.05097],[116.812744,39.05097],[116.783179,39.05097],[116.783179,39.05097],[116.754229,39.034701],[116.754229,39.034701],[116.754845,39.003084],[116.72836,38.975174],[116.708034,38.931892],[116.722201,38.896968],[116.723432,38.852706],[116.75115,38.831264],[116.737599,38.784629],[116.746222,38.754299],[116.794265,38.744498],[116.794265,38.744498],[116.858939,38.741231],[116.877417,38.680522],[116.948866,38.689398],[116.950714,38.689398],[116.95133,38.689398],[116.950714,38.689398],[116.948866,38.689398],[116.95133,38.689398],[117.038793,38.688464],[117.068358,38.680522],[117.055424,38.639398],[117.070822,38.608072],[117.109626,38.584685],[117.150894,38.617892],[117.183539,38.61836],[117.183539,38.61836],[117.213104,38.639866],[117.213104,38.639866],[117.258684,38.608072],[117.258684,38.608072],[117.238358,38.580943],[117.25314,38.556143],[117.368937,38.564566],[117.432379,38.601524],[117.47919,38.616489],[117.55803,38.613683],[117.639334,38.626776],[117.65658,38.66043],[117.729261,38.680055],[117.740964,38.700141],[117.740964,38.753833],[117.671363,38.772032],[117.646725,38.788827],[117.64611,38.828933],[117.752051,38.847579],[117.778536,38.869016],[117.847522,38.855502],[117.875855,38.920252],[117.898029,38.948649],[117.855529,38.957492],[117.837667,39.057011],[117.871543,39.122506],[117.96455,39.172631],[117.977485,39.206028],[118.032919,39.219939],[118.034767,39.218548],[118.064948,39.231065],[118.064948,39.256094],[118.036615,39.264898],[118.024296,39.289451],[118.024296,39.289451],[117.982412,39.298714],[117.982412,39.298714],[117.979333,39.300566],[117.979333,39.300566],[117.973173,39.312143],[117.973173,39.312143],[117.965782,39.314921],[117.965782,39.314921],[117.919587,39.318162],[117.919587,39.318162],[117.88879,39.332051],[117.854913,39.328348],[117.854297,39.328348],[117.854913,39.328348],[117.854297,39.328348],[117.850601,39.363984],[117.850601,39.363984],[117.810565,39.354729],[117.805022,39.373237],[117.784696,39.376938],[117.74466,39.354729],[117.670747,39.357969],[117.669515,39.322792],[117.594987,39.349176],[117.536472,39.338068],[117.521074,39.357043],[117.570965,39.404689],[117.601146,39.419485],[117.614081,39.407001],[117.668899,39.412087],[117.673211,39.386652],[117.699696,39.407463],[117.765602,39.400527]]],[[[117.805022,39.373237],[117.852449,39.380639],[117.846906,39.407926],[117.765602,39.400527],[117.784696,39.376938],[117.805022,39.373237]]]]}},{"type":"Feature","properties":{"adcode":130000,"name":"河北省","center":[114.502461,38.045474],"childrenNum":11,"level":"province","parent":{"adcode":100000},"subFeatureIndex":2,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.467487,40.649738],[117.412669,40.605226],[117.429915,40.576141],[117.389879,40.561593],[117.348611,40.581141],[117.348611,40.581141],[117.269771,40.560684],[117.247597,40.539766],[117.262995,40.512927],[117.208793,40.501552],[117.263611,40.442367],[117.234046,40.417312],[117.226039,40.368997],[117.243285,40.369453],[117.271618,40.325211],[117.271618,40.325211],[117.295024,40.2782],[117.331365,40.289613],[117.351075,40.229786],[117.389879,40.227958],[117.415748,40.248973],[117.450241,40.252627],[117.505059,40.227044],[117.548791,40.232527],[117.571581,40.219276],[117.576508,40.178593],[117.609769,40.160301],[117.609769,40.160301],[117.613465,40.158014],[117.613465,40.158014],[117.651653,40.122786],[117.651653,40.122786],[117.654117,40.114548],[117.654117,40.114548],[117.655965,40.109514],[117.655965,40.109514],[117.675059,40.082045],[117.71879,40.082045],[117.71879,40.082045],[117.752667,40.081588],[117.776073,40.059605],[117.74774,40.047236],[117.744044,40.018368],[117.768681,40.022034],[117.768681,40.022034],[117.793319,40.005534],[117.793319,40.005534],[117.795167,39.996823],[117.795167,39.996823],[117.781616,39.966558],[117.781616,39.966558],[117.756363,39.965181],[117.691073,39.984902],[117.671363,39.973896],[117.614697,39.97252],[117.594987,39.994531],[117.594987,39.994531],[117.546327,39.999116],[117.534625,39.954631],[117.514914,39.946832],[117.513067,39.910576],[117.513067,39.910576],[117.512451,39.90874],[117.512451,39.90874],[117.508139,39.901854],[117.508139,39.901854],[117.529081,39.859144],[117.529081,39.859144],[117.561726,39.799856],[117.546327,39.775943],[117.56111,39.754782],[117.595603,39.74604],[117.57774,39.726711],[117.627015,39.703693],[117.668899,39.666849],[117.66274,39.636437],[117.637486,39.603246],[117.654117,39.575113],[117.684914,39.58895],[117.707088,39.576036],[117.715711,39.529892],[117.745276,39.547892],[117.753899,39.579726],[117.753899,39.579726],[117.766834,39.598635],[117.829659,39.589873],[117.868464,39.59679],[117.933753,39.574191],[117.904804,39.533585],[117.912195,39.517428],[117.912195,39.517428],[117.899877,39.474479],[117.870311,39.455074],[117.871543,39.411625],[117.846906,39.407926],[117.852449,39.380639],[117.805022,39.373237],[117.810565,39.354729],[117.850601,39.363984],[117.850601,39.363984],[117.854297,39.328348],[117.854913,39.328348],[117.854297,39.328348],[117.854913,39.328348],[117.88879,39.332051],[117.919587,39.318162],[117.919587,39.318162],[117.965782,39.314921],[117.965782,39.314921],[117.973173,39.312143],[117.973173,39.312143],[117.979333,39.300566],[117.979333,39.300566],[117.982412,39.298714],[117.982412,39.298714],[118.024296,39.289451],[118.024296,39.289451],[118.036615,39.264898],[118.064948,39.256094],[118.064948,39.231065],[118.034767,39.218548],[118.026144,39.201854],[118.070492,39.213911],[118.077883,39.201854],[118.12531,39.182838],[118.162883,39.136433],[118.1906,39.080708],[118.225092,39.034701],[118.319331,39.009594],[118.366143,39.016104],[118.377845,38.971917],[118.491178,38.909077],[118.539837,38.910008],[118.604511,38.971452],[118.570634,38.999363],[118.533062,39.090928],[118.588497,39.107648],[118.578642,39.130863],[118.637156,39.157319],[118.76096,39.133648],[118.814546,39.138754],[118.857662,39.162888],[118.897082,39.151286],[118.920488,39.171703],[118.951285,39.178662],[118.896466,39.139683],[118.890307,39.118792],[118.926031,39.123435],[118.97777,39.163352],[119.023966,39.187012],[119.038132,39.211593],[119.096031,39.24219],[119.121284,39.281576],[119.185342,39.342234],[119.272805,39.363521],[119.317153,39.4107],[119.316537,39.437051],[119.269726,39.498497],[119.366428,39.734996],[119.474217,39.813189],[119.536427,39.809052],[119.520413,39.840306],[119.540739,39.888079],[119.588166,39.910576],[119.620195,39.904609],[119.642369,39.925264],[119.681789,39.922511],[119.726137,39.940867],[119.787115,39.950502],[119.820375,39.979399],[119.842549,39.956007],[119.872114,39.960594],[119.854252,39.98857],[119.845629,40.000949],[119.845629,40.000949],[119.854252,40.033033],[119.81668,40.050443],[119.81668,40.050443],[119.787115,40.041739],[119.787115,40.041739],[119.783419,40.046778],[119.783419,40.046778],[119.772332,40.08113],[119.736608,40.104936],[119.760629,40.136056],[119.745847,40.207851],[119.716898,40.195966],[119.671934,40.23938],[119.639289,40.231613],[119.639289,40.231613],[119.651608,40.271808],[119.598021,40.334335],[119.586934,40.375381],[119.604797,40.455119],[119.553674,40.502007],[119.572152,40.523846],[119.559217,40.547952],[119.503783,40.553864],[119.477913,40.533399],[119.429254,40.540221],[119.30237,40.530215],[119.256175,40.543404],[119.22045,40.569322],[119.230921,40.603863],[119.177951,40.609315],[119.162552,40.600228],[119.14469,40.632482],[119.184726,40.680153],[119.165632,40.69286],[119.115125,40.666536],[119.054763,40.664721],[119.028277,40.692406],[119.011031,40.687414],[118.96114,40.72008],[118.950053,40.747743],[118.895234,40.75409],[118.907553,40.775394],[118.878604,40.783098],[118.845959,40.822057],[118.873061,40.847866],[118.90201,40.960946],[118.916792,40.969984],[118.977154,40.959138],[118.977154,40.959138],[119.00056,40.967273],[119.013495,41.007479],[118.951901,41.018317],[118.937118,41.052625],[118.964836,41.079246],[119.037516,41.067516],[119.080632,41.095936],[119.081248,41.131555],[119.126212,41.138767],[119.189038,41.198234],[119.169943,41.222996],[119.204436,41.222546],[119.209364,41.244599],[119.2494,41.279689],[119.239545,41.31431],[119.211827,41.308016],[119.197661,41.282837],[119.168712,41.294978],[119.092951,41.293629],[118.980234,41.305769],[118.949437,41.317906],[118.890923,41.300823],[118.844727,41.342622],[118.843496,41.374516],[118.770199,41.352956],[118.741866,41.324198],[118.677192,41.35026],[118.629765,41.346666],[118.528135,41.355202],[118.412338,41.331838],[118.380309,41.312062],[118.348896,41.342622],[118.361215,41.384844],[118.348896,41.428384],[118.327338,41.450816],[118.271904,41.471446],[118.315636,41.512688],[118.302701,41.55256],[118.215237,41.59554],[118.206614,41.650566],[118.159187,41.67605],[118.155491,41.712694],[118.132702,41.733241],[118.140093,41.784134],[118.178281,41.814917],[118.236179,41.80778],[118.247266,41.773869],[118.29223,41.772976],[118.335346,41.845241],[118.340273,41.87243],[118.268824,41.930336],[118.306396,41.940131],[118.313788,41.98819],[118.291614,42.007759],[118.239875,42.024655],[118.286686,42.033991],[118.296541,42.057545],[118.27252,42.083312],[118.239259,42.092639],[118.212774,42.081091],[118.220165,42.058434],[118.194296,42.031324],[118.116687,42.037102],[118.155491,42.081091],[118.097593,42.105072],[118.089586,42.12283],[118.106216,42.172082],[118.033535,42.199132],[117.977485,42.229716],[117.974405,42.25054],[118.047702,42.280656],[118.060021,42.298364],[118.008898,42.346595],[118.024296,42.385064],[117.997811,42.416884],[117.874007,42.510038],[117.856761,42.539148],[117.797631,42.585431],[117.801326,42.612744],[117.779768,42.61847],[117.708935,42.588515],[117.667051,42.582347],[117.60053,42.603054],[117.537088,42.603054],[117.530313,42.590278],[117.475494,42.602613],[117.435458,42.585431],[117.434226,42.557224],[117.387415,42.517537],[117.387415,42.517537],[117.410205,42.519743],[117.413284,42.471645],[117.390495,42.461933],[117.332596,42.46105],[117.332596,42.46105],[117.275314,42.481797],[117.275314,42.481797],[117.188467,42.468114],[117.188467,42.468114],[117.135496,42.468996],[117.09546,42.484004],[117.080061,42.463699],[117.080061,42.463699],[117.01662,42.456193],[117.01662,42.456193],[117.009228,42.44957],[117.009228,42.44957],[117.005533,42.43367],[117.005533,42.43367],[116.99075,42.425719],[116.99075,42.425719],[116.974736,42.426603],[116.974736,42.426603],[116.97104,42.427486],[116.97104,42.427486],[116.944555,42.415116],[116.944555,42.415116],[116.936547,42.410256],[116.936547,42.410256],[116.921765,42.403628],[116.921765,42.403628],[116.910062,42.395231],[116.910062,42.395231],[116.910678,42.394789],[116.910678,42.394789],[116.886656,42.366496],[116.897743,42.297479],[116.918685,42.229716],[116.903287,42.190708],[116.789338,42.200462],[116.825062,42.155669],[116.850316,42.156556],[116.890352,42.092639],[116.879881,42.018431],[116.796113,41.977958],[116.748686,41.984186],[116.727744,41.951259],[116.66923,41.947698],[116.639049,41.929891],[116.597165,41.935679],[116.553433,41.928555],[116.510933,41.974399],[116.4826,41.975734],[116.453651,41.945917],[116.393289,41.942802],[116.414231,41.982407],[116.373579,42.009983],[116.310137,41.997086],[116.298434,41.96817],[116.223906,41.932562],[116.212819,41.885352],[116.194341,41.861734],[116.122892,41.861734],[116.106877,41.831419],[116.129051,41.805996],[116.09887,41.776547],[116.034196,41.782795],[116.007095,41.79752],[116.007095,41.797966],[116.007095,41.79752],[116.007095,41.797966],[115.994776,41.828743],[115.954124,41.874213],[115.916552,41.945027],[115.85311,41.927665],[115.834632,41.93835],[115.811226,41.912525],[115.726227,41.870202],[115.688038,41.867528],[115.654162,41.829189],[115.57409,41.80555],[115.519887,41.76762],[115.488474,41.760924],[115.42996,41.728775],[115.346808,41.712247],[115.319091,41.691693],[115.360975,41.661297],[115.345576,41.635807],[115.377605,41.603148],[115.310468,41.592854],[115.290142,41.622835],[115.26612,41.616124],[115.256881,41.580768],[115.20391,41.571367],[115.195287,41.602253],[115.0992,41.62373],[115.056085,41.602253],[115.016049,41.615229],[114.860832,41.60091],[114.895325,41.636255],[114.902716,41.695715],[114.89594,41.76762],[114.868839,41.813579],[114.922426,41.825175],[114.939056,41.846132],[114.923658,41.871093],[114.915035,41.960605],[114.9021,42.015763],[114.860832,42.054879],[114.86268,42.097967],[114.825723,42.139695],[114.79431,42.149457],[114.789383,42.130819],[114.75489,42.115727],[114.675434,42.12061],[114.647717,42.109512],[114.560254,42.132595],[114.510978,42.110844],[114.502355,42.06732],[114.480181,42.064654],[114.467863,42.025989],[114.511594,41.981962],[114.478334,41.951704],[114.419203,41.942356],[114.352066,41.953484],[114.343443,41.926774],[114.282465,41.863517],[114.200545,41.789934],[114.215328,41.75646],[114.206704,41.7386],[114.237501,41.698843],[114.215328,41.68499],[114.259059,41.623282],[114.226414,41.616572],[114.221487,41.582111],[114.230726,41.513584],[114.101379,41.537779],[114.032394,41.529715],[113.976959,41.505966],[113.953553,41.483553],[113.933227,41.487139],[113.919677,41.454404],[113.877793,41.431076],[113.871017,41.413126],[113.94493,41.392477],[113.92522,41.325546],[113.899351,41.316108],[113.914749,41.294529],[113.95109,41.282837],[113.971416,41.239649],[113.992357,41.269794],[114.016379,41.231999],[113.996669,41.19238],[113.960945,41.171211],[113.920293,41.172112],[113.877793,41.115777],[113.819279,41.09774],[113.868554,41.06887],[113.973263,40.983087],[113.994821,40.938798],[114.057647,40.925234],[114.041633,40.917546],[114.055183,40.867782],[114.073661,40.857372],[114.044712,40.830661],[114.080437,40.790348],[114.104458,40.797597],[114.103227,40.770861],[114.134639,40.737314],[114.162357,40.71373],[114.183299,40.67153],[114.236269,40.607043],[114.283081,40.590685],[114.273842,40.552954],[114.293552,40.55159],[114.282465,40.494725],[114.267066,40.474242],[114.299711,40.44009],[114.286161,40.425057],[114.31203,40.372645],[114.381015,40.36307],[114.390254,40.351213],[114.438914,40.371733],[114.481413,40.34802],[114.530688,40.345283],[114.510978,40.302851],[114.46971,40.268155],[114.406269,40.246232],[114.362537,40.249886],[114.292936,40.230242],[114.255364,40.236182],[114.235654,40.198252],[114.180219,40.191395],[114.135871,40.175392],[114.097683,40.193681],[114.073046,40.168533],[114.073046,40.168533],[114.101995,40.099901],[114.086596,40.071513],[114.045944,40.056856],[114.018227,40.103563],[113.989278,40.11226],[113.959097,40.033491],[113.910438,40.015618],[114.029314,39.985819],[114.028082,39.959218],[114.047176,39.916085],[114.067502,39.922511],[114.17406,39.897722],[114.212248,39.918839],[114.229494,39.899558],[114.204241,39.885324],[114.215943,39.8619],[114.286776,39.871087],[114.285545,39.858225],[114.395182,39.867412],[114.406885,39.833413],[114.390254,39.819165],[114.41674,39.775943],[114.409964,39.761683],[114.408117,39.652106],[114.431522,39.613851],[114.49558,39.608318],[114.51529,39.564964],[114.568877,39.573729],[114.532536,39.486027],[114.501739,39.476789],[114.496812,39.438437],[114.469095,39.400989],[114.466631,39.329736],[114.430906,39.307513],[114.437066,39.259337],[114.416124,39.242654],[114.47587,39.21623],[114.443841,39.174023],[114.388406,39.176807],[114.360689,39.134112],[114.369928,39.107648],[114.345907,39.075133],[114.252284,39.073739],[114.180835,39.049111],[114.157429,39.061194],[114.10877,39.052364],[114.082901,39.09325],[114.082901,39.09325],[114.064422,39.094179],[114.050872,39.135969],[114.006524,39.122971],[113.994821,39.095572],[113.961561,39.100681],[113.930148,39.063517],[113.898119,39.067699],[113.80696,38.989595],[113.776779,38.986804],[113.76754,38.959819],[113.776163,38.885788],[113.795257,38.860628],[113.855619,38.828933],[113.836525,38.795824],[113.839605,38.7585],[113.802648,38.763166],[113.775547,38.709949],[113.720728,38.713218],[113.70225,38.651551],[113.612939,38.645942],[113.603084,38.587024],[113.561816,38.558483],[113.546417,38.492936],[113.583374,38.459671],[113.537794,38.417952],[113.525475,38.383245],[113.557504,38.343359],[113.54457,38.270569],[113.570439,38.237202],[113.598772,38.22733],[113.64312,38.232031],[113.678844,38.20523],[113.711489,38.213695],[113.720728,38.174656],[113.797105,38.162894],[113.831597,38.16854],[113.811271,38.117707],[113.876561,38.055059],[113.872249,37.990471],[113.901198,37.984811],[113.936307,37.922993],[113.959097,37.906468],[113.976959,37.816696],[114.006524,37.813386],[114.044712,37.761834],[113.996669,37.730128],[113.993589,37.706932],[114.068118,37.721608],[114.12848,37.698409],[114.139567,37.675676],[114.115545,37.619761],[114.118625,37.59084],[114.036705,37.494037],[114.014531,37.42468],[113.973879,37.40329],[113.962792,37.355734],[113.90243,37.310052],[113.886416,37.239095],[113.853155,37.215269],[113.832213,37.167594],[113.773083,37.151855],[113.773699,37.107004],[113.758301,37.075497],[113.788482,37.059739],[113.771851,37.016745],[113.791561,36.98759],[113.76138,36.956034],[113.792793,36.894796],[113.773083,36.85506],[113.731815,36.858891],[113.731815,36.878521],[113.696707,36.882351],[113.676381,36.855539],[113.680692,36.789907],[113.600004,36.752995],[113.549497,36.752515],[113.535946,36.732373],[113.499606,36.740527],[113.465113,36.707908],[113.506997,36.705029],[113.476816,36.655114],[113.486671,36.635427],[113.54457,36.62342],[113.539642,36.594116],[113.569823,36.585947],[113.588917,36.547974],[113.559968,36.528741],[113.554425,36.494589],[113.587069,36.460904],[113.635729,36.451277],[113.670221,36.425278],[113.708409,36.423352],[113.731199,36.363135],[113.755221,36.366026],[113.813119,36.332285],[113.856851,36.329392],[113.84946,36.347711],[113.882104,36.353977],[113.911054,36.314927],[113.962792,36.353977],[113.981887,36.31782],[114.002828,36.334214],[114.056415,36.329392],[114.04348,36.303353],[114.080437,36.269585],[114.129096,36.280199],[114.175907,36.264759],[114.170364,36.245938],[114.170364,36.245938],[114.203009,36.245456],[114.2104,36.272962],[114.241197,36.251247],[114.257827,36.263794],[114.299095,36.245938],[114.345291,36.255591],[114.356378,36.230492],[114.408117,36.224699],[114.417356,36.205868],[114.466015,36.197658],[114.480181,36.177855],[114.533152,36.171575],[114.586739,36.141133],[114.588587,36.118414],[114.640326,36.137266],[114.720398,36.140166],[114.734564,36.15563],[114.771521,36.124699],[114.857752,36.127599],[114.858368,36.144516],[114.912571,36.140649],[114.926737,36.089403],[114.914419,36.052155],[114.998186,36.069572],[115.04623,36.112613],[115.048693,36.161912],[115.06286,36.178338],[115.104744,36.172058],[115.12507,36.209731],[115.1842,36.193312],[115.201446,36.210214],[115.201446,36.210214],[115.202678,36.209248],[115.202678,36.209248],[115.202678,36.208765],[115.202678,36.208765],[115.242098,36.19138],[115.279055,36.13775],[115.30246,36.127599],[115.312931,36.088436],[115.365902,36.099074],[115.376989,36.128083],[115.450902,36.152248],[115.465068,36.170125],[115.483547,36.148865],[115.474923,36.248352],[115.466916,36.258969],[115.466916,36.258969],[115.462605,36.276339],[115.417025,36.292742],[115.423185,36.32216],[115.366518,36.30914],[115.368982,36.342409],[115.340033,36.398307],[115.297533,36.413239],[115.317243,36.454166],[115.291374,36.460423],[115.272895,36.497476],[115.33141,36.550378],[115.355431,36.627262],[115.365902,36.621979],[115.420105,36.686795],[115.451518,36.702151],[115.479851,36.760187],[115.524815,36.763543],[115.683727,36.808117],[115.71206,36.883308],[115.75764,36.902453],[115.79706,36.968945],[115.776734,36.992848],[115.85619,37.060694],[115.888219,37.112254],[115.879596,37.150901],[115.91224,37.177132],[115.909777,37.20669],[115.969523,37.239572],[115.975682,37.337179],[116.024341,37.360015],[116.085935,37.373809],[116.106261,37.368577],[116.169087,37.384271],[116.193109,37.365723],[116.236224,37.361442],[116.2855,37.404241],[116.226369,37.428007],[116.243,37.447965],[116.224522,37.479791],[116.240536,37.489764],[116.240536,37.489764],[116.27626,37.466967],[116.290427,37.484065],[116.278724,37.524895],[116.295355,37.554316],[116.336007,37.581355],[116.36742,37.566177],[116.379738,37.522047],[116.38097,37.522522],[116.379738,37.522047],[116.38097,37.522522],[116.433941,37.473142],[116.448108,37.503059],[116.4826,37.521573],[116.575607,37.610754],[116.604556,37.624975],[116.66307,37.686096],[116.679085,37.728708],[116.724664,37.744327],[116.753613,37.77035],[116.753613,37.793054],[116.804736,37.848837],[116.837997,37.835132],[116.919301,37.846002],[117.027091,37.832296],[117.074518,37.848837],[117.150278,37.839385],[117.185387,37.849783],[117.271618,37.839858],[117.320278,37.861596],[117.400966,37.844584],[117.438538,37.854035],[117.481038,37.914967],[117.513067,37.94329],[117.524154,37.989527],[117.557414,38.046105],[117.557414,38.046105],[117.586979,38.071551],[117.704624,38.076262],[117.746508,38.12524],[117.771145,38.134655],[117.766834,38.158658],[117.789007,38.180772],[117.808718,38.22827],[117.848754,38.255062],[117.895565,38.301572],[117.948536,38.346644],[117.957775,38.376208],[117.937449,38.387936],[117.84629,38.368232],[117.781,38.373862],[117.730493,38.424985],[117.72495,38.457328],[117.678754,38.477008],[117.644878,38.52759],[117.68553,38.539293],[117.638102,38.54491],[117.639334,38.626776],[117.55803,38.613683],[117.47919,38.616489],[117.432379,38.601524],[117.368937,38.564566],[117.25314,38.556143],[117.238358,38.580943],[117.258684,38.608072],[117.258684,38.608072],[117.213104,38.639866],[117.213104,38.639866],[117.183539,38.61836],[117.183539,38.61836],[117.150894,38.617892],[117.109626,38.584685],[117.070822,38.608072],[117.055424,38.639398],[117.068358,38.680522],[117.038793,38.688464],[116.95133,38.689398],[116.948866,38.689398],[116.950714,38.689398],[116.95133,38.689398],[116.950714,38.689398],[116.948866,38.689398],[116.877417,38.680522],[116.858939,38.741231],[116.794265,38.744498],[116.794265,38.744498],[116.746222,38.754299],[116.737599,38.784629],[116.75115,38.831264],[116.723432,38.852706],[116.722201,38.896968],[116.708034,38.931892],[116.72836,38.975174],[116.754845,39.003084],[116.754229,39.034701],[116.754229,39.034701],[116.783179,39.05097],[116.783179,39.05097],[116.812744,39.05097],[116.812744,39.05097],[116.871874,39.054688],[116.912526,39.110898],[116.91191,39.111362],[116.91191,39.111362],[116.912526,39.110898],[116.909446,39.150822],[116.870026,39.153607],[116.855859,39.215766],[116.881729,39.225966],[116.881729,39.225966],[116.87249,39.291304],[116.889736,39.338068],[116.870642,39.357506],[116.829374,39.338994],[116.818287,39.3737],[116.840461,39.378326],[116.839845,39.413474],[116.876185,39.43474],[116.832454,39.435664],[116.785026,39.465702],[116.820751,39.482332],[116.819519,39.528507],[116.78749,39.554352],[116.808432,39.576497],[116.812128,39.615695],[116.79057,39.595868],[116.748686,39.619844],[116.709266,39.618],[116.726512,39.595407],[116.726512,39.595407],[116.724048,39.59264],[116.723432,39.59264],[116.724048,39.59264],[116.723432,39.59264],[116.664918,39.605552],[116.620571,39.601863],[116.592237,39.621227],[116.592237,39.621227],[116.524484,39.596329],[116.50847,39.551122],[116.473361,39.552968],[116.478289,39.535431],[116.437637,39.526661],[116.443796,39.510041],[116.401912,39.528046],[116.411767,39.482794],[116.444412,39.482332],[116.454883,39.453226],[116.434557,39.442597],[116.361876,39.455074],[116.361876,39.455074],[116.337854,39.455536],[116.307057,39.488337],[116.257782,39.500344],[116.240536,39.564041],[116.198652,39.589412],[116.151841,39.583416],[116.130283,39.567732],[116.09887,39.575113],[116.036044,39.571884],[116.026189,39.587567],[115.995392,39.576958],[115.978146,39.595868],[115.957204,39.560812],[115.910393,39.600479],[115.910393,39.600479],[115.91532,39.582955],[115.91532,39.582955],[115.867893,39.546507],[115.867893,39.546507],[115.828473,39.541431],[115.821081,39.522968],[115.821081,39.522968],[115.806299,39.510041],[115.806299,39.510041],[115.752712,39.515581],[115.738545,39.539585],[115.738545,39.540046],[115.738545,39.539585],[115.738545,39.540046],[115.724995,39.5442],[115.724995,39.5442],[115.722531,39.543738],[115.721299,39.543738],[115.722531,39.543738],[115.722531,39.5442],[115.721299,39.543738],[115.722531,39.5442],[115.720683,39.551122],[115.720683,39.551122],[115.718835,39.553891],[115.718835,39.553891],[115.716988,39.56035],[115.716988,39.56035],[115.699125,39.570039],[115.699125,39.570039],[115.698509,39.577881],[115.698509,39.577881],[115.667712,39.615234],[115.633836,39.599557],[115.633836,39.599557],[115.587024,39.589873],[115.545756,39.618922],[115.518039,39.597252],[115.522351,39.640124],[115.478619,39.650723],[115.478619,39.650723],[115.491554,39.670074],[115.486626,39.741899],[115.439815,39.752022],[115.443511,39.785601],[115.483547,39.798477],[115.483547,39.798477],[115.50572,39.784222],[115.552532,39.794799],[115.567314,39.816407],[115.514344,39.837549],[115.526046,39.87568],[115.515575,39.892212],[115.515575,39.892212],[115.522967,39.899099],[115.481083,39.935819],[115.426264,39.950502],[115.428728,39.984443],[115.450286,39.992697],[115.454597,40.029825],[115.485394,40.040364],[115.527278,40.076092],[115.59072,40.096239],[115.599959,40.119583],[115.75456,40.145663],[115.75456,40.145663],[115.773654,40.176307],[115.806299,40.15344],[115.847567,40.147036],[115.855574,40.188652],[115.870356,40.185909],[115.89869,40.234354],[115.968907,40.264045],[115.95166,40.281852],[115.917784,40.354405],[115.864197,40.359422],[115.771806,40.443734],[115.781045,40.49336],[115.736082,40.503372],[115.755176,40.540221],[115.784741,40.55841],[115.819849,40.55932],[115.827857,40.587504],[115.885139,40.595229],[115.907929,40.617493],[115.971986,40.6025],[115.982457,40.578868],[116.005247,40.583868],[116.09887,40.630665],[116.133979,40.666536],[116.162928,40.662451],[116.171551,40.695582],[116.204812,40.740035],[116.22021,40.744115],[116.247311,40.791707],[116.273181,40.762703],[116.311369,40.754996],[116.316912,40.772221],[116.453651,40.765876],[116.46597,40.774487],[116.438253,40.81934],[116.334159,40.90443],[116.339702,40.929303],[116.370499,40.94377],[116.398216,40.90624],[116.477057,40.899907],[116.447492,40.953715],[116.455499,40.980828],[116.519557,40.98128],[116.519557,40.98128],[116.5676,40.992574],[116.598397,40.974503],[116.623034,41.021026],[116.615643,41.053076],[116.647672,41.059394],[116.688324,41.044501],[116.698795,41.021477],[116.677853,40.970888],[116.722201,40.927495],[116.713577,40.909858],[116.759773,40.889954],[116.81336,40.848319],[116.848468,40.839264],[116.924229,40.773581],[116.926692,40.745022],[116.964881,40.709647],[117.012308,40.693767],[117.11209,40.707379],[117.117018,40.70012],[117.208177,40.694675],[117.278394,40.664267],[117.319662,40.657911],[117.342451,40.673799],[117.408973,40.686961],[117.493973,40.675161],[117.514914,40.660181],[117.501364,40.636569],[117.467487,40.649738],[117.467487,40.649738]]],[[[117.210024,40.082045],[117.204481,40.069681],[117.159517,40.077008],[117.140423,40.064185],[117.105315,40.074261],[117.105315,40.074261],[117.051728,40.059605],[117.025243,40.030283],[116.945171,40.04128],[116.927924,40.055024],[116.867562,40.041739],[116.831222,40.051359],[116.820135,40.02845],[116.781331,40.034866],[116.757925,39.967934],[116.782563,39.947749],[116.78441,39.891294],[116.812128,39.889916],[116.865714,39.843982],[116.907598,39.832494],[116.918069,39.84628],[116.949482,39.778703],[116.902055,39.763523],[116.916837,39.731314],[116.887272,39.72533],[116.889736,39.687576],[116.90575,39.688037],[116.932236,39.706456],[116.932236,39.706456],[116.944555,39.695405],[116.944555,39.695405],[116.948866,39.680668],[116.948866,39.680668],[116.964265,39.64335],[116.983359,39.638742],[116.983359,39.638742],[117.016004,39.653949],[117.10901,39.625375],[117.10901,39.625375],[117.152742,39.623532],[117.177996,39.645194],[117.165061,39.718886],[117.165061,39.718886],[117.161981,39.748801],[117.205713,39.763984],[117.15767,39.796638],[117.156438,39.817326],[117.192162,39.832953],[117.251908,39.834332],[117.247597,39.860981],[117.227887,39.852712],[117.162597,39.876598],[117.162597,39.876598],[117.150894,39.944996],[117.198322,39.992697],[117.192162,40.066475],[117.210024,40.082045]]],[[[117.784696,39.376938],[117.765602,39.400527],[117.699696,39.407463],[117.673211,39.386652],[117.668899,39.412087],[117.614081,39.407001],[117.601146,39.419485],[117.570965,39.404689],[117.521074,39.357043],[117.536472,39.338068],[117.594987,39.349176],[117.669515,39.322792],[117.670747,39.357969],[117.74466,39.354729],[117.784696,39.376938]]],[[[118.869365,39.142932],[118.82009,39.108576],[118.857662,39.098824],[118.869365,39.142932]]]]}},{"type":"Feature","properties":{"adcode":140000,"name":"山西省","center":[112.549248,37.857014],"centroid":[112.304436,37.618179],"childrenNum":11,"level":"province","parent":{"adcode":100000},"subFeatureIndex":3,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[110.379257,34.600612],[110.424837,34.588295],[110.488279,34.610956],[110.533242,34.583368],[110.610851,34.607508],[110.710017,34.605045],[110.749437,34.65232],[110.791937,34.649858],[110.824582,34.615881],[110.883712,34.64395],[110.903422,34.669056],[110.920052,34.730068],[110.976103,34.706456],[111.035233,34.740887],[111.118385,34.756623],[111.148566,34.807742],[111.232949,34.789559],[111.255123,34.819535],[111.29208,34.806759],[111.345666,34.831816],[111.389398,34.815113],[111.439289,34.838202],[111.502731,34.829851],[111.543999,34.853428],[111.570484,34.843114],[111.592042,34.881416],[111.617911,34.894671],[111.646861,34.938836],[111.681969,34.9511],[111.664107,34.984449],[111.740483,35.00455],[111.807005,35.032977],[111.810084,35.062374],[111.933272,35.083435],[111.97762,35.067272],[112.018888,35.068742],[112.039214,35.045717],[112.062004,35.056005],[112.05646,35.098615],[112.066315,35.153437],[112.03983,35.194039],[112.078634,35.219467],[112.058924,35.280069],[112.13838,35.271275],[112.21722,35.253195],[112.242474,35.234622],[112.304684,35.251728],[112.288053,35.219956],[112.36751,35.219956],[112.390915,35.239021],[112.513487,35.218489],[112.637291,35.225822],[112.628052,35.263457],[112.720443,35.206265],[112.772798,35.207732],[112.822073,35.258082],[112.884283,35.243909],[112.934174,35.262968],[112.936022,35.284466],[112.992072,35.29619],[112.985913,35.33965],[112.996384,35.362104],[113.067217,35.353806],[113.126347,35.332327],[113.149137,35.350878],[113.165151,35.412845],[113.185477,35.409431],[113.189789,35.44893],[113.243375,35.449418],[113.304353,35.426989],[113.31236,35.481101],[113.348085,35.468429],[113.391817,35.506925],[113.439244,35.507412],[113.49899,35.532254],[113.513773,35.57364],[113.55812,35.621816],[113.547649,35.656835],[113.578446,35.633491],[113.625258,35.632518],[113.622794,35.674825],[113.592613,35.691838],[113.587685,35.736542],[113.604932,35.797727],[113.582758,35.818111],[113.660982,35.837035],[113.637576,35.870019],[113.654207,35.931586],[113.648663,35.994073],[113.678844,35.985841],[113.694859,36.026991],[113.660366,36.034735],[113.68562,36.056026],[113.671453,36.115514],[113.655439,36.125182],[113.712721,36.129533],[113.705946,36.148865],[113.651127,36.174473],[113.697939,36.181719],[113.681924,36.216491],[113.716417,36.262347],[113.712105,36.303353],[113.736127,36.324571],[113.731199,36.363135],[113.708409,36.423352],[113.670221,36.425278],[113.635729,36.451277],[113.587069,36.460904],[113.554425,36.494589],[113.559968,36.528741],[113.588917,36.547974],[113.569823,36.585947],[113.539642,36.594116],[113.54457,36.62342],[113.486671,36.635427],[113.476816,36.655114],[113.506997,36.705029],[113.465113,36.707908],[113.499606,36.740527],[113.535946,36.732373],[113.549497,36.752515],[113.600004,36.752995],[113.680692,36.789907],[113.676381,36.855539],[113.696707,36.882351],[113.731815,36.878521],[113.731815,36.858891],[113.773083,36.85506],[113.792793,36.894796],[113.76138,36.956034],[113.791561,36.98759],[113.771851,37.016745],[113.788482,37.059739],[113.758301,37.075497],[113.773699,37.107004],[113.773083,37.151855],[113.832213,37.167594],[113.853155,37.215269],[113.886416,37.239095],[113.90243,37.310052],[113.962792,37.355734],[113.973879,37.40329],[114.014531,37.42468],[114.036705,37.494037],[114.118625,37.59084],[114.115545,37.619761],[114.139567,37.675676],[114.12848,37.698409],[114.068118,37.721608],[113.993589,37.706932],[113.996669,37.730128],[114.044712,37.761834],[114.006524,37.813386],[113.976959,37.816696],[113.959097,37.906468],[113.936307,37.922993],[113.901198,37.984811],[113.872249,37.990471],[113.876561,38.055059],[113.811271,38.117707],[113.831597,38.16854],[113.797105,38.162894],[113.720728,38.174656],[113.711489,38.213695],[113.678844,38.20523],[113.64312,38.232031],[113.598772,38.22733],[113.570439,38.237202],[113.54457,38.270569],[113.557504,38.343359],[113.525475,38.383245],[113.537794,38.417952],[113.583374,38.459671],[113.546417,38.492936],[113.561816,38.558483],[113.603084,38.587024],[113.612939,38.645942],[113.70225,38.651551],[113.720728,38.713218],[113.775547,38.709949],[113.802648,38.763166],[113.839605,38.7585],[113.836525,38.795824],[113.855619,38.828933],[113.795257,38.860628],[113.776163,38.885788],[113.76754,38.959819],[113.776779,38.986804],[113.80696,38.989595],[113.898119,39.067699],[113.930148,39.063517],[113.961561,39.100681],[113.994821,39.095572],[114.006524,39.122971],[114.050872,39.135969],[114.064422,39.094179],[114.082901,39.09325],[114.082901,39.09325],[114.10877,39.052364],[114.157429,39.061194],[114.180835,39.049111],[114.252284,39.073739],[114.345907,39.075133],[114.369928,39.107648],[114.360689,39.134112],[114.388406,39.176807],[114.443841,39.174023],[114.47587,39.21623],[114.416124,39.242654],[114.437066,39.259337],[114.430906,39.307513],[114.466631,39.329736],[114.469095,39.400989],[114.496812,39.438437],[114.501739,39.476789],[114.532536,39.486027],[114.568877,39.573729],[114.51529,39.564964],[114.49558,39.608318],[114.431522,39.613851],[114.408117,39.652106],[114.409964,39.761683],[114.41674,39.775943],[114.390254,39.819165],[114.406885,39.833413],[114.395182,39.867412],[114.285545,39.858225],[114.286776,39.871087],[114.215943,39.8619],[114.204241,39.885324],[114.229494,39.899558],[114.212248,39.918839],[114.17406,39.897722],[114.067502,39.922511],[114.047176,39.916085],[114.028082,39.959218],[114.029314,39.985819],[113.910438,40.015618],[113.959097,40.033491],[113.989278,40.11226],[114.018227,40.103563],[114.045944,40.056856],[114.086596,40.071513],[114.101995,40.099901],[114.073046,40.168533],[114.073046,40.168533],[114.097683,40.193681],[114.135871,40.175392],[114.180219,40.191395],[114.235654,40.198252],[114.255364,40.236182],[114.292936,40.230242],[114.362537,40.249886],[114.406269,40.246232],[114.46971,40.268155],[114.510978,40.302851],[114.530688,40.345283],[114.481413,40.34802],[114.438914,40.371733],[114.390254,40.351213],[114.381015,40.36307],[114.31203,40.372645],[114.286161,40.425057],[114.299711,40.44009],[114.267066,40.474242],[114.282465,40.494725],[114.293552,40.55159],[114.273842,40.552954],[114.283081,40.590685],[114.236269,40.607043],[114.183299,40.67153],[114.162357,40.71373],[114.134639,40.737314],[114.084748,40.729605],[114.063806,40.706925],[114.07243,40.679246],[114.041633,40.608861],[114.076741,40.575686],[114.080437,40.547952],[114.061959,40.52885],[114.011452,40.515657],[113.948626,40.514747],[113.890112,40.466503],[113.850691,40.460583],[113.794641,40.517932],[113.763228,40.473787],[113.688699,40.448288],[113.559968,40.348476],[113.500222,40.334335],[113.387505,40.319279],[113.316672,40.319736],[113.27602,40.388601],[113.251382,40.413211],[113.083231,40.374925],[113.03334,40.368997],[112.898449,40.329317],[112.848558,40.206937],[112.744464,40.167161],[112.712436,40.178593],[112.6299,40.235725],[112.511639,40.269068],[112.456205,40.300112],[112.418017,40.295091],[112.349031,40.257194],[112.310227,40.256281],[112.299756,40.21105],[112.232619,40.169905],[112.232003,40.133311],[112.183344,40.083877],[112.182112,40.061437],[112.142076,40.027076],[112.133453,40.001866],[112.07617,39.919298],[112.042294,39.886243],[112.012729,39.827438],[111.970229,39.796638],[111.959758,39.692642],[111.925265,39.66731],[111.9382,39.623071],[111.87907,39.606013],[111.842729,39.620305],[111.783599,39.58895],[111.722621,39.606013],[111.659179,39.641507],[111.625303,39.633672],[111.525521,39.662242],[111.497187,39.661781],[111.445448,39.640124],[111.460847,39.606935],[111.441137,39.59679],[111.422043,39.539123],[111.431282,39.508656],[111.372152,39.479099],[111.358601,39.432428],[111.337043,39.420872],[111.171971,39.423183],[111.143022,39.407926],[111.125776,39.366297],[111.159037,39.362596],[111.155341,39.338531],[111.186138,39.35149],[111.179363,39.326959],[111.202152,39.305197],[111.247732,39.302419],[111.213239,39.257021],[111.219399,39.244044],[111.163348,39.152678],[111.173819,39.135041],[111.147334,39.100681],[111.138095,39.064447],[111.094363,39.030053],[111.038313,39.020289],[110.998276,38.998433],[110.980414,38.970056],[111.009979,38.932823],[111.016755,38.889981],[110.995813,38.868084],[111.009363,38.847579],[110.965016,38.755699],[110.915125,38.704345],[110.916357,38.673981],[110.880632,38.626776],[110.898494,38.587024],[110.920052,38.581878],[110.907733,38.521035],[110.870777,38.510265],[110.874473,38.453579],[110.840596,38.439986],[110.796864,38.453579],[110.77777,38.440924],[110.746973,38.366355],[110.701394,38.353215],[110.661358,38.308617],[110.601612,38.308147],[110.57759,38.297345],[110.565887,38.215105],[110.528315,38.211814],[110.509221,38.192061],[110.519692,38.130889],[110.501829,38.097929],[110.507989,38.013107],[110.528315,37.990471],[110.522771,37.955088],[110.59422,37.922049],[110.680452,37.790216],[110.735886,37.77035],[110.750669,37.736281],[110.716792,37.728708],[110.706321,37.705511],[110.775306,37.680886],[110.793169,37.650567],[110.763604,37.639668],[110.771611,37.594634],[110.795017,37.558586],[110.770995,37.538184],[110.759292,37.474567],[110.740198,37.44939],[110.644111,37.435135],[110.630561,37.372858],[110.641648,37.360015],[110.695234,37.34955],[110.678604,37.317668],[110.690307,37.287201],[110.661974,37.281963],[110.651503,37.256722],[110.590525,37.187145],[110.53509,37.138021],[110.535706,37.115118],[110.49567,37.086956],[110.460561,37.044932],[110.417446,37.027257],[110.426685,37.008621],[110.382953,37.022001],[110.381721,37.002408],[110.424221,36.963685],[110.408823,36.892403],[110.376178,36.882351],[110.424221,36.855539],[110.406975,36.824886],[110.423605,36.818179],[110.407591,36.776007],[110.447011,36.737649],[110.438388,36.685835],[110.402663,36.697352],[110.394656,36.676716],[110.426685,36.657514],[110.447627,36.621018],[110.496902,36.582102],[110.488895,36.556628],[110.503677,36.488335],[110.47288,36.453203],[110.489511,36.430094],[110.487047,36.393972],[110.459946,36.327946],[110.474112,36.306729],[110.474112,36.248352],[110.45625,36.22663],[110.447011,36.164328],[110.467953,36.074893],[110.491974,36.034735],[110.49259,35.994073],[110.516612,35.971796],[110.502445,35.947575],[110.516612,35.918501],[110.511684,35.879718],[110.549257,35.877778],[110.550489,35.838005],[110.571431,35.800639],[110.57759,35.701559],[110.609619,35.632031],[110.589293,35.602355],[110.567735,35.539559],[110.531394,35.511309],[110.477808,35.413821],[110.45009,35.327933],[110.374946,35.251728],[110.378642,35.210666],[110.364475,35.197952],[110.373714,35.134351],[110.320743,35.00504],[110.262229,34.944233],[110.230816,34.880925],[110.246831,34.789068],[110.243135,34.725641],[110.229584,34.692679],[110.269004,34.629671],[110.29549,34.610956],[110.379257,34.600612]]]]}},{"type":"Feature","properties":{"adcode":150000,"name":"内蒙古自治区","center":[111.670801,40.818311],"centroid":[114.077429,44.331087],"childrenNum":12,"level":"province","parent":{"adcode":100000},"subFeatureIndex":4,"acroutes":[100000]},"geometry":{"type":"Polygon","coordinates":[[[97.172903,42.795257],[97.371235,42.457076],[97.500582,42.243894],[97.653335,41.986856],[97.84674,41.656379],[97.613915,41.477276],[97.629314,41.440498],[97.903407,41.168057],[97.971776,41.09774],[98.142391,41.001607],[98.184891,40.988056],[98.25018,40.93925],[98.333332,40.918903],[98.344419,40.568413],[98.627751,40.677884],[98.569853,40.746836],[98.668403,40.773128],[98.689345,40.691952],[98.72199,40.657911],[98.762642,40.639748],[98.802678,40.607043],[98.80699,40.660181],[98.790975,40.705564],[98.984996,40.782644],[99.041662,40.693767],[99.102025,40.676522],[99.12543,40.715091],[99.172858,40.747289],[99.174705,40.858278],[99.565827,40.846961],[99.673,40.93292],[99.985897,40.909858],[100.057346,40.908049],[100.107853,40.875475],[100.224882,40.727337],[100.237201,40.716905],[100.242744,40.618855],[100.169447,40.541131],[100.169447,40.277743],[100.007455,40.20008],[99.955716,40.150695],[99.927383,40.063727],[99.841152,40.013326],[99.751225,40.006909],[99.714268,39.972061],[99.533182,39.891753],[99.491298,39.884406],[99.459885,39.898181],[99.440791,39.885783],[99.469124,39.875221],[99.672384,39.888079],[99.822058,39.860063],[99.904593,39.785601],[99.958796,39.769504],[100.040716,39.757083],[100.128179,39.702312],[100.250135,39.685274],[100.314193,39.606935],[100.301258,39.572345],[100.326512,39.509118],[100.44354,39.485565],[100.500823,39.481408],[100.498975,39.400527],[100.606764,39.387577],[100.707778,39.404689],[100.842053,39.405614],[100.842669,39.199999],[100.864227,39.106719],[100.829118,39.075133],[100.835278,39.025869],[100.875314,39.002619],[100.901799,39.030053],[100.961545,39.005874],[100.969553,38.946788],[101.117378,38.975174],[101.228863,39.020754],[101.198682,38.943064],[101.237486,38.907214],[101.24303,38.860628],[101.33542,38.847113],[101.34158,38.822406],[101.307087,38.80282],[101.331109,38.777164],[101.412413,38.764099],[101.562702,38.713218],[101.601506,38.65529],[101.672955,38.6908],[101.777049,38.66043],[101.873751,38.733761],[101.941505,38.808883],[102.075164,38.891378],[102.045599,38.904885],[101.955055,38.985874],[101.926106,39.000758],[101.833715,39.08907],[101.902701,39.111827],[102.012338,39.127149],[102.050526,39.141075],[102.276576,39.188868],[102.3548,39.231993],[102.45335,39.255167],[102.579002,39.183301],[102.616574,39.171703],[102.883892,39.120649],[103.007696,39.099753],[103.133347,39.192579],[103.188166,39.215302],[103.259615,39.263971],[103.344615,39.331588],[103.428998,39.353341],[103.595302,39.386652],[103.728961,39.430117],[103.85338,39.461543],[103.955626,39.456923],[104.089901,39.419947],[104.073271,39.351953],[104.047401,39.297788],[104.171205,39.160567],[104.207546,39.083495],[104.190915,39.042139],[104.196459,38.9882],[104.173053,38.94446],[104.044322,38.895105],[104.011677,38.85923],[103.85954,38.64454],[103.416063,38.404821],[103.465339,38.353215],[103.507838,38.280905],[103.53494,38.156776],[103.368636,38.08898],[103.362477,38.037621],[103.40744,37.860651],[103.627947,37.797783],[103.683381,37.777919],[103.841062,37.64725],[103.874938,37.604117],[103.935916,37.572818],[104.089285,37.465067],[104.183524,37.406618],[104.237727,37.411847],[104.287002,37.428007],[104.322726,37.44844],[104.407726,37.464592],[104.419429,37.511604],[104.433595,37.515402],[104.623305,37.522522],[104.805007,37.539133],[104.866601,37.566651],[105.027977,37.580881],[105.111128,37.633981],[105.187505,37.657674],[105.221998,37.677097],[105.315004,37.702197],[105.4037,37.710246],[105.467141,37.695094],[105.598952,37.699356],[105.616199,37.722555],[105.622358,37.777919],[105.677177,37.771769],[105.760944,37.799674],[105.80406,37.862068],[105.799749,37.939986],[105.840401,38.004147],[105.780655,38.084741],[105.76772,38.121474],[105.775111,38.186887],[105.802828,38.220277],[105.842248,38.240962],[105.86627,38.296406],[105.821307,38.366824],[105.835473,38.387467],[105.827466,38.432486],[105.850872,38.443736],[105.836705,38.476071],[105.863806,38.53508],[105.856415,38.569714],[105.874277,38.593105],[105.852719,38.641735],[105.894603,38.696405],[105.88598,38.716953],[105.908154,38.737496],[105.909386,38.791159],[105.992538,38.857366],[105.97098,38.909077],[106.021487,38.953769],[106.060907,38.96866],[106.087392,39.006339],[106.078153,39.026333],[106.096631,39.084889],[106.145907,39.153142],[106.170544,39.163352],[106.192718,39.142932],[106.251232,39.131327],[106.285109,39.146181],[106.29558,39.167992],[106.280181,39.262118],[106.402753,39.291767],[106.511774,39.272311],[106.525325,39.308439],[106.556122,39.322329],[106.602318,39.37555],[106.643586,39.357969],[106.683622,39.357506],[106.751375,39.381564],[106.781556,39.371849],[106.806809,39.318625],[106.806193,39.277407],[106.790795,39.241263],[106.795723,39.214375],[106.825288,39.19397],[106.859164,39.107648],[106.878874,39.091392],[106.933693,39.076527],[106.96757,39.054688],[106.971881,39.026333],[106.954019,38.941202],[106.837606,38.847579],[106.756302,38.748699],[106.709491,38.718821],[106.66268,38.601524],[106.647897,38.470917],[106.599854,38.389812],[106.482209,38.319417],[106.555506,38.263521],[106.627571,38.232501],[106.654672,38.22921],[106.737824,38.197706],[106.779092,38.171833],[106.858548,38.156306],[106.942316,38.132302],[107.010069,38.120532],[107.051337,38.122886],[107.071047,38.138892],[107.119091,38.134185],[107.138801,38.161011],[107.19054,38.153953],[107.240431,38.111586],[107.33159,38.086625],[107.3938,38.014993],[107.440611,37.995659],[107.411662,37.948009],[107.448618,37.933378],[107.49235,37.944706],[107.560719,37.893717],[107.65003,37.86443],[107.684523,37.888522],[107.732566,37.84931],[107.842819,37.828987],[107.884703,37.808186],[107.982022,37.787378],[107.993109,37.735335],[108.025753,37.696041],[108.012819,37.66857],[108.025137,37.649619],[108.055318,37.652462],[108.134159,37.622131],[108.193905,37.638246],[108.205608,37.655779],[108.24626,37.665728],[108.293071,37.656726],[108.301078,37.640616],[108.422418,37.648672],[108.485244,37.678044],[108.532671,37.690832],[108.628142,37.651988],[108.699591,37.669518],[108.720533,37.683728],[108.777815,37.683728],[108.791982,37.700303],[108.784591,37.764673],[108.799989,37.784068],[108.791982,37.872934],[108.798141,37.93385],[108.82709,37.989056],[108.797525,38.04799],[108.830786,38.049875],[108.883141,38.01405],[108.893612,37.978207],[108.93488,37.922521],[108.9743,37.931962],[108.982923,37.964053],[109.018648,37.971602],[109.037742,38.021593],[109.06977,38.023008],[109.050676,38.055059],[109.069155,38.091336],[108.964445,38.154894],[108.938575,38.207582],[108.976148,38.245192],[108.961981,38.26493],[109.007561,38.359316],[109.051292,38.385122],[109.054372,38.433892],[109.128901,38.480288],[109.175712,38.518694],[109.196654,38.552867],[109.276726,38.623035],[109.331545,38.597783],[109.367269,38.627711],[109.329081,38.66043],[109.338936,38.701542],[109.404226,38.720689],[109.444262,38.782763],[109.511399,38.833595],[109.549587,38.805618],[109.624116,38.85457],[109.672159,38.928167],[109.685094,38.968195],[109.665384,38.981687],[109.72513,39.018429],[109.762086,39.057476],[109.793499,39.074204],[109.851397,39.122971],[109.890818,39.103932],[109.92223,39.107183],[109.893897,39.141075],[109.961035,39.191651],[109.871723,39.243581],[109.90252,39.271848],[109.962267,39.212056],[110.041107,39.21623],[110.109476,39.249606],[110.217881,39.281113],[110.184005,39.355192],[110.161831,39.387115],[110.136577,39.39174],[110.12549,39.432891],[110.152592,39.45415],[110.243751,39.423645],[110.257917,39.407001],[110.385417,39.310291],[110.429764,39.341308],[110.434692,39.381101],[110.482735,39.360745],[110.524003,39.382952],[110.559728,39.351027],[110.566503,39.320014],[110.596684,39.282966],[110.626249,39.266751],[110.702626,39.273701],[110.731575,39.30705],[110.73835,39.348713],[110.782698,39.38804],[110.869545,39.494341],[110.891103,39.509118],[110.958856,39.519275],[111.017371,39.552045],[111.101138,39.559428],[111.136863,39.587106],[111.154725,39.569116],[111.148566,39.531277],[111.10545,39.497573],[111.10545,39.472631],[111.058639,39.447681],[111.064182,39.400989],[111.098059,39.401914],[111.087588,39.376013],[111.125776,39.366297],[111.143022,39.407926],[111.171971,39.423183],[111.337043,39.420872],[111.358601,39.432428],[111.372152,39.479099],[111.431282,39.508656],[111.422043,39.539123],[111.441137,39.59679],[111.460847,39.606935],[111.445448,39.640124],[111.497187,39.661781],[111.525521,39.662242],[111.625303,39.633672],[111.659179,39.641507],[111.722621,39.606013],[111.783599,39.58895],[111.842729,39.620305],[111.87907,39.606013],[111.9382,39.623071],[111.925265,39.66731],[111.959758,39.692642],[111.970229,39.796638],[112.012729,39.827438],[112.042294,39.886243],[112.07617,39.919298],[112.133453,40.001866],[112.142076,40.027076],[112.182112,40.061437],[112.183344,40.083877],[112.232003,40.133311],[112.232619,40.169905],[112.299756,40.21105],[112.310227,40.256281],[112.349031,40.257194],[112.418017,40.295091],[112.456205,40.300112],[112.511639,40.269068],[112.6299,40.235725],[112.712436,40.178593],[112.744464,40.167161],[112.848558,40.206937],[112.898449,40.329317],[113.03334,40.368997],[113.083231,40.374925],[113.251382,40.413211],[113.27602,40.388601],[113.316672,40.319736],[113.387505,40.319279],[113.500222,40.334335],[113.559968,40.348476],[113.688699,40.448288],[113.763228,40.473787],[113.794641,40.517932],[113.850691,40.460583],[113.890112,40.466503],[113.948626,40.514747],[114.011452,40.515657],[114.061959,40.52885],[114.080437,40.547952],[114.076741,40.575686],[114.041633,40.608861],[114.07243,40.679246],[114.063806,40.706925],[114.084748,40.729605],[114.134639,40.737314],[114.103227,40.770861],[114.104458,40.797597],[114.080437,40.790348],[114.044712,40.830661],[114.073661,40.857372],[114.055183,40.867782],[114.041633,40.917546],[114.057647,40.925234],[113.994821,40.938798],[113.973263,40.983087],[113.868554,41.06887],[113.819279,41.09774],[113.877793,41.115777],[113.920293,41.172112],[113.960945,41.171211],[113.996669,41.19238],[114.016379,41.231999],[113.992357,41.269794],[113.971416,41.239649],[113.95109,41.282837],[113.914749,41.294529],[113.899351,41.316108],[113.92522,41.325546],[113.94493,41.392477],[113.871017,41.413126],[113.877793,41.431076],[113.919677,41.454404],[113.933227,41.487139],[113.953553,41.483553],[113.976959,41.505966],[114.032394,41.529715],[114.101379,41.537779],[114.230726,41.513584],[114.221487,41.582111],[114.226414,41.616572],[114.259059,41.623282],[114.215328,41.68499],[114.237501,41.698843],[114.206704,41.7386],[114.215328,41.75646],[114.200545,41.789934],[114.282465,41.863517],[114.343443,41.926774],[114.352066,41.953484],[114.419203,41.942356],[114.478334,41.951704],[114.511594,41.981962],[114.467863,42.025989],[114.480181,42.064654],[114.502355,42.06732],[114.510978,42.110844],[114.560254,42.132595],[114.647717,42.109512],[114.675434,42.12061],[114.75489,42.115727],[114.789383,42.130819],[114.79431,42.149457],[114.825723,42.139695],[114.86268,42.097967],[114.860832,42.054879],[114.9021,42.015763],[114.915035,41.960605],[114.923658,41.871093],[114.939056,41.846132],[114.922426,41.825175],[114.868839,41.813579],[114.89594,41.76762],[114.902716,41.695715],[114.895325,41.636255],[114.860832,41.60091],[115.016049,41.615229],[115.056085,41.602253],[115.0992,41.62373],[115.195287,41.602253],[115.20391,41.571367],[115.256881,41.580768],[115.26612,41.616124],[115.290142,41.622835],[115.310468,41.592854],[115.377605,41.603148],[115.345576,41.635807],[115.360975,41.661297],[115.319091,41.691693],[115.346808,41.712247],[115.42996,41.728775],[115.488474,41.760924],[115.519887,41.76762],[115.57409,41.80555],[115.654162,41.829189],[115.688038,41.867528],[115.726227,41.870202],[115.811226,41.912525],[115.834632,41.93835],[115.85311,41.927665],[115.916552,41.945027],[115.954124,41.874213],[115.994776,41.828743],[116.007095,41.797966],[116.007095,41.79752],[116.034196,41.782795],[116.09887,41.776547],[116.129051,41.805996],[116.106877,41.831419],[116.122892,41.861734],[116.194341,41.861734],[116.212819,41.885352],[116.223906,41.932562],[116.298434,41.96817],[116.310137,41.997086],[116.373579,42.009983],[116.414231,41.982407],[116.393289,41.942802],[116.453651,41.945917],[116.4826,41.975734],[116.510933,41.974399],[116.553433,41.928555],[116.597165,41.935679],[116.639049,41.929891],[116.66923,41.947698],[116.727744,41.951259],[116.748686,41.984186],[116.796113,41.977958],[116.879881,42.018431],[116.890352,42.092639],[116.850316,42.156556],[116.825062,42.155669],[116.789338,42.200462],[116.903287,42.190708],[116.918685,42.229716],[116.897743,42.297479],[116.886656,42.366496],[116.910678,42.394789],[116.910062,42.395231],[116.921765,42.403628],[116.936547,42.410256],[116.944555,42.415116],[116.97104,42.427486],[116.974736,42.426603],[116.99075,42.425719],[117.005533,42.43367],[117.009228,42.44957],[117.01662,42.456193],[117.080061,42.463699],[117.09546,42.484004],[117.135496,42.468996],[117.188467,42.468114],[117.275314,42.481797],[117.332596,42.46105],[117.390495,42.461933],[117.413284,42.471645],[117.410205,42.519743],[117.387415,42.517537],[117.434226,42.557224],[117.435458,42.585431],[117.475494,42.602613],[117.530313,42.590278],[117.537088,42.603054],[117.60053,42.603054],[117.667051,42.582347],[117.708935,42.588515],[117.779768,42.61847],[117.801326,42.612744],[117.797631,42.585431],[117.856761,42.539148],[117.874007,42.510038],[117.997811,42.416884],[118.024296,42.385064],[118.008898,42.346595],[118.060021,42.298364],[118.047702,42.280656],[117.974405,42.25054],[117.977485,42.229716],[118.033535,42.199132],[118.106216,42.172082],[118.089586,42.12283],[118.097593,42.105072],[118.155491,42.081091],[118.116687,42.037102],[118.194296,42.031324],[118.220165,42.058434],[118.212774,42.081091],[118.239259,42.092639],[118.27252,42.083312],[118.296541,42.057545],[118.286686,42.033991],[118.239875,42.024655],[118.291614,42.007759],[118.313788,41.98819],[118.306396,41.940131],[118.268824,41.930336],[118.340273,41.87243],[118.335346,41.845241],[118.29223,41.772976],[118.247266,41.773869],[118.236179,41.80778],[118.178281,41.814917],[118.140093,41.784134],[118.132702,41.733241],[118.155491,41.712694],[118.159187,41.67605],[118.206614,41.650566],[118.215237,41.59554],[118.302701,41.55256],[118.315636,41.512688],[118.271904,41.471446],[118.327338,41.450816],[118.348896,41.428384],[118.361215,41.384844],[118.348896,41.342622],[118.380309,41.312062],[118.412338,41.331838],[118.528135,41.355202],[118.629765,41.346666],[118.677192,41.35026],[118.741866,41.324198],[118.770199,41.352956],[118.843496,41.374516],[118.844727,41.342622],[118.890923,41.300823],[118.949437,41.317906],[118.980234,41.305769],[119.092951,41.293629],[119.168712,41.294978],[119.197661,41.282837],[119.211827,41.308016],[119.239545,41.31431],[119.296211,41.325097],[119.330704,41.385293],[119.309762,41.405944],[119.376283,41.422102],[119.378131,41.459787],[119.401537,41.472343],[119.406464,41.503276],[119.361501,41.545841],[119.362116,41.566442],[119.420015,41.567785],[119.415703,41.590169],[119.342406,41.617914],[119.307914,41.657273],[119.299907,41.705545],[119.319001,41.727435],[119.317769,41.764049],[119.292515,41.790827],[119.312841,41.80555],[119.334399,41.871539],[119.323312,41.889807],[119.340559,41.926774],[119.323928,41.937014],[119.324544,41.969505],[119.375667,42.023322],[119.384906,42.08953],[119.352261,42.118391],[119.314689,42.119723],[119.30853,42.147239],[119.286972,42.154781],[119.277733,42.185387],[119.237697,42.200905],[119.274037,42.239021],[119.280197,42.260728],[119.34795,42.300578],[119.432949,42.317396],[119.482841,42.347037],[119.502551,42.388159],[119.540123,42.363401],[119.572152,42.359421],[119.571536,42.335536],[119.539507,42.297922],[119.557985,42.289068],[119.609108,42.276671],[119.617115,42.252755],[119.679941,42.240793],[119.744615,42.211545],[119.841933,42.215534],[119.854868,42.170308],[119.837622,42.135257],[119.845629,42.097079],[119.87581,42.077982],[119.897368,42.030879],[119.921389,42.014429],[119.924469,41.98908],[119.950954,41.974399],[119.954034,41.923212],[119.989759,41.899163],[120.023019,41.816701],[120.041498,41.818932],[120.050737,41.776101],[120.024867,41.737707],[120.035954,41.708226],[120.096316,41.697056],[120.1382,41.729221],[120.127113,41.77253],[120.183164,41.826513],[120.188707,41.848361],[120.215808,41.853265],[120.251533,41.884016],[120.286641,41.880005],[120.290337,41.897381],[120.260156,41.904062],[120.271859,41.925439],[120.318054,41.93746],[120.309431,41.951704],[120.373489,41.994862],[120.399358,41.984631],[120.456641,42.016208],[120.450481,42.057101],[120.493597,42.073539],[120.466496,42.105516],[120.56751,42.152119],[120.58414,42.167203],[120.624792,42.154338],[120.72211,42.203565],[120.745516,42.223512],[120.79048,42.218636],[120.820661,42.227943],[120.8299,42.252755],[120.883487,42.242565],[120.883487,42.269585],[120.933994,42.27977],[120.992508,42.264714],[121.028848,42.242565],[121.070732,42.254083],[121.087978,42.278885],[121.120623,42.280656],[121.133558,42.300135],[121.184681,42.333324],[121.218558,42.371802],[121.285079,42.387717],[121.314644,42.42837],[121.304789,42.435879],[121.386093,42.474294],[121.434752,42.475176],[121.4791,42.49636],[121.506201,42.482239],[121.570875,42.487093],[121.607831,42.516214],[121.604136,42.495037],[121.66573,42.437204],[121.69899,42.438529],[121.747649,42.484887],[121.803084,42.514891],[121.817867,42.504303],[121.831417,42.533856],[121.844352,42.522389],[121.889931,42.556784],[121.921344,42.605697],[121.915801,42.656332],[121.94167,42.666014],[121.939207,42.688453],[122.018663,42.69901],[122.062394,42.723635],[122.072865,42.710444],[122.160945,42.684934],[122.204676,42.685374],[122.204676,42.732867],[122.261343,42.695931],[122.324785,42.684934],[122.338951,42.669975],[122.396234,42.684054],[122.396234,42.707366],[122.460907,42.755282],[122.439349,42.770221],[122.371596,42.776371],[122.35127,42.830378],[122.436886,42.843105],[122.556378,42.827745],[122.576088,42.819405],[122.580399,42.789987],[122.624747,42.773296],[122.653696,42.78252],[122.733152,42.786034],[122.73808,42.77066],[122.786123,42.757479],[122.848949,42.712203],[122.883442,42.751766],[122.887137,42.770221],[122.925941,42.772417],[122.945651,42.753524],[122.980144,42.777689],[123.058368,42.768903],[123.118114,42.801405],[123.227752,42.831695],[123.169853,42.859777],[123.188947,42.895739],[123.18402,42.925983],[123.259165,42.993431],[123.323222,43.000872],[123.434707,43.027565],[123.474743,43.042438],[123.536337,43.007],[123.572678,43.003498],[123.580685,43.036314],[123.631192,43.088346],[123.636119,43.141644],[123.666916,43.179623],[123.645974,43.208855],[123.676771,43.223684],[123.664453,43.264663],[123.698329,43.272071],[123.703873,43.37047],[123.608402,43.366119],[123.54496,43.415262],[123.519707,43.402219],[123.486446,43.44525],[123.442098,43.437863],[123.419925,43.410046],[123.382968,43.469143],[123.36449,43.483475],[123.315831,43.492159],[123.329998,43.519071],[123.304744,43.550742],[123.360179,43.567223],[123.452569,43.545971],[123.461193,43.568523],[123.434091,43.575461],[123.421157,43.598435],[123.5117,43.592801],[123.510468,43.624867],[123.536953,43.633964],[123.518475,43.682024],[123.520323,43.708419],[123.48275,43.737396],[123.498149,43.771114],[123.461809,43.822518],[123.467968,43.853599],[123.397135,43.954929],[123.37065,43.970006],[123.400831,43.979481],[123.365722,44.013922],[123.331229,44.028984],[123.32815,44.084035],[123.350939,44.092633],[123.362642,44.133452],[123.386664,44.161794],[123.323838,44.179823],[123.286882,44.211574],[123.277027,44.25274],[123.196955,44.34483],[123.128585,44.367081],[123.114419,44.40258],[123.142136,44.428228],[123.125506,44.455147],[123.137209,44.486322],[123.12489,44.5098],[123.06576,44.505959],[123.025108,44.493153],[122.85634,44.398304],[122.76087,44.369648],[122.702971,44.319145],[122.675254,44.285738],[122.641993,44.283595],[122.515726,44.251025],[122.483081,44.236877],[122.319241,44.233018],[122.271198,44.255741],[122.291524,44.310152],[122.294604,44.41113],[122.28598,44.477783],[122.228082,44.480345],[122.224386,44.526016],[122.196053,44.559712],[122.13138,44.577619],[122.113517,44.615546],[122.103046,44.67388],[122.117213,44.701961],[122.161561,44.728328],[122.152322,44.744057],[122.10243,44.736406],[122.110438,44.767856],[122.142467,44.753833],[122.168952,44.770405],[122.099967,44.7823],[122.098119,44.81882],[122.04946,44.912985],[122.079025,44.914256],[122.087032,44.95281],[122.074713,45.006573],[122.098735,45.02138],[122.119677,45.068739],[122.109822,45.142236],[122.143082,45.183167],[122.192358,45.180636],[122.22993,45.206784],[122.239169,45.276313],[122.147394,45.295682],[122.146778,45.374352],[122.180039,45.409655],[122.168336,45.439897],[122.064242,45.472641],[122.002648,45.507882],[121.993409,45.552741],[121.966308,45.596308],[121.995873,45.59882],[122.003264,45.623102],[121.970004,45.692956],[121.934279,45.71051],[121.867142,45.719703],[121.812323,45.704659],[121.811091,45.687103],[121.713773,45.701734],[121.666345,45.727641],[121.644172,45.752284],[121.657106,45.770238],[121.697142,45.76314],[121.754425,45.794862],[121.766744,45.830318],[121.769823,45.84366],[121.817251,45.875336],[121.805548,45.900746],[121.821562,45.918235],[121.809243,45.961102],[121.761816,45.998947],[121.819098,46.023054],[121.843736,46.024301],[121.864062,46.002272],[121.923808,46.004767],[121.92812,45.988552],[122.040221,45.959022],[122.085184,45.912406],[122.091344,45.882002],[122.200981,45.857],[122.236705,45.831569],[122.253952,45.7982],[122.301379,45.813218],[122.337719,45.859917],[122.372828,45.856166],[122.362357,45.917403],[122.446125,45.916986],[122.496016,45.85825],[122.504639,45.786933],[122.522501,45.786933],[122.556378,45.82156],[122.603189,45.778169],[122.640761,45.771072],[122.650001,45.731401],[122.671558,45.70048],[122.741775,45.705077],[122.751015,45.735996],[122.792283,45.766063],[122.752246,45.834905],[122.772572,45.856583],[122.80029,45.856583],[122.828623,45.912406],[122.792898,46.073313],[123.04605,46.099878],[123.070071,46.123527],[123.112571,46.130163],[123.102716,46.172037],[123.127354,46.174523],[123.128585,46.210565],[123.178476,46.248239],[123.142136,46.298293],[123.089781,46.347888],[123.011557,46.434984],[123.010325,46.524823],[123.002318,46.574624],[123.052825,46.579972],[123.04605,46.617803],[123.077462,46.622324],[123.098404,46.603002],[123.18094,46.614103],[123.228368,46.588198],[123.279491,46.616981],[123.276411,46.660947],[123.318295,46.662179],[123.366338,46.677784],[123.474743,46.686817],[123.603475,46.68928],[123.631808,46.728675],[123.629344,46.813524],[123.580069,46.827447],[123.625648,46.847508],[123.599163,46.868378],[123.605322,46.891286],[123.576989,46.891286],[123.575757,46.845461],[123.562823,46.82581],[123.506772,46.827038],[123.483366,46.84587],[123.52833,46.944836],[123.487678,46.959951],[123.42362,46.934212],[123.337389,46.988943],[123.301664,46.999965],[123.304128,46.964852],[123.360179,46.970978],[123.404526,46.935438],[123.40699,46.906416],[123.374345,46.837683],[123.341084,46.826628],[123.295505,46.865105],[123.221592,46.850373],[123.22344,46.821305],[123.198802,46.803283],[123.163694,46.74016],[123.103332,46.734828],[123.076846,46.745082],[123.026339,46.718829],[123.00355,46.730726],[122.996774,46.761483],[122.906847,46.80738],[122.893913,46.895376],[122.895144,46.960359],[122.83971,46.937072],[122.791051,46.941567],[122.798442,46.9575],[122.77442,46.973837],[122.778116,47.002822],[122.845869,47.046881],[122.852645,47.072158],[122.821232,47.065636],[122.710363,47.093349],[122.679566,47.094164],[122.615508,47.124306],[122.582863,47.158092],[122.531124,47.198771],[122.498479,47.255262],[122.462755,47.27841],[122.441197,47.310476],[122.418407,47.350632],[122.507103,47.401291],[122.543443,47.495589],[122.59395,47.54732],[122.765181,47.614333],[122.848949,47.67441],[122.926557,47.697777],[123.041122,47.746492],[123.161846,47.781892],[123.214201,47.824502],[123.256085,47.876711],[123.300432,47.953723],[123.537569,48.021816],[123.579453,48.045427],[123.705105,48.152142],[123.746373,48.197638],[123.862785,48.271782],[124.019234,48.39313],[124.07898,48.43603],[124.136878,48.463023],[124.25945,48.536385],[124.314269,48.503881],[124.302566,48.456673],[124.330283,48.435633],[124.309957,48.413393],[124.331515,48.380015],[124.317964,48.35099],[124.353689,48.315978],[124.365392,48.283731],[124.422058,48.245884],[124.412819,48.219175],[124.418978,48.181679],[124.475029,48.173698],[124.471333,48.133373],[124.430065,48.12099],[124.415899,48.08782],[124.46579,48.098213],[124.478108,48.123387],[124.505826,48.124985],[124.529847,48.146951],[124.512601,48.164518],[124.547094,48.200829],[124.579122,48.262221],[124.558796,48.268197],[124.579738,48.297269],[124.540934,48.335476],[124.547094,48.35775],[124.51876,48.378027],[124.52492,48.426897],[124.507674,48.445558],[124.555717,48.467784],[124.533543,48.515379],[124.548941,48.535593],[124.520608,48.556195],[124.579122,48.596582],[124.601912,48.632587],[124.624702,48.701755],[124.612383,48.747945],[124.656115,48.783842],[124.644412,48.80789],[124.654267,48.83429],[124.697383,48.841775],[124.715861,48.885475],[124.709086,48.920487],[124.744194,48.920487],[124.756513,48.967262],[124.808252,49.020666],[124.828578,49.077933],[124.809484,49.115943],[124.847672,49.129651],[124.860607,49.166448],[124.906802,49.184054],[124.983179,49.162535],[125.039845,49.17623],[125.034302,49.157056],[125.117453,49.126127],[125.158721,49.144921],[125.187671,49.186792],[125.219699,49.189139],[125.227707,49.248947],[125.214772,49.277066],[125.261583,49.322336],[125.256656,49.359769],[125.277598,49.379644],[125.25604,49.395227],[125.256656,49.437275],[125.270822,49.454395],[125.228323,49.487063],[125.211076,49.539908],[125.233866,49.536801],[125.23017,49.595411],[125.205533,49.593859],[125.16796,49.629923],[125.15441,49.616741],[125.127308,49.655113],[125.132236,49.672157],[125.164881,49.669446],[125.189518,49.652401],[125.185207,49.634574],[125.219699,49.669058],[125.225243,49.726349],[125.204301,49.734086],[125.221547,49.754969],[125.222779,49.799026],[125.177815,49.829533],[125.239409,49.844587],[125.225243,49.867351],[125.245569,49.87198],[125.212924,49.907452],[125.225859,49.922481],[125.199373,49.935194],[125.190134,49.959841],[125.231402,49.957531],[125.241873,49.987938],[125.278214,49.996402],[125.297924,50.014481],[125.283757,50.036012],[125.25296,50.041393],[125.289916,50.057917],[125.315786,50.04562],[125.328105,50.065985],[125.283757,50.070211],[125.287453,50.093636],[125.258504,50.103618],[125.27883,50.127411],[125.311474,50.140453],[125.376148,50.137385],[125.335496,50.161161],[125.382923,50.172278],[125.39093,50.199868],[125.417416,50.195654],[125.448829,50.216338],[125.442053,50.260357],[125.466075,50.266861],[125.463611,50.295925],[125.530749,50.331085],[125.520278,50.3498],[125.546763,50.358965],[125.522126,50.404759],[125.536292,50.420014],[125.567089,50.402852],[125.583104,50.409717],[125.562162,50.438314],[125.580024,50.449366],[125.627451,50.443268],[125.654553,50.471082],[125.699516,50.487078],[125.740784,50.523237],[125.754335,50.506874],[125.770349,50.531227],[125.794987,50.532748],[125.829479,50.56165],[125.807921,50.60383],[125.814697,50.62092],[125.793139,50.643316],[125.804226,50.658874],[125.789443,50.679735],[125.825784,50.70362],[125.78082,50.725598],[125.795603,50.738856],[125.758646,50.746809],[125.804226,50.773309],[125.828863,50.756654],[125.846726,50.769524],[125.836255,50.793363],[125.890457,50.805845],[125.878138,50.816812],[125.913247,50.825885],[125.939732,50.85423],[125.961906,50.901054],[125.997631,50.872738],[125.996399,50.906715],[126.02042,50.927466],[126.042594,50.92558],[126.068464,50.967434],[126.041978,50.981753],[126.033971,51.011132],[126.059225,51.043503],[125.976073,51.084498],[125.993935,51.119072],[125.970529,51.123955],[125.946508,51.108176],[125.909551,51.138977],[125.864588,51.146487],[125.850421,51.21364],[125.819008,51.227134],[125.761726,51.226385],[125.76111,51.261976],[125.740784,51.27583],[125.700132,51.327465],[125.626219,51.380163],[125.623756,51.387633],[125.62314,51.398089],[125.600966,51.410409],[125.60035,51.413396],[125.595422,51.416755],[125.559082,51.461521],[125.528285,51.488359],[125.424807,51.562827],[125.38046,51.585516],[125.35151,51.623801],[125.316402,51.610052],[125.289301,51.633831],[125.228938,51.640517],[125.214772,51.627888],[125.175968,51.639403],[125.130388,51.635317],[125.12854,51.659083],[125.098975,51.658341],[125.060171,51.59667],[125.073106,51.553526],[125.047236,51.529704],[125.004737,51.529332],[124.983795,51.508478],[124.928976,51.498419],[124.917889,51.474196],[124.942527,51.447349],[124.885244,51.40817],[124.864302,51.37979],[124.783614,51.392115],[124.76452,51.38726],[124.752817,51.35812],[124.693687,51.3327],[124.62655,51.327465],[124.58713,51.363725],[124.555717,51.375307],[124.490427,51.380537],[124.478108,51.36223],[124.443616,51.35812],[124.426985,51.331953],[124.430065,51.301281],[124.406659,51.272086],[124.339522,51.293422],[124.297638,51.298661],[124.271769,51.308389],[124.239124,51.344664],[124.192313,51.33943],[124.128255,51.347281],[124.090067,51.3413],[124.071588,51.320734],[123.994596,51.322604],[123.939777,51.313253],[123.926227,51.300532],[123.887423,51.320734],[123.842459,51.367462],[123.794416,51.361109],[123.711264,51.398089],[123.660141,51.342795],[123.661989,51.319237],[123.582533,51.306893],[123.582533,51.294545],[123.46304,51.286686],[123.440251,51.270963],[123.414381,51.278825],[123.376809,51.266844],[123.339853,51.27246],[123.294273,51.254111],[123.231447,51.268716],[123.231447,51.279199],[123.127969,51.297913],[123.069455,51.321108],[123.002934,51.31213],[122.965977,51.345786],[122.965977,51.386886],[122.946267,51.405183],[122.903768,51.415262],[122.900072,51.445112],[122.871123,51.455181],[122.854492,51.477551],[122.880362,51.511085],[122.858804,51.524864],[122.880362,51.537894],[122.874202,51.561339],[122.832935,51.581797],[122.85634,51.606707],[122.820616,51.633088],[122.816304,51.655371],[122.778732,51.698048],[122.749167,51.746613],[122.771957,51.779579],[122.732536,51.832495],[122.725761,51.87833],[122.706051,51.890151],[122.729457,51.919321],[122.726377,51.978709],[122.683877,51.974654],[122.664783,51.99861],[122.650616,52.058997],[122.625363,52.067459],[122.643841,52.111585],[122.629059,52.13657],[122.690653,52.140243],[122.73808,52.153464],[122.769493,52.179893],[122.766413,52.232705],[122.787355,52.252494],[122.76087,52.26678],[122.710979,52.256157],[122.67895,52.276667],[122.585943,52.266413],[122.560689,52.282526],[122.478153,52.29607],[122.484313,52.341432],[122.447356,52.394052],[122.419023,52.375057],[122.378987,52.395512],[122.367284,52.413768],[122.342031,52.414133],[122.326016,52.459374],[122.310618,52.475416],[122.207756,52.469218],[122.178191,52.48963],[122.168952,52.513674],[122.140003,52.510032],[122.142467,52.495096],[122.107358,52.452445],[122.080873,52.440407],[122.091344,52.427272],[122.040837,52.413038],[122.035909,52.377615],[121.976779,52.343626],[121.94783,52.298266],[121.901018,52.280695],[121.841272,52.282526],[121.769207,52.308147],[121.714389,52.318025],[121.715621,52.342894],[121.658338,52.3904],[121.678664,52.419973],[121.63986,52.44442],[121.590585,52.443326],[121.565331,52.460468],[121.519136,52.456821],[121.495114,52.484892],[121.474172,52.482706],[121.416274,52.499468],[121.411963,52.52205],[121.353448,52.534793],[121.323883,52.573727],[121.280151,52.586819],[121.225333,52.577364],[121.182217,52.59918],[121.237036,52.619167],[121.29247,52.651855],[121.309717,52.676173],[121.373158,52.683067],[121.455078,52.73528],[121.476636,52.772225],[121.511129,52.779104],[121.537614,52.801542],[121.591201,52.824693],[121.620766,52.853251],[121.604136,52.872401],[121.610295,52.892264],[121.66265,52.912478],[121.677432,52.948192],[121.715621,52.997926],[121.785838,53.018451],[121.817867,53.061631],[121.775367,53.089674],[121.784606,53.104408],[121.753193,53.147501],[121.722396,53.145706],[121.665114,53.170467],[121.660186,53.195213],[121.67928,53.199515],[121.679896,53.240722],[121.642324,53.262564],[121.615222,53.258984],[121.575802,53.29155],[121.504969,53.323018],[121.499426,53.337314],[121.416274,53.319443],[121.336818,53.325877],[121.308485,53.301565],[121.227797,53.280459],[121.155732,53.285468],[121.129246,53.277238],[121.098449,53.306929],[121.055334,53.29155],[120.950624,53.29763],[120.936457,53.28833],[120.882871,53.294411],[120.867472,53.278669],[120.820661,53.269007],[120.838523,53.239648],[120.821893,53.241797],[120.736277,53.204892],[120.690698,53.174771],[120.687002,53.142476],[120.659901,53.137091],[120.643886,53.106923],[120.562582,53.082845],[120.529321,53.045803],[120.452945,53.01017],[120.411061,52.957927],[120.363018,52.94134],[120.350699,52.906343],[120.295265,52.891542],[120.297112,52.869872],[120.222584,52.84277],[120.181316,52.806969],[120.14128,52.813119],[120.101244,52.788877],[120.031642,52.773674],[120.071063,52.70628],[120.035338,52.646409],[120.049505,52.598453],[120.07599,52.586092],[120.125265,52.586819],[120.194866,52.578819],[120.289721,52.623527],[120.396895,52.616261],[120.462184,52.64532],[120.483742,52.630066],[120.56135,52.595544],[120.605082,52.589364],[120.62664,52.570818],[120.658669,52.56718],[120.690698,52.547532],[120.734429,52.536977],[120.687002,52.511489],[120.706712,52.492909],[120.68269,52.464479],[120.688234,52.427637],[120.64943,52.3904],[120.653741,52.371038],[120.62356,52.361172],[120.627256,52.323878],[120.653741,52.302658],[120.695625,52.290214],[120.715951,52.261286],[120.755371,52.258355],[120.745516,52.20594],[120.786784,52.15787],[120.760299,52.136937],[120.76769,52.10938],[120.753523,52.085483],[120.717183,52.072978],[120.690698,52.047221],[120.691929,52.026973],[120.717799,52.015556],[120.704864,51.983501],[120.66298,51.958061],[120.656821,51.926333],[120.548416,51.907877],[120.549032,51.882394],[120.481278,51.885719],[120.480046,51.855049],[120.40059,51.833605],[120.40675,51.81659],[120.363634,51.789945],[120.317438,51.785873],[120.294649,51.752171],[120.226279,51.717703],[120.172693,51.679868],[120.087077,51.678013],[120.100628,51.649058],[120.05936,51.634203],[120.035954,51.583657],[120.052584,51.560967],[120.017476,51.52114],[119.985447,51.505125],[119.982367,51.482396],[120.002693,51.459283],[119.982983,51.445112],[119.97128,51.40033],[119.910918,51.390994],[119.914614,51.374187],[119.946643,51.360736],[119.883817,51.336813],[119.885049,51.302777],[119.811136,51.281071],[119.828383,51.263099],[119.797586,51.243622],[119.821607,51.21439],[119.784035,51.22601],[119.760629,51.212516],[119.788346,51.174636],[119.771716,51.124331],[119.752622,51.117193],[119.764325,51.092017],[119.719361,51.075099],[119.726753,51.051028],[119.678093,51.016404],[119.630666,51.00925],[119.598637,50.984767],[119.569688,50.933879],[119.491464,50.87878],[119.498855,50.827776],[119.515485,50.814165],[119.496391,50.771795],[119.506862,50.763846],[119.450196,50.695281],[119.430486,50.684286],[119.385522,50.682769],[119.394145,50.667219],[119.361501,50.632689],[119.298059,50.616743],[119.281428,50.601551],[119.295595,50.573814],[119.264182,50.536933],[119.262334,50.490124],[119.250631,50.448604],[119.22353,50.441363],[119.217371,50.414675],[119.165016,50.422683],[119.125596,50.389118],[119.176719,50.378814],[119.155777,50.364691],[119.188422,50.347509],[119.232153,50.365455],[119.259871,50.345218],[119.277117,50.366218],[119.322696,50.352474],[119.358421,50.358965],[119.381827,50.324208],[119.35103,50.303953],[119.339943,50.244668],[119.319001,50.220933],[119.358421,50.197953],[119.339327,50.192206],[119.350414,50.166145],[119.309762,50.161161],[119.290052,50.121655],[119.236465,50.075204],[119.190269,50.087877],[119.193965,50.069826],[119.163168,50.027554],[119.12498,50.019095],[119.090487,49.985629],[118.982082,49.979087],[118.964836,49.988708],[118.791757,49.955606],[118.761576,49.959456],[118.739402,49.946364],[118.672264,49.955991],[118.605127,49.926719],[118.574946,49.931342],[118.531214,49.887791],[118.485019,49.866194],[118.483787,49.830691],[118.443751,49.835709],[118.385853,49.827217],[118.398787,49.802502],[118.384005,49.783958],[118.315636,49.766953],[118.284223,49.743755],[118.220781,49.729831],[118.211542,49.690744],[118.156723,49.660149],[118.129622,49.669446],[118.082811,49.616741],[118.011362,49.614803],[117.995963,49.623332],[117.950999,49.596187],[117.866,49.591532],[117.849369,49.551557],[117.809333,49.521263],[117.638102,49.574847],[117.485349,49.633024],[117.278394,49.636512],[117.068974,49.695389],[116.736367,49.847674],[116.717889,49.847288],[116.428397,49.430659],[116.048363,48.873274],[116.077928,48.822471],[116.069305,48.811437],[115.83032,48.560156],[115.799523,48.514982],[115.822929,48.259432],[115.81061,48.257042],[115.529126,48.155336],[115.545141,48.134971],[115.539597,48.104607],[115.580249,47.921649],[115.939342,47.683275],[115.968291,47.689721],[116.111189,47.811642],[116.130283,47.823296],[116.26579,47.876711],[116.453035,47.837358],[116.669846,47.890758],[116.791186,47.89758],[116.879265,47.893968],[117.094844,47.8241],[117.384335,47.641356],[117.493357,47.758563],[117.519226,47.761782],[117.529081,47.782697],[117.813645,48.016212],[117.886942,48.025418],[117.96147,48.011007],[118.052014,48.01421],[118.107448,48.031021],[118.124694,48.047427],[118.150564,48.036224],[118.238643,48.041826],[118.238027,48.031422],[118.284839,48.011007],[118.351976,48.006203],[118.37415,48.016612],[118.422193,48.01461],[118.441903,47.995791],[118.568171,47.992187],[118.773278,47.771034],[119.134219,47.664335],[119.152081,47.540453],[119.205052,47.520249],[119.365812,47.47739],[119.32208,47.42721],[119.365812,47.423161],[119.386138,47.397645],[119.437877,47.378602],[119.450812,47.353065],[119.559217,47.303172],[119.56784,47.248357],[119.627586,47.247544],[119.716282,47.195518],[119.763093,47.13082],[119.806825,47.055037],[119.79081,47.04525],[119.795122,47.013024],[119.845013,46.964852],[119.859795,46.917046],[119.926933,46.903963],[119.920157,46.853238],[119.936172,46.790173],[119.917078,46.758203],[119.93494,46.712674],[119.911534,46.669572],[119.859179,46.669572],[119.804361,46.68189],[119.8136,46.66834],[119.783419,46.626023],[119.739687,46.615336],[119.677477,46.584908],[119.682405,46.605058],[119.656535,46.625612],[119.598637,46.618214],[119.557985,46.633832],[119.491464,46.629311],[119.431718,46.638763],[119.374435,46.603414],[119.357805,46.619447],[119.325776,46.608759],[119.26295,46.649034],[119.20074,46.648213],[119.152081,46.658072],[119.123132,46.642872],[119.073857,46.676552],[119.011647,46.745902],[118.951285,46.722111],[118.912481,46.733188],[118.914329,46.77501],[118.845343,46.771731],[118.788061,46.717598],[118.788061,46.687227],[118.677192,46.6979],[118.639004,46.721291],[118.586033,46.692975],[118.446831,46.704467],[118.41049,46.728265],[118.316252,46.73934],[118.274984,46.715957],[118.238643,46.709392],[118.192448,46.682711],[118.124078,46.678195],[118.04647,46.631366],[117.992883,46.631366],[117.982412,46.614925],[117.914659,46.607936],[117.868464,46.575447],[117.870927,46.549935],[117.813645,46.530588],[117.769913,46.537586],[117.748355,46.521941],[117.704008,46.516587],[117.641182,46.558166],[117.622704,46.596012],[117.596218,46.603414],[117.49582,46.600535],[117.42006,46.582029],[117.447777,46.528117],[117.392343,46.463023],[117.375712,46.416421],[117.383719,46.394962],[117.372017,46.36028],[117.247597,46.366888],[117.097308,46.356976],[116.876801,46.375559],[116.834302,46.384229],[116.81336,46.355737],[116.745606,46.327642],[116.673541,46.325163],[116.585462,46.292504],[116.573143,46.258998],[116.536187,46.23251],[116.439484,46.137628],[116.414231,46.133896],[116.271949,45.966926],[116.243,45.876169],[116.288579,45.839074],[116.278108,45.831152],[116.286731,45.775247],[116.260862,45.776082],[116.22329,45.747273],[116.217746,45.72221],[116.17463,45.688775],[116.1155,45.679577],[116.035428,45.685013],[116.026805,45.661177],[115.936878,45.632727],[115.864197,45.572853],[115.699741,45.45963],[115.586408,45.440317],[115.36467,45.392427],[115.178041,45.396209],[114.983404,45.379397],[114.920578,45.386122],[114.745035,45.438217],[114.600906,45.403773],[114.551014,45.387383],[114.539928,45.325985],[114.519602,45.283893],[114.459855,45.21353],[114.409348,45.179371],[114.347139,45.119436],[114.313262,45.107189],[114.19069,45.036607],[114.158045,44.994301],[114.116777,44.957045],[114.065038,44.931206],[113.907358,44.915104],[113.861778,44.863377],[113.798953,44.849377],[113.712105,44.788247],[113.631417,44.745333],[113.540874,44.759358],[113.503918,44.777628],[113.11526,44.799714],[113.037652,44.822641],[112.937869,44.840042],[112.850406,44.840466],[112.712436,44.879494],[112.599719,44.930783],[112.540589,45.001072],[112.438959,45.071697],[112.396459,45.064512],[112.113743,45.072965],[112.071243,45.096206],[112.002874,45.090713],[111.903707,45.052252],[111.764505,44.969325],[111.69244,44.859983],[111.624687,44.778477],[111.585267,44.705789],[111.560629,44.647062],[111.569868,44.57634],[111.530448,44.55033],[111.514434,44.507666],[111.478709,44.488884],[111.427586,44.394455],[111.415883,44.35724],[111.428818,44.319573],[111.507042,44.294305],[111.534144,44.26217],[111.541535,44.206855],[111.559397,44.171238],[111.662875,44.061247],[111.702295,44.034147],[111.773128,44.010479],[111.870447,43.940279],[111.959758,43.823382],[111.970845,43.748205],[111.951135,43.693275],[111.891388,43.6738],[111.79407,43.672068],[111.606209,43.513863],[111.564325,43.490422],[111.456535,43.494329],[111.400485,43.472618],[111.354289,43.436125],[111.183674,43.396132],[111.151029,43.38004],[111.069725,43.357852],[111.02045,43.329998],[110.82027,43.149067],[110.769763,43.099272],[110.736502,43.089657],[110.687227,43.036314],[110.689691,43.02144],[110.631177,42.936061],[110.469801,42.839156],[110.437156,42.781203],[110.34846,42.742098],[110.139657,42.674815],[110.108244,42.642687],[109.906216,42.635643],[109.733753,42.579262],[109.683862,42.558988],[109.544044,42.472528],[109.486761,42.458842],[109.291509,42.435879],[109.026039,42.458401],[108.983539,42.449128],[108.845569,42.395673],[108.798757,42.415116],[108.705134,42.413349],[108.532671,42.442945],[108.298614,42.438529],[108.238252,42.460167],[108.089195,42.436321],[108.022058,42.433229],[107.986949,42.413349],[107.939522,42.403628],[107.736262,42.415116],[107.57427,42.412907],[107.501589,42.456635],[107.46648,42.458842],[107.303872,42.412465],[107.271844,42.364285],[107.051337,42.319166],[106.785867,42.291281],[106.612789,42.241679],[106.372572,42.161436],[106.344855,42.149457],[106.01348,42.032213],[105.74185,41.949033],[105.589713,41.888471],[105.385221,41.797073],[105.291599,41.749763],[105.230621,41.751103],[105.009498,41.583007],[104.923267,41.654143],[104.803775,41.652355],[104.68921,41.6452],[104.524138,41.661745],[104.530298,41.875104],[104.418813,41.860397],[104.30856,41.840782],[104.080046,41.805104],[103.868779,41.802427],[103.454868,41.877332],[103.418527,41.882233],[103.20726,41.96283],[103.021862,42.028212],[102.712045,42.153007],[102.621502,42.154338],[102.540814,42.162323],[102.449039,42.144133],[102.093642,42.223512],[102.070236,42.232374],[101.877447,42.432345],[101.803534,42.503861],[101.770274,42.509597],[101.557775,42.529887],[101.291689,42.586312],[100.862995,42.671295],[100.826655,42.675255],[100.32528,42.690213],[100.272309,42.636523],[100.004376,42.648849],[99.969267,42.647969],[99.51224,42.568244],[98.962822,42.607018],[98.546447,42.638284],[98.195362,42.653251],[97.831958,42.706047],[97.28254,42.782081],[97.172903,42.795257]]]}},{"type":"Feature","properties":{"adcode":210000,"name":"辽宁省","center":[123.429096,41.796767],"centroid":[122.604994,41.299712],"childrenNum":14,"level":"province","parent":{"adcode":100000},"subFeatureIndex":5,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[123.534489,39.788361],[123.546808,39.756163],[123.579453,39.781002],[123.612714,39.775023],[123.642279,39.796178],[123.645358,39.823761],[123.674924,39.826979],[123.687858,39.808132],[123.795032,39.822842],[123.812278,39.831115],[123.95148,39.817786],[124.002603,39.800316],[124.103001,39.823302],[124.099306,39.777323],[124.151045,39.74558],[124.173218,39.841225],[124.214486,39.865116],[124.215102,39.883487],[124.21695,39.894049],[124.218182,39.895885],[124.219414,39.899099],[124.241588,39.928477],[124.286551,39.931689],[124.288399,39.962888],[124.349377,39.989029],[124.372167,40.021576],[124.336442,40.049985],[124.346913,40.079756],[124.428217,40.144291],[124.457782,40.177679],[124.490427,40.18408],[124.513833,40.218362],[124.515065,40.22019],[124.62655,40.291896],[124.722636,40.321561],[124.739267,40.371733],[124.834121,40.423235],[124.913578,40.481981],[124.945606,40.45603],[124.985642,40.475153],[125.044157,40.466503],[125.042925,40.483802],[125.004737,40.496091],[125.015823,40.533853],[125.076801,40.562048],[125.113758,40.569322],[125.181511,40.611132],[125.262815,40.620218],[125.279445,40.655187],[125.305315,40.661089],[125.329337,40.643835],[125.375532,40.658365],[125.422343,40.635661],[125.418648,40.673345],[125.453756,40.676522],[125.459916,40.707379],[125.49564,40.728697],[125.544915,40.729605],[125.551075,40.761796],[125.585567,40.788535],[125.61698,40.763609],[125.685349,40.769048],[125.67611,40.788082],[125.641002,40.798503],[125.648393,40.826133],[125.707523,40.866877],[125.687813,40.897645],[125.652089,40.91619],[125.584335,40.891764],[125.589263,40.931112],[125.635458,40.94151],[125.650241,40.970888],[125.674879,40.974503],[125.684118,41.021929],[125.726617,41.055332],[125.739552,41.08917],[125.712451,41.095485],[125.734009,41.125695],[125.759878,41.132908],[125.791291,41.167607],[125.73832,41.178418],[125.758646,41.232449],[125.749407,41.245499],[125.695205,41.244599],[125.685349,41.273842],[125.646545,41.264396],[125.642234,41.296327],[125.62006,41.318355],[125.637306,41.34442],[125.610205,41.365084],[125.589879,41.359245],[125.581256,41.396517],[125.547995,41.401006],[125.534444,41.428833],[125.533212,41.479069],[125.493176,41.509103],[125.507343,41.534195],[125.479626,41.544946],[125.450061,41.597777],[125.461148,41.642516],[125.446981,41.67605],[125.412488,41.691246],[125.344119,41.672474],[125.317018,41.676944],[125.332416,41.711354],[125.336112,41.768067],[125.336112,41.768067],[125.323177,41.771191],[125.323177,41.771191],[125.319482,41.776993],[125.319482,41.776993],[125.294844,41.822945],[125.307779,41.924548],[125.35151,41.92811],[125.291764,41.958825],[125.29854,41.974399],[125.369989,42.002868],[125.363213,42.017097],[125.416184,42.063766],[125.414336,42.101964],[125.446365,42.098411],[125.490097,42.136145],[125.458068,42.160105],[125.458068,42.160105],[125.41372,42.156112],[125.368141,42.182726],[125.357054,42.145464],[125.305931,42.146351],[125.312706,42.197359],[125.280677,42.175187],[125.312706,42.219966],[125.27575,42.231045],[125.27575,42.266928],[125.299156,42.289953],[125.264047,42.312528],[125.224011,42.30102],[125.175352,42.308102],[125.167345,42.351903],[125.203685,42.366938],[125.185823,42.38197],[125.186439,42.427928],[125.140243,42.44692],[125.150098,42.458842],[125.105135,42.490624],[125.068794,42.499449],[125.090968,42.515773],[125.066946,42.534738],[125.089736,42.567803],[125.082961,42.591159],[125.097127,42.622433],[125.038613,42.615387],[125.010896,42.63212],[125.014592,42.666014],[124.99057,42.677455],[124.968396,42.722756],[124.996729,42.745174],[124.975171,42.802722],[124.92836,42.819844],[124.897563,42.787791],[124.874157,42.789987],[124.856911,42.824234],[124.84952,42.882585],[124.87231,42.962344],[124.869846,42.988178],[124.840897,43.032377],[124.88894,43.074796],[124.882781,43.13422],[124.785462,43.117185],[124.755281,43.074359],[124.719557,43.069987],[124.686912,43.051185],[124.677673,43.002185],[124.658579,42.972854],[124.635173,42.972854],[124.632093,42.949642],[124.607456,42.937376],[124.586514,42.905384],[124.466406,42.847054],[124.435609,42.880831],[124.371551,42.880831],[124.38079,42.912835],[124.431913,42.930803],[124.442384,42.958841],[124.42329,42.975482],[124.369703,42.972854],[124.333363,42.997371],[124.425754,43.076107],[124.366007,43.121554],[124.273617,43.17875],[124.287167,43.207983],[124.27608,43.233278],[124.228653,43.235022],[124.215102,43.255947],[124.168291,43.244177],[124.114088,43.247229],[124.117168,43.2773],[124.099306,43.292983],[124.032784,43.280786],[123.964415,43.34088],[123.896046,43.361333],[123.881263,43.392218],[123.881263,43.392218],[123.852314,43.406133],[123.857858,43.459153],[123.857858,43.459153],[123.79688,43.489988],[123.747604,43.472184],[123.749452,43.439167],[123.710032,43.417001],[123.703873,43.37047],[123.698329,43.272071],[123.664453,43.264663],[123.676771,43.223684],[123.645974,43.208855],[123.666916,43.179623],[123.636119,43.141644],[123.631192,43.088346],[123.580685,43.036314],[123.572678,43.003498],[123.536337,43.007],[123.474743,43.042438],[123.434707,43.027565],[123.323222,43.000872],[123.259165,42.993431],[123.18402,42.925983],[123.188947,42.895739],[123.169853,42.859777],[123.227752,42.831695],[123.118114,42.801405],[123.058368,42.768903],[122.980144,42.777689],[122.945651,42.753524],[122.925941,42.772417],[122.887137,42.770221],[122.883442,42.751766],[122.883442,42.751766],[122.848949,42.712203],[122.848949,42.712203],[122.786123,42.757479],[122.73808,42.77066],[122.733152,42.786034],[122.653696,42.78252],[122.624747,42.773296],[122.580399,42.789987],[122.576088,42.819405],[122.556378,42.827745],[122.436886,42.843105],[122.35127,42.830378],[122.371596,42.776371],[122.439349,42.770221],[122.460907,42.755282],[122.396234,42.707366],[122.396234,42.684054],[122.338951,42.669975],[122.324785,42.684934],[122.261343,42.695931],[122.204676,42.732867],[122.204676,42.685374],[122.160945,42.684934],[122.072865,42.710444],[122.062394,42.723635],[122.018663,42.69901],[121.939207,42.688453],[121.94167,42.666014],[121.915801,42.656332],[121.921344,42.605697],[121.889931,42.556784],[121.844352,42.522389],[121.831417,42.533856],[121.817867,42.504303],[121.803084,42.514891],[121.747649,42.484887],[121.69899,42.438529],[121.66573,42.437204],[121.604136,42.495037],[121.607831,42.516214],[121.570875,42.487093],[121.506201,42.482239],[121.4791,42.49636],[121.434752,42.475176],[121.386093,42.474294],[121.304789,42.435879],[121.314644,42.42837],[121.285079,42.387717],[121.218558,42.371802],[121.184681,42.333324],[121.133558,42.300135],[121.120623,42.280656],[121.087978,42.278885],[121.070732,42.254083],[121.028848,42.242565],[120.992508,42.264714],[120.933994,42.27977],[120.883487,42.269585],[120.883487,42.269585],[120.883487,42.242565],[120.8299,42.252755],[120.820661,42.227943],[120.79048,42.218636],[120.745516,42.223512],[120.72211,42.203565],[120.624792,42.154338],[120.58414,42.167203],[120.56751,42.152119],[120.466496,42.105516],[120.493597,42.073539],[120.450481,42.057101],[120.456641,42.016208],[120.399358,41.984631],[120.373489,41.994862],[120.309431,41.951704],[120.318054,41.93746],[120.271859,41.925439],[120.260156,41.904062],[120.290337,41.897381],[120.286641,41.880005],[120.251533,41.884016],[120.215808,41.853265],[120.188707,41.848361],[120.183164,41.826513],[120.127113,41.77253],[120.1382,41.729221],[120.096316,41.697056],[120.035954,41.708226],[120.024867,41.737707],[120.050737,41.776101],[120.041498,41.818932],[120.023019,41.816701],[119.989759,41.899163],[119.954034,41.923212],[119.950954,41.974399],[119.924469,41.98908],[119.921389,42.014429],[119.897368,42.030879],[119.87581,42.077982],[119.845629,42.097079],[119.837622,42.135257],[119.854868,42.170308],[119.841933,42.215534],[119.744615,42.211545],[119.679941,42.240793],[119.617115,42.252755],[119.609108,42.276671],[119.557985,42.289068],[119.557985,42.289068],[119.539507,42.297922],[119.571536,42.335536],[119.572152,42.359421],[119.540123,42.363401],[119.502551,42.388159],[119.482841,42.347037],[119.432949,42.317396],[119.34795,42.300578],[119.280197,42.260728],[119.274037,42.239021],[119.237697,42.200905],[119.277733,42.185387],[119.286972,42.154781],[119.30853,42.147239],[119.314689,42.119723],[119.352261,42.118391],[119.384906,42.08953],[119.375667,42.023322],[119.324544,41.969505],[119.323928,41.937014],[119.340559,41.926774],[119.323312,41.889807],[119.334399,41.871539],[119.312841,41.80555],[119.292515,41.790827],[119.317769,41.764049],[119.319001,41.727435],[119.299907,41.705545],[119.307914,41.657273],[119.342406,41.617914],[119.415703,41.590169],[119.420015,41.567785],[119.362116,41.566442],[119.361501,41.545841],[119.406464,41.503276],[119.401537,41.472343],[119.378131,41.459787],[119.376283,41.422102],[119.309762,41.405944],[119.330704,41.385293],[119.296211,41.325097],[119.239545,41.31431],[119.2494,41.279689],[119.209364,41.244599],[119.204436,41.222546],[119.169943,41.222996],[119.189038,41.198234],[119.126212,41.138767],[119.081248,41.131555],[119.080632,41.095936],[119.037516,41.067516],[118.964836,41.079246],[118.937118,41.052625],[118.951901,41.018317],[119.013495,41.007479],[119.00056,40.967273],[118.977154,40.959138],[118.977154,40.959138],[118.916792,40.969984],[118.90201,40.960946],[118.873061,40.847866],[118.845959,40.822057],[118.878604,40.783098],[118.907553,40.775394],[118.895234,40.75409],[118.950053,40.747743],[118.96114,40.72008],[119.011031,40.687414],[119.028277,40.692406],[119.054763,40.664721],[119.115125,40.666536],[119.165632,40.69286],[119.184726,40.680153],[119.14469,40.632482],[119.162552,40.600228],[119.177951,40.609315],[119.230921,40.603863],[119.22045,40.569322],[119.256175,40.543404],[119.30237,40.530215],[119.429254,40.540221],[119.477913,40.533399],[119.503783,40.553864],[119.559217,40.547952],[119.572152,40.523846],[119.553674,40.502007],[119.604797,40.455119],[119.586934,40.375381],[119.598021,40.334335],[119.651608,40.271808],[119.639289,40.231613],[119.639289,40.231613],[119.671934,40.23938],[119.716898,40.195966],[119.745847,40.207851],[119.760629,40.136056],[119.736608,40.104936],[119.772332,40.08113],[119.783419,40.046778],[119.783419,40.046778],[119.787115,40.041739],[119.787115,40.041739],[119.81668,40.050443],[119.81668,40.050443],[119.854252,40.033033],[119.845629,40.000949],[119.845629,40.000949],[119.854252,39.98857],[119.91831,39.989946],[119.941715,40.009659],[119.947259,40.040364],[120.092005,40.077466],[120.134504,40.074719],[120.161606,40.096239],[120.273091,40.127362],[120.371641,40.174478],[120.451097,40.177679],[120.491749,40.20008],[120.523778,40.256737],[120.52193,40.304676],[120.537329,40.325211],[120.602618,40.36079],[120.596459,40.399084],[120.617401,40.41959],[120.616169,40.444645],[120.619249,40.460128],[120.666676,40.467413],[120.693777,40.505647],[120.72211,40.515657],[120.72827,40.539311],[120.822509,40.59432],[120.837291,40.644289],[120.8299,40.671076],[120.861313,40.684692],[120.939537,40.686507],[120.983269,40.712822],[121.032544,40.709193],[121.028848,40.746382],[120.991276,40.744115],[120.980189,40.766329],[120.994356,40.790801],[120.971566,40.805751],[121.00729,40.807563],[121.010986,40.784457],[121.086747,40.79805],[121.076892,40.815716],[121.096602,40.839717],[121.126167,40.86914],[121.177906,40.873665],[121.23642,40.851035],[121.290622,40.851488],[121.439064,40.830208],[121.440296,40.88181],[121.499426,40.880001],[121.526527,40.85194],[121.55486,40.849677],[121.553013,40.817528],[121.576418,40.837906],[121.626309,40.844244],[121.682976,40.829755],[121.732251,40.846961],[121.735331,40.862351],[121.778446,40.886787],[121.816019,40.894931],[121.84312,40.831567],[121.883772,40.802127],[121.934279,40.79805],[121.936127,40.711462],[121.951525,40.680607],[122.025438,40.674253],[122.06609,40.64883],[122.122141,40.657457],[122.148626,40.671983],[122.133843,40.614313],[122.150474,40.588413],[122.245944,40.519752],[122.231162,40.505192],[122.265038,40.48016],[122.221923,40.481071],[122.240401,40.461039],[122.250872,40.445555],[122.229314,40.424146],[122.186814,40.422779],[122.198517,40.382219],[122.152322,40.357597],[122.135691,40.374925],[122.111054,40.348932],[122.138155,40.338897],[122.110438,40.315629],[122.079641,40.332967],[122.040221,40.322017],[122.039605,40.260391],[122.02667,40.244862],[121.940438,40.242121],[121.950293,40.204194],[121.98109,40.173106],[122.003264,40.172191],[121.995257,40.128277],[121.956453,40.133311],[121.910257,40.072887],[121.824642,40.025701],[121.796309,39.999116],[121.779062,39.942702],[121.76428,39.933525],[121.699606,39.937196],[121.626925,39.882569],[121.572107,39.865116],[121.541926,39.874302],[121.530223,39.851334],[121.472325,39.802155],[121.487107,39.760303],[121.45939,39.747881],[121.502506,39.703233],[121.482796,39.659478],[121.451999,39.658095],[121.450151,39.624914],[121.325731,39.601402],[121.299246,39.606013],[121.263521,39.589873],[121.226565,39.554814],[121.224717,39.519275],[121.268449,39.482794],[121.286927,39.507271],[121.301709,39.476327],[121.245659,39.456923],[121.270296,39.434277],[121.246891,39.421334],[121.245659,39.389427],[121.270296,39.374162],[121.307869,39.391277],[121.324499,39.371386],[121.35468,39.377863],[121.432904,39.357506],[121.435984,39.329736],[121.466781,39.320014],[121.474788,39.296398],[121.508665,39.29223],[121.51544,39.286672],[121.562252,39.322792],[121.621382,39.326033],[121.72486,39.364447],[121.711925,39.33992],[121.7187,39.320477],[121.667577,39.310754],[121.672505,39.275554],[121.623846,39.285745],[121.589353,39.263044],[121.631237,39.22643],[121.591201,39.228748],[121.586889,39.193506],[121.604136,39.166136],[121.639244,39.166136],[121.68236,39.117863],[121.631853,39.077921],[121.605983,39.080708],[121.642324,39.11972],[121.590585,39.154999],[121.562252,39.127149],[121.599208,39.098824],[121.581962,39.075598],[121.508049,39.034237],[121.431057,39.027263],[121.370695,39.060264],[121.317108,39.012384],[121.341129,38.980757],[121.275224,38.971917],[121.204391,38.941202],[121.180369,38.959819],[121.128014,38.958888],[121.08921,38.922115],[121.094138,38.894173],[121.129862,38.879266],[121.110768,38.862026],[121.12863,38.799089],[121.112,38.776231],[121.13787,38.723023],[121.198848,38.721623],[121.259825,38.786495],[121.280767,38.786961],[121.288775,38.78976],[121.315876,38.793958],[121.359608,38.822406],[121.399028,38.812613],[121.509897,38.817743],[121.564715,38.874607],[121.618302,38.862492],[121.675585,38.86156],[121.708845,38.872744],[121.719316,38.920252],[121.655874,38.946788],[121.618918,38.950046],[121.66265,38.966333],[121.671273,39.010059],[121.73841,38.998898],[121.756889,39.025869],[121.790149,39.022614],[121.804932,38.970986],[121.863446,38.942598],[121.920728,38.969591],[121.905946,38.997503],[121.852975,39.035631],[121.8887,39.027263],[121.929352,39.024939],[121.907178,39.055617],[121.923192,39.053758],[121.963228,39.030053],[122.013735,39.073275],[122.061778,39.060264],[122.071634,39.074204],[122.048228,39.101146],[122.088264,39.112291],[122.127684,39.144788],[122.167104,39.158711],[122.123988,39.172631],[122.117213,39.213911],[122.160329,39.238019],[122.242865,39.267678],[122.274893,39.322329],[122.30877,39.346399],[122.366053,39.370461],[122.412864,39.411625],[122.455364,39.408388],[122.467682,39.403301],[122.51203,39.413474],[122.532972,39.419947],[122.581631,39.464316],[122.637066,39.488799],[122.649385,39.516505],[122.682645,39.514658],[122.808913,39.559889],[122.847101,39.581571],[122.860652,39.604629],[122.941956,39.604629],[122.972753,39.594946],[122.978912,39.616156],[123.021412,39.64335],[123.010941,39.655331],[123.103332,39.676983],[123.146448,39.647037],[123.166774,39.674219],[123.212969,39.665928],[123.215433,39.696786],[123.253005,39.689879],[123.286882,39.704154],[123.270251,39.714743],[123.274563,39.753862],[123.350939,39.750641],[123.388512,39.74742],[123.392823,39.723949],[123.477823,39.74696],[123.521555,39.772724],[123.534489,39.788361]]],[[[122.63953,39.286209],[122.593334,39.278334],[122.539131,39.308439],[122.50895,39.290377],[122.57732,39.269994],[122.67895,39.268605],[122.673406,39.269531],[122.662935,39.273701],[122.655544,39.277407],[122.640761,39.288061],[122.63953,39.286209]]],[[[122.318625,39.170775],[122.345111,39.144788],[122.366053,39.174951],[122.398697,39.16196],[122.383299,39.190723],[122.393154,39.213448],[122.343263,39.203246],[122.322321,39.177271],[122.322937,39.174487],[122.319241,39.172167],[122.318625,39.170775]]],[[[122.691884,39.23292],[122.696812,39.206492],[122.751631,39.229675],[122.740544,39.248679],[122.635834,39.241727],[122.628443,39.231993],[122.690037,39.234774],[122.691268,39.23431],[122.691884,39.23292]]],[[[122.738696,39.034701],[122.704819,39.044463],[122.733152,39.014244],[122.75779,39.009594],[122.739312,39.036561],[122.738696,39.034701]]],[[[123.022644,39.546507],[122.96105,39.551122],[122.945035,39.520198],[122.995542,39.495264],[123.036194,39.533123],[123.022644,39.546507]]],[[[122.503407,39.241263],[122.502175,39.224112],[122.547755,39.229211],[122.503407,39.241263]]],[[[120.786784,40.473787],[120.83298,40.491995],[120.8299,40.516112],[120.805262,40.525666],[120.774465,40.48016],[120.786784,40.473787]]],[[[123.086702,39.426881],[123.090397,39.450915],[123.054057,39.457847],[123.086702,39.426881]]],[[[123.160614,39.025404],[123.205578,39.057011],[123.20065,39.077921],[123.145832,39.091857],[123.143984,39.038885],[123.160614,39.025404]]],[[[123.716807,39.74512],[123.756843,39.754322],[123.719887,39.763063],[123.716807,39.74512]]]]}},{"type":"Feature","properties":{"adcode":220000,"name":"吉林省","center":[125.3245,43.886841],"centroid":[126.171208,43.703954],"childrenNum":9,"level":"province","parent":{"adcode":100000},"subFeatureIndex":6,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[129.601492,42.415116],[129.601492,42.422627],[129.591021,42.447803],[129.627361,42.462816],[129.651999,42.426603],[129.704354,42.427045],[129.748701,42.471204],[129.738846,42.500332],[129.749933,42.546644],[129.746237,42.58455],[129.786889,42.615387],[129.754245,42.645768],[129.796744,42.681854],[129.767179,42.707806],[129.78381,42.762752],[129.810911,42.795257],[129.816454,42.851003],[129.835549,42.866796],[129.846636,42.918533],[129.874969,42.923792],[129.856491,42.951833],[129.868193,42.97373],[129.903918,42.968475],[129.897143,43.001748],[129.954425,43.010938],[129.963664,42.978547],[130.002468,42.981174],[130.027106,42.9676],[130.072685,42.971541],[130.10841,42.989929],[130.144134,42.976357],[130.120729,42.954461],[130.127504,42.932556],[130.10225,42.922916],[130.136127,42.90363],[130.17062,42.912397],[130.21004,42.902315],[130.258083,42.90626],[130.277793,42.892232],[130.258083,42.860655],[130.245148,42.799209],[130.242069,42.738582],[130.257467,42.710884],[130.290112,42.702968],[130.333228,42.64973],[130.373264,42.630799],[130.388046,42.603054],[130.420691,42.617148],[130.44656,42.607459],[130.423771,42.574855],[130.435474,42.553257],[130.476125,42.570007],[130.459495,42.588075],[130.482285,42.626837],[130.522937,42.622433],[130.520473,42.593362],[130.558661,42.495919],[130.585763,42.485328],[130.581451,42.435437],[130.645509,42.426603],[130.600545,42.450453],[130.599929,42.486211],[130.565437,42.506509],[130.570364,42.557224],[130.622719,42.573092],[130.633806,42.603494],[130.592538,42.671295],[130.521089,42.702089],[130.464423,42.688453],[130.425003,42.706926],[130.40714,42.731548],[130.46627,42.772417],[130.532792,42.787352],[130.562357,42.815015],[130.603625,42.819405],[130.665835,42.847932],[130.708335,42.846615],[130.719422,42.831695],[130.75453,42.845738],[130.784095,42.842227],[130.801957,42.879515],[130.845073,42.881269],[130.890653,42.852758],[130.912826,42.870744],[130.949783,42.876884],[130.981812,42.857145],[131.043406,42.862848],[131.017536,42.915027],[131.034167,42.929051],[131.114855,42.915027],[131.145652,42.9365],[131.151195,42.968475],[131.115471,42.975482],[131.11855,43.007875],[131.102536,43.021002],[131.120398,43.068238],[131.171521,43.06955],[131.173985,43.111506],[131.207861,43.1316],[131.218948,43.191405],[131.201086,43.203185],[131.206014,43.237202],[131.255289,43.265099],[131.269455,43.297775],[131.275615,43.369165],[131.314419,43.392653],[131.295941,43.441774],[131.314419,43.461325],[131.31873,43.499539],[131.304564,43.502144],[131.294093,43.470012],[131.234963,43.475224],[131.201086,43.442209],[131.175217,43.444816],[131.142572,43.425695],[131.026775,43.508655],[130.959638,43.48608],[130.907283,43.434387],[130.864167,43.437863],[130.841378,43.454374],[130.822899,43.503446],[130.776704,43.52341],[130.727429,43.560284],[130.671378,43.565054],[130.665835,43.583698],[130.623335,43.589767],[130.630726,43.622268],[130.57098,43.626167],[130.57098,43.626167],[130.501995,43.636563],[130.488444,43.65605],[130.437937,43.646091],[130.412684,43.652586],[130.394206,43.703227],[130.423155,43.745179],[130.382503,43.777164],[130.381887,43.817768],[130.362793,43.844967],[130.386198,43.85403],[130.368336,43.894151],[130.381887,43.910106],[130.338155,43.963975],[130.364025,43.992399],[130.365256,44.044042],[130.319061,44.03974],[130.307358,44.002731],[130.27225,43.981634],[130.262395,43.949328],[130.208192,43.948466],[130.153373,43.915711],[130.143518,43.878624],[130.116417,43.878192],[130.110873,43.852735],[130.079461,43.835039],[130.027722,43.851872],[130.009243,43.889407],[130.022794,43.917866],[130.017867,43.961821],[129.979062,44.015644],[129.951345,44.027263],[129.907614,44.023821],[129.881128,44.000148],[129.868193,44.012631],[129.802904,43.964837],[129.780114,43.892857],[129.739462,43.895876],[129.743158,43.876035],[129.699426,43.8838],[129.650767,43.873016],[129.529427,43.870427],[129.467833,43.874741],[129.449971,43.850578],[129.417942,43.843672],[129.406855,43.819496],[129.348341,43.798333],[129.30892,43.812155],[129.289826,43.797038],[129.254718,43.819496],[129.211602,43.784509],[129.232544,43.709284],[129.214066,43.695006],[129.217146,43.648689],[129.232544,43.635263],[129.23008,43.593234],[129.169102,43.561585],[129.145081,43.570258],[129.093958,43.547706],[129.037907,43.540332],[129.013886,43.522976],[128.962763,43.53903],[128.949828,43.553779],[128.878379,43.539898],[128.834647,43.587599],[128.821097,43.637429],[128.78722,43.686784],[128.768126,43.732207],[128.729322,43.736964],[128.760119,43.755554],[128.739177,43.806972],[128.719467,43.816905],[128.760734,43.857482],[128.729938,43.889838],[128.696061,43.903207],[128.636315,43.891132],[128.64001,43.948035],[128.610445,43.960529],[128.584576,43.990246],[128.574721,44.047914],[128.529141,44.112401],[128.471859,44.157501],[128.450301,44.203423],[128.471859,44.247596],[128.453997,44.257884],[128.472475,44.320001],[128.446605,44.339694],[128.475555,44.346114],[128.481714,44.375637],[128.457076,44.409848],[128.463236,44.431647],[128.427511,44.473512],[128.397946,44.483761],[128.372693,44.514495],[128.295084,44.480772],[128.293237,44.467961],[128.228563,44.445748],[128.211317,44.431647],[128.172512,44.34697],[128.137404,44.357668],[128.094904,44.354673],[128.074578,44.370075],[128.049941,44.349965],[128.065339,44.307155],[128.101679,44.293449],[128.064107,44.251454],[128.104143,44.230017],[128.09244,44.181539],[128.060411,44.168663],[128.088129,44.158359],[128.091208,44.133022],[128.042549,44.103807],[127.950158,44.088334],[127.912586,44.064687],[127.862695,44.062967],[127.846065,44.081886],[127.808492,44.086615],[127.783239,44.071997],[127.729036,44.09908],[127.735811,44.11412],[127.712406,44.199133],[127.681609,44.166946],[127.641573,44.193555],[127.626174,44.187977],[127.59045,44.227872],[127.623711,44.278025],[127.579363,44.310581],[127.486356,44.410275],[127.50853,44.437202],[127.463566,44.484615],[127.465414,44.516628],[127.485124,44.528576],[127.536247,44.522176],[127.570124,44.55033],[127.557189,44.575488],[127.392733,44.632158],[127.275705,44.640249],[127.261538,44.61299],[127.214111,44.624917],[127.228893,44.642804],[127.182082,44.644507],[127.138966,44.607451],[127.094619,44.615972],[127.089691,44.593816],[127.049655,44.566961],[127.041648,44.591258],[127.044112,44.653874],[127.030561,44.673454],[127.041032,44.712169],[126.9973,44.764882],[126.984366,44.823914],[126.999764,44.87398],[127.021938,44.898997],[127.073061,44.907051],[127.092771,44.94688],[127.050271,45.004034],[127.018242,45.024341],[126.984981,45.067893],[126.970815,45.070852],[126.96404,45.132104],[126.85625,45.145613],[126.792808,45.135481],[126.787265,45.159118],[126.732446,45.187385],[126.685635,45.187807],[126.640055,45.214373],[126.644983,45.225334],[126.569222,45.252725],[126.540273,45.23882],[126.519331,45.248091],[126.402919,45.222805],[126.356107,45.185698],[126.293282,45.180214],[126.285274,45.162494],[126.235383,45.140125],[126.225528,45.154054],[126.166398,45.13337],[126.142992,45.147723],[126.091869,45.149411],[126.047522,45.170933],[125.998247,45.162072],[125.992703,45.192447],[125.957595,45.201303],[125.915095,45.196664],[125.849805,45.23882],[125.823936,45.237978],[125.815929,45.264942],[125.761726,45.291472],[125.726001,45.336503],[125.695205,45.352066],[125.712451,45.389485],[125.711835,45.477677],[125.687813,45.514173],[125.660096,45.507043],[125.61698,45.517947],[125.583104,45.491942],[125.497488,45.469283],[125.480242,45.486488],[125.424807,45.485649],[125.434662,45.462988],[125.398322,45.416797],[125.361981,45.392847],[125.319482,45.422678],[125.301619,45.402092],[125.248649,45.417637],[125.189518,45.39915],[125.137779,45.409655],[125.097127,45.38276],[125.06633,45.39915],[125.08912,45.420998],[125.0497,45.428558],[125.025678,45.493201],[124.961005,45.495299],[124.936983,45.53388],[124.911114,45.535976],[124.884628,45.495299],[124.886476,45.442836],[124.839665,45.455852],[124.792853,45.436958],[124.776223,45.468024],[124.729412,45.444096],[124.690607,45.452493],[124.625318,45.437377],[124.575427,45.451234],[124.579738,45.424358],[124.544014,45.411756],[124.507058,45.424778],[124.480572,45.456271],[124.398652,45.440737],[124.374015,45.45795],[124.352457,45.496557],[124.369087,45.512915],[124.348761,45.546874],[124.287783,45.539329],[124.264377,45.555256],[124.273001,45.584163],[124.238508,45.591702],[124.226805,45.633564],[124.162132,45.616404],[124.128255,45.641933],[124.147349,45.665359],[124.122096,45.669123],[124.13503,45.690448],[124.10177,45.700898],[124.098074,45.722628],[124.054342,45.751449],[124.014922,45.749779],[124.001987,45.770655],[124.064197,45.802372],[124.03648,45.83824],[124.067277,45.840325],[124.061118,45.886168],[123.996444,45.906993],[123.968727,45.936551],[123.973654,45.973997],[124.011842,45.981899],[123.989053,46.011833],[124.040176,46.01973],[124.034016,46.045074],[124.009995,46.057534],[124.015538,46.088257],[123.99398,46.101123],[124.01677,46.118549],[123.991516,46.143019],[124.001987,46.166649],[123.971806,46.170379],[123.956408,46.206009],[123.979814,46.228784],[123.952096,46.256516],[123.960103,46.288369],[123.936082,46.286715],[123.917604,46.25693],[123.896046,46.303668],[123.84985,46.302428],[123.775938,46.263136],[123.726047,46.255688],[123.673692,46.258585],[123.604706,46.251964],[123.569598,46.223816],[123.569598,46.223816],[123.499381,46.259826],[123.452569,46.233338],[123.430396,46.243687],[123.357099,46.232096],[123.357099,46.232096],[123.320758,46.254447],[123.286266,46.250308],[123.248078,46.273065],[123.178476,46.248239],[123.128585,46.210565],[123.127354,46.174523],[123.102716,46.172037],[123.112571,46.130163],[123.070071,46.123527],[123.04605,46.099878],[122.792898,46.073313],[122.828623,45.912406],[122.80029,45.856583],[122.772572,45.856583],[122.752246,45.834905],[122.792283,45.766063],[122.751015,45.735996],[122.741775,45.705077],[122.671558,45.70048],[122.650001,45.731401],[122.640761,45.771072],[122.603189,45.778169],[122.556378,45.82156],[122.522501,45.786933],[122.504639,45.786933],[122.496016,45.85825],[122.446125,45.916986],[122.362357,45.917403],[122.372828,45.856166],[122.337719,45.859917],[122.301379,45.813218],[122.253952,45.7982],[122.236705,45.831569],[122.200981,45.857],[122.091344,45.882002],[122.085184,45.912406],[122.040221,45.959022],[121.92812,45.988552],[121.923808,46.004767],[121.864062,46.002272],[121.843736,46.024301],[121.819098,46.023054],[121.761816,45.998947],[121.809243,45.961102],[121.821562,45.918235],[121.805548,45.900746],[121.817251,45.875336],[121.769823,45.84366],[121.766744,45.830318],[121.766744,45.830318],[121.754425,45.794862],[121.697142,45.76314],[121.657106,45.770238],[121.644172,45.752284],[121.666345,45.727641],[121.713773,45.701734],[121.811091,45.687103],[121.812323,45.704659],[121.867142,45.719703],[121.934279,45.71051],[121.970004,45.692956],[122.003264,45.623102],[121.995873,45.59882],[121.966308,45.596308],[121.993409,45.552741],[122.002648,45.507882],[122.064242,45.472641],[122.168336,45.439897],[122.180039,45.409655],[122.146778,45.374352],[122.147394,45.295682],[122.239169,45.276313],[122.22993,45.206784],[122.192358,45.180636],[122.143082,45.183167],[122.109822,45.142236],[122.119677,45.068739],[122.098735,45.02138],[122.074713,45.006573],[122.087032,44.95281],[122.079025,44.914256],[122.04946,44.912985],[122.098119,44.81882],[122.099967,44.7823],[122.168952,44.770405],[122.142467,44.753833],[122.110438,44.767856],[122.10243,44.736406],[122.152322,44.744057],[122.161561,44.728328],[122.117213,44.701961],[122.103046,44.67388],[122.113517,44.615546],[122.13138,44.577619],[122.196053,44.559712],[122.224386,44.526016],[122.228082,44.480345],[122.28598,44.477783],[122.294604,44.41113],[122.291524,44.310152],[122.271198,44.255741],[122.319241,44.233018],[122.483081,44.236877],[122.515726,44.251025],[122.641993,44.283595],[122.675254,44.285738],[122.702971,44.319145],[122.76087,44.369648],[122.85634,44.398304],[123.025108,44.493153],[123.06576,44.505959],[123.12489,44.5098],[123.137209,44.486322],[123.125506,44.455147],[123.142136,44.428228],[123.114419,44.40258],[123.128585,44.367081],[123.196955,44.34483],[123.277027,44.25274],[123.286882,44.211574],[123.323838,44.179823],[123.386664,44.161794],[123.362642,44.133452],[123.350939,44.092633],[123.32815,44.084035],[123.331229,44.028984],[123.365722,44.013922],[123.400831,43.979481],[123.37065,43.970006],[123.397135,43.954929],[123.467968,43.853599],[123.461809,43.822518],[123.498149,43.771114],[123.48275,43.737396],[123.520323,43.708419],[123.518475,43.682024],[123.536953,43.633964],[123.510468,43.624867],[123.5117,43.592801],[123.421157,43.598435],[123.434091,43.575461],[123.461193,43.568523],[123.452569,43.545971],[123.452569,43.545971],[123.360179,43.567223],[123.304744,43.550742],[123.329998,43.519071],[123.315831,43.492159],[123.36449,43.483475],[123.382968,43.469143],[123.419925,43.410046],[123.442098,43.437863],[123.486446,43.44525],[123.519707,43.402219],[123.54496,43.415262],[123.608402,43.366119],[123.703873,43.37047],[123.710032,43.417001],[123.749452,43.439167],[123.747604,43.472184],[123.79688,43.489988],[123.857858,43.459153],[123.857858,43.459153],[123.852314,43.406133],[123.881263,43.392218],[123.881263,43.392218],[123.896046,43.361333],[123.964415,43.34088],[124.032784,43.280786],[124.099306,43.292983],[124.117168,43.2773],[124.114088,43.247229],[124.168291,43.244177],[124.215102,43.255947],[124.228653,43.235022],[124.27608,43.233278],[124.287167,43.207983],[124.273617,43.17875],[124.366007,43.121554],[124.425754,43.076107],[124.333363,42.997371],[124.369703,42.972854],[124.42329,42.975482],[124.442384,42.958841],[124.431913,42.930803],[124.38079,42.912835],[124.371551,42.880831],[124.435609,42.880831],[124.466406,42.847054],[124.586514,42.905384],[124.607456,42.937376],[124.632093,42.949642],[124.635173,42.972854],[124.658579,42.972854],[124.677673,43.002185],[124.686912,43.051185],[124.719557,43.069987],[124.755281,43.074359],[124.785462,43.117185],[124.882781,43.13422],[124.88894,43.074796],[124.840897,43.032377],[124.869846,42.988178],[124.87231,42.962344],[124.84952,42.882585],[124.856911,42.824234],[124.874157,42.789987],[124.897563,42.787791],[124.92836,42.819844],[124.975171,42.802722],[124.996729,42.745174],[124.968396,42.722756],[124.99057,42.677455],[125.014592,42.666014],[125.010896,42.63212],[125.038613,42.615387],[125.097127,42.622433],[125.082961,42.591159],[125.089736,42.567803],[125.066946,42.534738],[125.090968,42.515773],[125.068794,42.499449],[125.105135,42.490624],[125.150098,42.458842],[125.140243,42.44692],[125.186439,42.427928],[125.185823,42.38197],[125.203685,42.366938],[125.167345,42.351903],[125.175352,42.308102],[125.224011,42.30102],[125.264047,42.312528],[125.299156,42.289953],[125.27575,42.266928],[125.27575,42.231045],[125.312706,42.219966],[125.280677,42.175187],[125.312706,42.197359],[125.305931,42.146351],[125.357054,42.145464],[125.368141,42.182726],[125.41372,42.156112],[125.458068,42.160105],[125.458068,42.160105],[125.490097,42.136145],[125.446365,42.098411],[125.414336,42.101964],[125.416184,42.063766],[125.363213,42.017097],[125.369989,42.002868],[125.29854,41.974399],[125.291764,41.958825],[125.35151,41.92811],[125.307779,41.924548],[125.294844,41.822945],[125.319482,41.776993],[125.319482,41.776993],[125.323177,41.771191],[125.323177,41.771191],[125.336112,41.768067],[125.336112,41.768067],[125.332416,41.711354],[125.317018,41.676944],[125.344119,41.672474],[125.412488,41.691246],[125.446981,41.67605],[125.461148,41.642516],[125.450061,41.597777],[125.479626,41.544946],[125.507343,41.534195],[125.493176,41.509103],[125.533212,41.479069],[125.534444,41.428833],[125.547995,41.401006],[125.581256,41.396517],[125.589879,41.359245],[125.610205,41.365084],[125.637306,41.34442],[125.62006,41.318355],[125.642234,41.296327],[125.646545,41.264396],[125.685349,41.273842],[125.695205,41.244599],[125.749407,41.245499],[125.758646,41.232449],[125.73832,41.178418],[125.791291,41.167607],[125.759878,41.132908],[125.734009,41.125695],[125.712451,41.095485],[125.739552,41.08917],[125.726617,41.055332],[125.684118,41.021929],[125.674879,40.974503],[125.650241,40.970888],[125.635458,40.94151],[125.589263,40.931112],[125.584335,40.891764],[125.652089,40.91619],[125.687813,40.897645],[125.707523,40.866877],[125.778356,40.897645],[125.817161,40.866877],[125.860892,40.888597],[125.875059,40.908501],[125.921254,40.882715],[125.959442,40.88181],[126.008102,40.936537],[126.041362,40.928851],[126.051833,40.96185],[126.08263,40.976762],[126.066,40.997542],[126.1085,41.011995],[126.099877,41.036376],[126.133753,41.063906],[126.124514,41.092327],[126.16763,41.094583],[126.187956,41.113072],[126.188572,41.114875],[126.295129,41.171661],[126.332086,41.236949],[126.35426,41.244599],[126.373354,41.289133],[126.437411,41.353405],[126.497158,41.374965],[126.524259,41.349362],[126.539041,41.366881],[126.497158,41.406842],[126.559983,41.548081],[126.582773,41.563307],[126.564295,41.608965],[126.592628,41.624624],[126.608027,41.669345],[126.644983,41.661297],[126.688099,41.674262],[126.724439,41.710907],[126.690562,41.728328],[126.694874,41.751103],[126.723207,41.753335],[126.8002,41.702865],[126.809439,41.749317],[126.848243,41.734134],[126.85625,41.760031],[126.887047,41.791719],[126.931395,41.812687],[126.952953,41.804212],[126.940018,41.773423],[126.979438,41.776993],[127.005923,41.749317],[127.050887,41.744852],[127.057662,41.703758],[127.037952,41.676944],[127.103242,41.647883],[127.093387,41.629993],[127.127263,41.622388],[127.135887,41.600463],[127.178386,41.600015],[127.125416,41.566442],[127.11864,41.540018],[127.164836,41.542706],[127.188241,41.527475],[127.241212,41.520754],[127.28864,41.501932],[127.253531,41.486691],[127.296031,41.486243],[127.360704,41.466065],[127.360088,41.479518],[127.405668,41.478621],[127.419835,41.460235],[127.459255,41.461581],[127.465414,41.479069],[127.526392,41.467859],[127.547334,41.477276],[127.563964,41.432871],[127.618783,41.432871],[127.636645,41.413575],[127.684073,41.422999],[127.780159,41.427038],[127.854688,41.420755],[127.86947,41.4037],[127.882405,41.448124],[127.909506,41.42973],[127.93168,41.444984],[127.970484,41.438704],[127.991426,41.421204],[128.000049,41.442741],[128.040085,41.393375],[128.110919,41.393375],[128.090593,41.374516],[128.114614,41.364186],[128.169433,41.404149],[128.203925,41.410882],[128.243345,41.477276],[128.238418,41.497898],[128.301244,41.540018],[128.317874,41.575844],[128.30186,41.627756],[128.248889,41.681414],[128.208853,41.688565],[128.163889,41.721628],[128.147875,41.78101],[128.112766,41.793504],[128.104143,41.843457],[128.115846,41.896935],[128.106607,41.949923],[128.033926,42.000199],[128.090593,42.022877],[128.294468,42.026434],[128.405338,42.018876],[128.466316,42.020654],[128.49896,42.000644],[128.598127,42.007315],[128.60675,42.02999],[128.637547,42.035324],[128.658489,42.018876],[128.70222,42.02021],[128.737945,42.050435],[128.779213,42.033546],[128.795227,42.042436],[128.898089,42.016653],[128.952908,42.025545],[128.954755,42.083756],[128.971386,42.097079],[129.008958,42.09175],[129.039139,42.107736],[129.048378,42.137476],[129.113668,42.140583],[129.166639,42.188047],[129.215914,42.208442],[129.209138,42.237692],[129.181421,42.242122],[129.183269,42.262056],[129.215914,42.265157],[129.231312,42.283755],[129.208522,42.293052],[129.260261,42.335536],[129.231312,42.356325],[129.240551,42.376223],[129.326167,42.389927],[129.30892,42.403628],[129.331094,42.429695],[129.356348,42.427045],[129.342181,42.441179],[129.368051,42.459284],[129.366203,42.428811],[129.392688,42.42837],[129.400695,42.449128],[129.452434,42.441179],[129.49863,42.412023],[129.546057,42.361632],[129.578086,42.380202],[129.569463,42.399208],[129.601492,42.415116]]]]}},{"type":"Feature","properties":{"adcode":230000,"name":"黑龙江省","center":[126.642464,45.756967],"centroid":[127.693027,48.040465],"childrenNum":13,"level":"province","parent":{"adcode":100000},"subFeatureIndex":7,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[123.569598,46.223816],[123.604706,46.251964],[123.673692,46.258585],[123.726047,46.255688],[123.775938,46.263136],[123.84985,46.302428],[123.896046,46.303668],[123.917604,46.25693],[123.936082,46.286715],[123.960103,46.288369],[123.952096,46.256516],[123.979814,46.228784],[123.956408,46.206009],[123.971806,46.170379],[124.001987,46.166649],[123.991516,46.143019],[124.01677,46.118549],[123.99398,46.101123],[124.015538,46.088257],[124.009995,46.057534],[124.034016,46.045074],[124.040176,46.01973],[123.989053,46.011833],[124.011842,45.981899],[123.973654,45.973997],[123.968727,45.936551],[123.996444,45.906993],[124.061118,45.886168],[124.067277,45.840325],[124.03648,45.83824],[124.064197,45.802372],[124.001987,45.770655],[124.014922,45.749779],[124.054342,45.751449],[124.098074,45.722628],[124.10177,45.700898],[124.13503,45.690448],[124.122096,45.669123],[124.147349,45.665359],[124.128255,45.641933],[124.162132,45.616404],[124.226805,45.633564],[124.238508,45.591702],[124.273001,45.584163],[124.264377,45.555256],[124.287783,45.539329],[124.348761,45.546874],[124.369087,45.512915],[124.352457,45.496557],[124.374015,45.45795],[124.398652,45.440737],[124.480572,45.456271],[124.507058,45.424778],[124.544014,45.411756],[124.579738,45.424358],[124.575427,45.451234],[124.625318,45.437377],[124.690607,45.452493],[124.729412,45.444096],[124.776223,45.468024],[124.792853,45.436958],[124.839665,45.455852],[124.886476,45.442836],[124.884628,45.495299],[124.911114,45.535976],[124.936983,45.53388],[124.961005,45.495299],[125.025678,45.493201],[125.0497,45.428558],[125.08912,45.420998],[125.06633,45.39915],[125.097127,45.38276],[125.137779,45.409655],[125.189518,45.39915],[125.248649,45.417637],[125.301619,45.402092],[125.319482,45.422678],[125.361981,45.392847],[125.398322,45.416797],[125.434662,45.462988],[125.424807,45.485649],[125.480242,45.486488],[125.497488,45.469283],[125.583104,45.491942],[125.61698,45.517947],[125.660096,45.507043],[125.687813,45.514173],[125.711835,45.477677],[125.712451,45.389485],[125.695205,45.352066],[125.726001,45.336503],[125.761726,45.291472],[125.815929,45.264942],[125.823936,45.237978],[125.849805,45.23882],[125.915095,45.196664],[125.957595,45.201303],[125.992703,45.192447],[125.998247,45.162072],[126.047522,45.170933],[126.091869,45.149411],[126.142992,45.147723],[126.166398,45.13337],[126.225528,45.154054],[126.235383,45.140125],[126.285274,45.162494],[126.293282,45.180214],[126.356107,45.185698],[126.402919,45.222805],[126.519331,45.248091],[126.540273,45.23882],[126.569222,45.252725],[126.644983,45.225334],[126.640055,45.214373],[126.685635,45.187807],[126.732446,45.187385],[126.787265,45.159118],[126.792808,45.135481],[126.85625,45.145613],[126.96404,45.132104],[126.970815,45.070852],[126.984981,45.067893],[127.018242,45.024341],[127.050271,45.004034],[127.092771,44.94688],[127.073061,44.907051],[127.021938,44.898997],[126.999764,44.87398],[126.984366,44.823914],[126.9973,44.764882],[127.041032,44.712169],[127.030561,44.673454],[127.044112,44.653874],[127.041648,44.591258],[127.049655,44.566961],[127.089691,44.593816],[127.094619,44.615972],[127.138966,44.607451],[127.182082,44.644507],[127.228893,44.642804],[127.214111,44.624917],[127.261538,44.61299],[127.275705,44.640249],[127.392733,44.632158],[127.557189,44.575488],[127.570124,44.55033],[127.536247,44.522176],[127.485124,44.528576],[127.465414,44.516628],[127.463566,44.484615],[127.50853,44.437202],[127.486356,44.410275],[127.579363,44.310581],[127.623711,44.278025],[127.59045,44.227872],[127.626174,44.187977],[127.641573,44.193555],[127.681609,44.166946],[127.712406,44.199133],[127.735811,44.11412],[127.729036,44.09908],[127.783239,44.071997],[127.808492,44.086615],[127.846065,44.081886],[127.862695,44.062967],[127.912586,44.064687],[127.950158,44.088334],[128.042549,44.103807],[128.091208,44.133022],[128.088129,44.158359],[128.060411,44.168663],[128.09244,44.181539],[128.104143,44.230017],[128.064107,44.251454],[128.101679,44.293449],[128.065339,44.307155],[128.049941,44.349965],[128.074578,44.370075],[128.094904,44.354673],[128.137404,44.357668],[128.172512,44.34697],[128.211317,44.431647],[128.228563,44.445748],[128.293237,44.467961],[128.295084,44.480772],[128.372693,44.514495],[128.397946,44.483761],[128.427511,44.473512],[128.463236,44.431647],[128.457076,44.409848],[128.481714,44.375637],[128.475555,44.346114],[128.446605,44.339694],[128.472475,44.320001],[128.453997,44.257884],[128.471859,44.247596],[128.450301,44.203423],[128.471859,44.157501],[128.529141,44.112401],[128.574721,44.047914],[128.584576,43.990246],[128.610445,43.960529],[128.64001,43.948035],[128.636315,43.891132],[128.696061,43.903207],[128.729938,43.889838],[128.760734,43.857482],[128.719467,43.816905],[128.739177,43.806972],[128.760119,43.755554],[128.729322,43.736964],[128.768126,43.732207],[128.78722,43.686784],[128.821097,43.637429],[128.834647,43.587599],[128.878379,43.539898],[128.949828,43.553779],[128.962763,43.53903],[129.013886,43.522976],[129.037907,43.540332],[129.093958,43.547706],[129.145081,43.570258],[129.169102,43.561585],[129.23008,43.593234],[129.232544,43.635263],[129.217146,43.648689],[129.214066,43.695006],[129.232544,43.709284],[129.211602,43.784509],[129.254718,43.819496],[129.289826,43.797038],[129.30892,43.812155],[129.348341,43.798333],[129.406855,43.819496],[129.417942,43.843672],[129.449971,43.850578],[129.467833,43.874741],[129.529427,43.870427],[129.650767,43.873016],[129.699426,43.8838],[129.743158,43.876035],[129.739462,43.895876],[129.780114,43.892857],[129.802904,43.964837],[129.868193,44.012631],[129.881128,44.000148],[129.907614,44.023821],[129.951345,44.027263],[129.979062,44.015644],[130.017867,43.961821],[130.022794,43.917866],[130.009243,43.889407],[130.027722,43.851872],[130.079461,43.835039],[130.110873,43.852735],[130.116417,43.878192],[130.143518,43.878624],[130.153373,43.915711],[130.208192,43.948466],[130.262395,43.949328],[130.27225,43.981634],[130.307358,44.002731],[130.319061,44.03974],[130.365256,44.044042],[130.364025,43.992399],[130.338155,43.963975],[130.381887,43.910106],[130.368336,43.894151],[130.386198,43.85403],[130.362793,43.844967],[130.381887,43.817768],[130.382503,43.777164],[130.423155,43.745179],[130.394206,43.703227],[130.412684,43.652586],[130.437937,43.646091],[130.488444,43.65605],[130.501995,43.636563],[130.57098,43.626167],[130.57098,43.626167],[130.630726,43.622268],[130.623335,43.589767],[130.665835,43.583698],[130.671378,43.565054],[130.727429,43.560284],[130.776704,43.52341],[130.822899,43.503446],[130.841378,43.454374],[130.864167,43.437863],[130.907283,43.434387],[130.959638,43.48608],[131.026775,43.508655],[131.142572,43.425695],[131.175217,43.444816],[131.201086,43.442209],[131.234963,43.475224],[131.294093,43.470012],[131.304564,43.502144],[131.276847,43.495632],[131.20047,43.532089],[131.222028,43.593234],[131.216485,43.613169],[131.239274,43.670337],[131.221412,43.682024],[131.215869,43.72745],[131.232499,43.742585],[131.213405,43.801357],[131.2171,43.836334],[131.254057,43.893289],[131.26268,43.948897],[131.245434,43.95579],[131.26576,44.034578],[131.28239,44.035868],[131.287318,44.03802],[131.293477,44.043182],[131.310723,44.046623],[131.111775,44.710042],[131.090833,44.717272],[131.093297,44.746183],[131.069275,44.759783],[131.064348,44.786973],[131.016304,44.789521],[131.015688,44.814999],[130.972573,44.820094],[130.965181,44.85065],[131.07913,44.881614],[131.10192,44.898997],[131.090217,44.924427],[131.16105,44.948151],[131.20355,44.932901],[131.207861,44.913833],[131.263296,44.929935],[131.274999,44.919766],[131.313803,44.950692],[131.313803,44.965938],[131.355071,44.990068],[131.380324,44.978216],[131.409889,44.985836],[131.464708,44.963397],[131.501664,44.977793],[131.484418,44.99557],[131.529382,45.012073],[131.566338,45.045487],[131.63286,45.075078],[131.695685,45.132104],[131.687678,45.1511],[131.650722,45.159962],[131.681519,45.215217],[131.721555,45.234606],[131.759127,45.213952],[131.79362,45.211844],[131.788692,45.245984],[131.825649,45.291472],[131.82996,45.311677],[131.887858,45.342393],[131.917423,45.339448],[131.93159,45.287683],[131.976554,45.277156],[132.003655,45.25441],[132.17427,45.216903],[132.394161,45.16376],[132.76434,45.081417],[132.867202,45.061976],[132.916477,45.031109],[132.954049,45.023072],[132.98731,45.043373],[133.035969,45.054366],[133.070462,45.097051],[133.089556,45.097473],[133.107418,45.124504],[133.139447,45.127459],[133.129592,45.211422],[133.095715,45.246827],[133.110498,45.266627],[133.097563,45.284735],[133.128976,45.336924],[133.119121,45.352908],[133.144991,45.367205],[133.143759,45.430658],[133.164701,45.437377],[133.170244,45.465506],[133.203505,45.516689],[133.246005,45.517528],[133.333468,45.562379],[133.342707,45.554836],[133.393214,45.580393],[133.423395,45.584163],[133.412924,45.618079],[133.471438,45.631053],[133.448649,45.647372],[133.485605,45.658667],[133.484989,45.691702],[133.445569,45.705077],[133.454192,45.731819],[133.486837,45.740173],[133.469591,45.777751],[133.505315,45.785681],[133.469591,45.799451],[133.467743,45.834905],[133.494228,45.840325],[133.491764,45.867002],[133.51209,45.887001],[133.55459,45.893249],[133.583539,45.868669],[133.618032,45.903662],[133.614952,45.942794],[133.676546,45.94321],[133.681474,45.986473],[133.740604,46.048812],[133.745531,46.075389],[133.690713,46.133896],[133.706111,46.163333],[133.764626,46.17328],[133.794807,46.193583],[133.814517,46.230854],[133.849625,46.203939],[133.87919,46.233752],[133.867487,46.250722],[133.909987,46.254447],[133.91861,46.280924],[133.908139,46.308216],[133.922922,46.330948],[133.869335,46.338386],[133.876726,46.362345],[133.940784,46.38134],[133.948791,46.401153],[133.902596,46.446119],[133.852089,46.450242],[133.849625,46.475389],[133.890893,46.525235],[133.919842,46.596012],[134.011001,46.637941],[134.030711,46.708981],[134.033175,46.759023],[134.052885,46.779928],[134.025168,46.810657],[134.041182,46.848326],[134.042414,46.886787],[134.076291,46.938298],[134.063972,46.979962],[134.10216,47.005678],[134.118175,47.061968],[134.142812,47.093349],[134.222268,47.105164],[134.232739,47.134892],[134.230276,47.182097],[134.210566,47.210155],[134.156979,47.248357],[134.177305,47.326299],[134.203174,47.347389],[134.263536,47.371307],[134.266616,47.391974],[134.307268,47.428829],[134.339297,47.439759],[134.490202,47.446235],[134.522847,47.468086],[134.568426,47.478199],[134.576434,47.519036],[134.627556,47.546512],[134.678064,47.588507],[134.689766,47.63813],[134.779694,47.7159],[134.772918,47.763391],[134.678679,47.819278],[134.670056,47.864667],[134.677448,47.884738],[134.658969,47.901191],[134.607846,47.909214],[134.599839,47.947711],[134.55426,47.982173],[134.551796,48.032622],[134.632484,48.099412],[134.67252,48.170505],[134.679295,48.256245],[134.77107,48.288908],[134.864077,48.332293],[135.009439,48.365703],[135.090743,48.403461],[135.09567,48.437618],[135.068569,48.459451],[135.035924,48.440795],[134.996504,48.439603],[134.927519,48.451513],[134.886867,48.437618],[134.848679,48.393925],[134.820961,48.37604],[134.764295,48.370076],[134.704549,48.405448],[134.640491,48.409818],[134.578281,48.405448],[134.501905,48.418954],[134.438463,48.405448],[134.369478,48.382797],[134.20379,48.3824],[134.150819,48.346217],[134.116327,48.333089],[134.0689,48.338659],[134.029479,48.327519],[133.995603,48.303639],[133.940784,48.302047],[133.876111,48.282536],[133.824372,48.277359],[133.791111,48.261026],[133.740604,48.254651],[133.693177,48.186866],[133.667307,48.183275],[133.59709,48.194846],[133.573068,48.182078],[133.545967,48.121389],[133.451728,48.112999],[133.407997,48.124585],[133.302055,48.103009],[133.239845,48.126583],[133.182563,48.135769],[133.130208,48.134971],[133.053216,48.110202],[133.02673,48.085421],[133.016259,48.054228],[132.992238,48.035424],[132.883216,48.002599],[132.819159,47.936887],[132.769268,47.93849],[132.723072,47.962941],[132.691043,47.962941],[132.661478,47.944905],[132.662094,47.922451],[132.687348,47.88514],[132.662094,47.854227],[132.621442,47.82852],[132.599268,47.792347],[132.6005,47.740858],[132.558,47.718316],[132.469305,47.726368],[132.371987,47.765402],[132.325175,47.762184],[132.288835,47.742065],[132.272205,47.718718],[132.242639,47.70986],[132.19706,47.714289],[132.157024,47.70543],[132.086191,47.703013],[132.000575,47.712276],[131.976554,47.673201],[131.900793,47.685692],[131.825649,47.677231],[131.741881,47.706638],[131.690142,47.707041],[131.641483,47.663932],[131.59036,47.660707],[131.568186,47.682469],[131.559563,47.724757],[131.543548,47.736028],[131.456085,47.747297],[131.359998,47.730796],[131.273767,47.738846],[131.236811,47.733211],[131.183224,47.702611],[131.115471,47.689721],[131.029855,47.694555],[130.983659,47.713081],[130.966413,47.733211],[130.961486,47.828118],[130.891269,47.927263],[130.870943,47.943301],[130.770544,47.998194],[130.737284,48.034223],[130.699711,48.044227],[130.666451,48.105007],[130.673842,48.12818],[130.765617,48.18926],[130.769313,48.231136],[130.787791,48.256643],[130.817972,48.265409],[130.845073,48.296473],[130.81982,48.341444],[130.785327,48.357353],[130.747755,48.404256],[130.745907,48.449131],[130.776704,48.480084],[130.767465,48.507846],[130.711414,48.511414],[130.647357,48.484844],[130.620871,48.49595],[130.615944,48.575601],[130.605473,48.594207],[130.538335,48.612016],[130.538951,48.635751],[130.576524,48.688719],[130.622103,48.783842],[130.689856,48.849651],[130.680617,48.881146],[130.609168,48.881146],[130.559277,48.861071],[130.501995,48.865795],[130.471198,48.905541],[130.412068,48.905148],[130.279641,48.866976],[130.237757,48.868551],[130.219895,48.893739],[130.113337,48.956653],[130.059135,48.979047],[130.020946,49.021058],[129.937179,49.040285],[129.9187,49.060681],[129.934715,49.078717],[129.913157,49.1085],[129.866962,49.113985],[129.855259,49.133567],[129.864498,49.158621],[129.847867,49.181316],[129.784426,49.184054],[129.753629,49.208692],[129.761636,49.25754],[129.730223,49.288387],[129.696962,49.298535],[129.604571,49.279018],[129.562687,49.299706],[129.546057,49.395227],[129.51834,49.423652],[129.448739,49.441167],[129.390224,49.432605],[129.374826,49.414309],[129.379138,49.367175],[129.358196,49.355871],[129.320623,49.3586],[129.266421,49.396006],[129.215298,49.399122],[129.180805,49.386657],[129.143849,49.357431],[129.084719,49.359769],[129.061929,49.374189],[129.013886,49.457119],[128.932582,49.46801],[128.871604,49.492506],[128.792147,49.473065],[128.76135,49.482009],[128.763198,49.515824],[128.813089,49.558157],[128.802618,49.58222],[128.744104,49.595023],[128.715155,49.564756],[128.656025,49.577564],[128.619684,49.593471],[128.537764,49.604332],[128.500192,49.593859],[128.389939,49.58998],[128.343128,49.544956],[128.287077,49.566309],[128.243345,49.563203],[128.185447,49.53952],[128.122005,49.55311],[128.070882,49.556604],[128.001281,49.592307],[127.949542,49.596187],[127.897804,49.579116],[127.815268,49.593859],[127.782007,49.630698],[127.705015,49.665185],[127.677913,49.697712],[127.674833,49.764247],[127.653892,49.780094],[127.583059,49.786277],[127.531936,49.826059],[127.529472,49.864265],[127.547334,49.928645],[127.543638,49.944438],[127.495595,49.994479],[127.501755,50.056764],[127.58737,50.137768],[127.60708,50.178794],[127.603385,50.239309],[127.44632,50.270686],[127.371791,50.29669],[127.332371,50.340634],[127.369944,50.403996],[127.3644,50.438314],[127.30527,50.45432],[127.293567,50.46575],[127.323132,50.52552],[127.36132,50.547582],[127.370559,50.581415],[127.294799,50.663426],[127.28864,50.699451],[127.305886,50.733932],[127.295415,50.755139],[127.236285,50.781256],[127.143894,50.910111],[127.113713,50.93765],[127.052119,50.962911],[126.985597,51.029202],[126.922772,51.061937],[126.917844,51.138977],[126.899982,51.200518],[126.926467,51.246244],[126.976358,51.291551],[126.98375,51.318863],[126.970815,51.332327],[126.887047,51.321856],[126.877808,51.300906],[126.908605,51.283691],[126.92154,51.259729],[126.908605,51.246619],[126.863025,51.248492],[126.820526,51.281071],[126.813134,51.311756],[126.837156,51.345038],[126.904293,51.340552],[126.930163,51.359241],[126.908605,51.407423],[126.835308,51.413769],[126.791577,51.432428],[126.784185,51.448095],[126.812518,51.493948],[126.843931,51.521885],[126.837156,51.536033],[126.69549,51.57845],[126.67886,51.602246],[126.741069,51.642374],[126.723823,51.679126],[126.734294,51.711399],[126.724439,51.7266],[126.6727,51.73179],[126.658534,51.762544],[126.622809,51.777357],[126.580925,51.824728],[126.555056,51.874266],[126.510092,51.922274],[126.462665,51.948471],[126.468208,51.982395],[126.447882,52.009294],[126.450962,52.027709],[126.487918,52.041699],[126.514404,52.037282],[126.563679,52.119302],[126.556288,52.136203],[126.499005,52.16044],[126.457121,52.165212],[126.403535,52.185031],[126.34502,52.192002],[126.306832,52.205574],[126.312992,52.235271],[126.357955,52.264216],[126.401071,52.279597],[126.436795,52.277034],[126.4331,52.298632],[126.327774,52.310342],[126.320999,52.342163],[126.348716,52.357882],[126.353644,52.389304],[126.326542,52.424353],[126.268644,52.475051],[126.205202,52.466302],[126.192883,52.492181],[126.213209,52.525327],[126.147304,52.573],[126.066616,52.603905],[126.055529,52.582455],[126.030891,52.576273],[125.989008,52.603178],[125.968682,52.630429],[125.971145,52.654033],[125.995783,52.675085],[126.061688,52.673271],[126.072775,52.691048],[126.044442,52.739628],[126.112195,52.757016],[126.116507,52.768243],[126.052449,52.800095],[126.02042,52.795753],[125.985312,52.758465],[125.966834,52.759914],[125.937269,52.786705],[125.923718,52.815651],[125.855349,52.866259],[125.854117,52.891542],[125.827631,52.899123],[125.772197,52.89804],[125.751255,52.88143],[125.722306,52.880347],[125.678574,52.86084],[125.666871,52.869872],[125.665023,52.913561],[125.737088,52.943504],[125.742632,52.993964],[125.684118,53.00801],[125.643466,53.039686],[125.640386,53.06199],[125.613901,53.083564],[125.588647,53.081047],[125.530749,53.0512],[125.504263,53.061271],[125.503647,53.095424],[125.452524,53.107641],[125.343503,53.14463],[125.315786,53.144989],[125.252344,53.18051],[125.195062,53.198439],[125.142091,53.204175],[125.038613,53.202741],[124.970244,53.194137],[124.887708,53.164368],[124.909266,53.118059],[124.87231,53.099018],[124.832889,53.145347],[124.787926,53.140681],[124.734339,53.146783],[124.712165,53.162574],[124.720789,53.192344],[124.678905,53.207043],[124.590209,53.208476],[124.563108,53.201666],[124.496587,53.207759],[124.487348,53.217436],[124.435609,53.223886],[124.412203,53.248601],[124.375863,53.258984],[124.327819,53.331954],[124.239124,53.379817],[124.19416,53.37339],[124.125791,53.348033],[124.058038,53.404085],[124.01369,53.403371],[123.985973,53.434401],[123.865249,53.489627],[123.797495,53.489983],[123.746373,53.500308],[123.698329,53.498528],[123.668764,53.533756],[123.620721,53.550115],[123.58746,53.546915],[123.569598,53.505291],[123.53141,53.507071],[123.557895,53.531978],[123.546808,53.551537],[123.517243,53.558292],[123.490758,53.542648],[123.510468,53.509206],[123.499381,53.497816],[123.47228,53.509206],[123.454417,53.536602],[123.394055,53.538024],[123.309672,53.56078],[123.274563,53.563269],[123.231447,53.549404],[123.179092,53.509918],[123.137209,53.498172],[123.093477,53.508138],[123.052209,53.506715],[122.943804,53.483929],[122.894528,53.462914],[122.826775,53.457213],[122.763949,53.463626],[122.673406,53.459351],[122.608117,53.465408],[122.5379,53.453293],[122.496016,53.458638],[122.435038,53.444739],[122.37406,53.47467],[122.350038,53.505647],[122.266886,53.470039],[122.227466,53.461845],[122.161561,53.468614],[122.111054,53.426913],[122.077177,53.422277],[122.026054,53.428339],[121.875765,53.426556],[121.816019,53.41336],[121.754425,53.389454],[121.697758,53.392666],[121.589969,53.350891],[121.499426,53.337314],[121.504969,53.323018],[121.575802,53.29155],[121.615222,53.258984],[121.642324,53.262564],[121.679896,53.240722],[121.67928,53.199515],[121.660186,53.195213],[121.665114,53.170467],[121.722396,53.145706],[121.753193,53.147501],[121.784606,53.104408],[121.775367,53.089674],[121.817867,53.061631],[121.785838,53.018451],[121.715621,52.997926],[121.677432,52.948192],[121.66265,52.912478],[121.610295,52.892264],[121.604136,52.872401],[121.620766,52.853251],[121.591201,52.824693],[121.537614,52.801542],[121.511129,52.779104],[121.476636,52.772225],[121.455078,52.73528],[121.373158,52.683067],[121.309717,52.676173],[121.29247,52.651855],[121.237036,52.619167],[121.182217,52.59918],[121.225333,52.577364],[121.280151,52.586819],[121.323883,52.573727],[121.353448,52.534793],[121.411963,52.52205],[121.416274,52.499468],[121.474172,52.482706],[121.495114,52.484892],[121.519136,52.456821],[121.565331,52.460468],[121.590585,52.443326],[121.63986,52.44442],[121.678664,52.419973],[121.658338,52.3904],[121.715621,52.342894],[121.714389,52.318025],[121.769207,52.308147],[121.841272,52.282526],[121.901018,52.280695],[121.94783,52.298266],[121.976779,52.343626],[122.035909,52.377615],[122.040837,52.413038],[122.091344,52.427272],[122.080873,52.440407],[122.107358,52.452445],[122.142467,52.495096],[122.140003,52.510032],[122.168952,52.513674],[122.178191,52.48963],[122.207756,52.469218],[122.310618,52.475416],[122.326016,52.459374],[122.342031,52.414133],[122.367284,52.413768],[122.378987,52.395512],[122.419023,52.375057],[122.447356,52.394052],[122.484313,52.341432],[122.478153,52.29607],[122.560689,52.282526],[122.585943,52.266413],[122.67895,52.276667],[122.710979,52.256157],[122.76087,52.26678],[122.787355,52.252494],[122.766413,52.232705],[122.769493,52.179893],[122.73808,52.153464],[122.690653,52.140243],[122.629059,52.13657],[122.643841,52.111585],[122.625363,52.067459],[122.650616,52.058997],[122.664783,51.99861],[122.683877,51.974654],[122.726377,51.978709],[122.729457,51.919321],[122.706051,51.890151],[122.725761,51.87833],[122.732536,51.832495],[122.771957,51.779579],[122.749167,51.746613],[122.778732,51.698048],[122.816304,51.655371],[122.820616,51.633088],[122.85634,51.606707],[122.832935,51.581797],[122.874202,51.561339],[122.880362,51.537894],[122.858804,51.524864],[122.880362,51.511085],[122.854492,51.477551],[122.871123,51.455181],[122.900072,51.445112],[122.903768,51.415262],[122.946267,51.405183],[122.965977,51.386886],[122.965977,51.345786],[123.002934,51.31213],[123.069455,51.321108],[123.127969,51.297913],[123.231447,51.279199],[123.231447,51.268716],[123.294273,51.254111],[123.339853,51.27246],[123.376809,51.266844],[123.414381,51.278825],[123.440251,51.270963],[123.46304,51.286686],[123.582533,51.294545],[123.582533,51.306893],[123.661989,51.319237],[123.660141,51.342795],[123.711264,51.398089],[123.794416,51.361109],[123.842459,51.367462],[123.887423,51.320734],[123.926227,51.300532],[123.939777,51.313253],[123.994596,51.322604],[124.071588,51.320734],[124.090067,51.3413],[124.128255,51.347281],[124.192313,51.33943],[124.239124,51.344664],[124.271769,51.308389],[124.297638,51.298661],[124.339522,51.293422],[124.406659,51.272086],[124.430065,51.301281],[124.426985,51.331953],[124.443616,51.35812],[124.478108,51.36223],[124.490427,51.380537],[124.555717,51.375307],[124.58713,51.363725],[124.62655,51.327465],[124.693687,51.3327],[124.752817,51.35812],[124.76452,51.38726],[124.783614,51.392115],[124.864302,51.37979],[124.885244,51.40817],[124.942527,51.447349],[124.917889,51.474196],[124.928976,51.498419],[124.983795,51.508478],[125.004737,51.529332],[125.047236,51.529704],[125.073106,51.553526],[125.060171,51.59667],[125.098975,51.658341],[125.12854,51.659083],[125.130388,51.635317],[125.175968,51.639403],[125.214772,51.627888],[125.228938,51.640517],[125.289301,51.633831],[125.316402,51.610052],[125.35151,51.623801],[125.38046,51.585516],[125.424807,51.562827],[125.528285,51.488359],[125.559082,51.461521],[125.559082,51.461521],[125.595422,51.416755],[125.595422,51.416755],[125.60035,51.413396],[125.60035,51.413396],[125.600966,51.410409],[125.600966,51.410409],[125.62314,51.398089],[125.62314,51.398089],[125.623756,51.387633],[125.623756,51.387633],[125.626219,51.380163],[125.626219,51.380163],[125.700132,51.327465],[125.700132,51.327465],[125.740784,51.27583],[125.740784,51.27583],[125.76111,51.261976],[125.76111,51.261976],[125.761726,51.226385],[125.819008,51.227134],[125.850421,51.21364],[125.864588,51.146487],[125.909551,51.138977],[125.946508,51.108176],[125.970529,51.123955],[125.993935,51.119072],[125.976073,51.084498],[126.059225,51.043503],[126.033971,51.011132],[126.041978,50.981753],[126.068464,50.967434],[126.042594,50.92558],[126.02042,50.927466],[125.996399,50.906715],[125.997631,50.872738],[125.961906,50.901054],[125.939732,50.85423],[125.913247,50.825885],[125.878138,50.816812],[125.890457,50.805845],[125.836255,50.793363],[125.846726,50.769524],[125.828863,50.756654],[125.804226,50.773309],[125.758646,50.746809],[125.795603,50.738856],[125.78082,50.725598],[125.825784,50.70362],[125.789443,50.679735],[125.804226,50.658874],[125.793139,50.643316],[125.814697,50.62092],[125.807921,50.60383],[125.829479,50.56165],[125.794987,50.532748],[125.770349,50.531227],[125.754335,50.506874],[125.740784,50.523237],[125.699516,50.487078],[125.654553,50.471082],[125.627451,50.443268],[125.580024,50.449366],[125.562162,50.438314],[125.583104,50.409717],[125.567089,50.402852],[125.536292,50.420014],[125.522126,50.404759],[125.546763,50.358965],[125.520278,50.3498],[125.530749,50.331085],[125.463611,50.295925],[125.466075,50.266861],[125.442053,50.260357],[125.448829,50.216338],[125.417416,50.195654],[125.39093,50.199868],[125.382923,50.172278],[125.335496,50.161161],[125.376148,50.137385],[125.311474,50.140453],[125.27883,50.127411],[125.258504,50.103618],[125.287453,50.093636],[125.283757,50.070211],[125.328105,50.065985],[125.315786,50.04562],[125.289916,50.057917],[125.25296,50.041393],[125.283757,50.036012],[125.297924,50.014481],[125.278214,49.996402],[125.241873,49.987938],[125.231402,49.957531],[125.190134,49.959841],[125.199373,49.935194],[125.225859,49.922481],[125.212924,49.907452],[125.245569,49.87198],[125.225243,49.867351],[125.239409,49.844587],[125.177815,49.829533],[125.222779,49.799026],[125.221547,49.754969],[125.204301,49.734086],[125.225243,49.726349],[125.219699,49.669058],[125.185207,49.634574],[125.189518,49.652401],[125.164881,49.669446],[125.132236,49.672157],[125.127308,49.655113],[125.15441,49.616741],[125.16796,49.629923],[125.205533,49.593859],[125.23017,49.595411],[125.233866,49.536801],[125.211076,49.539908],[125.228323,49.487063],[125.270822,49.454395],[125.256656,49.437275],[125.25604,49.395227],[125.277598,49.379644],[125.256656,49.359769],[125.261583,49.322336],[125.214772,49.277066],[125.227707,49.248947],[125.219699,49.189139],[125.187671,49.186792],[125.158721,49.144921],[125.117453,49.126127],[125.034302,49.157056],[125.039845,49.17623],[124.983179,49.162535],[124.906802,49.184054],[124.860607,49.166448],[124.847672,49.129651],[124.809484,49.115943],[124.828578,49.077933],[124.808252,49.020666],[124.756513,48.967262],[124.744194,48.920487],[124.709086,48.920487],[124.715861,48.885475],[124.697383,48.841775],[124.654267,48.83429],[124.644412,48.80789],[124.656115,48.783842],[124.612383,48.747945],[124.624702,48.701755],[124.601912,48.632587],[124.579122,48.596582],[124.520608,48.556195],[124.548941,48.535593],[124.533543,48.515379],[124.555717,48.467784],[124.507674,48.445558],[124.52492,48.426897],[124.51876,48.378027],[124.547094,48.35775],[124.540934,48.335476],[124.579738,48.297269],[124.558796,48.268197],[124.579122,48.262221],[124.547094,48.200829],[124.512601,48.164518],[124.529847,48.146951],[124.505826,48.124985],[124.478108,48.123387],[124.46579,48.098213],[124.415899,48.08782],[124.430065,48.12099],[124.471333,48.133373],[124.475029,48.173698],[124.418978,48.181679],[124.412819,48.219175],[124.422058,48.245884],[124.365392,48.283731],[124.353689,48.315978],[124.317964,48.35099],[124.331515,48.380015],[124.309957,48.413393],[124.330283,48.435633],[124.302566,48.456673],[124.314269,48.503881],[124.25945,48.536385],[124.25945,48.536385],[124.136878,48.463023],[124.07898,48.43603],[124.019234,48.39313],[123.862785,48.271782],[123.746373,48.197638],[123.705105,48.152142],[123.579453,48.045427],[123.537569,48.021816],[123.300432,47.953723],[123.256085,47.876711],[123.214201,47.824502],[123.161846,47.781892],[123.041122,47.746492],[122.926557,47.697777],[122.848949,47.67441],[122.765181,47.614333],[122.59395,47.54732],[122.543443,47.495589],[122.507103,47.401291],[122.418407,47.350632],[122.441197,47.310476],[122.441197,47.310476],[122.462755,47.27841],[122.498479,47.255262],[122.531124,47.198771],[122.582863,47.158092],[122.582863,47.158092],[122.615508,47.124306],[122.679566,47.094164],[122.710363,47.093349],[122.710363,47.093349],[122.821232,47.065636],[122.852645,47.072158],[122.845869,47.046881],[122.778116,47.002822],[122.77442,46.973837],[122.798442,46.9575],[122.791051,46.941567],[122.83971,46.937072],[122.895144,46.960359],[122.893913,46.895376],[122.906847,46.80738],[122.996774,46.761483],[123.00355,46.730726],[123.026339,46.718829],[123.076846,46.745082],[123.103332,46.734828],[123.163694,46.74016],[123.198802,46.803283],[123.22344,46.821305],[123.221592,46.850373],[123.295505,46.865105],[123.341084,46.826628],[123.374345,46.837683],[123.40699,46.906416],[123.404526,46.935438],[123.360179,46.970978],[123.304128,46.964852],[123.301664,46.999965],[123.337389,46.988943],[123.42362,46.934212],[123.487678,46.959951],[123.52833,46.944836],[123.483366,46.84587],[123.506772,46.827038],[123.562823,46.82581],[123.575757,46.845461],[123.576989,46.891286],[123.605322,46.891286],[123.599163,46.868378],[123.625648,46.847508],[123.580069,46.827447],[123.629344,46.813524],[123.631808,46.728675],[123.603475,46.68928],[123.474743,46.686817],[123.366338,46.677784],[123.318295,46.662179],[123.276411,46.660947],[123.279491,46.616981],[123.228368,46.588198],[123.18094,46.614103],[123.098404,46.603002],[123.077462,46.622324],[123.04605,46.617803],[123.052825,46.579972],[123.002318,46.574624],[123.010325,46.524823],[123.011557,46.434984],[123.089781,46.347888],[123.142136,46.298293],[123.178476,46.248239],[123.248078,46.273065],[123.286266,46.250308],[123.320758,46.254447],[123.357099,46.232096],[123.357099,46.232096],[123.430396,46.243687],[123.452569,46.233338],[123.499381,46.259826],[123.569598,46.223816],[123.569598,46.223816]]]]}},{"type":"Feature","properties":{"adcode":310000,"name":"上海市","center":[121.472644,31.231706],"centroid":[121.438737,31.072559],"childrenNum":16,"level":"province","parent":{"adcode":100000},"subFeatureIndex":8,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[120.901349,31.017327],[120.940153,31.010146],[120.949392,31.030148],[120.989428,31.01425],[121.000515,30.938309],[120.993124,30.889532],[121.020225,30.872069],[120.991892,30.837133],[121.038087,30.814007],[121.060261,30.845354],[121.097833,30.857171],[121.13787,30.826342],[121.123087,30.77905],[121.174826,30.771851],[121.21671,30.785734],[121.232108,30.755909],[121.272144,30.723504],[121.274608,30.677191],[121.362071,30.679764],[121.426129,30.730192],[121.517288,30.775451],[121.601056,30.805269],[121.681128,30.818633],[121.904714,30.814007],[121.943518,30.776993],[121.970004,30.789333],[121.954605,30.825828],[121.994025,30.862823],[121.990945,30.96859],[121.977395,31.016301],[121.946598,31.066039],[121.809859,31.196669],[121.722396,31.3036],[121.599208,31.37465],[121.520984,31.394575],[121.404571,31.479337],[121.343593,31.511996],[121.301093,31.49873],[121.301093,31.49873],[121.247507,31.476785],[121.241963,31.493117],[121.174826,31.44922],[121.143413,31.392021],[121.113848,31.37465],[121.130478,31.343987],[121.142797,31.275472],[121.090442,31.291838],[121.060261,31.245289],[121.076892,31.158267],[121.018377,31.134194],[120.930298,31.141365],[120.881023,31.134706],[120.859465,31.100379],[120.890878,31.094229],[120.901349,31.017327]]],[[[121.974931,31.61704],[121.715005,31.673592],[121.64294,31.697527],[121.599824,31.703128],[121.49881,31.753012],[121.431673,31.769295],[121.384861,31.833382],[121.323267,31.868458],[121.265369,31.863883],[121.200079,31.834907],[121.118775,31.759119],[121.145261,31.75403],[121.289391,31.61653],[121.371926,31.553314],[121.395332,31.585437],[121.434136,31.590535],[121.547469,31.531382],[121.625693,31.501792],[121.682976,31.491075],[121.819098,31.437987],[121.890547,31.428795],[121.981706,31.464024],[121.995873,31.493117],[121.974931,31.61704]]],[[[121.795693,31.330186],[121.792613,31.363408],[121.742106,31.407345],[121.585657,31.454836],[121.567179,31.48342],[121.520984,31.494137],[121.509897,31.4824],[121.572107,31.435944],[121.727939,31.35472],[121.76428,31.31536],[121.785222,31.31127],[121.795693,31.330186]]],[[[121.801852,31.356765],[121.8037,31.328652],[121.840656,31.295418],[121.932431,31.283144],[122.016199,31.282121],[122.097503,31.255522],[122.122756,31.307179],[122.116597,31.320984],[122.040837,31.324051],[121.951525,31.337343],[121.845584,31.37465],[121.792613,31.377715],[121.801852,31.356765]]],[[[121.626925,31.445135],[121.631853,31.456878],[121.579498,31.479848],[121.626925,31.445135]]],[[[121.943518,31.215608],[121.959533,31.159291],[121.995873,31.160828],[122.008808,31.221238],[121.950909,31.228915],[121.943518,31.215608]]],[[[121.88254,31.240684],[121.909026,31.195133],[121.923808,31.234032],[121.88254,31.240684]]]]}},{"type":"Feature","properties":{"adcode":320000,"name":"江苏省","center":[118.767413,32.041544],"centroid":[119.486506,32.983991],"childrenNum":13,"level":"province","parent":{"adcode":100000},"subFeatureIndex":9,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.311654,34.561686],[117.27285,34.556757],[117.303647,34.542463],[117.267923,34.532603],[117.27285,34.499565],[117.252524,34.48674],[117.248213,34.451216],[117.166293,34.434435],[117.139191,34.526687],[117.15151,34.559222],[117.104083,34.648874],[117.073286,34.639026],[117.061583,34.675947],[117.070206,34.713835],[117.022163,34.759081],[116.969192,34.771864],[116.95133,34.81069],[116.979047,34.815113],[116.966113,34.844588],[116.929156,34.843114],[116.922381,34.894671],[116.858323,34.928533],[116.821983,34.929515],[116.815823,34.965324],[116.789338,34.975133],[116.781331,34.916757],[116.677853,34.939327],[116.622418,34.939818],[116.613795,34.922645],[116.557745,34.908905],[116.445028,34.895652],[116.408071,34.850972],[116.403144,34.756131],[116.369267,34.749247],[116.363724,34.715311],[116.392057,34.710391],[116.374195,34.640011],[116.430245,34.650843],[116.432709,34.630163],[116.477057,34.614896],[116.490607,34.573513],[116.594085,34.511894],[116.592237,34.493646],[116.662454,34.472927],[116.722816,34.472434],[116.773939,34.453683],[116.782563,34.429993],[116.828142,34.389012],[116.909446,34.408271],[116.969192,34.389012],[116.960569,34.363821],[116.983359,34.348011],[116.969192,34.283753],[117.051112,34.221425],[117.025243,34.167469],[117.046801,34.151622],[117.123793,34.128342],[117.130568,34.101586],[117.192162,34.068873],[117.257452,34.065899],[117.277162,34.078787],[117.311654,34.067882],[117.357234,34.088205],[117.404045,34.03218],[117.435458,34.028212],[117.514914,34.060941],[117.543248,34.038627],[117.569117,33.985051],[117.612849,34.000433],[117.629479,34.028708],[117.671363,33.992494],[117.672595,33.934916],[117.715095,33.879287],[117.753899,33.891211],[117.759442,33.874318],[117.739732,33.758467],[117.72495,33.74951],[117.750203,33.710688],[117.791471,33.733585],[117.843826,33.736074],[117.901724,33.720146],[117.972557,33.74951],[118.019985,33.738562],[118.065564,33.76593],[118.117919,33.766427],[118.161035,33.735576],[118.16781,33.663381],[118.112376,33.617045],[118.117919,33.594615],[118.107448,33.475391],[118.050782,33.491863],[118.027376,33.455421],[118.016905,33.402978],[118.029224,33.374995],[117.992883,33.333005],[117.974405,33.279487],[117.939297,33.262475],[117.942376,33.224936],[117.977485,33.226437],[117.988572,33.180869],[118.037231,33.152314],[118.038463,33.134776],[118.149332,33.169348],[118.178281,33.217926],[118.217085,33.191888],[118.219549,33.114227],[118.243571,33.027967],[118.244803,32.998359],[118.26944,32.969242],[118.303933,32.96874],[118.291614,32.946143],[118.252194,32.936601],[118.2331,32.914498],[118.250346,32.848157],[118.301469,32.846145],[118.300237,32.783275],[118.334114,32.761637],[118.363063,32.770695],[118.375382,32.718849],[118.411106,32.715828],[118.450526,32.743518],[118.483787,32.721367],[118.560163,32.729926],[118.572482,32.719856],[118.642699,32.744525],[118.707373,32.72036],[118.756648,32.737477],[118.73817,32.772708],[118.743097,32.853184],[118.743097,32.853184],[118.810235,32.853687],[118.821322,32.920527],[118.846575,32.922034],[118.849039,32.956689],[118.89585,32.957694],[118.89585,32.957694],[118.892771,32.941121],[118.934039,32.93861],[118.993169,32.958196],[119.020886,32.955685],[119.054763,32.8748],[119.113277,32.823014],[119.184726,32.825529],[119.211827,32.708275],[119.208748,32.641276],[119.230921,32.607001],[119.22045,32.576748],[119.152697,32.557582],[119.168096,32.536394],[119.142226,32.499556],[119.084944,32.452602],[119.041212,32.515201],[118.975923,32.505108],[118.922336,32.557078],[118.92172,32.557078],[118.922336,32.557078],[118.92172,32.557078],[118.890923,32.553042],[118.908169,32.59238],[118.84288,32.56767],[118.820706,32.60448],[118.784981,32.582295],[118.757264,32.603976],[118.73509,32.58885],[118.719076,32.614059],[118.719076,32.614059],[118.688895,32.588346],[118.658714,32.594397],[118.632844,32.578261],[118.59712,32.600951],[118.568787,32.585825],[118.564475,32.562122],[118.608823,32.536899],[118.592192,32.481383],[118.628533,32.467751],[118.691359,32.472295],[118.685199,32.403604],[118.703061,32.328792],[118.657482,32.30148],[118.674728,32.250375],[118.643931,32.209875],[118.510888,32.194176],[118.49549,32.165304],[118.501033,32.121726],[118.433896,32.086746],[118.394476,32.076098],[118.389548,31.985281],[118.363679,31.930443],[118.472084,31.879639],[118.466541,31.857784],[118.504729,31.841516],[118.481939,31.778453],[118.533678,31.76726],[118.521975,31.743343],[118.5577,31.73011],[118.571866,31.746397],[118.641467,31.75861],[118.653786,31.73011],[118.697518,31.709747],[118.643315,31.671555],[118.643315,31.649651],[118.736322,31.633347],[118.748025,31.675629],[118.773894,31.682759],[118.802844,31.619078],[118.858894,31.623665],[118.881684,31.564023],[118.885995,31.519139],[118.883532,31.500261],[118.852119,31.393553],[118.824401,31.375672],[118.767735,31.363919],[118.745561,31.372606],[118.720924,31.322518],[118.726467,31.282121],[118.756648,31.279564],[118.794836,31.229426],[118.870597,31.242219],[118.984546,31.237102],[119.014727,31.241707],[119.10527,31.235055],[119.107118,31.250917],[119.158241,31.294907],[119.197661,31.295418],[119.198277,31.270357],[119.266646,31.250405],[119.294363,31.263195],[119.338095,31.259103],[119.350414,31.301043],[119.374435,31.258591],[119.360269,31.213049],[119.391682,31.174142],[119.439109,31.177214],[119.461283,31.156219],[119.532732,31.159291],[119.599869,31.10909],[119.623891,31.130096],[119.678093,31.167997],[119.705811,31.152634],[119.715666,31.169533],[119.779723,31.17875],[119.809904,31.148536],[119.827151,31.174142],[119.878274,31.160828],[119.921389,31.170045],[119.946027,31.106016],[119.988527,31.059375],[120.001461,31.027071],[120.052584,31.00553],[120.111099,30.955761],[120.149903,30.937283],[120.223816,30.926502],[120.316206,30.933689],[120.371025,30.948575],[120.35809,30.886964],[120.42338,30.902884],[120.435083,30.920855],[120.441858,30.860768],[120.460336,30.839702],[120.489285,30.763624],[120.504684,30.757967],[120.563814,30.835592],[120.589684,30.854089],[120.654973,30.846896],[120.68269,30.882342],[120.713487,30.88491],[120.709176,30.933176],[120.684538,30.955247],[120.698089,30.970643],[120.746132,30.962432],[120.770154,30.996809],[120.820661,31.006556],[120.865624,30.989627],[120.901349,31.017327],[120.890878,31.094229],[120.859465,31.100379],[120.881023,31.134706],[120.930298,31.141365],[121.018377,31.134194],[121.076892,31.158267],[121.060261,31.245289],[121.090442,31.291838],[121.142797,31.275472],[121.130478,31.343987],[121.113848,31.37465],[121.143413,31.392021],[121.174826,31.44922],[121.241963,31.493117],[121.247507,31.476785],[121.301093,31.49873],[121.301093,31.49873],[121.343593,31.511996],[121.371926,31.553314],[121.289391,31.61653],[121.145261,31.75403],[121.118775,31.759119],[121.200079,31.834907],[121.265369,31.863883],[121.323267,31.868458],[121.384861,31.833382],[121.431673,31.769295],[121.49881,31.753012],[121.599824,31.703128],[121.64294,31.697527],[121.715005,31.673592],[121.974931,31.61704],[121.970004,31.718911],[121.889315,31.866425],[121.856055,31.955328],[121.772287,32.032984],[121.759352,32.059362],[121.525295,32.136423],[121.542542,32.152132],[121.458774,32.177462],[121.499426,32.211394],[121.493882,32.263533],[121.450151,32.282256],[121.425513,32.430885],[121.390405,32.460682],[121.352216,32.474315],[121.269681,32.483402],[121.153268,32.52933],[121.121855,32.569183],[121.076892,32.576243],[121.020225,32.605489],[120.961711,32.612042],[120.979573,32.636236],[120.963559,32.68259],[120.916131,32.701225],[120.953088,32.714318],[120.972182,32.761134],[120.981421,32.85972],[120.957399,32.893395],[120.932762,33.005887],[120.917979,33.02596],[120.871784,33.047032],[120.874247,33.093672],[120.843451,33.209915],[120.819429,33.237951],[120.833595,33.274984],[120.813885,33.303499],[120.769538,33.307],[120.741205,33.337505],[120.717183,33.436945],[120.680227,33.520306],[120.622944,33.615051],[120.611241,33.627012],[120.583524,33.668362],[120.534249,33.782346],[120.48559,33.859411],[120.367329,34.091674],[120.347619,34.179352],[120.314359,34.255563],[120.311895,34.306991],[120.103707,34.391481],[119.962657,34.459112],[119.811752,34.485754],[119.781571,34.515839],[119.641137,34.569078],[119.610956,34.592729],[119.569072,34.615389],[119.465594,34.672994],[119.525956,34.73351],[119.456971,34.748264],[119.381827,34.752198],[119.494543,34.754656],[119.497007,34.754164],[119.439725,34.785136],[119.440957,34.769406],[119.378747,34.764489],[119.312841,34.774813],[119.272189,34.797914],[119.238313,34.799388],[119.217371,34.827886],[119.202588,34.890253],[119.214907,34.925589],[119.211211,34.981507],[119.238313,35.048657],[119.285124,35.068252],[119.291899,35.028567],[119.307298,35.032977],[119.292515,35.068742],[119.306066,35.076578],[119.286972,35.115261],[119.250016,35.124562],[119.217371,35.106939],[119.137915,35.096167],[119.114509,35.055026],[119.027045,35.055516],[118.942662,35.040817],[118.928495,35.051106],[118.86259,35.025626],[118.860742,34.944233],[118.805307,34.87307],[118.80038,34.843114],[118.772047,34.794474],[118.739402,34.792508],[118.719076,34.745313],[118.764039,34.740396],[118.783749,34.723181],[118.739402,34.693663],[118.690127,34.678408],[118.664257,34.693663],[118.607591,34.694155],[118.601431,34.714327],[118.545997,34.705964],[118.460997,34.656258],[118.473932,34.623269],[118.439439,34.626223],[118.424657,34.595193],[118.439439,34.507949],[118.416034,34.473914],[118.404947,34.427525],[118.379693,34.415183],[118.290382,34.424563],[118.277447,34.404814],[118.220165,34.405802],[118.217701,34.379134],[118.179513,34.379628],[118.177665,34.45319],[118.132702,34.483287],[118.16473,34.50499],[118.185056,34.543942],[118.079115,34.569571],[118.114839,34.614404],[118.084042,34.655766],[118.053861,34.650843],[117.951615,34.678408],[117.909732,34.670533],[117.902956,34.644443],[117.793935,34.651827],[117.791471,34.583368],[117.801942,34.518798],[117.684298,34.547392],[117.659044,34.501044],[117.609769,34.490686],[117.592523,34.462566],[117.53832,34.467006],[117.465023,34.484767],[117.402813,34.550843],[117.402813,34.569571],[117.370785,34.584846],[117.325205,34.573021],[117.325205,34.573021],[117.32151,34.566614],[117.32151,34.566614],[117.311654,34.561686],[117.311654,34.561686]]]]}},{"type":"Feature","properties":{"adcode":330000,"name":"浙江省","center":[120.153576,30.287459],"centroid":[120.109913,29.181466],"childrenNum":11,"level":"province","parent":{"adcode":100000},"subFeatureIndex":10,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[118.433896,28.288335],[118.444367,28.253548],[118.490562,28.238259],[118.493026,28.262509],[118.588497,28.282538],[118.595272,28.258292],[118.651322,28.277267],[118.674728,28.27147],[118.699366,28.309939],[118.719692,28.312047],[118.756032,28.252493],[118.802228,28.240368],[118.804075,28.207675],[118.771431,28.188687],[118.805923,28.154923],[118.802228,28.117453],[118.767735,28.10584],[118.719076,28.063601],[118.733858,28.027684],[118.730163,27.970615],[118.753568,27.947885],[118.818242,27.916689],[118.829329,27.847921],[118.873677,27.733563],[118.879836,27.667859],[118.913713,27.619616],[118.909401,27.568168],[118.869365,27.540047],[118.907553,27.460952],[118.955597,27.4498],[118.986393,27.47582],[118.983314,27.498649],[119.020886,27.498118],[119.03998,27.478475],[119.092335,27.466262],[119.129907,27.475289],[119.121284,27.438115],[119.14777,27.424836],[119.224146,27.416868],[119.26911,27.42218],[119.285124,27.457766],[119.334399,27.480067],[119.360269,27.524657],[119.416935,27.539517],[119.438493,27.508734],[119.466826,27.526249],[119.501935,27.610601],[119.501319,27.649837],[119.541971,27.666799],[119.606028,27.674749],[119.644217,27.663619],[119.626354,27.620676],[119.630666,27.582491],[119.675014,27.574534],[119.659615,27.540578],[119.690412,27.537394],[119.70889,27.514042],[119.703347,27.446613],[119.685485,27.438646],[119.711354,27.403054],[119.750774,27.373829],[119.739687,27.362668],[119.782187,27.330241],[119.768636,27.307909],[119.843165,27.300464],[119.938636,27.329709],[119.960194,27.365857],[120.008237,27.375423],[120.026099,27.344063],[120.052584,27.338747],[120.096316,27.390302],[120.136968,27.402523],[120.134504,27.420055],[120.221352,27.420055],[120.26262,27.432804],[120.273091,27.38924],[120.340844,27.399867],[120.343924,27.363199],[120.430155,27.258976],[120.401822,27.250996],[120.404286,27.204166],[120.461568,27.142407],[120.492365,27.136016],[120.545952,27.156785],[120.574901,27.234501],[120.554575,27.25206],[120.580444,27.321203],[120.665444,27.357884],[120.673451,27.420055],[120.703016,27.478475],[120.637111,27.561271],[120.634647,27.577186],[120.685154,27.622797],[120.709176,27.682699],[120.771386,27.734623],[120.777545,27.774873],[120.809574,27.775402],[120.840371,27.758986],[120.910588,27.864852],[120.942001,27.896592],[120.97403,27.887071],[121.027616,27.832574],[121.070116,27.834162],[121.107688,27.81352],[121.152036,27.815638],[121.134174,27.787051],[121.13479,27.787051],[121.149572,27.801345],[121.149572,27.801875],[121.153268,27.809815],[121.152652,27.810344],[121.192072,27.822518],[121.193304,27.872259],[121.162507,27.879136],[121.162507,27.90717],[121.099681,27.895005],[121.05595,27.900294],[120.991892,27.95],[121.015298,27.981714],[121.059029,28.096338],[121.108304,28.139092],[121.121239,28.12537],[121.140949,28.031382],[121.176058,28.022401],[121.261057,28.034551],[121.299862,28.067297],[121.328195,28.134343],[121.373774,28.133287],[121.402107,28.197127],[121.45631,28.250385],[121.488955,28.301509],[121.538846,28.299401],[121.571491,28.279376],[121.580114,28.240368],[121.627541,28.251966],[121.669425,28.33312],[121.660186,28.355768],[121.634317,28.347868],[121.658954,28.392628],[121.692831,28.407368],[121.671273,28.472621],[121.646019,28.511544],[121.634317,28.562542],[121.596128,28.575156],[121.557324,28.645033],[121.540694,28.655537],[121.646019,28.682842],[121.689135,28.719062],[121.704534,28.804577],[121.687287,28.863294],[121.774751,28.863818],[121.772287,28.898404],[121.743338,28.954451],[121.711309,28.985865],[121.712541,29.028783],[121.658954,29.058606],[121.660186,29.118226],[121.616454,29.143318],[121.608447,29.168927],[121.715621,29.125022],[121.750113,29.136523],[121.767975,29.166837],[121.780294,29.10986],[121.811091,29.10986],[121.85975,29.086328],[121.884388,29.105677],[121.966308,29.052852],[121.970004,29.092604],[121.988482,29.110906],[121.986634,29.154817],[121.948446,29.193485],[121.971851,29.193485],[121.966924,29.249894],[122.002032,29.260336],[122.000185,29.278608],[121.94475,29.28435],[121.958301,29.334448],[121.936127,29.348012],[121.937975,29.384],[121.975547,29.411113],[121.993409,29.45229],[121.973083,29.477821],[121.968772,29.515846],[121.995257,29.545007],[122.000185,29.582486],[121.966308,29.636078],[121.909641,29.650122],[121.872685,29.632437],[121.833265,29.653242],[121.937359,29.748373],[122.003264,29.762401],[122.043916,29.822647],[122.10243,29.859504],[122.143082,29.877668],[122.140003,29.901535],[122.00696,29.891678],[122.00388,29.92021],[121.971235,29.955476],[121.919497,29.920729],[121.835113,29.958068],[121.78399,29.99332],[121.721164,29.992802],[121.699606,30.007832],[121.652795,30.071037],[121.635548,30.070002],[121.561636,30.184395],[121.497578,30.258861],[121.395332,30.338435],[121.371926,30.37097],[121.328195,30.397299],[121.225333,30.404526],[121.183449,30.434458],[121.092906,30.515952],[121.058413,30.563888],[121.148956,30.599953],[121.188992,30.632916],[121.239499,30.648878],[121.274608,30.677191],[121.272144,30.723504],[121.232108,30.755909],[121.21671,30.785734],[121.174826,30.771851],[121.123087,30.77905],[121.13787,30.826342],[121.097833,30.857171],[121.060261,30.845354],[121.038087,30.814007],[120.991892,30.837133],[121.020225,30.872069],[120.993124,30.889532],[121.000515,30.938309],[120.989428,31.01425],[120.949392,31.030148],[120.940153,31.010146],[120.901349,31.017327],[120.865624,30.989627],[120.820661,31.006556],[120.770154,30.996809],[120.746132,30.962432],[120.698089,30.970643],[120.684538,30.955247],[120.709176,30.933176],[120.713487,30.88491],[120.68269,30.882342],[120.654973,30.846896],[120.589684,30.854089],[120.563814,30.835592],[120.504684,30.757967],[120.489285,30.763624],[120.460336,30.839702],[120.441858,30.860768],[120.435083,30.920855],[120.42338,30.902884],[120.35809,30.886964],[120.371025,30.948575],[120.316206,30.933689],[120.223816,30.926502],[120.149903,30.937283],[120.111099,30.955761],[120.052584,31.00553],[120.001461,31.027071],[119.988527,31.059375],[119.946027,31.106016],[119.921389,31.170045],[119.878274,31.160828],[119.827151,31.174142],[119.809904,31.148536],[119.779723,31.17875],[119.715666,31.169533],[119.705811,31.152634],[119.678093,31.167997],[119.623891,31.130096],[119.649144,31.104991],[119.629434,31.085517],[119.633746,31.019379],[119.580159,30.967051],[119.582007,30.932149],[119.563529,30.919315],[119.557369,30.874124],[119.575847,30.829939],[119.55429,30.825828],[119.527188,30.77905],[119.479761,30.772365],[119.482841,30.704467],[119.444652,30.650422],[119.408312,30.645274],[119.39045,30.685941],[119.343022,30.664322],[119.323312,30.630341],[119.238929,30.609225],[119.265414,30.574709],[119.237081,30.546881],[119.272189,30.510281],[119.326392,30.532964],[119.336247,30.508734],[119.335015,30.448389],[119.36766,30.38491],[119.402768,30.374584],[119.349182,30.349281],[119.326392,30.372002],[119.277117,30.341018],[119.246936,30.341018],[119.236465,30.297106],[119.201356,30.290905],[119.126828,30.304856],[119.091719,30.323972],[119.06277,30.304856],[118.988857,30.332237],[118.954365,30.360126],[118.880452,30.31519],[118.877988,30.282637],[118.905089,30.216464],[118.929727,30.2025],[118.852735,30.166805],[118.852119,30.149729],[118.895234,30.148694],[118.873677,30.11505],[118.878604,30.064822],[118.902626,30.029078],[118.894619,29.937845],[118.838568,29.934733],[118.841032,29.891159],[118.740634,29.814859],[118.744945,29.73902],[118.700598,29.706277],[118.647011,29.64336],[118.61991,29.654282],[118.573714,29.638159],[118.532446,29.588731],[118.500417,29.57572],[118.496106,29.519492],[118.381541,29.504909],[118.347664,29.474174],[118.329802,29.495012],[118.306396,29.479384],[118.316252,29.422581],[118.248498,29.431443],[118.193064,29.395472],[118.205382,29.343839],[118.166578,29.314099],[118.178281,29.297921],[118.138861,29.283828],[118.077883,29.290614],[118.073571,29.216993],[118.042159,29.210202],[118.027992,29.167882],[118.045238,29.149068],[118.037847,29.102017],[118.076035,29.074822],[118.066796,29.053898],[118.097593,28.998952],[118.115455,29.009944],[118.115455,29.009944],[118.133933,28.983771],[118.165346,28.986912],[118.227556,28.942406],[118.195527,28.904167],[118.270056,28.918836],[118.300237,28.826075],[118.364295,28.813491],[118.403099,28.702791],[118.428352,28.681267],[118.428352,28.617193],[118.428352,28.617193],[118.412338,28.55676],[118.4302,28.515225],[118.414802,28.497344],[118.474548,28.478934],[118.456686,28.424738],[118.432048,28.402104],[118.455454,28.384204],[118.480091,28.327325],[118.433896,28.288335]]],[[[122.163408,29.988137],[122.239785,29.962735],[122.279205,29.937326],[122.322321,29.940438],[122.341415,29.976733],[122.343879,30.020269],[122.310002,30.039958],[122.290908,30.074663],[122.301379,30.086574],[122.293988,30.100554],[122.152938,30.113497],[122.095655,30.158008],[122.048844,30.147141],[121.955221,30.183878],[121.934895,30.161631],[121.983554,30.100554],[121.989714,30.077252],[121.978011,30.059125],[122.027902,29.991247],[122.106742,30.005759],[122.118445,29.986582],[122.163408,29.988137]]],[[[122.213915,30.186464],[122.178807,30.199396],[122.152938,30.19112],[122.143698,30.163183],[122.168336,30.138343],[122.213915,30.186464]]],[[[122.229314,29.711995],[122.210836,29.700559],[122.269966,29.685482],[122.231162,29.710435],[122.229314,29.711995]]],[[[122.427646,30.738422],[122.427031,30.697777],[122.532972,30.696748],[122.528045,30.725047],[122.475074,30.714243],[122.445509,30.745109],[122.427646,30.738422]]],[[[122.162793,30.329654],[122.058083,30.291938],[122.154169,30.244903],[122.231778,30.234562],[122.247176,30.30124],[122.228082,30.329654],[122.191126,30.329654],[122.176343,30.351863],[122.162793,30.329654]]],[[[122.317393,30.249556],[122.277973,30.242835],[122.358661,30.236113],[122.365437,30.255242],[122.417175,30.238699],[122.40732,30.272817],[122.333408,30.272817],[122.317393,30.249556]]],[[[122.026054,29.178333],[122.013119,29.151681],[122.056851,29.158476],[122.075945,29.176243],[122.036525,29.20759],[122.026054,29.178333]]],[[[122.372212,29.893234],[122.386379,29.834069],[122.415944,29.828877],[122.401777,29.869884],[122.433806,29.883376],[122.43319,29.919173],[122.411632,29.951846],[122.398081,29.9394],[122.351886,29.959105],[122.330944,29.937845],[122.338951,29.911911],[122.353734,29.89946],[122.362973,29.894272],[122.372212,29.893234]]],[[[122.43011,30.408655],[122.432574,30.445294],[122.37406,30.461802],[122.277973,30.471603],[122.281669,30.418461],[122.318625,30.407106],[122.352502,30.422074],[122.43011,30.408655]]],[[[121.837577,28.770484],[121.86283,28.782024],[121.861598,28.814016],[121.837577,28.770484]]],[[[122.265038,29.84549],[122.221307,29.832512],[122.248408,29.804473],[122.310002,29.766557],[122.325401,29.781621],[122.299531,29.819532],[122.319241,29.829397],[122.265038,29.84549]]],[[[121.790765,29.082144],[121.832649,29.050236],[121.84312,29.082144],[121.82033,29.099402],[121.790765,29.082144]]],[[[121.201311,27.623328],[121.197616,27.618025],[121.198848,27.616964],[121.203775,27.625979],[121.201311,27.623328]]],[[[121.943518,30.776993],[121.968156,30.688514],[121.997105,30.658659],[122.087032,30.602014],[122.133227,30.595317],[122.075329,30.647848],[122.011271,30.66947],[121.992793,30.695204],[121.987866,30.753338],[121.970004,30.789333],[121.943518,30.776993]]],[[[121.889315,28.471569],[121.918881,28.497344],[121.881924,28.502603],[121.889315,28.471569]]],[[[122.182503,29.650642],[122.211452,29.692241],[122.200365,29.712515],[122.146778,29.749412],[122.13138,29.788893],[122.083952,29.78318],[122.047612,29.719791],[122.074097,29.701599],[122.095655,29.716673],[122.138155,29.662083],[122.182503,29.650642]]],[[[122.461523,29.944068],[122.459675,29.944586],[122.460291,29.947179],[122.451668,29.943031],[122.451052,29.940956],[122.450436,29.940956],[122.449204,29.9394],[122.4529,29.936807],[122.452284,29.935252],[122.45598,29.926435],[122.457827,29.927472],[122.462755,29.927991],[122.467067,29.928509],[122.459059,29.938882],[122.461523,29.944068]]],[[[122.570544,30.644244],[122.559457,30.679764],[122.546523,30.651967],[122.570544,30.644244]]],[[[121.869605,28.423685],[121.910873,28.44],[121.889931,28.45105],[121.869605,28.423685]]],[[[122.065474,30.179739],[122.055619,30.200431],[122.017431,30.186464],[122.025438,30.161631],[122.065474,30.179739]]],[[[122.391306,29.970512],[122.411632,30.025969],[122.378371,30.023896],[122.3679,29.980361],[122.391306,29.970512]]],[[[121.850511,29.977251],[121.874533,29.964809],[121.933047,29.994875],[121.924424,30.052391],[121.88562,30.094859],[121.848663,30.101072],[121.84004,30.047211],[121.844968,29.982953],[121.850511,29.977251]]],[[[121.066421,27.478475],[121.066421,27.461483],[121.107073,27.443958],[121.067036,27.478475],[121.066421,27.478475]]],[[[121.952141,29.187738],[121.979243,29.160043],[121.976779,29.191918],[121.952141,29.187738]]],[[[122.038373,29.759284],[122.011271,29.746294],[122.02975,29.716673],[122.038373,29.759284]]],[[[121.940438,30.114533],[121.910257,30.089163],[121.945982,30.064304],[121.962612,30.106249],[121.940438,30.114533]]],[[[121.957685,30.287804],[122.0008,30.308473],[121.989098,30.339985],[121.94167,30.33327],[121.921344,30.30744],[121.957685,30.287804]]],[[[122.192974,29.965327],[122.163408,29.988137],[122.152322,29.97103],[122.154169,29.97103],[122.155401,29.970512],[122.18435,29.955476],[122.192974,29.965327]]],[[[122.287828,29.723949],[122.301379,29.748373],[122.258263,29.753569],[122.241633,29.784738],[122.2133,29.771752],[122.251488,29.731225],[122.287828,29.723949]]],[[[121.134174,27.787051],[121.134174,27.785992],[121.13479,27.787051],[121.134174,27.787051]]],[[[122.760254,30.141966],[122.784275,30.130062],[122.781196,30.13265],[122.778116,30.13679],[122.770725,30.138861],[122.763333,30.141966],[122.762101,30.142484],[122.760254,30.141966]]],[[[122.264423,30.269716],[122.253952,30.237147],[122.315545,30.250073],[122.300147,30.271266],[122.264423,30.269716]]],[[[122.282901,29.860542],[122.30877,29.849642],[122.343263,29.860542],[122.343263,29.882857],[122.301379,29.883895],[122.282901,29.860542]]],[[[122.781196,30.694175],[122.799674,30.716301],[122.778732,30.729677],[122.757174,30.713728],[122.781196,30.694175]]],[[[121.098449,27.937311],[121.152652,27.961629],[121.120623,27.986471],[121.0695,27.984357],[121.038087,27.948942],[121.098449,27.937311]]],[[[121.185913,27.963215],[121.237652,27.988056],[121.197616,28.000739],[121.17113,27.978543],[121.185913,27.963215]]],[[[122.454132,29.956513],[122.447972,29.955994],[122.445509,29.952365],[122.446741,29.951327],[122.447972,29.947698],[122.459059,29.950809],[122.458443,29.951846],[122.455364,29.955994],[122.454132,29.956513]]],[[[122.836014,30.698806],[122.831087,30.728648],[122.807681,30.714243],[122.836014,30.698806]]],[[[122.200365,29.969475],[122.233626,29.946661],[122.273662,29.93214],[122.239785,29.960142],[122.200365,29.969475]]],[[[122.029134,29.954957],[122.043916,29.930584],[122.058699,29.955994],[122.029134,29.954957]]],[[[121.044247,27.979072],[121.089826,27.998625],[121.073812,28.007608],[121.044247,27.979072]]],[[[122.471378,29.927472],[122.470762,29.925916],[122.473226,29.925397],[122.47261,29.927472],[122.471378,29.927472]]],[[[122.152322,29.97103],[122.155401,29.970512],[122.154169,29.97103],[122.152322,29.97103]]]]}},{"type":"Feature","properties":{"adcode":340000,"name":"安徽省","center":[117.283042,31.86119],"centroid":[117.226884,31.849254],"childrenNum":16,"level":"province","parent":{"adcode":100000},"subFeatureIndex":11,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.599629,34.014324],[116.641512,33.978103],[116.64336,33.896675],[116.631042,33.887733],[116.566984,33.9081],[116.558361,33.881274],[116.486296,33.869846],[116.437637,33.846489],[116.437021,33.801246],[116.408071,33.805721],[116.393905,33.782843],[116.316912,33.771402],[116.263326,33.730101],[116.230065,33.735078],[116.155536,33.709693],[116.132747,33.751501],[116.100102,33.782843],[116.074232,33.781351],[116.055754,33.804727],[116.05945,33.860902],[115.982457,33.917039],[116.00032,33.965199],[115.95782,34.007875],[115.904233,34.009859],[115.876516,34.028708],[115.877132,34.002913],[115.85003,34.004898],[115.846335,34.028708],[115.809378,34.062428],[115.768726,34.061932],[115.736082,34.076805],[115.705901,34.059949],[115.658473,34.061437],[115.642459,34.03218],[115.60735,34.030196],[115.579017,33.974133],[115.577785,33.950307],[115.547604,33.874815],[115.631988,33.869846],[115.614126,33.775879],[115.576553,33.787817],[115.563003,33.772895],[115.601807,33.718653],[115.601191,33.658898],[115.639995,33.585143],[115.564851,33.576169],[115.511264,33.55323],[115.463837,33.567193],[115.422569,33.557219],[115.394851,33.506335],[115.366518,33.5233],[115.345576,33.502842],[115.345576,33.449928],[115.324634,33.457418],[115.315395,33.431451],[115.328946,33.403477],[115.313547,33.376994],[115.341881,33.370997],[115.365286,33.336005],[115.361591,33.298497],[115.335105,33.297997],[115.340033,33.260973],[115.300613,33.204407],[115.303692,33.149809],[115.289526,33.131769],[115.245178,33.135778],[115.194671,33.120743],[115.168186,33.088658],[115.041302,33.086653],[114.990795,33.102195],[114.966158,33.147304],[114.932897,33.153817],[114.902716,33.129764],[114.897172,33.086653],[114.913187,33.083143],[114.925506,33.016928],[114.891629,33.020441],[114.883006,32.990328],[114.916266,32.971251],[114.943368,32.935094],[115.009273,32.940117],[115.035143,32.932582],[115.029599,32.906962],[115.139237,32.897917],[115.155867,32.864747],[115.197135,32.856201],[115.189744,32.812452],[115.211301,32.785791],[115.189744,32.770695],[115.179273,32.726402],[115.182968,32.666973],[115.20083,32.591876],[115.24333,32.593388],[115.267352,32.578261],[115.30554,32.583303],[115.304924,32.553042],[115.411482,32.575235],[115.409018,32.549007],[115.497713,32.492489],[115.5088,32.468761],[115.510648,32.468761],[115.510648,32.468256],[115.510648,32.467751],[115.509416,32.466741],[115.522967,32.441997],[115.57101,32.419266],[115.604271,32.425833],[115.626445,32.40512],[115.657857,32.428864],[115.667712,32.409667],[115.704669,32.495013],[115.742241,32.476335],[115.771806,32.505108],[115.789052,32.468761],[115.861117,32.537403],[115.891298,32.576243],[115.910393,32.567165],[115.8759,32.542448],[115.845719,32.501575],[115.883291,32.487946],[115.865429,32.458662],[115.899306,32.390971],[115.912856,32.227596],[115.941805,32.166318],[115.922095,32.049725],[115.928871,32.003046],[115.909161,31.94314],[115.920248,31.920285],[115.894994,31.8649],[115.893762,31.832365],[115.914704,31.814567],[115.886371,31.776418],[115.851878,31.786593],[115.808147,31.770313],[115.808147,31.770313],[115.767495,31.78761],[115.731154,31.76726],[115.676336,31.778453],[115.553764,31.69549],[115.534054,31.698545],[115.495249,31.673083],[115.476771,31.643028],[115.485394,31.608885],[115.439815,31.588496],[115.415793,31.525771],[115.371446,31.495668],[115.389924,31.450241],[115.373909,31.405813],[115.393004,31.389977],[115.372062,31.349098],[115.40717,31.337854],[115.443511,31.344498],[115.473076,31.265242],[115.507568,31.267799],[115.539597,31.231985],[115.540213,31.194621],[115.585793,31.143926],[115.603655,31.17363],[115.655394,31.211002],[115.700973,31.201276],[115.778582,31.112164],[115.797676,31.128047],[115.837712,31.127022],[115.867277,31.147512],[115.887603,31.10909],[115.939958,31.071678],[115.938726,31.04707],[116.006479,31.034764],[116.015102,31.011685],[116.058834,31.012711],[116.071769,30.956787],[116.03974,30.957813],[115.976298,30.931636],[115.932566,30.889532],[115.865429,30.864364],[115.848799,30.828397],[115.863581,30.815549],[115.851262,30.756938],[115.782893,30.751795],[115.762567,30.685426],[115.81369,30.637035],[115.819234,30.597893],[115.848799,30.602014],[115.876516,30.582438],[115.887603,30.542758],[115.910393,30.519046],[115.894994,30.452517],[115.921479,30.416397],[115.885139,30.379747],[115.91532,30.337919],[115.903001,30.31364],[115.985537,30.290905],[115.997856,30.252657],[116.065609,30.204569],[116.055754,30.180774],[116.088399,30.110391],[116.078544,30.062233],[116.091479,30.036331],[116.073616,29.969993],[116.128435,29.897904],[116.13521,29.819532],[116.172783,29.828358],[116.227601,29.816936],[116.250391,29.785777],[116.280572,29.788893],[116.342782,29.835626],[116.467818,29.896347],[116.525716,29.897385],[116.552201,29.909836],[116.585462,30.045657],[116.620571,30.073109],[116.666766,30.076734],[116.720353,30.053945],[116.747454,30.057053],[116.783794,30.030632],[116.802889,29.99643],[116.830606,30.004723],[116.83307,29.95755],[116.868794,29.980361],[116.900207,29.949253],[116.882961,29.893753],[116.780715,29.792529],[116.762237,29.802396],[116.673541,29.709916],[116.698795,29.707836],[116.70557,29.69692],[116.706802,29.6964],[116.704954,29.688602],[116.680317,29.681323],[116.651983,29.637118],[116.716657,29.590813],[116.721585,29.564789],[116.760389,29.599139],[116.780715,29.569994],[116.849084,29.57624],[116.873722,29.609546],[116.939627,29.648561],[116.974736,29.657403],[116.996294,29.683403],[117.041873,29.680803],[117.112706,29.711995],[117.108395,29.75201],[117.136728,29.775388],[117.123177,29.798761],[117.073286,29.831992],[117.127489,29.86158],[117.129952,29.89946],[117.171836,29.920729],[117.2168,29.926953],[117.246365,29.915023],[117.261763,29.880781],[117.25314,29.834588],[117.29256,29.822647],[117.338756,29.848085],[117.359082,29.812782],[117.382487,29.840818],[117.415132,29.85068],[117.408973,29.802396],[117.455168,29.749412],[117.453936,29.688082],[117.490277,29.660003],[117.530313,29.654282],[117.523538,29.630356],[117.543248,29.588731],[117.608537,29.591333],[117.647957,29.614749],[117.678754,29.595496],[117.690457,29.555939],[117.729877,29.550213],[117.795167,29.570515],[117.872775,29.54761],[117.933753,29.549172],[118.00397,29.578322],[118.042774,29.566351],[118.050782,29.542924],[118.095129,29.534072],[118.143788,29.489803],[118.127774,29.47209],[118.136397,29.418932],[118.193064,29.395472],[118.248498,29.431443],[118.316252,29.422581],[118.306396,29.479384],[118.329802,29.495012],[118.347664,29.474174],[118.381541,29.504909],[118.496106,29.519492],[118.500417,29.57572],[118.532446,29.588731],[118.573714,29.638159],[118.61991,29.654282],[118.647011,29.64336],[118.700598,29.706277],[118.744945,29.73902],[118.740634,29.814859],[118.841032,29.891159],[118.838568,29.934733],[118.894619,29.937845],[118.902626,30.029078],[118.878604,30.064822],[118.873677,30.11505],[118.895234,30.148694],[118.852119,30.149729],[118.852735,30.166805],[118.929727,30.2025],[118.905089,30.216464],[118.877988,30.282637],[118.880452,30.31519],[118.954365,30.360126],[118.988857,30.332237],[119.06277,30.304856],[119.091719,30.323972],[119.126828,30.304856],[119.201356,30.290905],[119.236465,30.297106],[119.246936,30.341018],[119.277117,30.341018],[119.326392,30.372002],[119.349182,30.349281],[119.402768,30.374584],[119.36766,30.38491],[119.335015,30.448389],[119.336247,30.508734],[119.326392,30.532964],[119.272189,30.510281],[119.237081,30.546881],[119.265414,30.574709],[119.238929,30.609225],[119.323312,30.630341],[119.343022,30.664322],[119.39045,30.685941],[119.408312,30.645274],[119.444652,30.650422],[119.482841,30.704467],[119.479761,30.772365],[119.527188,30.77905],[119.55429,30.825828],[119.575847,30.829939],[119.557369,30.874124],[119.563529,30.919315],[119.582007,30.932149],[119.580159,30.967051],[119.633746,31.019379],[119.629434,31.085517],[119.649144,31.104991],[119.623891,31.130096],[119.599869,31.10909],[119.532732,31.159291],[119.461283,31.156219],[119.439109,31.177214],[119.391682,31.174142],[119.360269,31.213049],[119.374435,31.258591],[119.350414,31.301043],[119.338095,31.259103],[119.294363,31.263195],[119.266646,31.250405],[119.198277,31.270357],[119.197661,31.295418],[119.158241,31.294907],[119.107118,31.250917],[119.10527,31.235055],[119.014727,31.241707],[118.984546,31.237102],[118.870597,31.242219],[118.794836,31.229426],[118.756648,31.279564],[118.726467,31.282121],[118.720924,31.322518],[118.745561,31.372606],[118.767735,31.363919],[118.824401,31.375672],[118.852119,31.393553],[118.883532,31.500261],[118.857046,31.506384],[118.865669,31.519139],[118.885995,31.519139],[118.881684,31.564023],[118.858894,31.623665],[118.802844,31.619078],[118.773894,31.682759],[118.748025,31.675629],[118.736322,31.633347],[118.643315,31.649651],[118.643315,31.671555],[118.697518,31.709747],[118.653786,31.73011],[118.641467,31.75861],[118.571866,31.746397],[118.5577,31.73011],[118.521975,31.743343],[118.533678,31.76726],[118.481939,31.778453],[118.504729,31.841516],[118.466541,31.857784],[118.472084,31.879639],[118.363679,31.930443],[118.389548,31.985281],[118.394476,32.076098],[118.433896,32.086746],[118.501033,32.121726],[118.49549,32.165304],[118.510888,32.194176],[118.643931,32.209875],[118.674728,32.250375],[118.657482,32.30148],[118.703061,32.328792],[118.685199,32.403604],[118.691359,32.472295],[118.628533,32.467751],[118.592192,32.481383],[118.608823,32.536899],[118.564475,32.562122],[118.568787,32.585825],[118.59712,32.600951],[118.632844,32.578261],[118.658714,32.594397],[118.688895,32.588346],[118.719076,32.614059],[118.719076,32.614059],[118.73509,32.58885],[118.757264,32.603976],[118.784981,32.582295],[118.820706,32.60448],[118.84288,32.56767],[118.908169,32.59238],[118.890923,32.553042],[118.92172,32.557078],[118.922336,32.557078],[118.92172,32.557078],[118.922336,32.557078],[118.975923,32.505108],[119.041212,32.515201],[119.084944,32.452602],[119.142226,32.499556],[119.168096,32.536394],[119.152697,32.557582],[119.22045,32.576748],[119.230921,32.607001],[119.208748,32.641276],[119.211827,32.708275],[119.184726,32.825529],[119.113277,32.823014],[119.054763,32.8748],[119.020886,32.955685],[118.993169,32.958196],[118.934039,32.93861],[118.892771,32.941121],[118.89585,32.957694],[118.89585,32.957694],[118.849039,32.956689],[118.846575,32.922034],[118.821322,32.920527],[118.810235,32.853687],[118.743097,32.853184],[118.743097,32.853184],[118.73817,32.772708],[118.756648,32.737477],[118.707373,32.72036],[118.642699,32.744525],[118.572482,32.719856],[118.560163,32.729926],[118.483787,32.721367],[118.450526,32.743518],[118.411106,32.715828],[118.375382,32.718849],[118.363063,32.770695],[118.334114,32.761637],[118.300237,32.783275],[118.301469,32.846145],[118.250346,32.848157],[118.2331,32.914498],[118.252194,32.936601],[118.291614,32.946143],[118.303933,32.96874],[118.26944,32.969242],[118.244803,32.998359],[118.243571,33.027967],[118.219549,33.114227],[118.217085,33.191888],[118.178281,33.217926],[118.149332,33.169348],[118.038463,33.134776],[118.037231,33.152314],[117.988572,33.180869],[117.977485,33.226437],[117.942376,33.224936],[117.939297,33.262475],[117.974405,33.279487],[117.992883,33.333005],[118.029224,33.374995],[118.016905,33.402978],[118.027376,33.455421],[118.050782,33.491863],[118.107448,33.475391],[118.117919,33.594615],[118.112376,33.617045],[118.16781,33.663381],[118.161035,33.735576],[118.117919,33.766427],[118.065564,33.76593],[118.019985,33.738562],[117.972557,33.74951],[117.901724,33.720146],[117.843826,33.736074],[117.791471,33.733585],[117.750203,33.710688],[117.72495,33.74951],[117.739732,33.758467],[117.759442,33.874318],[117.753899,33.891211],[117.715095,33.879287],[117.672595,33.934916],[117.671363,33.992494],[117.629479,34.028708],[117.612849,34.000433],[117.569117,33.985051],[117.543248,34.038627],[117.514914,34.060941],[117.435458,34.028212],[117.404045,34.03218],[117.357234,34.088205],[117.311654,34.067882],[117.277162,34.078787],[117.257452,34.065899],[117.192162,34.068873],[117.130568,34.101586],[117.123793,34.128342],[117.046801,34.151622],[117.025243,34.167469],[117.051112,34.221425],[116.969192,34.283753],[116.983359,34.348011],[116.960569,34.363821],[116.969192,34.389012],[116.909446,34.408271],[116.828142,34.389012],[116.782563,34.429993],[116.773939,34.453683],[116.722816,34.472434],[116.662454,34.472927],[116.592237,34.493646],[116.594085,34.511894],[116.490607,34.573513],[116.477057,34.614896],[116.432709,34.630163],[116.430245,34.650843],[116.374195,34.640011],[116.334159,34.620806],[116.32492,34.601104],[116.286116,34.608986],[116.247927,34.551829],[116.196804,34.575977],[116.191261,34.535561],[116.204196,34.508442],[116.178326,34.496112],[116.162312,34.459605],[116.178942,34.430487],[116.215898,34.403333],[116.213435,34.382098],[116.255934,34.376665],[116.301514,34.342082],[116.357564,34.319843],[116.372347,34.26595],[116.409303,34.273863],[116.409303,34.273863],[116.456731,34.268917],[116.516477,34.296114],[116.562056,34.285731],[116.582382,34.266444],[116.545426,34.241711],[116.542962,34.203608],[116.565752,34.16945],[116.536187,34.151127],[116.52818,34.122892],[116.576223,34.068873],[116.576223,34.068873],[116.599629,34.014324],[116.599629,34.014324]]],[[[118.865669,31.519139],[118.857046,31.506384],[118.883532,31.500261],[118.885995,31.519139],[118.865669,31.519139]]],[[[116.698795,29.707836],[116.673541,29.709916],[116.653831,29.694841],[116.680317,29.681323],[116.704954,29.688602],[116.706802,29.6964],[116.70557,29.69692],[116.698795,29.707836]]],[[[115.5088,32.468761],[115.509416,32.466741],[115.510648,32.467751],[115.510648,32.468256],[115.510648,32.468761],[115.5088,32.468761]]]]}},{"type":"Feature","properties":{"adcode":350000,"name":"福建省","center":[119.306239,26.075302],"centroid":[118.006468,26.069925],"childrenNum":9,"level":"province","parent":{"adcode":100000},"subFeatureIndex":12,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[119.004872,24.970009],[118.989473,24.973807],[119.023966,25.04377],[119.016575,25.058409],[118.974691,25.024792],[118.945126,25.028588],[118.892155,25.092558],[118.974691,25.115319],[118.951901,25.15162],[118.985162,25.168954],[118.985162,25.19495],[118.942046,25.211195],[118.940198,25.21715],[118.943278,25.221482],[118.903242,25.239347],[118.900162,25.242595],[118.919256,25.248008],[118.91556,25.256668],[118.918024,25.25721],[118.956212,25.272905],[118.996864,25.266411],[118.975307,25.237723],[118.990089,25.20199],[119.055379,25.219316],[119.074473,25.211195],[119.054147,25.168412],[119.032589,25.17437],[119.028893,25.139702],[119.06585,25.102855],[119.075705,25.099604],[119.134219,25.106107],[119.107118,25.075214],[119.119436,25.012861],[119.146538,25.056782],[119.165632,25.145661],[119.137299,25.15487],[119.108349,25.193867],[119.131755,25.223106],[119.190269,25.175995],[119.231537,25.188993],[119.26911,25.159746],[119.314689,25.190076],[119.294979,25.237182],[119.331935,25.230685],[119.380595,25.250173],[119.333167,25.287516],[119.299291,25.328634],[119.247552,25.333502],[119.240776,25.316733],[119.218603,25.368115],[119.14469,25.388121],[119.151465,25.426503],[119.191501,25.424341],[119.232153,25.442176],[119.219834,25.468654],[119.256175,25.488643],[119.275269,25.476758],[119.26295,25.428124],[119.288204,25.410827],[119.353493,25.411908],[119.343638,25.472436],[119.359037,25.521592],[119.400921,25.493505],[119.45266,25.493505],[119.438493,25.412449],[119.463131,25.448661],[119.491464,25.443257],[119.48592,25.418935],[119.507478,25.396231],[119.486536,25.369737],[119.548746,25.365952],[119.578927,25.400556],[119.555521,25.429205],[119.577695,25.445959],[119.59063,25.398394],[119.582623,25.374063],[119.597405,25.334584],[119.649144,25.342697],[119.665159,25.3719],[119.656535,25.396772],[119.670086,25.435691],[119.622659,25.434069],[119.675014,25.468113],[119.682405,25.445959],[119.688564,25.441095],[119.773564,25.395691],[119.764325,25.433529],[119.804977,25.457847],[119.866571,25.455145],[119.864107,25.469734],[119.862875,25.474597],[119.811136,25.507009],[119.81668,25.532393],[119.861027,25.531313],[119.883817,25.546432],[119.831462,25.579905],[119.843165,25.597717],[119.790194,25.614447],[119.785883,25.66786],[119.700267,25.616606],[119.683637,25.592859],[119.716898,25.551292],[119.715666,25.51187],[119.680557,25.497827],[119.675014,25.475137],[119.634362,25.475137],[119.611572,25.519972],[119.616499,25.556691],[119.586934,25.59232],[119.534579,25.585303],[119.541355,25.6247],[119.478529,25.631715],[119.472986,25.662466],[119.543819,25.684581],[119.602949,25.68512],[119.602949,25.714779],[119.626354,25.723406],[119.628202,25.87212],[119.638057,25.889888],[119.69534,25.904424],[119.723673,26.011503],[119.700267,26.032477],[119.668854,26.026024],[119.654688,26.090002],[119.618963,26.11956],[119.604181,26.168985],[119.664543,26.202282],[119.676246,26.262943],[119.7711,26.285481],[119.802513,26.268846],[119.806825,26.307479],[119.845013,26.323036],[119.862875,26.307479],[119.904143,26.308552],[119.95465,26.352534],[119.946027,26.374519],[119.893672,26.355752],[119.835774,26.434019],[119.83639,26.454381],[119.788346,26.583435],[119.740303,26.610727],[119.670086,26.618218],[119.605412,26.595744],[119.577695,26.622498],[119.619579,26.649246],[119.637441,26.703256],[119.664543,26.726243],[119.711354,26.686681],[119.833926,26.690959],[119.864107,26.671174],[119.873962,26.642827],[119.908455,26.661547],[119.899216,26.693098],[119.938636,26.747088],[119.942947,26.784492],[120.052584,26.786629],[120.061824,26.768997],[119.99407,26.720363],[119.969433,26.686681],[119.972512,26.654594],[119.949107,26.624638],[119.901679,26.624638],[119.851788,26.595209],[119.828383,26.524013],[119.867187,26.509019],[119.947875,26.56042],[119.93802,26.576478],[119.967585,26.597885],[120.007621,26.595744],[120.063671,26.627848],[120.093852,26.613938],[120.1382,26.638012],[120.110483,26.692563],[120.162222,26.717691],[120.151135,26.750829],[120.106787,26.752966],[120.136352,26.797847],[120.103707,26.794642],[120.102476,26.82669],[120.073526,26.823485],[120.054432,26.863533],[120.117874,26.882751],[120.126497,26.920644],[120.130193,26.917976],[120.1807,26.920644],[120.233055,26.907837],[120.25954,26.982526],[120.279866,26.987326],[120.275554,27.027315],[120.29588,27.035845],[120.282946,27.089671],[120.391967,27.081146],[120.403054,27.10086],[120.461568,27.142407],[120.404286,27.204166],[120.401822,27.250996],[120.430155,27.258976],[120.343924,27.363199],[120.340844,27.399867],[120.273091,27.38924],[120.26262,27.432804],[120.221352,27.420055],[120.134504,27.420055],[120.136968,27.402523],[120.096316,27.390302],[120.052584,27.338747],[120.026099,27.344063],[120.008237,27.375423],[119.960194,27.365857],[119.938636,27.329709],[119.843165,27.300464],[119.768636,27.307909],[119.782187,27.330241],[119.739687,27.362668],[119.750774,27.373829],[119.711354,27.403054],[119.685485,27.438646],[119.703347,27.446613],[119.70889,27.514042],[119.690412,27.537394],[119.659615,27.540578],[119.675014,27.574534],[119.630666,27.582491],[119.626354,27.620676],[119.644217,27.663619],[119.606028,27.674749],[119.541971,27.666799],[119.501319,27.649837],[119.501935,27.610601],[119.466826,27.526249],[119.438493,27.508734],[119.416935,27.539517],[119.360269,27.524657],[119.334399,27.480067],[119.285124,27.457766],[119.26911,27.42218],[119.224146,27.416868],[119.14777,27.424836],[119.121284,27.438115],[119.129907,27.475289],[119.092335,27.466262],[119.03998,27.478475],[119.020886,27.498118],[118.983314,27.498649],[118.986393,27.47582],[118.955597,27.4498],[118.907553,27.460952],[118.869365,27.540047],[118.909401,27.568168],[118.913713,27.619616],[118.879836,27.667859],[118.873677,27.733563],[118.829329,27.847921],[118.818242,27.916689],[118.753568,27.947885],[118.730163,27.970615],[118.733858,28.027684],[118.719076,28.063601],[118.767735,28.10584],[118.802228,28.117453],[118.805923,28.154923],[118.771431,28.188687],[118.804075,28.207675],[118.802228,28.240368],[118.756032,28.252493],[118.719692,28.312047],[118.699366,28.309939],[118.674728,28.27147],[118.651322,28.277267],[118.595272,28.258292],[118.588497,28.282538],[118.493026,28.262509],[118.490562,28.238259],[118.444367,28.253548],[118.433896,28.288335],[118.424041,28.291497],[118.314404,28.221913],[118.339041,28.193962],[118.375382,28.186577],[118.361215,28.155978],[118.356288,28.091586],[118.242339,28.075746],[118.199839,28.049869],[118.153644,28.062016],[118.120999,28.041946],[118.129006,28.017118],[118.094513,28.003909],[118.096977,27.970615],[117.999043,27.991227],[117.965166,27.962687],[117.942992,27.974315],[117.910963,27.949471],[117.856145,27.94577],[117.78716,27.896063],[117.788392,27.855858],[117.740348,27.800286],[117.704624,27.834162],[117.68245,27.823577],[117.649805,27.851625],[117.609769,27.863265],[117.556182,27.966387],[117.52169,27.982243],[117.477958,27.930966],[117.453936,27.939955],[117.407741,27.893948],[117.366473,27.88231],[117.341836,27.855858],[117.334444,27.8876],[117.280242,27.871201],[117.276546,27.847921],[117.303031,27.833103],[117.296256,27.764282],[117.245133,27.71926],[117.205097,27.714492],[117.204481,27.683759],[117.174916,27.677399],[117.114554,27.692238],[117.096076,27.667329],[117.11209,27.645596],[117.094228,27.627569],[117.065279,27.665739],[117.040641,27.669979],[117.003685,27.625449],[117.024627,27.592569],[117.01662,27.563393],[117.054808,27.5427],[117.076982,27.566046],[117.103467,27.533149],[117.110242,27.458828],[117.133032,27.42218],[117.107163,27.393491],[117.104699,27.330773],[117.140423,27.322798],[117.136728,27.303123],[117.171836,27.29036],[117.149662,27.241419],[117.044953,27.146667],[117.05296,27.100327],[116.967344,27.061962],[116.936547,27.019319],[116.910062,27.034779],[116.851548,27.009188],[116.817671,27.018252],[116.679085,26.978259],[116.632889,26.933984],[116.602092,26.888623],[116.548506,26.84004],[116.543578,26.803723],[116.557745,26.773806],[116.515245,26.720898],[116.520172,26.684543],[116.566368,26.650315],[116.553433,26.575942],[116.539267,26.559349],[116.597165,26.512768],[116.610716,26.476882],[116.638433,26.477418],[116.608252,26.429732],[116.601476,26.372911],[116.553433,26.365404],[116.553433,26.400253],[116.519557,26.410437],[116.499846,26.361651],[116.459194,26.345026],[116.437021,26.308016],[116.412999,26.297822],[116.385282,26.238253],[116.400064,26.202819],[116.392057,26.171133],[116.435789,26.159854],[116.476441,26.172745],[116.489375,26.113649],[116.384666,26.030864],[116.360028,25.991601],[116.369883,25.963088],[116.326152,25.956631],[116.303362,25.924341],[116.258398,25.902809],[116.225138,25.908731],[116.17771,25.894195],[116.132131,25.860273],[116.131515,25.824185],[116.18079,25.778926],[116.129667,25.758985],[116.106877,25.701299],[116.067457,25.703995],[116.068689,25.646282],[116.041588,25.62416],[116.063145,25.56317],[116.040356,25.548052],[116.03666,25.514571],[116.005247,25.490264],[116.023109,25.435691],[115.992928,25.374063],[116.008327,25.319437],[115.987385,25.290221],[115.949813,25.292386],[115.930719,25.236099],[115.855574,25.20957],[115.860501,25.165704],[115.888219,25.128866],[115.880212,25.092016],[115.908545,25.084428],[115.928255,25.050276],[115.873436,25.019911],[115.925175,24.960786],[115.870356,24.959701],[115.89253,24.936911],[115.907929,24.923343],[115.985537,24.899461],[116.015102,24.905975],[116.068073,24.850053],[116.153073,24.846795],[116.191877,24.877203],[116.221442,24.829959],[116.251007,24.82507],[116.244232,24.793563],[116.297202,24.801712],[116.345862,24.828872],[116.363724,24.87123],[116.395137,24.877746],[116.417927,24.840821],[116.381586,24.82507],[116.375427,24.803885],[116.419158,24.767482],[116.416079,24.744113],[116.44626,24.714216],[116.485064,24.720196],[116.517709,24.652225],[116.506622,24.621218],[116.530027,24.604895],[116.570679,24.621762],[116.600861,24.654401],[116.623034,24.64189],[116.667382,24.658752],[116.777635,24.679418],[116.815207,24.654944],[116.761005,24.583128],[116.759157,24.545572],[116.796729,24.502014],[116.83307,24.496568],[116.860787,24.460075],[116.839229,24.442097],[116.903903,24.369614],[116.895895,24.350533],[116.919301,24.321087],[116.914374,24.287817],[116.938395,24.28127],[116.933468,24.220157],[116.956257,24.216883],[116.998757,24.179217],[116.9347,24.126794],[116.930388,24.064514],[116.953178,24.008218],[116.981511,23.999471],[116.976583,23.931659],[116.955642,23.922359],[116.981511,23.855602],[117.012308,23.855054],[117.019083,23.801952],[117.048032,23.758687],[117.055424,23.694038],[117.123793,23.647448],[117.147199,23.654027],[117.192778,23.629356],[117.192778,23.5619],[117.291328,23.571225],[117.302415,23.550379],[117.387415,23.555317],[117.463791,23.584937],[117.454552,23.628259],[117.493357,23.642514],[117.501364,23.70445],[117.54448,23.715956],[117.601762,23.70171],[117.660276,23.789357],[117.651653,23.815093],[117.671979,23.878041],[117.691073,23.888985],[117.762522,23.886796],[117.792703,23.906494],[117.807486,23.947521],[117.864768,24.004938],[117.910347,24.012045],[117.927594,24.039922],[117.936217,24.100029],[118.000275,24.152462],[118.019369,24.197232],[118.074803,24.225615],[118.115455,24.229435],[118.158571,24.269814],[118.112376,24.357075],[118.081579,24.35653],[118.088354,24.408858],[118.048934,24.418122],[118.084042,24.528695],[118.121615,24.570067],[118.150564,24.583673],[118.169042,24.559725],[118.242955,24.51236],[118.375382,24.536317],[118.363679,24.567889],[118.444367,24.614689],[118.512736,24.60816],[118.557084,24.572788],[118.558316,24.51236],[118.614366,24.521617],[118.680272,24.58204],[118.687047,24.63373],[118.661178,24.622306],[118.652554,24.653857],[118.670417,24.679962],[118.703677,24.665278],[118.778822,24.743569],[118.786213,24.77672],[118.650707,24.808774],[118.647627,24.843536],[118.702445,24.865258],[118.69875,24.848967],[118.748641,24.84245],[118.807771,24.870687],[118.834256,24.854397],[118.864437,24.887518],[118.933423,24.870687],[118.988857,24.878831],[118.987009,24.898375],[118.932807,24.906518],[118.91864,24.932569],[118.945741,24.954275],[119.014111,24.941252],[119.032589,24.961328],[119.032589,24.961871],[119.007335,24.963499],[119.004872,24.970009]]],[[[118.412338,24.514538],[118.374766,24.458986],[118.318715,24.486765],[118.298389,24.477506],[118.31194,24.424661],[118.282375,24.413218],[118.329802,24.382152],[118.353208,24.415398],[118.405563,24.427931],[118.457918,24.412128],[118.477012,24.437738],[118.451758,24.506915],[118.412338,24.514538]]],[[[119.471138,25.197116],[119.507478,25.183036],[119.52534,25.157579],[119.549362,25.161912],[119.566608,25.210112],[119.540739,25.20199],[119.501319,25.21715],[119.473601,25.259916],[119.44342,25.238806],[119.444036,25.20199],[119.471138,25.197116]]],[[[119.580159,25.627398],[119.611572,25.669479],[119.580775,25.650059],[119.580159,25.627398]]],[[[119.976824,26.191005],[120.016244,26.217316],[119.998998,26.235569],[119.970665,26.217852],[119.976824,26.191005]]],[[[118.230636,24.401228],[118.273752,24.441007],[118.233716,24.445911],[118.230636,24.401228]]],[[[119.906607,26.68989],[119.926933,26.664756],[119.950954,26.692563],[119.906607,26.68989]]],[[[118.204151,24.504737],[118.191832,24.536861],[118.14502,24.560814],[118.093281,24.540672],[118.068644,24.463344],[118.084042,24.435559],[118.143173,24.420847],[118.19368,24.463344],[118.204151,24.504737]]],[[[119.929397,26.134067],[119.960194,26.146961],[119.919542,26.172208],[119.929397,26.134067]]],[[[119.642985,26.129231],[119.665159,26.155556],[119.62697,26.173282],[119.606028,26.15287],[119.642985,26.129231]]],[[[120.034106,26.488667],[120.066751,26.498308],[120.071679,26.521336],[120.035954,26.515981],[120.034106,26.488667]]],[[[119.662079,25.646822],[119.673782,25.632794],[119.718745,25.634952],[119.716898,25.664624],[119.662079,25.646822]]],[[[119.760629,26.613402],[119.776644,26.600025],[119.818527,26.616613],[119.796354,26.630523],[119.760629,26.613402]]],[[[120.135736,26.550784],[120.167149,26.571661],[120.153598,26.604841],[120.117874,26.568984],[120.135736,26.550784]]],[[[120.360554,26.916909],[120.394431,26.933984],[120.363018,26.967592],[120.327909,26.963858],[120.319286,26.944654],[120.360554,26.916909]]],[[[120.150519,26.798916],[120.140048,26.795176],[120.163454,26.798381],[120.161606,26.803189],[120.150519,26.798916]]],[[[119.668238,26.628383],[119.720593,26.635873],[119.758781,26.659408],[119.748926,26.681334],[119.712586,26.6685],[119.673782,26.680799],[119.651608,26.657269],[119.668238,26.628383]]]]}},{"type":"Feature","properties":{"adcode":360000,"name":"江西省","center":[115.892151,28.676493],"centroid":[115.732975,27.636112],"childrenNum":11,"level":"province","parent":{"adcode":100000},"subFeatureIndex":13,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[118.193064,29.395472],[118.136397,29.418932],[118.127774,29.47209],[118.143788,29.489803],[118.095129,29.534072],[118.050782,29.542924],[118.042774,29.566351],[118.00397,29.578322],[117.933753,29.549172],[117.872775,29.54761],[117.795167,29.570515],[117.729877,29.550213],[117.690457,29.555939],[117.678754,29.595496],[117.647957,29.614749],[117.608537,29.591333],[117.543248,29.588731],[117.523538,29.630356],[117.530313,29.654282],[117.490277,29.660003],[117.453936,29.688082],[117.455168,29.749412],[117.408973,29.802396],[117.415132,29.85068],[117.382487,29.840818],[117.359082,29.812782],[117.338756,29.848085],[117.29256,29.822647],[117.25314,29.834588],[117.261763,29.880781],[117.246365,29.915023],[117.2168,29.926953],[117.171836,29.920729],[117.129952,29.89946],[117.127489,29.86158],[117.073286,29.831992],[117.123177,29.798761],[117.136728,29.775388],[117.108395,29.75201],[117.112706,29.711995],[117.041873,29.680803],[116.996294,29.683403],[116.974736,29.657403],[116.939627,29.648561],[116.873722,29.609546],[116.849084,29.57624],[116.780715,29.569994],[116.760389,29.599139],[116.721585,29.564789],[116.716657,29.590813],[116.651983,29.637118],[116.680317,29.681323],[116.653831,29.694841],[116.673541,29.709916],[116.762237,29.802396],[116.780715,29.792529],[116.882961,29.893753],[116.900207,29.949253],[116.868794,29.980361],[116.83307,29.95755],[116.830606,30.004723],[116.802889,29.99643],[116.783794,30.030632],[116.747454,30.057053],[116.720353,30.053945],[116.666766,30.076734],[116.620571,30.073109],[116.585462,30.045657],[116.552201,29.909836],[116.525716,29.897385],[116.467818,29.896347],[116.342782,29.835626],[116.280572,29.788893],[116.250391,29.785777],[116.227601,29.816936],[116.172783,29.828358],[116.13521,29.819532],[116.087167,29.795125],[116.049595,29.761881],[115.965827,29.724469],[115.909777,29.723949],[115.837096,29.748373],[115.762567,29.793048],[115.706517,29.837703],[115.667712,29.850161],[115.611662,29.841337],[115.51188,29.840299],[115.479235,29.811224],[115.470612,29.739539],[115.412714,29.688602],[115.355431,29.649602],[115.304924,29.637118],[115.28583,29.618391],[115.250722,29.660003],[115.176809,29.654803],[115.113367,29.684963],[115.117679,29.655843],[115.143548,29.645961],[115.120142,29.597578],[115.157099,29.584568],[115.154019,29.510117],[115.086266,29.525741],[115.087498,29.560104],[115.033295,29.546568],[115.00065,29.572076],[114.947679,29.542924],[114.966773,29.522096],[114.940288,29.493971],[114.900868,29.505951],[114.860216,29.476258],[114.888549,29.436134],[114.918114,29.454374],[114.90518,29.473132],[114.935977,29.486678],[114.947063,29.465317],[114.931049,29.422581],[114.895325,29.397557],[114.866375,29.404335],[114.812173,29.383478],[114.784455,29.386086],[114.759818,29.363139],[114.740724,29.386607],[114.67297,29.395993],[114.621847,29.379828],[114.589819,29.352707],[114.519602,29.325578],[114.466015,29.324013],[114.440145,29.341752],[114.376088,29.322969],[114.341595,29.327665],[114.307102,29.365225],[114.259059,29.343839],[114.252284,29.23475],[114.169748,29.216993],[114.063191,29.204978],[114.034857,29.152204],[113.98743,29.126068],[113.952321,29.092604],[113.94185,29.047097],[113.961561,28.999476],[113.955401,28.978536],[113.973879,28.937692],[114.008988,28.955498],[114.005292,28.917788],[114.028082,28.891069],[114.060111,28.902596],[114.056415,28.872204],[114.076741,28.834464],[114.124784,28.843376],[114.153734,28.829221],[114.137719,28.779926],[114.157429,28.761566],[114.122321,28.623497],[114.132176,28.607211],[114.08598,28.558337],[114.138335,28.533629],[114.15435,28.507337],[114.218407,28.48472],[114.217175,28.466308],[114.172212,28.432632],[114.214712,28.403157],[114.252284,28.395787],[114.2529,28.319423],[114.198081,28.29097],[114.182067,28.249858],[114.143879,28.246694],[114.109386,28.205038],[114.107538,28.182885],[114.068734,28.171806],[114.012068,28.174972],[113.992357,28.161255],[114.025002,28.080499],[114.047176,28.057263],[114.025618,28.031382],[113.970184,28.041418],[113.966488,28.017646],[113.936307,28.018703],[113.914133,27.991227],[113.864242,28.004966],[113.845148,27.971672],[113.822974,27.982243],[113.752141,27.93361],[113.72812,27.874904],[113.756453,27.860091],[113.763228,27.799228],[113.69917,27.740979],[113.696707,27.71979],[113.652359,27.663619],[113.607395,27.625449],[113.608627,27.585143],[113.579062,27.545354],[113.583374,27.524657],[113.627105,27.49971],[113.591381,27.467855],[113.59754,27.428554],[113.632033,27.40518],[113.605548,27.38924],[113.616635,27.345658],[113.657902,27.347253],[113.699786,27.331836],[113.72812,27.350442],[113.872865,27.384988],[113.872865,27.346721],[113.854387,27.30525],[113.872865,27.289828],[113.846996,27.222262],[113.779242,27.137081],[113.771851,27.096598],[113.803264,27.099261],[113.824206,27.036378],[113.86301,27.018252],[113.892575,26.964925],[113.927068,26.948922],[113.890112,26.895562],[113.877177,26.859262],[113.835909,26.806394],[113.853771,26.769532],[113.860546,26.664221],[113.912901,26.613938],[113.996669,26.615543],[114.019459,26.587182],[114.10877,26.56952],[114.07243,26.480096],[114.110002,26.482775],[114.090292,26.455988],[114.085364,26.406149],[114.062575,26.406149],[114.030546,26.376664],[114.047792,26.337518],[114.021307,26.288701],[114.029314,26.266163],[113.978807,26.237716],[113.972647,26.20604],[113.949242,26.192616],[113.962792,26.150722],[114.013299,26.184023],[114.088444,26.168448],[114.102611,26.187783],[114.181451,26.214631],[114.216559,26.203355],[114.237501,26.152333],[114.188842,26.121172],[114.10569,26.097526],[114.121089,26.085702],[114.087828,26.06635],[114.044096,26.076564],[114.008372,26.015806],[114.028082,25.98138],[114.028082,25.893119],[113.971416,25.836036],[113.961561,25.77731],[113.920293,25.741197],[113.913517,25.701299],[113.957249,25.611749],[113.983118,25.599336],[113.986198,25.529153],[113.962792,25.528072],[113.94493,25.441635],[114.003444,25.442716],[113.983118,25.415152],[114.050256,25.36433],[114.029314,25.328093],[114.017611,25.273987],[114.039785,25.250714],[114.055799,25.277775],[114.083517,25.275611],[114.115545,25.302125],[114.190074,25.316733],[114.204857,25.29942],[114.260291,25.291845],[114.2954,25.299961],[114.31511,25.33837],[114.382863,25.317274],[114.43029,25.343779],[114.438914,25.376226],[114.477718,25.37136],[114.541159,25.416773],[114.599674,25.385959],[114.63663,25.324306],[114.714238,25.315651],[114.743188,25.274528],[114.73518,25.225813],[114.693912,25.213902],[114.685905,25.173287],[114.73518,25.155954],[114.735796,25.121822],[114.664963,25.10123],[114.640326,25.074129],[114.604601,25.083886],[114.561485,25.077382],[114.532536,25.022623],[114.506051,24.999844],[114.45616,24.99659],[114.454928,24.977062],[114.395798,24.951019],[114.403189,24.877746],[114.378551,24.861457],[114.342211,24.807145],[114.336052,24.749004],[114.281849,24.724001],[114.27261,24.700624],[114.169132,24.689749],[114.19069,24.656576],[114.258443,24.641346],[114.289856,24.619042],[114.300943,24.578775],[114.363769,24.582584],[114.391486,24.563535],[114.403189,24.497657],[114.429058,24.48622],[114.534384,24.559181],[114.589819,24.537406],[114.627391,24.576598],[114.664963,24.583673],[114.704999,24.525973],[114.73826,24.565168],[114.729637,24.608704],[114.781376,24.613057],[114.827571,24.588026],[114.846665,24.602719],[114.868839,24.562446],[114.893477,24.582584],[114.909491,24.661471],[114.940288,24.650049],[115.00373,24.679418],[115.024672,24.669085],[115.057317,24.703343],[115.083802,24.699537],[115.104744,24.667997],[115.1842,24.711498],[115.258729,24.728894],[115.269816,24.749548],[115.306772,24.758787],[115.358511,24.735416],[115.372678,24.774546],[115.412714,24.79302],[115.476771,24.762591],[115.522967,24.702799],[115.555611,24.683768],[115.569778,24.622306],[115.605503,24.62557],[115.671408,24.604895],[115.68927,24.545027],[115.752712,24.546116],[115.785357,24.567345],[115.843871,24.562446],[115.840791,24.584217],[115.797676,24.628834],[115.780429,24.663103],[115.801371,24.705517],[115.769342,24.708236],[115.756408,24.749004],[115.776734,24.774546],[115.764415,24.791933],[115.790284,24.856027],[115.807531,24.862543],[115.824161,24.909232],[115.863581,24.891318],[115.861733,24.863629],[115.907313,24.879917],[115.885139,24.898918],[115.89253,24.936911],[115.870356,24.959701],[115.925175,24.960786],[115.873436,25.019911],[115.928255,25.050276],[115.908545,25.084428],[115.880212,25.092016],[115.888219,25.128866],[115.860501,25.165704],[115.855574,25.20957],[115.930719,25.236099],[115.949813,25.292386],[115.987385,25.290221],[116.008327,25.319437],[115.992928,25.374063],[116.023109,25.435691],[116.005247,25.490264],[116.03666,25.514571],[116.040356,25.548052],[116.063145,25.56317],[116.041588,25.62416],[116.068689,25.646282],[116.067457,25.703995],[116.106877,25.701299],[116.129667,25.758985],[116.18079,25.778926],[116.131515,25.824185],[116.132131,25.860273],[116.17771,25.894195],[116.225138,25.908731],[116.258398,25.902809],[116.303362,25.924341],[116.326152,25.956631],[116.369883,25.963088],[116.360028,25.991601],[116.384666,26.030864],[116.489375,26.113649],[116.476441,26.172745],[116.435789,26.159854],[116.392057,26.171133],[116.400064,26.202819],[116.385282,26.238253],[116.412999,26.297822],[116.437021,26.308016],[116.459194,26.345026],[116.499846,26.361651],[116.519557,26.410437],[116.553433,26.400253],[116.553433,26.365404],[116.601476,26.372911],[116.608252,26.429732],[116.638433,26.477418],[116.610716,26.476882],[116.597165,26.512768],[116.539267,26.559349],[116.553433,26.575942],[116.566368,26.650315],[116.520172,26.684543],[116.515245,26.720898],[116.557745,26.773806],[116.543578,26.803723],[116.548506,26.84004],[116.602092,26.888623],[116.632889,26.933984],[116.679085,26.978259],[116.817671,27.018252],[116.851548,27.009188],[116.910062,27.034779],[116.936547,27.019319],[116.967344,27.061962],[117.05296,27.100327],[117.044953,27.146667],[117.149662,27.241419],[117.171836,27.29036],[117.136728,27.303123],[117.140423,27.322798],[117.104699,27.330773],[117.107163,27.393491],[117.133032,27.42218],[117.110242,27.458828],[117.103467,27.533149],[117.076982,27.566046],[117.054808,27.5427],[117.01662,27.563393],[117.024627,27.592569],[117.003685,27.625449],[117.040641,27.669979],[117.065279,27.665739],[117.094228,27.627569],[117.11209,27.645596],[117.096076,27.667329],[117.114554,27.692238],[117.174916,27.677399],[117.204481,27.683759],[117.205097,27.714492],[117.245133,27.71926],[117.296256,27.764282],[117.303031,27.833103],[117.276546,27.847921],[117.280242,27.871201],[117.334444,27.8876],[117.341836,27.855858],[117.366473,27.88231],[117.407741,27.893948],[117.453936,27.939955],[117.477958,27.930966],[117.52169,27.982243],[117.556182,27.966387],[117.609769,27.863265],[117.649805,27.851625],[117.68245,27.823577],[117.704624,27.834162],[117.740348,27.800286],[117.788392,27.855858],[117.78716,27.896063],[117.856145,27.94577],[117.910963,27.949471],[117.942992,27.974315],[117.965166,27.962687],[117.999043,27.991227],[118.096977,27.970615],[118.094513,28.003909],[118.129006,28.017118],[118.120999,28.041946],[118.153644,28.062016],[118.199839,28.049869],[118.242339,28.075746],[118.356288,28.091586],[118.361215,28.155978],[118.375382,28.186577],[118.339041,28.193962],[118.314404,28.221913],[118.424041,28.291497],[118.433896,28.288335],[118.480091,28.327325],[118.455454,28.384204],[118.432048,28.402104],[118.456686,28.424738],[118.474548,28.478934],[118.414802,28.497344],[118.4302,28.515225],[118.412338,28.55676],[118.428352,28.617193],[118.428352,28.617193],[118.428352,28.681267],[118.403099,28.702791],[118.364295,28.813491],[118.300237,28.826075],[118.270056,28.918836],[118.195527,28.904167],[118.227556,28.942406],[118.165346,28.986912],[118.133933,28.983771],[118.115455,29.009944],[118.115455,29.009944],[118.097593,28.998952],[118.066796,29.053898],[118.076035,29.074822],[118.037847,29.102017],[118.045238,29.149068],[118.027992,29.167882],[118.042159,29.210202],[118.073571,29.216993],[118.077883,29.290614],[118.138861,29.283828],[118.178281,29.297921],[118.166578,29.314099],[118.205382,29.343839],[118.193064,29.395472]]]]}},{"type":"Feature","properties":{"adcode":370000,"name":"山东省","center":[117.000923,36.675807],"centroid":[118.187759,36.376092],"childrenNum":16,"level":"province","parent":{"adcode":100000},"subFeatureIndex":14,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.374195,34.640011],[116.392057,34.710391],[116.363724,34.715311],[116.369267,34.749247],[116.403144,34.756131],[116.408071,34.850972],[116.445028,34.895652],[116.557745,34.908905],[116.613795,34.922645],[116.622418,34.939818],[116.677853,34.939327],[116.781331,34.916757],[116.789338,34.975133],[116.815823,34.965324],[116.821983,34.929515],[116.858323,34.928533],[116.922381,34.894671],[116.929156,34.843114],[116.966113,34.844588],[116.979047,34.815113],[116.95133,34.81069],[116.969192,34.771864],[117.022163,34.759081],[117.070206,34.713835],[117.061583,34.675947],[117.073286,34.639026],[117.104083,34.648874],[117.15151,34.559222],[117.139191,34.526687],[117.166293,34.434435],[117.248213,34.451216],[117.252524,34.48674],[117.27285,34.499565],[117.267923,34.532603],[117.303647,34.542463],[117.27285,34.556757],[117.311654,34.561686],[117.311654,34.561686],[117.32151,34.566614],[117.32151,34.566614],[117.325205,34.573021],[117.325205,34.573021],[117.370785,34.584846],[117.402813,34.569571],[117.402813,34.550843],[117.465023,34.484767],[117.53832,34.467006],[117.592523,34.462566],[117.609769,34.490686],[117.659044,34.501044],[117.684298,34.547392],[117.801942,34.518798],[117.791471,34.583368],[117.793935,34.651827],[117.902956,34.644443],[117.909732,34.670533],[117.951615,34.678408],[118.053861,34.650843],[118.084042,34.655766],[118.114839,34.614404],[118.079115,34.569571],[118.185056,34.543942],[118.16473,34.50499],[118.132702,34.483287],[118.177665,34.45319],[118.179513,34.379628],[118.217701,34.379134],[118.220165,34.405802],[118.277447,34.404814],[118.290382,34.424563],[118.379693,34.415183],[118.404947,34.427525],[118.416034,34.473914],[118.439439,34.507949],[118.424657,34.595193],[118.439439,34.626223],[118.473932,34.623269],[118.460997,34.656258],[118.545997,34.705964],[118.601431,34.714327],[118.607591,34.694155],[118.664257,34.693663],[118.690127,34.678408],[118.739402,34.693663],[118.783749,34.723181],[118.764039,34.740396],[118.719076,34.745313],[118.739402,34.792508],[118.772047,34.794474],[118.80038,34.843114],[118.805307,34.87307],[118.860742,34.944233],[118.86259,35.025626],[118.928495,35.051106],[118.942662,35.040817],[119.027045,35.055516],[119.114509,35.055026],[119.137915,35.096167],[119.217371,35.106939],[119.250016,35.124562],[119.286972,35.115261],[119.306066,35.076578],[119.354109,35.080007],[119.373819,35.078538],[119.428022,35.121136],[119.397841,35.137777],[119.411392,35.231689],[119.450812,35.285443],[119.493312,35.318655],[119.538275,35.296678],[119.543819,35.347949],[119.590014,35.37284],[119.579543,35.406504],[119.618963,35.459655],[119.663311,35.562931],[119.662079,35.589215],[119.718129,35.615492],[119.75139,35.617924],[119.772332,35.578995],[119.780339,35.584835],[119.792658,35.615492],[119.824071,35.646136],[119.83023,35.620357],[119.868419,35.60868],[119.925085,35.637382],[119.91215,35.660725],[119.950339,35.729741],[119.920157,35.739943],[119.926317,35.759856],[119.958346,35.760342],[120.01378,35.714193],[120.049505,35.786562],[120.032258,35.812288],[120.064287,35.873414],[120.112331,35.885052],[120.125265,35.906868],[120.152983,35.907353],[120.207801,35.947575],[120.169613,35.888446],[120.202258,35.89184],[120.209033,35.917531],[120.265699,35.966468],[120.30512,35.971796],[120.316206,36.002304],[120.289721,36.017311],[120.285409,36.01247],[120.249069,35.992136],[120.257076,36.025055],[120.198562,35.995525],[120.234902,36.030863],[120.239214,36.062316],[120.181316,36.066669],[120.152367,36.095206],[120.116642,36.102943],[120.108635,36.127599],[120.142512,36.143549],[120.140664,36.173507],[120.181316,36.203936],[120.22012,36.209248],[120.224432,36.19138],[120.260772,36.198624],[120.263236,36.182202],[120.310047,36.185101],[120.297112,36.225664],[120.319902,36.232423],[120.362402,36.196209],[120.35809,36.174956],[120.286025,36.047317],[120.337764,36.055058],[120.429539,36.056994],[120.468959,36.087952],[120.546568,36.091821],[120.546568,36.107778],[120.593995,36.100525],[120.615553,36.120348],[120.64327,36.114547],[120.672835,36.130016],[120.712255,36.126632],[120.696857,36.15563],[120.696857,36.203936],[120.680843,36.238698],[120.686386,36.279234],[120.657437,36.276339],[120.66298,36.331803],[120.744284,36.327946],[120.694393,36.390118],[120.759683,36.46283],[120.828668,36.46668],[120.837291,36.459942],[120.858849,36.424797],[120.848994,36.403124],[120.871784,36.36699],[120.911204,36.412276],[120.917979,36.417573],[120.90874,36.450315],[120.938305,36.447908],[120.965407,36.466199],[120.95432,36.507578],[120.983269,36.546051],[120.962327,36.562877],[120.909972,36.568645],[120.884718,36.601323],[120.847146,36.618617],[120.882255,36.627262],[120.926602,36.611892],[120.955551,36.575855],[121.028848,36.572971],[121.078123,36.607568],[121.161275,36.651273],[121.251818,36.671436],[121.29863,36.702151],[121.31218,36.702151],[121.35776,36.713186],[121.400876,36.701191],[121.3941,36.738129],[121.454462,36.752515],[121.496962,36.795179],[121.506817,36.803805],[121.565331,36.830635],[121.548701,36.807638],[121.485259,36.786073],[121.532071,36.73621],[121.575186,36.740047],[121.556092,36.764502],[121.651563,36.723739],[121.631853,36.80093],[121.6762,36.819137],[121.726092,36.826323],[121.762432,36.84644],[121.767975,36.874691],[121.927504,36.932597],[121.965076,36.938337],[122.008808,36.96225],[122.042684,36.871819],[122.051923,36.904846],[122.093191,36.913938],[122.115981,36.94025],[122.124604,36.944077],[122.141235,36.938337],[122.119677,36.891924],[122.175727,36.894317],[122.188662,36.866073],[122.174495,36.842609],[122.220691,36.848835],[122.275509,36.83734],[122.280437,36.835904],[122.344495,36.828239],[122.378371,36.844525],[122.383915,36.865595],[122.415944,36.85937],[122.454748,36.879],[122.452284,36.88618],[122.434422,36.914416],[122.483081,36.913938],[122.48924,36.886659],[122.532356,36.901496],[122.55761,36.968467],[122.544675,37.004797],[122.583479,37.037289],[122.575472,37.054485],[122.494168,37.033945],[122.467067,37.037289],[122.478769,37.058784],[122.484313,37.128956],[122.533588,37.153286],[122.581015,37.147562],[122.573624,37.176178],[122.624131,37.190959],[122.592718,37.261485],[122.567465,37.25958],[122.573624,37.296247],[122.611196,37.339558],[122.607501,37.364296],[122.650616,37.388551],[122.6925,37.373809],[122.714058,37.392355],[122.701739,37.418501],[122.67587,37.413273],[122.641377,37.428482],[122.553914,37.407093],[122.4954,37.413748],[122.487393,37.43466],[122.41656,37.414699],[122.337103,37.414223],[122.281053,37.430858],[122.287212,37.445114],[122.25272,37.467917],[122.194205,37.456041],[122.166488,37.438937],[122.131996,37.49926],[122.163408,37.519199],[122.150474,37.557163],[122.08888,37.554316],[122.075329,37.540556],[122.017431,37.531065],[121.997721,37.494512],[121.923808,37.473142],[121.772903,37.466492],[121.66573,37.473617],[121.635548,37.494037],[121.575802,37.460317],[121.571491,37.441313],[121.477252,37.475992],[121.460006,37.522522],[121.400876,37.557638],[121.395948,37.589891],[121.435368,37.592737],[121.391021,37.625449],[121.349137,37.635403],[121.358376,37.597479],[121.304789,37.582778],[121.217326,37.582778],[121.17421,37.597479],[121.148956,37.626397],[121.161891,37.646302],[121.142797,37.661464],[121.160043,37.698882],[121.136022,37.723501],[121.037471,37.718767],[120.994356,37.759468],[120.943233,37.785486],[120.940769,37.819533],[120.874863,37.833241],[120.845298,37.826623],[120.839139,37.82426],[120.733197,37.833714],[120.656821,37.793054],[120.634031,37.796364],[120.590915,37.7642],[120.517619,37.750005],[120.454793,37.757576],[120.367945,37.697935],[120.227511,37.693673],[120.22012,37.671886],[120.269395,37.658622],[120.272475,37.636824],[120.215192,37.621183],[120.208417,37.588469],[120.246605,37.556689],[120.222584,37.532963],[120.144359,37.481691],[120.086461,37.465067],[120.064903,37.448915],[120.010085,37.442263],[119.949723,37.419927],[119.926933,37.386649],[119.843781,37.376662],[119.837006,37.346695],[119.883201,37.311004],[119.89244,37.263866],[119.865339,37.233854],[119.83023,37.225754],[119.808057,37.196203],[119.740303,37.133727],[119.687332,37.143746],[119.678709,37.158056],[119.576463,37.127524],[119.489616,37.134681],[119.428022,37.125616],[119.361501,37.125616],[119.327624,37.115595],[119.301138,37.139452],[119.298675,37.197156],[119.2069,37.223371],[119.190885,37.25958],[119.204436,37.280058],[119.136683,37.230995],[119.12806,37.254816],[119.091103,37.257674],[119.084328,37.239572],[119.054147,37.254816],[119.03998,37.30434],[119.001176,37.31862],[118.942662,37.497361],[118.939582,37.527268],[118.988857,37.620709],[119.023966,37.642037],[119.153313,37.655305],[119.236465,37.651988],[119.262334,37.660517],[119.280197,37.692726],[119.309146,37.805349],[119.291899,37.869627],[119.24016,37.878131],[119.212443,37.838913],[119.16132,37.81906],[119.12806,37.847892],[119.110813,37.921577],[119.001792,37.99613],[118.974075,38.094162],[118.908169,38.139362],[118.811467,38.157717],[118.703677,38.151129],[118.626069,38.138421],[118.607591,38.129006],[118.597736,38.079088],[118.552156,38.05553],[118.534294,38.063541],[118.517048,38.088509],[118.504729,38.11394],[118.44991,38.124299],[118.431432,38.106406],[118.404331,38.121003],[118.331034,38.12524],[118.217085,38.146893],[118.177665,38.186417],[118.112376,38.210403],[118.045238,38.214165],[118.018753,38.202409],[117.896797,38.279495],[117.895565,38.301572],[117.848754,38.255062],[117.808718,38.22827],[117.789007,38.180772],[117.766834,38.158658],[117.771145,38.134655],[117.746508,38.12524],[117.704624,38.076262],[117.586979,38.071551],[117.557414,38.046105],[117.557414,38.046105],[117.524154,37.989527],[117.513067,37.94329],[117.481038,37.914967],[117.438538,37.854035],[117.400966,37.844584],[117.320278,37.861596],[117.271618,37.839858],[117.185387,37.849783],[117.150278,37.839385],[117.074518,37.848837],[117.027091,37.832296],[116.919301,37.846002],[116.837997,37.835132],[116.804736,37.848837],[116.753613,37.793054],[116.753613,37.77035],[116.724664,37.744327],[116.679085,37.728708],[116.66307,37.686096],[116.604556,37.624975],[116.575607,37.610754],[116.4826,37.521573],[116.448108,37.503059],[116.433941,37.473142],[116.38097,37.522522],[116.379738,37.522047],[116.38097,37.522522],[116.379738,37.522047],[116.36742,37.566177],[116.336007,37.581355],[116.295355,37.554316],[116.278724,37.524895],[116.290427,37.484065],[116.27626,37.466967],[116.240536,37.489764],[116.240536,37.489764],[116.224522,37.479791],[116.243,37.447965],[116.226369,37.428007],[116.2855,37.404241],[116.236224,37.361442],[116.193109,37.365723],[116.169087,37.384271],[116.106261,37.368577],[116.085935,37.373809],[116.024341,37.360015],[115.975682,37.337179],[115.969523,37.239572],[115.909777,37.20669],[115.91224,37.177132],[115.879596,37.150901],[115.888219,37.112254],[115.85619,37.060694],[115.776734,36.992848],[115.79706,36.968945],[115.75764,36.902453],[115.71206,36.883308],[115.683727,36.808117],[115.524815,36.763543],[115.479851,36.760187],[115.451518,36.702151],[115.420105,36.686795],[115.365902,36.621979],[115.355431,36.627262],[115.33141,36.550378],[115.272895,36.497476],[115.291374,36.460423],[115.317243,36.454166],[115.297533,36.413239],[115.340033,36.398307],[115.368982,36.342409],[115.366518,36.30914],[115.423185,36.32216],[115.417025,36.292742],[115.462605,36.276339],[115.466916,36.258969],[115.466916,36.258969],[115.474923,36.248352],[115.483547,36.148865],[115.484163,36.125666],[115.449054,36.047317],[115.447822,36.01247],[115.362822,35.971796],[115.353583,35.938854],[115.364054,35.894264],[115.335105,35.796756],[115.363438,35.779765],[115.407786,35.80889],[115.460141,35.867594],[115.487858,35.880688],[115.495249,35.896203],[115.505104,35.899112],[115.513112,35.890385],[115.583945,35.921893],[115.648618,35.922863],[115.699125,35.966468],[115.774886,35.974702],[115.779813,35.993588],[115.817386,36.012954],[115.859886,36.003756],[115.89869,36.026507],[115.989849,36.045381],[116.057602,36.104877],[116.099486,36.112129],[116.063145,36.028927],[116.048979,35.970343],[115.984921,35.974218],[115.911624,35.960171],[115.907929,35.92674],[115.873436,35.918985],[115.882675,35.879718],[115.859886,35.857894],[115.81677,35.844312],[115.773654,35.854014],[115.73485,35.833154],[115.696046,35.788989],[115.693582,35.754028],[115.622749,35.739457],[115.52851,35.733628],[115.48601,35.710306],[115.383148,35.568772],[115.34496,35.55368],[115.356047,35.490359],[115.307388,35.480126],[115.237171,35.423087],[115.172497,35.426501],[115.126302,35.41821],[115.117679,35.400163],[115.091809,35.416259],[115.073947,35.374304],[115.04315,35.376744],[114.957534,35.261014],[114.929201,35.244886],[114.932281,35.198441],[114.861448,35.182301],[114.841738,35.15099],[114.883006,35.098615],[114.835578,35.076578],[114.818948,35.051596],[114.852209,35.041797],[114.824492,35.012393],[114.880542,35.00357],[114.923658,34.968757],[114.950759,34.989843],[115.008041,34.988372],[115.028983,34.9717],[115.075179,35.000628],[115.12815,35.00455],[115.157099,34.957968],[115.219309,34.96042],[115.205142,34.914303],[115.251953,34.906451],[115.239019,34.87798],[115.256265,34.845079],[115.317243,34.859321],[115.42688,34.805285],[115.449054,34.74433],[115.433655,34.725149],[115.461373,34.637057],[115.515575,34.582383],[115.553148,34.568586],[115.622749,34.574499],[115.685575,34.556265],[115.697278,34.594207],[115.787821,34.580905],[115.827241,34.558236],[115.838328,34.5676],[115.984305,34.589281],[115.991081,34.615389],[116.037276,34.593222],[116.101334,34.60603],[116.134594,34.559715],[116.156768,34.5538],[116.196804,34.575977],[116.247927,34.551829],[116.286116,34.608986],[116.32492,34.601104],[116.334159,34.620806],[116.374195,34.640011]]],[[[120.729502,37.947065],[120.721495,37.917328],[120.76461,37.895134],[120.76461,37.923937],[120.729502,37.947065]]],[[[120.692545,37.983867],[120.732581,37.961694],[120.724574,37.987641],[120.692545,37.983867]]],[[[120.990044,36.413239],[120.978341,36.428649],[120.950624,36.414684],[120.990044,36.413239]]],[[[120.750444,38.150188],[120.7874,38.158658],[120.742436,38.199116],[120.750444,38.150188]]],[[[120.918595,38.345236],[120.914899,38.373393],[120.895189,38.36307],[120.918595,38.345236]]],[[[120.159142,35.765198],[120.169613,35.740428],[120.193019,35.756942],[120.172077,35.785591],[120.159142,35.765198]]],[[[120.62664,37.94565],[120.631567,37.981037],[120.602002,37.978678],[120.62664,37.94565]]],[[[120.802183,38.284193],[120.848378,38.305799],[120.816349,38.318008],[120.802183,38.284193]]],[[[121.489571,37.577086],[121.489571,37.577561],[121.489571,37.578509],[121.488955,37.578035],[121.489571,37.577086]]],[[[121.485875,37.578509],[121.487723,37.578035],[121.487723,37.578509],[121.485875,37.578509]]],[[[121.487723,37.578509],[121.487723,37.577561],[121.488955,37.578035],[121.488955,37.578509],[121.488339,37.578509],[121.487723,37.578509]]],[[[115.495249,35.896203],[115.487858,35.880688],[115.513112,35.890385],[115.505104,35.899112],[115.495249,35.896203]]]]}},{"type":"Feature","properties":{"adcode":410000,"name":"河南省","center":[113.665412,34.757975],"centroid":[113.619717,33.902648],"childrenNum":18,"level":"province","parent":{"adcode":100000},"subFeatureIndex":15,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[112.716747,32.357612],[112.735841,32.356095],[112.776493,32.358623],[112.860877,32.396024],[112.888594,32.37682],[112.912,32.390971],[112.992072,32.378336],[113.000695,32.41674],[113.025949,32.425328],[113.078919,32.394508],[113.107869,32.398551],[113.118956,32.375809],[113.155912,32.380863],[113.158992,32.410677],[113.211962,32.431895],[113.2366,32.407141],[113.333918,32.336377],[113.317904,32.327275],[113.353628,32.294904],[113.376418,32.298445],[113.428773,32.270618],[113.511925,32.316654],[113.624642,32.36115],[113.650511,32.412698],[113.700402,32.420782],[113.735511,32.410677],[113.76754,32.370249],[113.753989,32.328286],[113.768772,32.30148],[113.768156,32.284279],[113.758301,32.27669],[113.749061,32.272642],[113.73859,32.255942],[113.752757,32.215951],[113.782322,32.184553],[113.750293,32.11615],[113.722576,32.12426],[113.728735,32.083197],[113.791561,32.036028],[113.757685,31.98985],[113.817431,31.964467],[113.805728,31.929428],[113.832213,31.918761],[113.830981,31.87913],[113.854387,31.843042],[113.893807,31.847109],[113.914749,31.877098],[113.957865,31.852701],[113.952321,31.793714],[113.988662,31.749959],[114.017611,31.770822],[114.086596,31.782014],[114.121705,31.809482],[114.134024,31.843042],[114.191922,31.852192],[114.235654,31.833382],[114.292936,31.752503],[114.350218,31.755557],[114.403189,31.746906],[114.443841,31.728074],[114.530688,31.742834],[114.549783,31.766751],[114.586123,31.762172],[114.57134,31.660858],[114.547935,31.623665],[114.560869,31.560963],[114.572572,31.553824],[114.61692,31.585437],[114.641558,31.582378],[114.696376,31.525771],[114.778912,31.520669],[114.789383,31.480358],[114.830035,31.45892],[114.870071,31.479337],[114.884238,31.469129],[114.962462,31.494648],[114.995107,31.471171],[115.022824,31.527811],[115.096121,31.508425],[115.114599,31.530362],[115.106592,31.567592],[115.12507,31.599201],[115.16449,31.604808],[115.212533,31.555354],[115.235939,31.555354],[115.218077,31.515057],[115.211301,31.442072],[115.252569,31.421646],[115.250722,31.392021],[115.301229,31.383846],[115.338801,31.40428],[115.373909,31.405813],[115.389924,31.450241],[115.371446,31.495668],[115.415793,31.525771],[115.439815,31.588496],[115.485394,31.608885],[115.476771,31.643028],[115.495249,31.673083],[115.534054,31.698545],[115.553764,31.69549],[115.676336,31.778453],[115.731154,31.76726],[115.767495,31.78761],[115.808147,31.770313],[115.808147,31.770313],[115.851878,31.786593],[115.886371,31.776418],[115.914704,31.814567],[115.893762,31.832365],[115.894994,31.8649],[115.920248,31.920285],[115.909161,31.94314],[115.928871,32.003046],[115.922095,32.049725],[115.941805,32.166318],[115.912856,32.227596],[115.899306,32.390971],[115.865429,32.458662],[115.883291,32.487946],[115.845719,32.501575],[115.8759,32.542448],[115.910393,32.567165],[115.891298,32.576243],[115.861117,32.537403],[115.789052,32.468761],[115.771806,32.505108],[115.742241,32.476335],[115.704669,32.495013],[115.667712,32.409667],[115.657857,32.428864],[115.626445,32.40512],[115.604271,32.425833],[115.57101,32.419266],[115.522967,32.441997],[115.509416,32.466741],[115.5088,32.468761],[115.497713,32.492489],[115.409018,32.549007],[115.411482,32.575235],[115.304924,32.553042],[115.30554,32.583303],[115.267352,32.578261],[115.24333,32.593388],[115.20083,32.591876],[115.182968,32.666973],[115.179273,32.726402],[115.189744,32.770695],[115.211301,32.785791],[115.189744,32.812452],[115.197135,32.856201],[115.155867,32.864747],[115.139237,32.897917],[115.029599,32.906962],[115.035143,32.932582],[115.009273,32.940117],[114.943368,32.935094],[114.916266,32.971251],[114.883006,32.990328],[114.891629,33.020441],[114.925506,33.016928],[114.913187,33.083143],[114.897172,33.086653],[114.902716,33.129764],[114.932897,33.153817],[114.966158,33.147304],[114.990795,33.102195],[115.041302,33.086653],[115.168186,33.088658],[115.194671,33.120743],[115.245178,33.135778],[115.289526,33.131769],[115.303692,33.149809],[115.300613,33.204407],[115.340033,33.260973],[115.335105,33.297997],[115.361591,33.298497],[115.365286,33.336005],[115.341881,33.370997],[115.313547,33.376994],[115.328946,33.403477],[115.315395,33.431451],[115.324634,33.457418],[115.345576,33.449928],[115.345576,33.502842],[115.366518,33.5233],[115.394851,33.506335],[115.422569,33.557219],[115.463837,33.567193],[115.511264,33.55323],[115.564851,33.576169],[115.639995,33.585143],[115.601191,33.658898],[115.601807,33.718653],[115.563003,33.772895],[115.576553,33.787817],[115.614126,33.775879],[115.631988,33.869846],[115.547604,33.874815],[115.577785,33.950307],[115.579017,33.974133],[115.60735,34.030196],[115.642459,34.03218],[115.658473,34.061437],[115.705901,34.059949],[115.736082,34.076805],[115.768726,34.061932],[115.809378,34.062428],[115.846335,34.028708],[115.85003,34.004898],[115.877132,34.002913],[115.876516,34.028708],[115.904233,34.009859],[115.95782,34.007875],[116.00032,33.965199],[115.982457,33.917039],[116.05945,33.860902],[116.055754,33.804727],[116.074232,33.781351],[116.100102,33.782843],[116.132747,33.751501],[116.155536,33.709693],[116.230065,33.735078],[116.263326,33.730101],[116.316912,33.771402],[116.393905,33.782843],[116.408071,33.805721],[116.437021,33.801246],[116.437637,33.846489],[116.486296,33.869846],[116.558361,33.881274],[116.566984,33.9081],[116.631042,33.887733],[116.64336,33.896675],[116.641512,33.978103],[116.599629,34.014324],[116.599629,34.014324],[116.576223,34.068873],[116.576223,34.068873],[116.52818,34.122892],[116.536187,34.151127],[116.565752,34.16945],[116.542962,34.203608],[116.545426,34.241711],[116.582382,34.266444],[116.562056,34.285731],[116.516477,34.296114],[116.456731,34.268917],[116.409303,34.273863],[116.409303,34.273863],[116.372347,34.26595],[116.357564,34.319843],[116.301514,34.342082],[116.255934,34.376665],[116.213435,34.382098],[116.215898,34.403333],[116.178942,34.430487],[116.162312,34.459605],[116.178326,34.496112],[116.204196,34.508442],[116.191261,34.535561],[116.196804,34.575977],[116.156768,34.5538],[116.134594,34.559715],[116.101334,34.60603],[116.037276,34.593222],[115.991081,34.615389],[115.984305,34.589281],[115.838328,34.5676],[115.827241,34.558236],[115.787821,34.580905],[115.697278,34.594207],[115.685575,34.556265],[115.622749,34.574499],[115.553148,34.568586],[115.515575,34.582383],[115.461373,34.637057],[115.433655,34.725149],[115.449054,34.74433],[115.42688,34.805285],[115.317243,34.859321],[115.256265,34.845079],[115.239019,34.87798],[115.251953,34.906451],[115.205142,34.914303],[115.219309,34.96042],[115.157099,34.957968],[115.12815,35.00455],[115.075179,35.000628],[115.028983,34.9717],[115.008041,34.988372],[114.950759,34.989843],[114.923658,34.968757],[114.880542,35.00357],[114.824492,35.012393],[114.852209,35.041797],[114.818948,35.051596],[114.835578,35.076578],[114.883006,35.098615],[114.841738,35.15099],[114.861448,35.182301],[114.932281,35.198441],[114.929201,35.244886],[114.957534,35.261014],[115.04315,35.376744],[115.073947,35.374304],[115.091809,35.416259],[115.117679,35.400163],[115.126302,35.41821],[115.172497,35.426501],[115.237171,35.423087],[115.307388,35.480126],[115.356047,35.490359],[115.34496,35.55368],[115.383148,35.568772],[115.48601,35.710306],[115.52851,35.733628],[115.622749,35.739457],[115.693582,35.754028],[115.696046,35.788989],[115.73485,35.833154],[115.773654,35.854014],[115.81677,35.844312],[115.859886,35.857894],[115.882675,35.879718],[115.873436,35.918985],[115.907929,35.92674],[115.911624,35.960171],[115.984921,35.974218],[116.048979,35.970343],[116.063145,36.028927],[116.099486,36.112129],[116.057602,36.104877],[115.989849,36.045381],[115.89869,36.026507],[115.859886,36.003756],[115.817386,36.012954],[115.779813,35.993588],[115.774886,35.974702],[115.699125,35.966468],[115.648618,35.922863],[115.583945,35.921893],[115.513112,35.890385],[115.487858,35.880688],[115.460141,35.867594],[115.407786,35.80889],[115.363438,35.779765],[115.335105,35.796756],[115.364054,35.894264],[115.353583,35.938854],[115.362822,35.971796],[115.447822,36.01247],[115.449054,36.047317],[115.484163,36.125666],[115.483547,36.148865],[115.465068,36.170125],[115.450902,36.152248],[115.376989,36.128083],[115.365902,36.099074],[115.312931,36.088436],[115.30246,36.127599],[115.279055,36.13775],[115.242098,36.19138],[115.202678,36.208765],[115.202678,36.208765],[115.202678,36.209248],[115.202678,36.209248],[115.201446,36.210214],[115.201446,36.210214],[115.1842,36.193312],[115.12507,36.209731],[115.104744,36.172058],[115.06286,36.178338],[115.048693,36.161912],[115.04623,36.112613],[114.998186,36.069572],[114.914419,36.052155],[114.926737,36.089403],[114.912571,36.140649],[114.858368,36.144516],[114.857752,36.127599],[114.771521,36.124699],[114.734564,36.15563],[114.720398,36.140166],[114.640326,36.137266],[114.588587,36.118414],[114.586739,36.141133],[114.533152,36.171575],[114.480181,36.177855],[114.466015,36.197658],[114.417356,36.205868],[114.408117,36.224699],[114.356378,36.230492],[114.345291,36.255591],[114.299095,36.245938],[114.257827,36.263794],[114.241197,36.251247],[114.2104,36.272962],[114.203009,36.245456],[114.170364,36.245938],[114.170364,36.245938],[114.175907,36.264759],[114.129096,36.280199],[114.080437,36.269585],[114.04348,36.303353],[114.056415,36.329392],[114.002828,36.334214],[113.981887,36.31782],[113.962792,36.353977],[113.911054,36.314927],[113.882104,36.353977],[113.84946,36.347711],[113.856851,36.329392],[113.813119,36.332285],[113.755221,36.366026],[113.731199,36.363135],[113.736127,36.324571],[113.712105,36.303353],[113.716417,36.262347],[113.681924,36.216491],[113.697939,36.181719],[113.651127,36.174473],[113.705946,36.148865],[113.712721,36.129533],[113.655439,36.125182],[113.671453,36.115514],[113.68562,36.056026],[113.660366,36.034735],[113.694859,36.026991],[113.678844,35.985841],[113.648663,35.994073],[113.654207,35.931586],[113.637576,35.870019],[113.660982,35.837035],[113.582758,35.818111],[113.604932,35.797727],[113.587685,35.736542],[113.592613,35.691838],[113.622794,35.674825],[113.625258,35.632518],[113.578446,35.633491],[113.547649,35.656835],[113.55812,35.621816],[113.513773,35.57364],[113.49899,35.532254],[113.439244,35.507412],[113.391817,35.506925],[113.348085,35.468429],[113.31236,35.481101],[113.304353,35.426989],[113.243375,35.449418],[113.189789,35.44893],[113.185477,35.409431],[113.165151,35.412845],[113.149137,35.350878],[113.126347,35.332327],[113.067217,35.353806],[112.996384,35.362104],[112.985913,35.33965],[112.992072,35.29619],[112.936022,35.284466],[112.934174,35.262968],[112.884283,35.243909],[112.822073,35.258082],[112.772798,35.207732],[112.720443,35.206265],[112.628052,35.263457],[112.637291,35.225822],[112.513487,35.218489],[112.390915,35.239021],[112.36751,35.219956],[112.288053,35.219956],[112.304684,35.251728],[112.242474,35.234622],[112.21722,35.253195],[112.13838,35.271275],[112.058924,35.280069],[112.078634,35.219467],[112.03983,35.194039],[112.066315,35.153437],[112.05646,35.098615],[112.062004,35.056005],[112.039214,35.045717],[112.018888,35.068742],[111.97762,35.067272],[111.933272,35.083435],[111.810084,35.062374],[111.807005,35.032977],[111.740483,35.00455],[111.664107,34.984449],[111.681969,34.9511],[111.646861,34.938836],[111.617911,34.894671],[111.592042,34.881416],[111.570484,34.843114],[111.543999,34.853428],[111.502731,34.829851],[111.439289,34.838202],[111.389398,34.815113],[111.345666,34.831816],[111.29208,34.806759],[111.255123,34.819535],[111.232949,34.789559],[111.148566,34.807742],[111.118385,34.756623],[111.035233,34.740887],[110.976103,34.706456],[110.920052,34.730068],[110.903422,34.669056],[110.883712,34.64395],[110.824582,34.615881],[110.791937,34.649858],[110.749437,34.65232],[110.710017,34.605045],[110.610851,34.607508],[110.533242,34.583368],[110.488279,34.610956],[110.424837,34.588295],[110.379257,34.600612],[110.366939,34.566614],[110.404511,34.557743],[110.372482,34.544435],[110.360779,34.516825],[110.403279,34.433448],[110.403279,34.433448],[110.473496,34.393457],[110.503677,34.33714],[110.451938,34.292653],[110.428533,34.288203],[110.43962,34.243196],[110.507989,34.217466],[110.55172,34.213012],[110.55788,34.193214],[110.621938,34.177372],[110.642264,34.161032],[110.61393,34.113478],[110.591757,34.101586],[110.587445,34.023252],[110.620706,34.035652],[110.671213,33.966192],[110.665669,33.937895],[110.627481,33.925482],[110.628713,33.910086],[110.587445,33.887733],[110.612083,33.852453],[110.66259,33.85295],[110.712481,33.833564],[110.74143,33.798759],[110.782082,33.796272],[110.81719,33.751003],[110.831973,33.713675],[110.823966,33.685793],[110.878784,33.634486],[110.966864,33.609071],[111.00382,33.578662],[111.002588,33.535772],[111.02661,33.478386],[111.02661,33.467903],[110.996429,33.435946],[111.025994,33.375495],[111.025994,33.330504],[110.984726,33.255469],[111.046936,33.202905],[111.045704,33.169849],[111.08882,33.181871],[111.12824,33.15532],[111.146102,33.12375],[111.179363,33.115229],[111.192913,33.071609],[111.152877,33.039507],[111.221862,33.042517],[111.258819,33.006389],[111.273601,32.971753],[111.242804,32.930573],[111.255123,32.883846],[111.276065,32.903445],[111.293311,32.859217],[111.380159,32.829049],[111.41342,32.757108],[111.475629,32.760127],[111.458383,32.726402],[111.513202,32.674026],[111.530448,32.628172],[111.577875,32.593388],[111.640701,32.634724],[111.646245,32.605993],[111.713382,32.606497],[111.808853,32.536899],[111.858128,32.528826],[111.890157,32.503089],[111.948671,32.51722],[111.975772,32.471791],[112.014576,32.450077],[112.063851,32.474315],[112.081098,32.425833],[112.155626,32.377326],[112.150083,32.411688],[112.172873,32.385412],[112.206133,32.392992],[112.328089,32.321712],[112.360118,32.3657],[112.390915,32.37126],[112.448814,32.34295],[112.477147,32.380863],[112.530733,32.37682],[112.545516,32.404109],[112.589248,32.381369],[112.612037,32.386928],[112.645298,32.368227],[112.716747,32.357612]]],[[[113.768156,32.284279],[113.768772,32.30148],[113.749061,32.272642],[113.758301,32.27669],[113.768156,32.284279]]]]}},{"type":"Feature","properties":{"adcode":420000,"name":"湖北省","center":[114.298572,30.584355],"centroid":[112.271301,30.987527],"childrenNum":17,"level":"province","parent":{"adcode":100000},"subFeatureIndex":16,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[111.045704,33.169849],[111.034001,33.177864],[111.035849,33.187881],[111.046936,33.202905],[110.984726,33.255469],[110.960704,33.253967],[110.9219,33.203907],[110.865234,33.213921],[110.828893,33.201403],[110.824582,33.158327],[110.753133,33.15031],[110.702626,33.097182],[110.650887,33.157324],[110.623785,33.143796],[110.59422,33.168346],[110.57759,33.250464],[110.54125,33.255469],[110.471032,33.171352],[110.398352,33.176862],[110.398352,33.176862],[110.372482,33.186379],[110.33799,33.160331],[110.285635,33.171352],[110.218497,33.163336],[110.164911,33.209415],[110.031252,33.191888],[109.999223,33.212419],[109.973353,33.203907],[109.916687,33.229942],[109.852013,33.247961],[109.813209,33.236449],[109.732521,33.231443],[109.693101,33.254468],[109.649985,33.251465],[109.619804,33.275484],[109.60687,33.235949],[109.514479,33.237951],[109.498464,33.207412],[109.438718,33.152314],[109.468283,33.140288],[109.522486,33.138785],[109.576073,33.110216],[109.688174,33.116733],[109.704188,33.101694],[109.794731,33.067095],[109.785492,32.987316],[109.76455,32.909474],[109.789804,32.882339],[109.847702,32.893395],[109.856941,32.910479],[109.907448,32.903947],[109.927158,32.887364],[109.988752,32.886359],[110.051578,32.851676],[110.105164,32.832569],[110.142121,32.802895],[110.127338,32.77774],[110.159367,32.767173],[110.156903,32.683093],[110.206179,32.633212],[110.153824,32.593388],[110.124259,32.616579],[110.090382,32.617083],[110.084223,32.580782],[110.017701,32.546989],[109.97089,32.577756],[109.910528,32.592884],[109.816905,32.577252],[109.746072,32.594901],[109.726978,32.608513],[109.631507,32.599943],[109.619804,32.56767],[109.637051,32.540935],[109.575457,32.506622],[109.526797,32.43341],[109.529877,32.405625],[109.502776,32.38895],[109.513247,32.342444],[109.495385,32.300468],[109.528645,32.270112],[109.550203,32.225065],[109.592703,32.219495],[109.604406,32.199241],[109.58716,32.161251],[109.621652,32.106519],[109.590855,32.047696],[109.590855,32.012688],[109.631507,31.962436],[109.62042,31.928412],[109.584696,31.900472],[109.60379,31.885737],[109.633971,31.824738],[109.633971,31.804396],[109.592087,31.789136],[109.585928,31.726546],[109.622268,31.711783],[109.683246,31.719929],[109.731289,31.700582],[109.737449,31.628761],[109.76455,31.602769],[109.745456,31.598182],[109.727594,31.548214],[109.837847,31.555354],[109.894513,31.519139],[109.969658,31.508935],[109.94502,31.47066],[109.98752,31.474744],[110.036795,31.436966],[110.054042,31.410921],[110.118715,31.409899],[110.161831,31.314338],[110.155671,31.279564],[110.180309,31.179774],[110.200019,31.158779],[110.180309,31.121899],[110.147048,31.116776],[110.119947,31.088592],[110.120563,31.0322],[110.140273,31.030661],[110.140889,30.987062],[110.172918,30.978853],[110.153824,30.953708],[110.151976,30.911613],[110.082375,30.799614],[110.048498,30.800642],[110.019549,30.829425],[110.008462,30.883369],[109.943788,30.878746],[109.894513,30.899803],[109.828608,30.864364],[109.780564,30.848437],[109.701724,30.783677],[109.656761,30.760538],[109.661072,30.738936],[109.625348,30.702923],[109.590855,30.69366],[109.574225,30.646818],[109.543428,30.63961],[109.535421,30.664837],[109.435638,30.595832],[109.418392,30.559766],[109.35495,30.487076],[109.337088,30.521623],[109.36111,30.551004],[109.314298,30.599953],[109.299516,30.630341],[109.245313,30.580892],[109.191726,30.545851],[109.191726,30.545851],[109.143683,30.521108],[109.103647,30.565949],[109.09256,30.578831],[109.106111,30.61077],[109.111654,30.646303],[109.071002,30.640125],[109.042669,30.655571],[109.006329,30.626736],[108.971836,30.627766],[108.893612,30.565434],[108.838793,30.503062],[108.808612,30.491202],[108.789518,30.513374],[108.743939,30.494812],[108.698975,30.54482],[108.688504,30.58759],[108.642925,30.578831],[108.6497,30.53915],[108.56778,30.468508],[108.556077,30.487592],[108.512961,30.501515],[108.472925,30.487076],[108.42673,30.492233],[108.411331,30.438586],[108.430425,30.416397],[108.402092,30.376649],[108.431041,30.354446],[108.460606,30.35961],[108.501258,30.314673],[108.524048,30.309506],[108.54499,30.269716],[108.581947,30.255759],[108.551766,30.1637],[108.56778,30.157491],[108.546222,30.104178],[108.513577,30.057571],[108.532055,30.051873],[108.536367,29.983472],[108.517889,29.9394],[108.516041,29.885451],[108.467998,29.864175],[108.433505,29.880262],[108.371295,29.841337],[108.424266,29.815897],[108.422418,29.772791],[108.442744,29.778505],[108.437201,29.741098],[108.460606,29.741098],[108.504338,29.707836],[108.504954,29.728626],[108.548686,29.749412],[108.52528,29.770713],[108.556077,29.818493],[108.601041,29.863656],[108.658939,29.854833],[108.680497,29.800319],[108.676801,29.749412],[108.690968,29.689642],[108.752562,29.649082],[108.786438,29.691721],[108.797525,29.660003],[108.781511,29.635558],[108.844337,29.658443],[108.888068,29.628795],[108.870206,29.596537],[108.901003,29.604863],[108.913322,29.574679],[108.878213,29.539279],[108.888684,29.502305],[108.866511,29.470527],[108.884373,29.440824],[108.927488,29.435612],[108.934264,29.399643],[108.919481,29.3261],[108.983539,29.332883],[108.999553,29.36366],[109.034662,29.360531],[109.060531,29.403292],[109.11227,29.361053],[109.106727,29.288526],[109.141835,29.270256],[109.110422,29.21647],[109.139372,29.168927],[109.162777,29.180946],[109.215748,29.145409],[109.232378,29.119271],[109.274262,29.121885],[109.261328,29.161089],[109.275494,29.202366],[109.257632,29.222738],[109.312451,29.25146],[109.352487,29.284872],[109.343863,29.369398],[109.391291,29.372005],[109.368501,29.413719],[109.418392,29.453332],[109.415928,29.497617],[109.436254,29.488761],[109.433791,29.530948],[109.458428,29.513242],[109.467051,29.560104],[109.488609,29.553336],[109.516326,29.626194],[109.558826,29.606944],[109.578536,29.629836],[109.651833,29.625674],[109.664768,29.599659],[109.717739,29.615269],[109.701108,29.636078],[109.714659,29.673524],[109.760238,29.689122],[109.755311,29.733304],[109.779333,29.757725],[109.869876,29.774869],[109.908064,29.763959],[109.941325,29.774349],[110.02386,29.769674],[110.113788,29.789932],[110.160599,29.753569],[110.219729,29.746814],[110.289946,29.6964],[110.302265,29.661563],[110.339221,29.668324],[110.372482,29.633477],[110.447011,29.664684],[110.467337,29.713034],[110.507373,29.692241],[110.562807,29.712515],[110.642879,29.775907],[110.60038,29.839779],[110.549873,29.848085],[110.538786,29.895828],[110.49875,29.91243],[110.517228,29.961179],[110.557264,29.988137],[110.491358,30.019751],[110.497518,30.055499],[110.531394,30.061197],[110.600996,30.054463],[110.650887,30.07777],[110.712481,30.033223],[110.756212,30.054463],[110.746973,30.112979],[110.851067,30.126439],[110.924364,30.111426],[110.929907,30.063268],[111.031537,30.048765],[111.242188,30.040476],[111.266826,30.01146],[111.3315,29.970512],[111.342587,29.944586],[111.382623,29.95029],[111.394325,29.912948],[111.436825,29.930065],[111.475629,29.918654],[111.527368,29.925916],[111.553854,29.894272],[111.669034,29.888565],[111.669034,29.888565],[111.705375,29.890121],[111.723853,29.909317],[111.723853,29.909317],[111.75773,29.92021],[111.8107,29.901017],[111.861207,29.856909],[111.899396,29.855871],[111.899396,29.855871],[111.925881,29.836665],[111.965917,29.832512],[111.95483,29.796683],[112.008417,29.778505],[112.07617,29.743696],[112.065699,29.681323],[112.089721,29.685482],[112.111279,29.659483],[112.178416,29.656883],[112.202438,29.633997],[112.244322,29.659483],[112.233851,29.61631],[112.303452,29.585609],[112.281278,29.536676],[112.291133,29.517409],[112.333017,29.545007],[112.368741,29.541362],[112.424792,29.598619],[112.439574,29.633997],[112.499321,29.629316],[112.54182,29.60122],[112.572001,29.624113],[112.640371,29.607985],[112.650842,29.592374],[112.693957,29.601741],[112.714283,29.648561],[112.733378,29.645441],[112.788812,29.681323],[112.79374,29.735902],[112.861493,29.78318],[112.894138,29.783699],[112.902145,29.79149],[112.929246,29.77383],[112.923703,29.766557],[112.926782,29.692241],[112.944645,29.682883],[112.974826,29.732784],[113.025949,29.772791],[113.005007,29.693801],[112.915696,29.620992],[112.912,29.606944],[112.950188,29.473132],[113.034572,29.523658],[113.057362,29.522616],[113.078304,29.438218],[113.099861,29.459585],[113.145441,29.449163],[113.181781,29.485636],[113.222433,29.543965],[113.277252,29.594976],[113.37765,29.703158],[113.571671,29.849123],[113.575367,29.809147],[113.550729,29.768115],[113.558736,29.727067],[113.540258,29.699519],[113.547033,29.675603],[113.606164,29.666764],[113.663446,29.684443],[113.680692,29.64336],[113.704098,29.634518],[113.73859,29.579363],[113.710257,29.555419],[113.630801,29.523137],[113.677613,29.513763],[113.755221,29.446557],[113.731199,29.393907],[113.674533,29.388172],[113.660982,29.333405],[113.632033,29.316186],[113.609859,29.25146],[113.651743,29.225872],[113.693011,29.226394],[113.691779,29.19662],[113.66283,29.16945],[113.690547,29.114566],[113.696091,29.077437],[113.722576,29.104631],[113.749677,29.060699],[113.775547,29.095219],[113.816199,29.105154],[113.852539,29.058606],[113.882104,29.065407],[113.876561,29.038202],[113.898119,29.029307],[113.94185,29.047097],[113.952321,29.092604],[113.98743,29.126068],[114.034857,29.152204],[114.063191,29.204978],[114.169748,29.216993],[114.252284,29.23475],[114.259059,29.343839],[114.307102,29.365225],[114.341595,29.327665],[114.376088,29.322969],[114.440145,29.341752],[114.466015,29.324013],[114.519602,29.325578],[114.589819,29.352707],[114.621847,29.379828],[114.67297,29.395993],[114.740724,29.386607],[114.759818,29.363139],[114.784455,29.386086],[114.812173,29.383478],[114.866375,29.404335],[114.895325,29.397557],[114.931049,29.422581],[114.947063,29.465317],[114.935977,29.486678],[114.90518,29.473132],[114.918114,29.454374],[114.888549,29.436134],[114.860216,29.476258],[114.900868,29.505951],[114.940288,29.493971],[114.966773,29.522096],[114.947679,29.542924],[115.00065,29.572076],[115.033295,29.546568],[115.087498,29.560104],[115.086266,29.525741],[115.154019,29.510117],[115.157099,29.584568],[115.120142,29.597578],[115.143548,29.645961],[115.117679,29.655843],[115.113367,29.684963],[115.176809,29.654803],[115.250722,29.660003],[115.28583,29.618391],[115.304924,29.637118],[115.355431,29.649602],[115.412714,29.688602],[115.470612,29.739539],[115.479235,29.811224],[115.51188,29.840299],[115.611662,29.841337],[115.667712,29.850161],[115.706517,29.837703],[115.762567,29.793048],[115.837096,29.748373],[115.909777,29.723949],[115.965827,29.724469],[116.049595,29.761881],[116.087167,29.795125],[116.13521,29.819532],[116.128435,29.897904],[116.073616,29.969993],[116.091479,30.036331],[116.078544,30.062233],[116.088399,30.110391],[116.055754,30.180774],[116.065609,30.204569],[115.997856,30.252657],[115.985537,30.290905],[115.903001,30.31364],[115.91532,30.337919],[115.885139,30.379747],[115.921479,30.416397],[115.894994,30.452517],[115.910393,30.519046],[115.887603,30.542758],[115.876516,30.582438],[115.848799,30.602014],[115.819234,30.597893],[115.81369,30.637035],[115.762567,30.685426],[115.782893,30.751795],[115.851262,30.756938],[115.863581,30.815549],[115.848799,30.828397],[115.865429,30.864364],[115.932566,30.889532],[115.976298,30.931636],[116.03974,30.957813],[116.071769,30.956787],[116.058834,31.012711],[116.015102,31.011685],[116.006479,31.034764],[115.938726,31.04707],[115.939958,31.071678],[115.887603,31.10909],[115.867277,31.147512],[115.837712,31.127022],[115.797676,31.128047],[115.778582,31.112164],[115.700973,31.201276],[115.655394,31.211002],[115.603655,31.17363],[115.585793,31.143926],[115.540213,31.194621],[115.539597,31.231985],[115.507568,31.267799],[115.473076,31.265242],[115.443511,31.344498],[115.40717,31.337854],[115.372062,31.349098],[115.393004,31.389977],[115.373909,31.405813],[115.338801,31.40428],[115.301229,31.383846],[115.250722,31.392021],[115.252569,31.421646],[115.211301,31.442072],[115.218077,31.515057],[115.235939,31.555354],[115.212533,31.555354],[115.16449,31.604808],[115.12507,31.599201],[115.106592,31.567592],[115.114599,31.530362],[115.096121,31.508425],[115.022824,31.527811],[114.995107,31.471171],[114.962462,31.494648],[114.884238,31.469129],[114.870071,31.479337],[114.830035,31.45892],[114.789383,31.480358],[114.778912,31.520669],[114.696376,31.525771],[114.641558,31.582378],[114.61692,31.585437],[114.572572,31.553824],[114.560869,31.560963],[114.547935,31.623665],[114.57134,31.660858],[114.586123,31.762172],[114.549783,31.766751],[114.530688,31.742834],[114.443841,31.728074],[114.403189,31.746906],[114.350218,31.755557],[114.292936,31.752503],[114.235654,31.833382],[114.191922,31.852192],[114.134024,31.843042],[114.121705,31.809482],[114.086596,31.782014],[114.017611,31.770822],[113.988662,31.749959],[113.952321,31.793714],[113.957865,31.852701],[113.914749,31.877098],[113.893807,31.847109],[113.854387,31.843042],[113.830981,31.87913],[113.832213,31.918761],[113.805728,31.929428],[113.817431,31.964467],[113.757685,31.98985],[113.791561,32.036028],[113.728735,32.083197],[113.722576,32.12426],[113.750293,32.11615],[113.782322,32.184553],[113.752757,32.215951],[113.73859,32.255942],[113.749061,32.272642],[113.768772,32.30148],[113.753989,32.328286],[113.76754,32.370249],[113.735511,32.410677],[113.700402,32.420782],[113.650511,32.412698],[113.624642,32.36115],[113.511925,32.316654],[113.428773,32.270618],[113.376418,32.298445],[113.353628,32.294904],[113.317904,32.327275],[113.333918,32.336377],[113.2366,32.407141],[113.211962,32.431895],[113.158992,32.410677],[113.155912,32.380863],[113.118956,32.375809],[113.107869,32.398551],[113.078919,32.394508],[113.025949,32.425328],[113.000695,32.41674],[112.992072,32.378336],[112.912,32.390971],[112.888594,32.37682],[112.860877,32.396024],[112.776493,32.358623],[112.735841,32.356095],[112.733993,32.356601],[112.724138,32.358623],[112.716747,32.357612],[112.645298,32.368227],[112.612037,32.386928],[112.589248,32.381369],[112.545516,32.404109],[112.530733,32.37682],[112.477147,32.380863],[112.448814,32.34295],[112.390915,32.37126],[112.360118,32.3657],[112.328089,32.321712],[112.206133,32.392992],[112.172873,32.385412],[112.150083,32.411688],[112.155626,32.377326],[112.081098,32.425833],[112.063851,32.474315],[112.014576,32.450077],[111.975772,32.471791],[111.948671,32.51722],[111.890157,32.503089],[111.858128,32.528826],[111.808853,32.536899],[111.713382,32.606497],[111.646245,32.605993],[111.640701,32.634724],[111.577875,32.593388],[111.530448,32.628172],[111.513202,32.674026],[111.458383,32.726402],[111.475629,32.760127],[111.41342,32.757108],[111.380159,32.829049],[111.293311,32.859217],[111.276065,32.903445],[111.255123,32.883846],[111.242804,32.930573],[111.273601,32.971753],[111.258819,33.006389],[111.221862,33.042517],[111.152877,33.039507],[111.192913,33.071609],[111.179363,33.115229],[111.146102,33.12375],[111.12824,33.15532],[111.08882,33.181871],[111.045704,33.169849]]],[[[109.106111,30.570587],[109.101183,30.579346],[109.09872,30.579346],[109.106111,30.570587]]],[[[111.046936,33.202905],[111.035849,33.187881],[111.034001,33.177864],[111.045704,33.169849],[111.046936,33.202905]]],[[[112.716747,32.357612],[112.735841,32.356095],[112.733993,32.356601],[112.724138,32.358623],[112.716747,32.357612]]],[[[112.902145,29.79149],[112.894138,29.783699],[112.923703,29.766557],[112.929246,29.77383],[112.902145,29.79149]]]]}},{"type":"Feature","properties":{"adcode":430000,"name":"湖南省","center":[112.982279,28.19409],"centroid":[111.711649,27.629216],"childrenNum":14,"level":"province","parent":{"adcode":100000},"subFeatureIndex":17,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[112.024431,24.740308],[112.03367,24.771286],[112.124214,24.841364],[112.149467,24.837019],[112.167329,24.859828],[112.175337,24.927685],[112.119902,24.963499],[112.12175,24.989538],[112.155626,25.026419],[112.151931,25.055698],[112.177184,25.106649],[112.187039,25.182494],[112.246785,25.185202],[112.256025,25.159204],[112.302836,25.157037],[112.315771,25.175453],[112.365046,25.191701],[112.414937,25.14241],[112.44327,25.185744],[112.458053,25.152162],[112.562762,25.124531],[112.628052,25.140785],[112.660081,25.132658],[112.712436,25.083344],[112.714899,25.025876],[112.742001,24.99876],[112.743233,24.959701],[112.778341,24.947764],[112.780805,24.896747],[112.873812,24.896747],[112.904609,24.921715],[112.941565,24.915745],[112.994536,24.927142],[113.009934,24.977604],[112.979137,25.03401],[113.004391,25.089306],[112.96805,25.141869],[112.97421,25.168412],[113.034572,25.198199],[112.992688,25.247467],[112.958195,25.254503],[112.897833,25.238264],[112.867036,25.249632],[112.854718,25.337829],[112.891058,25.339993],[112.924319,25.296714],[112.93479,25.325929],[112.969898,25.350269],[113.013014,25.352432],[113.078304,25.382174],[113.096782,25.412449],[113.131274,25.414611],[113.11834,25.445418],[113.176854,25.471355],[113.226129,25.50971],[113.248919,25.514031],[113.311129,25.490264],[113.314208,25.442716],[113.341926,25.448661],[113.373338,25.402719],[113.407215,25.401637],[113.449715,25.359463],[113.479896,25.375145],[113.535946,25.368656],[113.579062,25.34432],[113.584606,25.306453],[113.611707,25.327552],[113.680076,25.334584],[113.686852,25.351891],[113.753373,25.362707],[113.76446,25.333502],[113.814967,25.328634],[113.839605,25.363248],[113.877177,25.380552],[113.887032,25.436772],[113.94493,25.441635],[113.962792,25.528072],[113.986198,25.529153],[113.983118,25.599336],[113.957249,25.611749],[113.913517,25.701299],[113.920293,25.741197],[113.961561,25.77731],[113.971416,25.836036],[114.028082,25.893119],[114.028082,25.98138],[114.008372,26.015806],[114.044096,26.076564],[114.087828,26.06635],[114.121089,26.085702],[114.10569,26.097526],[114.188842,26.121172],[114.237501,26.152333],[114.216559,26.203355],[114.181451,26.214631],[114.102611,26.187783],[114.088444,26.168448],[114.013299,26.184023],[113.962792,26.150722],[113.949242,26.192616],[113.972647,26.20604],[113.978807,26.237716],[114.029314,26.266163],[114.021307,26.288701],[114.047792,26.337518],[114.030546,26.376664],[114.062575,26.406149],[114.085364,26.406149],[114.090292,26.455988],[114.110002,26.482775],[114.07243,26.480096],[114.10877,26.56952],[114.019459,26.587182],[113.996669,26.615543],[113.912901,26.613938],[113.860546,26.664221],[113.853771,26.769532],[113.835909,26.806394],[113.877177,26.859262],[113.890112,26.895562],[113.927068,26.948922],[113.892575,26.964925],[113.86301,27.018252],[113.824206,27.036378],[113.803264,27.099261],[113.771851,27.096598],[113.779242,27.137081],[113.846996,27.222262],[113.872865,27.289828],[113.854387,27.30525],[113.872865,27.346721],[113.872865,27.384988],[113.72812,27.350442],[113.699786,27.331836],[113.657902,27.347253],[113.616635,27.345658],[113.605548,27.38924],[113.632033,27.40518],[113.59754,27.428554],[113.591381,27.467855],[113.627105,27.49971],[113.583374,27.524657],[113.579062,27.545354],[113.608627,27.585143],[113.607395,27.625449],[113.652359,27.663619],[113.696707,27.71979],[113.69917,27.740979],[113.763228,27.799228],[113.756453,27.860091],[113.72812,27.874904],[113.752141,27.93361],[113.822974,27.982243],[113.845148,27.971672],[113.864242,28.004966],[113.914133,27.991227],[113.936307,28.018703],[113.966488,28.017646],[113.970184,28.041418],[114.025618,28.031382],[114.047176,28.057263],[114.025002,28.080499],[113.992357,28.161255],[114.012068,28.174972],[114.068734,28.171806],[114.107538,28.182885],[114.109386,28.205038],[114.143879,28.246694],[114.182067,28.249858],[114.198081,28.29097],[114.2529,28.319423],[114.252284,28.395787],[114.214712,28.403157],[114.172212,28.432632],[114.217175,28.466308],[114.218407,28.48472],[114.15435,28.507337],[114.138335,28.533629],[114.08598,28.558337],[114.132176,28.607211],[114.122321,28.623497],[114.157429,28.761566],[114.137719,28.779926],[114.153734,28.829221],[114.124784,28.843376],[114.076741,28.834464],[114.056415,28.872204],[114.060111,28.902596],[114.028082,28.891069],[114.005292,28.917788],[114.008988,28.955498],[113.973879,28.937692],[113.955401,28.978536],[113.961561,28.999476],[113.94185,29.047097],[113.898119,29.029307],[113.876561,29.038202],[113.882104,29.065407],[113.852539,29.058606],[113.816199,29.105154],[113.775547,29.095219],[113.749677,29.060699],[113.722576,29.104631],[113.696091,29.077437],[113.690547,29.114566],[113.66283,29.16945],[113.691779,29.19662],[113.693011,29.226394],[113.651743,29.225872],[113.609859,29.25146],[113.632033,29.316186],[113.660982,29.333405],[113.674533,29.388172],[113.731199,29.393907],[113.755221,29.446557],[113.677613,29.513763],[113.630801,29.523137],[113.710257,29.555419],[113.73859,29.579363],[113.704098,29.634518],[113.680692,29.64336],[113.663446,29.684443],[113.606164,29.666764],[113.547033,29.675603],[113.540258,29.699519],[113.558736,29.727067],[113.550729,29.768115],[113.575367,29.809147],[113.571671,29.849123],[113.37765,29.703158],[113.277252,29.594976],[113.222433,29.543965],[113.181781,29.485636],[113.145441,29.449163],[113.099861,29.459585],[113.078304,29.438218],[113.057362,29.522616],[113.034572,29.523658],[112.950188,29.473132],[112.912,29.606944],[112.915696,29.620992],[113.005007,29.693801],[113.025949,29.772791],[112.974826,29.732784],[112.944645,29.682883],[112.926782,29.692241],[112.923703,29.766557],[112.894138,29.783699],[112.861493,29.78318],[112.79374,29.735902],[112.788812,29.681323],[112.733378,29.645441],[112.714283,29.648561],[112.693957,29.601741],[112.650842,29.592374],[112.640371,29.607985],[112.572001,29.624113],[112.54182,29.60122],[112.499321,29.629316],[112.439574,29.633997],[112.424792,29.598619],[112.368741,29.541362],[112.333017,29.545007],[112.291133,29.517409],[112.281278,29.536676],[112.303452,29.585609],[112.233851,29.61631],[112.244322,29.659483],[112.202438,29.633997],[112.178416,29.656883],[112.111279,29.659483],[112.089721,29.685482],[112.065699,29.681323],[112.07617,29.743696],[112.008417,29.778505],[111.95483,29.796683],[111.965917,29.832512],[111.925881,29.836665],[111.899396,29.855871],[111.899396,29.855871],[111.861207,29.856909],[111.8107,29.901017],[111.75773,29.92021],[111.723853,29.909317],[111.723853,29.909317],[111.705375,29.890121],[111.669034,29.888565],[111.669034,29.888565],[111.553854,29.894272],[111.527368,29.925916],[111.475629,29.918654],[111.436825,29.930065],[111.394325,29.912948],[111.382623,29.95029],[111.342587,29.944586],[111.3315,29.970512],[111.266826,30.01146],[111.242188,30.040476],[111.031537,30.048765],[110.929907,30.063268],[110.924364,30.111426],[110.851067,30.126439],[110.746973,30.112979],[110.756212,30.054463],[110.712481,30.033223],[110.650887,30.07777],[110.600996,30.054463],[110.531394,30.061197],[110.497518,30.055499],[110.491358,30.019751],[110.557264,29.988137],[110.517228,29.961179],[110.49875,29.91243],[110.538786,29.895828],[110.549873,29.848085],[110.60038,29.839779],[110.642879,29.775907],[110.562807,29.712515],[110.507373,29.692241],[110.467337,29.713034],[110.447011,29.664684],[110.372482,29.633477],[110.339221,29.668324],[110.302265,29.661563],[110.289946,29.6964],[110.219729,29.746814],[110.160599,29.753569],[110.113788,29.789932],[110.02386,29.769674],[109.941325,29.774349],[109.908064,29.763959],[109.869876,29.774869],[109.779333,29.757725],[109.755311,29.733304],[109.760238,29.689122],[109.714659,29.673524],[109.701108,29.636078],[109.717739,29.615269],[109.664768,29.599659],[109.651833,29.625674],[109.578536,29.629836],[109.558826,29.606944],[109.516326,29.626194],[109.488609,29.553336],[109.467051,29.560104],[109.458428,29.513242],[109.433791,29.530948],[109.436254,29.488761],[109.415928,29.497617],[109.418392,29.453332],[109.368501,29.413719],[109.391291,29.372005],[109.343863,29.369398],[109.352487,29.284872],[109.312451,29.25146],[109.257632,29.222738],[109.275494,29.202366],[109.261328,29.161089],[109.274262,29.121885],[109.232378,29.119271],[109.240386,29.086328],[109.312451,29.066453],[109.319842,29.042388],[109.294588,29.015177],[109.292741,28.987436],[109.261328,28.952356],[109.235458,28.882161],[109.246545,28.80143],[109.241002,28.776779],[109.2989,28.7474],[109.294588,28.722211],[109.252704,28.691767],[109.271183,28.671816],[109.192958,28.636104],[109.201581,28.597753],[109.235458,28.61982],[109.252089,28.606685],[109.306907,28.62087],[109.319842,28.579886],[109.273646,28.53836],[109.274262,28.494714],[109.260712,28.46473],[109.264407,28.392628],[109.289045,28.373673],[109.268719,28.33786],[109.275494,28.313101],[109.317994,28.277795],[109.33524,28.293605],[109.388211,28.268307],[109.367885,28.254602],[109.340168,28.19027],[109.33832,28.141731],[109.314298,28.103729],[109.298284,28.036136],[109.335856,28.063073],[109.378972,28.034551],[109.362342,28.007608],[109.319842,27.988585],[109.30198,27.956343],[109.32169,27.868027],[109.346943,27.838396],[109.332777,27.782815],[109.37774,27.736741],[109.366653,27.721909],[109.414081,27.725087],[109.470747,27.680049],[109.45658,27.673689],[109.470131,27.62863],[109.451037,27.586204],[109.461508,27.567637],[109.404841,27.55066],[109.303211,27.47582],[109.300132,27.423774],[109.245313,27.41793],[109.202197,27.450331],[109.167089,27.41793],[109.141835,27.448207],[109.142451,27.418461],[109.103647,27.336621],[109.044517,27.331304],[109.053756,27.293551],[108.983539,27.26802],[108.963213,27.235565],[108.907778,27.204699],[108.926873,27.160512],[108.878829,27.106187],[108.79075,27.084343],[108.877597,27.01612],[108.942887,27.017186],[108.942887,27.017186],[108.940423,27.044907],[109.007561,27.08008],[109.032814,27.104056],[109.128901,27.122701],[109.101183,27.06889],[109.165857,27.066758],[109.21698,27.114711],[109.239154,27.14933],[109.264407,27.131755],[109.33524,27.139212],[109.358646,27.153058],[109.415312,27.154123],[109.441182,27.117907],[109.472595,27.134951],[109.454733,27.069423],[109.486761,27.053968],[109.497848,27.079548],[109.520022,27.058764],[109.555131,26.946788],[109.436254,26.892359],[109.452885,26.861932],[109.486761,26.895562],[109.509551,26.877947],[109.513247,26.84004],[109.497232,26.815474],[109.522486,26.749226],[109.528645,26.743881],[109.554515,26.73533],[109.597015,26.756173],[109.568065,26.726243],[109.528645,26.743881],[109.52187,26.749226],[109.486761,26.759913],[109.447957,26.759913],[109.407305,26.719829],[109.35495,26.693098],[109.283501,26.698445],[109.306291,26.661012],[109.334008,26.646036],[109.35495,26.658873],[109.390675,26.598955],[109.407305,26.533116],[109.381436,26.518659],[109.385747,26.493487],[109.362342,26.472061],[109.38082,26.454381],[109.319842,26.418477],[109.29582,26.350389],[109.271183,26.327863],[109.285965,26.295676],[109.325385,26.29031],[109.351255,26.264016],[109.369733,26.277432],[109.442414,26.289774],[109.467051,26.313917],[109.439334,26.238789],[109.47629,26.148035],[109.513863,26.128157],[109.502776,26.096451],[109.449805,26.101826],[109.452885,26.055598],[109.48245,26.029788],[109.513247,25.998056],[109.560058,26.021184],[109.588391,26.019571],[109.635203,26.047533],[109.649369,26.016882],[109.730057,25.989988],[109.710963,25.954478],[109.693717,25.959321],[109.67955,25.921649],[109.685094,25.880197],[109.768246,25.890427],[109.779333,25.866196],[109.811361,25.877504],[109.826144,25.911422],[109.806434,25.973848],[109.782412,25.996981],[109.814441,26.041081],[109.864332,26.027637],[109.898825,26.095377],[109.904368,26.135679],[109.970274,26.195301],[110.03002,26.166299],[110.099005,26.168985],[110.100853,26.132455],[110.065128,26.050221],[110.100853,26.020108],[110.168606,26.028713],[110.181541,26.060437],[110.24991,26.010965],[110.257301,25.961473],[110.325671,25.975462],[110.373098,26.088927],[110.437772,26.153945],[110.477808,26.179727],[110.495054,26.166299],[110.546793,26.233421],[110.552952,26.283335],[110.584365,26.296749],[110.612083,26.333764],[110.643495,26.308552],[110.673676,26.317135],[110.721104,26.294066],[110.742046,26.313917],[110.73527,26.270993],[110.759292,26.248451],[110.836284,26.255966],[110.939762,26.286554],[110.926212,26.320354],[110.944074,26.326791],[110.94469,26.373447],[110.974255,26.385778],[111.008747,26.35897],[111.008132,26.336982],[111.090667,26.308016],[111.208928,26.30426],[111.204616,26.276359],[111.228022,26.261333],[111.277913,26.272066],[111.293311,26.222148],[111.271754,26.217316],[111.274833,26.183486],[111.258203,26.151796],[111.26621,26.095914],[111.244652,26.078177],[111.267442,26.058824],[111.235413,26.048071],[111.189834,25.953402],[111.230486,25.916267],[111.251428,25.864581],[111.29208,25.854349],[111.297007,25.874274],[111.346282,25.906577],[111.376463,25.906039],[111.383239,25.881812],[111.460231,25.885042],[111.4861,25.859196],[111.43313,25.84627],[111.442369,25.77192],[111.399869,25.744431],[111.30871,25.720171],[111.309942,25.645203],[111.343202,25.602574],[111.324724,25.564249],[111.32842,25.521592],[111.279145,25.42326],[111.210776,25.363248],[111.184906,25.367034],[111.138711,25.303748],[111.103602,25.285351],[111.112841,25.21715],[110.998892,25.161371],[110.98411,25.101772],[110.951465,25.04377],[110.968711,24.975434],[111.009363,24.921172],[111.100522,24.945593],[111.101754,25.035095],[111.139943,25.042144],[111.200921,25.074672],[111.221862,25.106649],[111.274833,25.151078],[111.321645,25.105023],[111.36784,25.108817],[111.375231,25.128324],[111.435593,25.093642],[111.416499,25.047566],[111.467622,25.02208],[111.460231,24.992793],[111.43313,24.979774],[111.434977,24.951562],[111.470086,24.92877],[111.447296,24.892947],[111.449144,24.857113],[111.479325,24.797366],[111.461463,24.728894],[111.431282,24.687574],[111.451608,24.665822],[111.499035,24.667997],[111.526752,24.637538],[111.570484,24.64461],[111.588962,24.690837],[111.641933,24.684856],[111.637621,24.715303],[111.666571,24.760961],[111.708455,24.788673],[111.783599,24.785957],[111.814396,24.770199],[111.868599,24.771829],[111.875374,24.756613],[111.929577,24.75607],[111.951135,24.769655],[112.024431,24.740308]]],[[[109.528645,26.743881],[109.522486,26.749226],[109.52187,26.749226],[109.528645,26.743881]]]]}},{"type":"Feature","properties":{"adcode":440000,"name":"广东省","center":[113.280637,23.125178],"centroid":[113.429919,23.334643],"childrenNum":21,"level":"province","parent":{"adcode":100000},"subFeatureIndex":18,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[113.558736,22.212244],[113.594461,22.228864],[113.595693,22.304186],[113.617866,22.315259],[113.604932,22.339617],[113.627721,22.349027],[113.669605,22.416539],[113.66591,22.438667],[113.624642,22.443092],[113.608627,22.408793],[113.573519,22.41156],[113.631417,22.475723],[113.668373,22.4807],[113.691779,22.514981],[113.740438,22.534329],[113.717033,22.645391],[113.678228,22.726007],[113.733663,22.736494],[113.758301,22.683496],[113.765692,22.665825],[113.803264,22.593463],[113.856851,22.539857],[113.869786,22.459685],[113.893807,22.442539],[113.952937,22.486783],[113.954785,22.491206],[113.976343,22.510558],[114.031778,22.503923],[114.082285,22.512216],[114.095219,22.534329],[114.156813,22.543726],[114.166052,22.559201],[114.222719,22.553122],[114.232574,22.539857],[114.294784,22.563623],[114.321885,22.587385],[114.381631,22.60175],[114.427211,22.589042],[114.472174,22.522168],[114.476486,22.459132],[114.506667,22.438667],[114.549167,22.465769],[114.611377,22.481806],[114.628623,22.513875],[114.614456,22.545384],[114.568261,22.560859],[114.559022,22.583517],[114.603369,22.638763],[114.579964,22.661407],[114.51529,22.655332],[114.567029,22.685705],[114.591666,22.690122],[114.601521,22.730975],[114.689601,22.7674],[114.709927,22.787817],[114.749963,22.764089],[114.73518,22.724351],[114.728405,22.651466],[114.743803,22.632687],[114.746267,22.581859],[114.866375,22.591805],[114.88547,22.538751],[114.922426,22.549253],[114.927969,22.621639],[114.945216,22.645391],[115.039454,22.713862],[115.02344,22.726007],[115.053621,22.747533],[115.076411,22.788368],[115.154635,22.80161],[115.190975,22.77347],[115.190359,22.818711],[115.236555,22.82533],[115.230396,22.776781],[115.319091,22.783402],[115.338185,22.776781],[115.349272,22.712206],[115.381301,22.684048],[115.430576,22.684048],[115.471844,22.697852],[115.575322,22.650914],[115.565467,22.684048],[115.609198,22.753052],[115.541445,22.755259],[115.570394,22.786713],[115.583945,22.82864],[115.654162,22.865591],[115.696046,22.84298],[115.760103,22.834707],[115.788437,22.809885],[115.796444,22.739254],[115.829089,22.734838],[115.883291,22.78561],[115.931334,22.802713],[115.965211,22.800506],[115.99724,22.826985],[116.05637,22.844635],[116.104413,22.816505],[116.14137,22.835259],[116.239304,22.921275],[116.259014,22.932298],[116.302746,22.951588],[116.382818,22.91907],[116.449955,22.936707],[116.50539,22.930645],[116.544194,22.996769],[116.576839,23.014397],[116.557129,23.056253],[116.566368,23.088738],[116.550969,23.109656],[116.566368,23.134424],[116.665534,23.158086],[116.701259,23.198248],[116.74499,23.215299],[116.806584,23.200998],[116.821367,23.240597],[116.798577,23.244996],[116.782563,23.313714],[116.871874,23.4159],[116.871258,23.416449],[116.874338,23.447199],[116.874953,23.447748],[116.895895,23.476295],[116.888504,23.501543],[116.92854,23.530079],[116.963649,23.507031],[117.01046,23.502641],[117.044953,23.539955],[117.085605,23.536663],[117.192778,23.5619],[117.192778,23.629356],[117.147199,23.654027],[117.123793,23.647448],[117.055424,23.694038],[117.048032,23.758687],[117.019083,23.801952],[117.012308,23.855054],[116.981511,23.855602],[116.955642,23.922359],[116.976583,23.931659],[116.981511,23.999471],[116.953178,24.008218],[116.930388,24.064514],[116.9347,24.126794],[116.998757,24.179217],[116.956257,24.216883],[116.933468,24.220157],[116.938395,24.28127],[116.914374,24.287817],[116.919301,24.321087],[116.895895,24.350533],[116.903903,24.369614],[116.839229,24.442097],[116.860787,24.460075],[116.83307,24.496568],[116.796729,24.502014],[116.759157,24.545572],[116.761005,24.583128],[116.815207,24.654944],[116.777635,24.679418],[116.667382,24.658752],[116.623034,24.64189],[116.600861,24.654401],[116.570679,24.621762],[116.530027,24.604895],[116.506622,24.621218],[116.517709,24.652225],[116.485064,24.720196],[116.44626,24.714216],[116.416079,24.744113],[116.419158,24.767482],[116.375427,24.803885],[116.381586,24.82507],[116.417927,24.840821],[116.395137,24.877746],[116.363724,24.87123],[116.345862,24.828872],[116.297202,24.801712],[116.244232,24.793563],[116.251007,24.82507],[116.221442,24.829959],[116.191877,24.877203],[116.153073,24.846795],[116.068073,24.850053],[116.015102,24.905975],[115.985537,24.899461],[115.907929,24.923343],[115.89253,24.936911],[115.885139,24.898918],[115.907313,24.879917],[115.861733,24.863629],[115.863581,24.891318],[115.824161,24.909232],[115.807531,24.862543],[115.790284,24.856027],[115.764415,24.791933],[115.776734,24.774546],[115.756408,24.749004],[115.769342,24.708236],[115.801371,24.705517],[115.780429,24.663103],[115.797676,24.628834],[115.840791,24.584217],[115.843871,24.562446],[115.785357,24.567345],[115.752712,24.546116],[115.68927,24.545027],[115.671408,24.604895],[115.605503,24.62557],[115.569778,24.622306],[115.555611,24.683768],[115.522967,24.702799],[115.476771,24.762591],[115.412714,24.79302],[115.372678,24.774546],[115.358511,24.735416],[115.306772,24.758787],[115.269816,24.749548],[115.258729,24.728894],[115.1842,24.711498],[115.104744,24.667997],[115.083802,24.699537],[115.057317,24.703343],[115.024672,24.669085],[115.00373,24.679418],[114.940288,24.650049],[114.909491,24.661471],[114.893477,24.582584],[114.868839,24.562446],[114.846665,24.602719],[114.827571,24.588026],[114.781376,24.613057],[114.729637,24.608704],[114.73826,24.565168],[114.704999,24.525973],[114.664963,24.583673],[114.627391,24.576598],[114.589819,24.537406],[114.534384,24.559181],[114.429058,24.48622],[114.403189,24.497657],[114.391486,24.563535],[114.363769,24.582584],[114.300943,24.578775],[114.289856,24.619042],[114.258443,24.641346],[114.19069,24.656576],[114.169132,24.689749],[114.27261,24.700624],[114.281849,24.724001],[114.336052,24.749004],[114.342211,24.807145],[114.378551,24.861457],[114.403189,24.877746],[114.395798,24.951019],[114.454928,24.977062],[114.45616,24.99659],[114.506051,24.999844],[114.532536,25.022623],[114.561485,25.077382],[114.604601,25.083886],[114.640326,25.074129],[114.664963,25.10123],[114.735796,25.121822],[114.73518,25.155954],[114.685905,25.173287],[114.693912,25.213902],[114.73518,25.225813],[114.743188,25.274528],[114.714238,25.315651],[114.63663,25.324306],[114.599674,25.385959],[114.541159,25.416773],[114.477718,25.37136],[114.438914,25.376226],[114.43029,25.343779],[114.382863,25.317274],[114.31511,25.33837],[114.2954,25.299961],[114.260291,25.291845],[114.204857,25.29942],[114.190074,25.316733],[114.115545,25.302125],[114.083517,25.275611],[114.055799,25.277775],[114.039785,25.250714],[114.017611,25.273987],[114.029314,25.328093],[114.050256,25.36433],[113.983118,25.415152],[114.003444,25.442716],[113.94493,25.441635],[113.887032,25.436772],[113.877177,25.380552],[113.839605,25.363248],[113.814967,25.328634],[113.76446,25.333502],[113.753373,25.362707],[113.686852,25.351891],[113.680076,25.334584],[113.611707,25.327552],[113.584606,25.306453],[113.579062,25.34432],[113.535946,25.368656],[113.479896,25.375145],[113.449715,25.359463],[113.407215,25.401637],[113.373338,25.402719],[113.341926,25.448661],[113.314208,25.442716],[113.311129,25.490264],[113.248919,25.514031],[113.226129,25.50971],[113.176854,25.471355],[113.11834,25.445418],[113.131274,25.414611],[113.096782,25.412449],[113.078304,25.382174],[113.013014,25.352432],[112.969898,25.350269],[112.93479,25.325929],[112.924319,25.296714],[112.891058,25.339993],[112.854718,25.337829],[112.867036,25.249632],[112.897833,25.238264],[112.958195,25.254503],[112.992688,25.247467],[113.034572,25.198199],[112.97421,25.168412],[112.96805,25.141869],[113.004391,25.089306],[112.979137,25.03401],[113.009934,24.977604],[112.994536,24.927142],[112.941565,24.915745],[112.904609,24.921715],[112.873812,24.896747],[112.780805,24.896747],[112.778341,24.947764],[112.743233,24.959701],[112.742001,24.99876],[112.714899,25.025876],[112.712436,25.083344],[112.660081,25.132658],[112.628052,25.140785],[112.562762,25.124531],[112.458053,25.152162],[112.44327,25.185744],[112.414937,25.14241],[112.365046,25.191701],[112.315771,25.175453],[112.302836,25.157037],[112.256025,25.159204],[112.246785,25.185202],[112.187039,25.182494],[112.177184,25.106649],[112.151931,25.055698],[112.155626,25.026419],[112.12175,24.989538],[112.119902,24.963499],[112.175337,24.927685],[112.167329,24.859828],[112.149467,24.837019],[112.124214,24.841364],[112.03367,24.771286],[112.024431,24.740308],[111.961606,24.721283],[111.939432,24.686487],[111.953598,24.64733],[111.927729,24.629378],[111.936968,24.595645],[111.972077,24.578775],[112.007185,24.534684],[112.009649,24.503103],[111.985011,24.467701],[112.025047,24.438828],[112.057692,24.387057],[112.05954,24.339628],[112.026279,24.294908],[111.990555,24.279634],[111.986243,24.25672],[111.958526,24.263813],[111.912946,24.221795],[111.877222,24.227252],[111.871062,24.176487],[111.886461,24.163929],[111.878454,24.109862],[111.92157,24.012045],[111.940664,23.987989],[111.911714,23.943693],[111.854432,23.947521],[111.845809,23.904305],[111.812548,23.887343],[111.824867,23.832612],[111.8107,23.80688],[111.722621,23.823305],[111.683201,23.822758],[111.683201,23.822758],[111.654868,23.833159],[111.627766,23.78881],[111.621607,23.725819],[111.666571,23.718696],[111.614832,23.65896],[111.615448,23.639225],[111.555702,23.64087],[111.487332,23.626615],[111.479941,23.532822],[111.428818,23.466414],[111.399869,23.469159],[111.383239,23.399423],[111.389398,23.375804],[111.363528,23.340641],[111.376463,23.30437],[111.353058,23.284582],[111.36476,23.240047],[111.388782,23.210349],[111.38447,23.16744],[111.365992,23.14488],[111.377695,23.082132],[111.402333,23.066165],[111.43313,23.073322],[111.433746,23.036428],[111.389398,23.005583],[111.403565,22.99126],[111.362913,22.967568],[111.374615,22.938361],[111.358601,22.889301],[111.218167,22.748085],[111.185522,22.735942],[111.118385,22.744773],[111.058023,22.729871],[111.089435,22.695643],[111.055559,22.648705],[110.997045,22.631582],[110.958856,22.636553],[110.950233,22.61059],[110.896031,22.613352],[110.897878,22.591805],[110.812263,22.576333],[110.778386,22.585174],[110.749437,22.556991],[110.762988,22.518298],[110.740198,22.498947],[110.74143,22.464109],[110.688459,22.477935],[110.712481,22.440879],[110.711249,22.369506],[110.74143,22.361757],[110.749437,22.329653],[110.787009,22.28259],[110.759292,22.274837],[110.725415,22.29588],[110.687843,22.249914],[110.646575,22.220554],[110.678604,22.172901],[110.629329,22.149068],[110.598532,22.162924],[110.602843,22.18343],[110.55788,22.196175],[110.505525,22.14297],[110.456866,22.189526],[110.414366,22.208365],[110.378026,22.164587],[110.34846,22.195621],[110.326287,22.152393],[110.364475,22.125785],[110.35154,22.097508],[110.359547,22.015973],[110.352772,21.97602],[110.374946,21.967695],[110.374946,21.967695],[110.378642,21.939942],[110.378642,21.939942],[110.391576,21.89386],[110.337374,21.887751],[110.290562,21.917736],[110.283787,21.892194],[110.224041,21.882198],[110.224041,21.882198],[110.212338,21.886085],[110.212338,21.886085],[110.196323,21.899968],[110.12857,21.902744],[110.101469,21.86998],[110.050962,21.857205],[109.999839,21.881643],[109.94502,21.84443],[109.940093,21.769419],[109.916071,21.668787],[109.888354,21.652101],[109.888354,21.652101],[109.839695,21.636525],[109.786108,21.637638],[109.778101,21.670455],[109.742992,21.616497],[109.754695,21.556396],[109.788572,21.490702],[109.785492,21.45673],[109.819369,21.445033],[109.894513,21.442248],[109.904368,21.429992],[109.868644,21.365913],[109.770709,21.359783],[109.757775,21.346963],[109.763934,21.226514],[109.674623,21.136671],[109.674007,21.067997],[109.655529,20.929435],[109.664768,20.862343],[109.711579,20.774519],[109.730057,20.719673],[109.74484,20.621124],[109.793499,20.615522],[109.813825,20.574627],[109.811977,20.541566],[109.839695,20.489439],[109.888354,20.475423],[109.895745,20.42776],[109.864948,20.40196],[109.861252,20.376717],[109.916071,20.316677],[109.909296,20.236961],[109.929006,20.211691],[109.993679,20.254368],[110.082375,20.258859],[110.118099,20.219553],[110.168606,20.219553],[110.220345,20.25156],[110.296722,20.249314],[110.349076,20.258859],[110.384185,20.293103],[110.425453,20.291419],[110.452554,20.311064],[110.491358,20.373912],[110.54125,20.42047],[110.550489,20.47262],[110.499982,20.572386],[110.487047,20.640167],[110.466105,20.680485],[110.411286,20.670966],[110.392192,20.682724],[110.407591,20.731987],[110.393424,20.816479],[110.350924,20.84165],[110.327519,20.847802],[110.269004,20.839972],[110.209874,20.860106],[110.184005,20.891979],[110.180925,20.98197],[110.204947,21.003202],[110.208642,21.050684],[110.241903,21.016051],[110.24991,21.045098],[110.296722,21.093684],[110.39096,21.124949],[110.422373,21.190807],[110.451322,21.186343],[110.501213,21.217588],[110.534474,21.204198],[110.626249,21.215915],[110.65951,21.239902],[110.713097,21.3124],[110.768531,21.364799],[110.796248,21.37483],[110.888639,21.367585],[110.929291,21.375945],[111.034617,21.438906],[111.103602,21.455616],[111.171355,21.458401],[111.28284,21.485691],[111.276065,21.443362],[111.250196,21.45116],[111.257587,21.41495],[111.28592,21.41885],[111.353058,21.464528],[111.382623,21.495714],[111.444217,21.514088],[111.494724,21.501282],[111.521825,21.517429],[111.560629,21.50518],[111.609904,21.530234],[111.650556,21.512418],[111.677658,21.529677],[111.693672,21.590345],[111.736788,21.609821],[111.794686,21.61149],[111.832258,21.578659],[111.810084,21.555283],[111.887693,21.578659],[111.941896,21.607039],[111.972692,21.603144],[112.026895,21.633744],[111.997946,21.657107],[111.954214,21.667674],[111.956062,21.710494],[112.036134,21.761637],[112.136532,21.793871],[112.192583,21.789425],[112.196894,21.736624],[112.236315,21.727173],[112.238778,21.702153],[112.353343,21.707157],[112.415553,21.734956],[112.427256,21.789981],[112.445734,21.803317],[112.497473,21.785535],[112.535661,21.753856],[112.647146,21.758302],[112.68595,21.810541],[112.792508,21.921067],[112.841167,21.920512],[112.893522,21.84443],[112.929862,21.838875],[112.989608,21.869424],[113.047507,21.956595],[113.053666,22.012089],[113.032108,22.04593],[113.045659,22.088636],[113.086927,22.12634],[113.091854,22.065344],[113.142977,22.012089],[113.1516,21.979905],[113.235368,21.887751],[113.266781,21.871646],[113.319752,21.909407],[113.330223,21.96159],[113.442324,22.009315],[113.45957,22.043711],[113.527939,22.073663],[113.567359,22.075327],[113.554425,22.107489],[113.554425,22.142416],[113.534715,22.174009],[113.53841,22.209473],[113.558736,22.212244]]],[[[117.024627,23.437865],[116.982743,23.460924],[116.944555,23.440061],[116.951946,23.419744],[117.027091,23.41535],[117.050496,23.400522],[117.081909,23.409309],[117.124409,23.389537],[117.142887,23.400522],[117.142887,23.459826],[117.129336,23.483431],[117.093612,23.459277],[117.058503,23.47355],[117.029554,23.443356],[117.024627,23.437865]]],[[[112.853486,21.740515],[112.876275,21.772753],[112.840551,21.776644],[112.782653,21.739959],[112.724138,21.719945],[112.70566,21.679354],[112.734609,21.666562],[112.780189,21.671568],[112.730914,21.613715],[112.775261,21.564189],[112.817145,21.590345],[112.798667,21.610933],[112.821457,21.655994],[112.804826,21.686583],[112.83316,21.736624],[112.853486,21.740515]]],[[[112.530733,21.583667],[112.563378,21.591458],[112.571385,21.619835],[112.621277,21.606482],[112.665624,21.642644],[112.639139,21.67268],[112.66624,21.683803],[112.663776,21.714386],[112.592327,21.693256],[112.560299,21.666562],[112.57077,21.645982],[112.535045,21.628737],[112.530733,21.583667]]],[[[114.231342,22.016528],[114.311414,22.041493],[114.302791,22.050368],[114.239965,22.03539],[114.231342,22.016528]]],[[[110.43346,21.171276],[110.489511,21.138904],[110.508605,21.140579],[110.544945,21.083633],[110.582517,21.094801],[110.632409,21.210893],[110.589293,21.194713],[110.525235,21.190249],[110.499366,21.213125],[110.445163,21.184669],[110.431612,21.180763],[110.43346,21.171276]]],[[[112.435263,21.663781],[112.456205,21.648763],[112.458669,21.68992],[112.435263,21.663781]]],[[[110.517844,21.079166],[110.459946,21.062971],[110.398352,21.096476],[110.352772,21.079724],[110.305961,21.0881],[110.27578,21.033369],[110.211106,20.986999],[110.201251,20.938378],[110.309656,20.963529],[110.347845,20.984763],[110.407591,20.990351],[110.47288,20.983087],[110.511684,20.916578],[110.535706,20.922727],[110.539402,20.987557],[110.560344,21.061295],[110.517844,21.079166]]],[[[113.765076,21.962145],[113.774315,21.998218],[113.74167,21.991559],[113.765076,21.962145]]],[[[113.723192,21.922177],[113.742902,21.950489],[113.71888,21.951599],[113.723192,21.922177]]],[[[113.142977,21.831653],[113.162071,21.853873],[113.203955,21.861093],[113.167615,21.876644],[113.136818,21.868869],[113.142977,21.831653]]],[[[113.819894,22.396068],[113.813735,22.419858],[113.786634,22.413773],[113.819894,22.396068]]],[[[114.190074,21.986564],[114.229494,21.995443],[114.180835,22.00987],[114.190074,21.986564]]],[[[114.153734,21.97491],[114.171596,22.000437],[114.124169,21.985455],[114.153734,21.97491]]],[[[116.769628,20.771721],[116.761005,20.750456],[116.87249,20.738143],[116.889736,20.683284],[116.849084,20.628405],[116.749302,20.600958],[116.796113,20.582471],[116.862635,20.588633],[116.905135,20.619443],[116.934084,20.676565],[116.925461,20.726949],[116.88604,20.775638],[116.820135,20.780674],[116.769628,20.771721]]],[[[113.025333,21.847762],[113.045659,21.882753],[113.007471,21.869424],[113.025333,21.847762]]],[[[110.405127,20.678245],[110.437772,20.677685],[110.414366,20.710157],[110.405127,20.678245]]],[[[110.644727,20.935584],[110.584365,20.948998],[110.548641,20.908752],[110.562807,20.861224],[110.611467,20.860106],[110.646575,20.917137],[110.644727,20.935584]]],[[[110.556648,20.32734],[110.593604,20.360447],[110.586213,20.381205],[110.556648,20.32734]]],[[[115.943037,21.097592],[115.953508,21.064088],[115.989233,21.035603],[116.040356,21.02052],[116.067457,21.04063],[116.044051,21.110434],[116.024341,21.12439],[115.965211,21.123832],[115.943037,21.097592]]],[[[115.926407,20.981411],[115.939342,20.945644],[115.970139,20.919373],[115.999088,20.922727],[116.000936,20.948439],[115.954124,20.99985],[115.926407,20.981411]]],[[[115.834632,22.722695],[115.834632,22.722143],[115.835248,22.722695],[115.834632,22.722695]]],[[[115.834632,22.723247],[115.834632,22.722695],[115.835248,22.722695],[115.834632,22.723247]]]]}},{"type":"Feature","properties":{"adcode":450000,"name":"广西壮族自治区","center":[108.320004,22.82402],"centroid":[108.7944,23.833381],"childrenNum":14,"level":"province","parent":{"adcode":100000},"subFeatureIndex":19,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[109.48245,26.029788],[109.473211,26.006663],[109.408537,25.967392],[109.435022,25.93349],[109.396834,25.900117],[109.359262,25.836036],[109.339552,25.83442],[109.327849,25.76168],[109.340168,25.731493],[109.296436,25.71424],[109.207125,25.740119],[109.206509,25.788087],[109.147995,25.741736],[109.13198,25.762758],[109.143683,25.795092],[109.095024,25.80533],[109.077778,25.776771],[109.048213,25.790781],[108.989698,25.778926],[108.999553,25.765453],[108.963829,25.732572],[108.940423,25.740119],[108.896076,25.71424],[108.900387,25.682423],[108.953974,25.686738],[108.953974,25.686738],[109.007561,25.734728],[109.043285,25.738502],[109.07901,25.72071],[109.075314,25.693749],[109.030966,25.629556],[109.051908,25.566949],[109.088249,25.550752],[109.024807,25.51241],[108.949046,25.557231],[108.8893,25.543193],[108.890532,25.556151],[108.826474,25.550212],[108.814772,25.526992],[108.781511,25.554531],[108.799989,25.576666],[108.783975,25.628477],[108.724844,25.634952],[108.68912,25.623081],[108.68604,25.587462],[108.660787,25.584763],[108.658323,25.550212],[108.68912,25.533473],[108.634917,25.520512],[108.6072,25.491885],[108.600425,25.432448],[108.62999,25.335666],[108.625062,25.308076],[108.589338,25.335125],[108.585642,25.365952],[108.471693,25.458928],[108.418723,25.443257],[108.400244,25.491344],[108.359592,25.513491],[108.348506,25.536173],[108.308469,25.525912],[108.280752,25.48],[108.241332,25.46217],[108.251803,25.430286],[108.192673,25.458928],[108.162492,25.444878],[108.193289,25.405421],[108.142782,25.390825],[108.152021,25.324306],[108.143398,25.269658],[108.115065,25.210112],[108.080572,25.193867],[108.001732,25.196574],[107.928435,25.155954],[107.872384,25.141327],[107.839124,25.115861],[107.762747,25.125073],[107.789233,25.15487],[107.760283,25.188451],[107.762131,25.229061],[107.741805,25.24043],[107.700537,25.194408],[107.696226,25.219858],[107.661733,25.258833],[107.659885,25.316192],[107.632168,25.310241],[107.599523,25.250714],[107.576734,25.256668],[107.512676,25.209029],[107.472024,25.213902],[107.489886,25.276693],[107.481263,25.299961],[107.432604,25.289139],[107.409198,25.347024],[107.420901,25.392987],[107.375937,25.411908],[107.358691,25.393528],[107.318039,25.401637],[107.308184,25.432988],[107.336517,25.461089],[107.263836,25.543193],[107.232423,25.556691],[107.228728,25.604733],[107.205322,25.607971],[107.185612,25.578825],[107.064272,25.559391],[107.066736,25.50917],[107.015613,25.495666],[106.996519,25.442716],[106.963874,25.437852],[106.987896,25.358922],[107.012533,25.352973],[107.013765,25.275611],[106.975577,25.232851],[106.933077,25.250714],[106.904128,25.231768],[106.888113,25.181953],[106.853005,25.186827],[106.787715,25.17112],[106.764926,25.183036],[106.732281,25.162454],[106.691013,25.179245],[106.644817,25.164621],[106.63989,25.132658],[106.590615,25.08768],[106.551195,25.082802],[106.519782,25.054072],[106.450181,25.033468],[106.442173,25.019369],[106.332536,24.988454],[106.304819,24.973807],[106.253696,24.971094],[106.215508,24.981944],[106.191486,24.95319],[106.145291,24.954275],[106.197645,24.885889],[106.206269,24.851139],[106.173008,24.760417],[106.150218,24.762591],[106.113878,24.714216],[106.047356,24.684312],[106.024566,24.633186],[105.961741,24.677786],[105.942031,24.725088],[105.863806,24.729437],[105.827466,24.702799],[105.767104,24.719109],[105.70551,24.768569],[105.617431,24.78161],[105.607576,24.803885],[105.573083,24.797366],[105.497322,24.809318],[105.493011,24.833217],[105.457286,24.87123],[105.428337,24.930941],[105.365511,24.943423],[105.334099,24.9266],[105.267577,24.929313],[105.251563,24.967296],[105.212758,24.995505],[105.178266,24.985199],[105.157324,24.958616],[105.131454,24.959701],[105.09573,24.92877],[105.096346,24.928228],[105.082179,24.915745],[105.077868,24.918459],[105.039064,24.872859],[105.026745,24.815836],[105.03352,24.787586],[104.899245,24.752809],[104.865985,24.730524],[104.841963,24.676155],[104.771746,24.659839],[104.729246,24.617953],[104.703377,24.645698],[104.628848,24.660927],[104.595587,24.709323],[104.529682,24.731611],[104.489646,24.653313],[104.520443,24.535228],[104.550008,24.518894],[104.575877,24.424661],[104.616529,24.421937],[104.63008,24.397958],[104.610986,24.377246],[104.641783,24.367979],[104.70892,24.321087],[104.721239,24.340173],[104.703377,24.419757],[104.715695,24.441552],[104.74834,24.435559],[104.765587,24.45953],[104.784681,24.443732],[104.83642,24.446456],[104.914028,24.426296],[104.930042,24.411038],[104.979933,24.412673],[105.042759,24.442097],[105.106817,24.414853],[105.111744,24.37234],[105.138846,24.376701],[105.188121,24.347261],[105.196744,24.326541],[105.164715,24.288362],[105.215222,24.214699],[105.24294,24.208695],[105.229389,24.165567],[105.182577,24.167205],[105.20044,24.105491],[105.260186,24.061236],[105.292831,24.074896],[105.273121,24.092927],[105.320548,24.116416],[105.334099,24.094566],[105.395692,24.065607],[105.406163,24.043748],[105.493011,24.016965],[105.533663,24.130071],[105.594641,24.137718],[105.628518,24.126794],[105.649459,24.032816],[105.704278,24.0667],[105.739387,24.059596],[105.765256,24.073804],[105.802212,24.051945],[105.796669,24.023524],[105.841633,24.03063],[105.859495,24.056864],[105.89214,24.040468],[105.908154,24.069432],[105.901995,24.099482],[105.919241,24.122425],[105.963589,24.110954],[105.998081,24.120786],[106.011632,24.099482],[106.04982,24.089649],[106.053516,24.051399],[106.096631,24.018058],[106.091088,23.998924],[106.128044,23.956819],[106.157609,23.891174],[106.192718,23.879135],[106.173008,23.861622],[106.192102,23.824947],[106.136667,23.795381],[106.157609,23.724175],[106.149602,23.665538],[106.120653,23.605229],[106.141595,23.569579],[106.08616,23.524043],[106.071994,23.495506],[106.039965,23.484529],[105.999929,23.447748],[105.986378,23.489469],[105.935871,23.508678],[105.913081,23.499348],[105.89214,23.52514],[105.852103,23.526786],[105.815763,23.507031],[105.805908,23.467512],[105.758481,23.459826],[105.699966,23.40162],[105.637757,23.404366],[105.694423,23.363168],[105.699966,23.327453],[105.649459,23.346136],[105.593409,23.312614],[105.560148,23.257093],[105.526272,23.234548],[105.542902,23.184495],[105.558916,23.177893],[105.574931,23.066165],[105.625438,23.064513],[105.648844,23.078828],[105.724604,23.06231],[105.74185,23.030921],[105.780039,23.022659],[105.805908,22.994565],[105.839169,22.987403],[105.879205,22.916865],[105.893987,22.936707],[105.959277,22.948832],[105.994385,22.93781],[106.019639,22.990709],[106.08616,22.996218],[106.106486,22.980792],[106.153914,22.988505],[106.206885,22.978588],[106.270326,22.907494],[106.258007,22.889852],[106.286957,22.867245],[106.366413,22.857871],[106.37134,22.878273],[106.41384,22.877171],[106.504383,22.91025],[106.525941,22.946628],[106.562282,22.923479],[106.606013,22.925684],[106.631267,22.88103],[106.657136,22.863385],[106.674998,22.891506],[106.716882,22.881582],[106.709491,22.866142],[106.774781,22.812643],[106.776012,22.813746],[106.778476,22.814298],[106.779092,22.813746],[106.779708,22.813195],[106.78094,22.813195],[106.784636,22.812643],[106.796338,22.812091],[106.801882,22.815401],[106.804346,22.816505],[106.808657,22.817608],[106.813585,22.817608],[106.838838,22.803265],[106.820976,22.768504],[106.768621,22.739254],[106.780324,22.708894],[106.756302,22.68957],[106.711955,22.575228],[106.650361,22.575228],[106.61402,22.602303],[106.585071,22.517192],[106.588151,22.472958],[106.560434,22.455813],[106.588767,22.374486],[106.562897,22.345706],[106.663296,22.33076],[106.670071,22.283144],[106.688549,22.260438],[106.7021,22.207257],[106.673151,22.182322],[106.706411,22.160707],[106.691629,22.13521],[106.71565,22.089745],[106.706411,22.021521],[106.683006,21.999882],[106.698404,21.959925],[106.73844,22.008205],[106.790179,22.004876],[106.802498,21.98157],[106.859164,21.986009],[106.926302,21.967695],[106.935541,21.933836],[106.974345,21.923288],[106.999598,21.947714],[107.05996,21.914959],[107.058729,21.887196],[107.018693,21.859427],[107.018077,21.81943],[107.093837,21.803317],[107.148656,21.758858],[107.194851,21.736624],[107.199163,21.718833],[107.242279,21.703265],[107.271844,21.727173],[107.310648,21.733844],[107.356843,21.667674],[107.363619,21.602031],[107.388256,21.594241],[107.431372,21.642088],[107.477567,21.659888],[107.500973,21.613715],[107.486806,21.59591],[107.547168,21.58645],[107.584741,21.614828],[107.603219,21.597579],[107.712856,21.616497],[107.807711,21.655438],[107.837892,21.640419],[107.863761,21.650988],[107.892095,21.622617],[107.893942,21.596466],[107.929051,21.585893],[107.958,21.534131],[108.034376,21.545821],[108.108289,21.508521],[108.193905,21.519656],[108.156332,21.55083],[108.205608,21.597579],[108.241332,21.599805],[108.249955,21.561406],[108.210535,21.505737],[108.230245,21.491259],[108.330027,21.540254],[108.397781,21.533017],[108.492635,21.554727],[108.591802,21.677129],[108.626294,21.67991],[108.658939,21.643757],[108.678033,21.659331],[108.735931,21.628181],[108.734084,21.626512],[108.745786,21.602587],[108.801837,21.626512],[108.83325,21.610933],[108.881293,21.627068],[108.937959,21.589789],[109.093792,21.579215],[109.09872,21.571424],[109.110422,21.568085],[109.138756,21.567528],[109.142451,21.511861],[109.074698,21.489589],[109.039589,21.457844],[109.046365,21.424421],[109.095024,21.419407],[109.138756,21.388762],[109.186183,21.390991],[109.245929,21.425536],[109.41716,21.438906],[109.484914,21.453388],[109.529877,21.437234],[109.540964,21.466199],[109.576689,21.493487],[109.604406,21.523553],[109.612413,21.556953],[109.654913,21.493487],[109.704188,21.462857],[109.785492,21.45673],[109.788572,21.490702],[109.754695,21.556396],[109.742992,21.616497],[109.778101,21.670455],[109.786108,21.637638],[109.839695,21.636525],[109.888354,21.652101],[109.888354,21.652101],[109.916071,21.668787],[109.940093,21.769419],[109.94502,21.84443],[109.999839,21.881643],[110.050962,21.857205],[110.101469,21.86998],[110.12857,21.902744],[110.196323,21.899968],[110.212338,21.886085],[110.212338,21.886085],[110.224041,21.882198],[110.224041,21.882198],[110.283787,21.892194],[110.290562,21.917736],[110.337374,21.887751],[110.391576,21.89386],[110.378642,21.939942],[110.378642,21.939942],[110.374946,21.967695],[110.374946,21.967695],[110.352772,21.97602],[110.359547,22.015973],[110.35154,22.097508],[110.364475,22.125785],[110.326287,22.152393],[110.34846,22.195621],[110.378026,22.164587],[110.414366,22.208365],[110.456866,22.189526],[110.505525,22.14297],[110.55788,22.196175],[110.602843,22.18343],[110.598532,22.162924],[110.629329,22.149068],[110.678604,22.172901],[110.646575,22.220554],[110.687843,22.249914],[110.725415,22.29588],[110.759292,22.274837],[110.787009,22.28259],[110.749437,22.329653],[110.74143,22.361757],[110.711249,22.369506],[110.712481,22.440879],[110.688459,22.477935],[110.74143,22.464109],[110.740198,22.498947],[110.762988,22.518298],[110.749437,22.556991],[110.778386,22.585174],[110.812263,22.576333],[110.897878,22.591805],[110.896031,22.613352],[110.950233,22.61059],[110.958856,22.636553],[110.997045,22.631582],[111.055559,22.648705],[111.089435,22.695643],[111.058023,22.729871],[111.118385,22.744773],[111.185522,22.735942],[111.218167,22.748085],[111.358601,22.889301],[111.374615,22.938361],[111.362913,22.967568],[111.403565,22.99126],[111.389398,23.005583],[111.433746,23.036428],[111.43313,23.073322],[111.402333,23.066165],[111.377695,23.082132],[111.365992,23.14488],[111.38447,23.16744],[111.388782,23.210349],[111.36476,23.240047],[111.353058,23.284582],[111.376463,23.30437],[111.363528,23.340641],[111.389398,23.375804],[111.383239,23.399423],[111.399869,23.469159],[111.428818,23.466414],[111.479941,23.532822],[111.487332,23.626615],[111.555702,23.64087],[111.615448,23.639225],[111.614832,23.65896],[111.666571,23.718696],[111.621607,23.725819],[111.627766,23.78881],[111.654868,23.833159],[111.683201,23.822758],[111.683201,23.822758],[111.722621,23.823305],[111.8107,23.80688],[111.824867,23.832612],[111.812548,23.887343],[111.845809,23.904305],[111.854432,23.947521],[111.911714,23.943693],[111.940664,23.987989],[111.92157,24.012045],[111.878454,24.109862],[111.886461,24.163929],[111.871062,24.176487],[111.877222,24.227252],[111.912946,24.221795],[111.958526,24.263813],[111.986243,24.25672],[111.990555,24.279634],[112.026279,24.294908],[112.05954,24.339628],[112.057692,24.387057],[112.025047,24.438828],[111.985011,24.467701],[112.009649,24.503103],[112.007185,24.534684],[111.972077,24.578775],[111.936968,24.595645],[111.927729,24.629378],[111.953598,24.64733],[111.939432,24.686487],[111.961606,24.721283],[112.024431,24.740308],[111.951135,24.769655],[111.929577,24.75607],[111.875374,24.756613],[111.868599,24.771829],[111.814396,24.770199],[111.783599,24.785957],[111.708455,24.788673],[111.666571,24.760961],[111.637621,24.715303],[111.641933,24.684856],[111.588962,24.690837],[111.570484,24.64461],[111.526752,24.637538],[111.499035,24.667997],[111.451608,24.665822],[111.431282,24.687574],[111.461463,24.728894],[111.479325,24.797366],[111.449144,24.857113],[111.447296,24.892947],[111.470086,24.92877],[111.434977,24.951562],[111.43313,24.979774],[111.460231,24.992793],[111.467622,25.02208],[111.416499,25.047566],[111.435593,25.093642],[111.375231,25.128324],[111.36784,25.108817],[111.321645,25.105023],[111.274833,25.151078],[111.221862,25.106649],[111.200921,25.074672],[111.139943,25.042144],[111.101754,25.035095],[111.100522,24.945593],[111.009363,24.921172],[110.968711,24.975434],[110.951465,25.04377],[110.98411,25.101772],[110.998892,25.161371],[111.112841,25.21715],[111.103602,25.285351],[111.138711,25.303748],[111.184906,25.367034],[111.210776,25.363248],[111.279145,25.42326],[111.32842,25.521592],[111.324724,25.564249],[111.343202,25.602574],[111.309942,25.645203],[111.30871,25.720171],[111.399869,25.744431],[111.442369,25.77192],[111.43313,25.84627],[111.4861,25.859196],[111.460231,25.885042],[111.383239,25.881812],[111.376463,25.906039],[111.346282,25.906577],[111.297007,25.874274],[111.29208,25.854349],[111.251428,25.864581],[111.230486,25.916267],[111.189834,25.953402],[111.235413,26.048071],[111.267442,26.058824],[111.244652,26.078177],[111.26621,26.095914],[111.258203,26.151796],[111.274833,26.183486],[111.271754,26.217316],[111.293311,26.222148],[111.277913,26.272066],[111.228022,26.261333],[111.204616,26.276359],[111.208928,26.30426],[111.090667,26.308016],[111.008132,26.336982],[111.008747,26.35897],[110.974255,26.385778],[110.94469,26.373447],[110.944074,26.326791],[110.926212,26.320354],[110.939762,26.286554],[110.836284,26.255966],[110.759292,26.248451],[110.73527,26.270993],[110.742046,26.313917],[110.721104,26.294066],[110.673676,26.317135],[110.643495,26.308552],[110.612083,26.333764],[110.584365,26.296749],[110.552952,26.283335],[110.546793,26.233421],[110.495054,26.166299],[110.477808,26.179727],[110.437772,26.153945],[110.373098,26.088927],[110.325671,25.975462],[110.257301,25.961473],[110.24991,26.010965],[110.181541,26.060437],[110.168606,26.028713],[110.100853,26.020108],[110.065128,26.050221],[110.100853,26.132455],[110.099005,26.168985],[110.03002,26.166299],[109.970274,26.195301],[109.904368,26.135679],[109.898825,26.095377],[109.864332,26.027637],[109.814441,26.041081],[109.782412,25.996981],[109.806434,25.973848],[109.826144,25.911422],[109.811361,25.877504],[109.779333,25.866196],[109.768246,25.890427],[109.685094,25.880197],[109.67955,25.921649],[109.693717,25.959321],[109.710963,25.954478],[109.730057,25.989988],[109.649369,26.016882],[109.635203,26.047533],[109.588391,26.019571],[109.560058,26.021184],[109.513247,25.998056],[109.48245,26.029788]]],[[[105.096346,24.928228],[105.09573,24.92877],[105.077868,24.918459],[105.082179,24.915745],[105.096346,24.928228]]],[[[109.088249,21.014934],[109.11227,21.02499],[109.117814,21.017727],[109.144299,21.041189],[109.138756,21.067439],[109.09256,21.057386],[109.088865,21.031134],[109.088249,21.014934]]]]}},{"type":"Feature","properties":{"adcode":460000,"name":"海南省","center":[110.33119,20.031971],"centroid":[109.754859,19.189767],"childrenNum":19,"level":"province","parent":{"adcode":100000},"subFeatureIndex":20,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[110.106396,20.026812],[110.042339,19.991384],[109.997375,19.980136],[109.965346,19.993634],[109.898825,19.994196],[109.855093,19.984073],[109.814441,19.993072],[109.76147,19.981261],[109.712195,20.017253],[109.657993,20.01163],[109.585312,19.98801],[109.526797,19.943573],[109.498464,19.873236],[109.411001,19.895184],[109.349407,19.898561],[109.300748,19.917693],[109.25948,19.898561],[109.255784,19.867045],[109.231147,19.863105],[109.159082,19.79048],[109.169553,19.736411],[109.147379,19.704863],[109.093792,19.68965],[109.048829,19.619764],[108.993394,19.587065],[108.92872,19.524468],[108.855424,19.469182],[108.806148,19.450561],[108.765496,19.400894],[108.694047,19.387346],[108.644772,19.349518],[108.609048,19.276661],[108.591186,19.141592],[108.598577,19.055633],[108.630606,19.003017],[108.637997,18.924346],[108.595497,18.872256],[108.593033,18.809386],[108.65278,18.740258],[108.663866,18.67337],[108.641077,18.565614],[108.644772,18.486738],[108.68912,18.447571],[108.776583,18.441894],[108.881293,18.416344],[108.905315,18.389087],[108.944735,18.314107],[109.006329,18.323198],[109.108575,18.323766],[109.138756,18.268081],[109.17448,18.260125],[109.287813,18.264671],[109.355566,18.215221],[109.441182,18.199303],[109.467051,18.173718],[109.527413,18.169169],[109.584696,18.143579],[109.661688,18.175424],[109.726362,18.177698],[109.749767,18.193618],[109.785492,18.339672],[109.919767,18.375457],[110.022629,18.360121],[110.070672,18.376025],[110.090382,18.399309],[110.116867,18.506602],[110.214186,18.578662],[110.246215,18.609859],[110.329366,18.642185],[110.367555,18.631977],[110.499366,18.651824],[110.499366,18.751592],[110.578206,18.784458],[110.590525,18.838841],[110.585597,18.88075],[110.619474,19.152334],[110.676756,19.286264],[110.706321,19.320153],[110.729727,19.378878],[110.787009,19.399765],[110.844292,19.449996],[110.888023,19.518827],[110.920668,19.552668],[111.008747,19.60398],[111.061718,19.612436],[111.071573,19.628784],[111.043856,19.763448],[111.013675,19.850159],[110.966248,20.018377],[110.940994,20.028499],[110.871393,20.01163],[110.808567,20.035808],[110.778386,20.068415],[110.744509,20.074036],[110.717408,20.148778],[110.687843,20.163947],[110.655814,20.134169],[110.562191,20.110006],[110.526467,20.07516],[110.495054,20.077408],[110.387265,20.113378],[110.318279,20.108882],[110.28933,20.056047],[110.243135,20.077408],[110.144585,20.074598],[110.106396,20.026812]]],[[[112.208597,3.876129],[112.241858,3.845677],[112.280046,3.86777],[112.260336,3.917925],[112.219068,3.908969],[112.208597,3.876129]]],[[[113.266165,8.125929],[113.311129,8.177469],[113.343157,8.193463],[113.288955,8.119412],[113.349933,8.172137],[113.386273,8.238479],[113.386273,8.289412],[113.354244,8.304217],[113.353628,8.237887],[113.293882,8.176284],[113.266165,8.125929]]],[[[111.99733,3.848065],[112.015192,3.823583],[112.064467,3.830152],[112.073707,3.865979],[112.03367,3.892251],[111.99733,3.848065]]],[[[111.463311,17.077491],[111.536607,17.104949],[111.4861,17.058039],[111.559397,17.087788],[111.542151,17.11982],[111.452224,17.092936],[111.463311,17.077491]]],[[[117.708319,15.182712],[117.712631,15.118592],[117.726798,15.105303],[117.827812,15.111659],[117.72495,15.131302],[117.720638,15.195418],[117.74466,15.217941],[117.784696,15.16885],[117.838899,15.15903],[117.782848,15.187333],[117.748355,15.230068],[117.715095,15.222561],[117.708319,15.182712]]],[[[112.241858,3.942404],[112.292365,3.946583],[112.288053,3.97345],[112.254177,3.97942],[112.241858,3.942404]]],[[[111.734324,16.19732],[111.779903,16.19732],[111.81686,16.224329],[111.813164,16.261676],[111.782367,16.273741],[111.716462,16.249036],[111.789758,16.250186],[111.790374,16.220307],[111.734324,16.19732]]],[[[111.649324,16.255931],[111.577875,16.208239],[111.56802,16.162834],[111.611136,16.156511],[111.690592,16.211112],[111.606825,16.177779],[111.598817,16.198469],[111.681353,16.262251],[111.649324,16.255931]]],[[[113.896887,7.607204],[113.919677,7.566865],[113.98743,7.536014],[114.058879,7.537794],[114.157429,7.561525],[114.289856,7.617288],[114.368696,7.638642],[114.407501,7.683126],[114.419819,7.765557],[114.464167,7.814771],[114.540543,7.862201],[114.555326,7.891249],[114.540543,7.945783],[114.511594,7.966527],[114.47279,7.968898],[114.414892,7.952895],[114.268298,7.870501],[114.211632,7.786904],[114.095219,7.721082],[114.029314,7.670078],[113.921524,7.639235],[113.896887,7.607204]]],[[[113.976959,8.872888],[114.013299,8.836817],[114.035473,8.783591],[114.060111,8.816119],[114.041017,8.843913],[113.989894,8.878801],[113.976959,8.872888]]],[[[113.956017,8.840365],[113.975111,8.793054],[114.012068,8.798376],[113.977575,8.841548],[113.956017,8.840365]]],[[[111.97454,16.323715],[112.002258,16.306484],[112.07617,16.323715],[112.074938,16.349558],[112.047221,16.360469],[112.002874,16.350707],[111.97454,16.323715]]],[[[111.739251,16.452898],[111.766969,16.470116],[111.786679,16.520039],[111.759577,16.545857],[111.765737,16.495366],[111.739251,16.452898]]],[[[112.216604,8.866383],[112.206133,8.88767],[112.180264,8.862244],[112.216604,8.866383]]],[[[113.792177,7.373422],[113.828518,7.362145],[113.829134,7.383511],[113.792177,7.373422]]],[[[114.194386,8.764664],[114.201161,8.727991],[114.248588,8.724442],[114.222103,8.784773],[114.194386,8.764664]]],[[[112.232619,16.996239],[112.207981,16.987081],[112.222764,16.960751],[112.292981,16.96762],[112.266496,16.993949],[112.232619,16.996239]]],[[[114.689601,10.345648],[114.702536,10.312677],[114.725941,10.319154],[114.747499,10.37214],[114.717318,10.380381],[114.689601,10.345648]]],[[[115.837712,9.709775],[115.861117,9.694438],[115.867277,9.650191],[115.901153,9.67084],[115.925791,9.781734],[115.901153,9.795888],[115.870972,9.778785],[115.837712,9.709775]]],[[[114.617536,9.965688],[114.642173,9.917351],[114.672355,9.927963],[114.685905,9.979245],[114.617536,9.965688]]],[[[113.769387,7.636862],[113.773699,7.601865],[113.814967,7.603051],[113.831597,7.644573],[113.769387,7.636862]]],[[[109.463972,7.344339],[109.463972,7.315254],[109.513247,7.320002],[109.571761,7.373422],[109.654297,7.479648],[109.709115,7.511095],[109.791651,7.524742],[109.938861,7.504569],[109.948716,7.522962],[109.904984,7.55144],[109.816289,7.572797],[109.72205,7.575763],[109.653065,7.559745],[109.536037,7.448792],[109.463972,7.344339]]],[[[116.273181,8.879392],[116.294123,8.858105],[116.332311,8.901269],[116.305826,8.917233],[116.273181,8.879392]]],[[[112.476531,16.001247],[112.570154,16.011027],[112.612037,16.039212],[112.588016,16.070844],[112.462364,16.043813],[112.448814,16.005274],[112.476531,16.001247]]],[[[112.537509,8.846278],[112.57077,8.815527],[112.639755,8.818484],[112.598487,8.859288],[112.537509,8.846278]]],[[[114.469095,10.836261],[114.475254,10.814512],[114.513442,10.848605],[114.565181,10.836261],[114.593514,10.856245],[114.587355,10.909138],[114.55471,10.900911],[114.469095,10.836261]]],[[[112.409393,16.294996],[112.383524,16.265698],[112.411241,16.2634],[112.475915,16.288677],[112.531349,16.285805],[112.536893,16.312228],[112.509176,16.317397],[112.409393,16.294996]]],[[[116.48876,10.395686],[116.461658,10.34918],[116.467202,10.309144],[116.511549,10.297957],[116.566368,10.304434],[116.644592,10.335051],[116.637817,10.365076],[116.514629,10.34918],[116.542346,10.41982],[116.526332,10.426883],[116.48876,10.395686]]],[[[112.349031,16.912088],[112.360734,16.925257],[112.334249,16.962469],[112.30222,16.963041],[112.349031,16.912088]]],[[[111.500267,16.45175],[111.49534,16.4374],[111.545847,16.43453],[111.538455,16.461507],[111.500267,16.45175]]],[[[115.500177,9.897897],[115.54822,9.869007],[115.585177,9.896128],[115.581481,9.917351],[115.518039,9.933857],[115.500177,9.897897]]],[[[114.669891,8.210048],[114.691449,8.18517],[114.74134,8.189316],[114.726557,8.21064],[114.669891,8.210048]]],[[[114.507899,8.120004],[114.530073,8.103415],[114.595978,8.120596],[114.624311,8.149626],[114.595978,8.15792],[114.507899,8.120004]]],[[[115.16757,8.386523],[115.18112,8.345668],[115.235939,8.321982],[115.285214,8.314876],[115.315395,8.356326],[115.299381,8.370537],[115.202678,8.395403],[115.16757,8.386523]]],[[[113.895039,8.00505],[113.904894,7.963564],[113.9708,7.944597],[113.969568,7.974825],[113.940003,8.018088],[113.895039,8.00505]]],[[[115.436119,9.393447],[115.450286,9.345028],[115.469996,9.3592],[115.456445,9.417064],[115.436119,9.393447]]],[[[116.457347,9.174326],[116.477057,9.137103],[116.500462,9.164282],[116.457347,9.174326]]],[[[113.638192,8.976942],[113.654823,8.962163],[113.730583,9.004133],[113.719496,9.020092],[113.644968,8.989355],[113.638192,8.976942]]],[[[114.696992,11.004322],[114.710543,11.001972],[114.793079,11.07657],[114.799854,11.10476],[114.766593,11.110045],[114.710543,11.039567],[114.696992,11.004322]]],[[[114.62,11.432264],[114.652644,11.436957],[114.661884,11.522584],[114.621232,11.518479],[114.62,11.432264]]],[[[114.910723,10.863298],[114.931049,10.841551],[114.959998,10.902087],[114.934129,10.902674],[114.910723,10.863298]]],[[[111.572948,16.470116],[111.578491,16.447158],[111.614216,16.44027],[111.592658,16.490775],[111.572948,16.470116]]],[[[113.939387,8.875253],[113.912285,8.888853],[113.893807,8.862836],[113.916597,8.837999],[113.939387,8.875253]]],[[[109.936397,7.848566],[109.936397,7.823665],[109.988136,7.8124],[110.050346,7.846194],[110.082991,7.896584],[110.078063,7.949339],[110.0331,7.944597],[109.953027,7.888878],[109.936397,7.848566]]],[[[116.727128,11.501473],[116.765316,11.430504],[116.772092,11.445755],[116.738215,11.514961],[116.727128,11.501473]]],[[[111.690592,16.587731],[111.724469,16.560198],[111.717078,16.59404],[111.690592,16.587731]]],[[[112.507328,16.466098],[112.586784,16.525777],[112.575081,16.537251],[112.499321,16.493645],[112.507328,16.466098]]],[[[111.761425,16.061642],[111.791606,16.028859],[111.828563,16.049565],[111.829795,16.070844],[111.761425,16.061642]]],[[[113.845764,10.018733],[113.865474,10.00341],[113.872249,10.123029],[113.856851,10.12185],[113.845764,10.018733]]],[[[114.791847,8.160882],[114.777064,8.114079],[114.812173,8.110524],[114.818332,8.141332],[114.791847,8.160882]]],[[[116.557129,9.745167],[116.566368,9.718623],[116.593469,9.723932],[116.557129,9.745167]]],[[[115.28275,10.191951],[115.288294,10.172513],[115.333257,10.200198],[115.28891,10.211388],[115.28275,10.191951]]],[[[116.832454,10.476908],[116.855243,10.468669],[116.868794,10.495739],[116.832454,10.476908]]],[[[114.703151,16.170307],[114.816484,16.198469],[114.802934,16.215135],[114.704383,16.199044],[114.703151,16.170307]]],[[[115.97753,9.321997],[115.926407,9.311366],[115.943037,9.269433],[115.976298,9.268252],[115.999088,9.293649],[115.97753,9.321997]]],[[[113.660366,9.231039],[113.676997,9.202683],[113.697323,9.225722],[113.660366,9.231039]]],[[[114.665579,7.590001],[114.671739,7.563898],[114.72163,7.59178],[114.703767,7.614915],[114.665579,7.590001]]],[[[114.493116,10.717504],[114.513442,10.722208],[114.562717,10.778064],[114.539312,10.793349],[114.493116,10.717504]]],[[[117.770529,10.773361],[117.798862,10.753371],[117.835819,10.803931],[117.831507,10.838612],[117.801942,10.839788],[117.775457,10.809222],[117.770529,10.773361]]],[[[114.242429,10.242014],[114.263371,10.239658],[114.326197,10.284414],[114.312646,10.300901],[114.265219,10.275581],[114.242429,10.242014]]],[[[114.688985,11.469217],[114.722246,11.429331],[114.737644,11.463938],[114.720398,11.49209],[114.688985,11.469217]]],[[[116.638433,10.503977],[116.653215,10.491031],[116.70865,10.492797],[116.699411,10.517511],[116.638433,10.503977]]],[[[110.459946,8.116449],[110.471032,8.072012],[110.554184,8.093935],[110.599764,8.156735],[110.568351,8.17273],[110.461793,8.128298],[110.459946,8.116449]]],[[[111.463311,8.52504],[111.497187,8.523857],[111.509506,8.550489],[111.463311,8.52504]]],[[[115.258113,8.509652],[115.271048,8.477098],[115.296301,8.510836],[115.258113,8.509652]]],[[[113.221817,8.073789],[113.235984,8.068456],[113.283411,8.111117],[113.269861,8.120004],[113.221817,8.073789]]],[[[114.074893,10.929118],[114.064422,10.904437],[114.110002,10.918541],[114.096451,10.947921],[114.074893,10.929118]]],[[[117.258068,10.320331],[117.299336,10.313855],[117.299952,10.343293],[117.274698,10.358011],[117.258068,10.320331]]],[[[114.212864,16.040937],[114.31203,16.034611],[114.306487,16.057616],[114.268914,16.059342],[114.212864,16.040937]]],[[[110.609003,8.010976],[110.642879,7.989049],[110.641648,8.031125],[110.622553,8.041199],[110.609003,8.010976]]],[[[115.509416,8.490712],[115.521735,8.460523],[115.55438,8.461115],[115.569162,8.49012],[115.558691,8.523265],[115.514344,8.519122],[115.509416,8.490712]]],[[[111.539071,7.54432],[111.542767,7.524742],[111.583419,7.543134],[111.612368,7.592374],[111.566788,7.606017],[111.539071,7.54432]]],[[[111.657947,8.672974],[111.665955,8.622683],[111.717694,8.6499],[111.697368,8.67889],[111.657947,8.672974]]],[[[110.460561,7.799948],[110.487663,7.783346],[110.511684,7.805878],[110.485199,7.827815],[110.460561,7.799948]]],[[[112.345952,8.926101],[112.392763,8.919598],[112.384756,8.946793],[112.345952,8.926101]]],[[[116.469665,9.810041],[116.47952,9.785272],[116.50847,9.79117],[116.490607,9.821246],[116.469665,9.810041]]],[[[111.925265,8.070827],[111.949287,8.05068],[111.994866,8.047125],[112.018888,8.065494],[112.013344,8.093342],[111.95483,8.106377],[111.925265,8.070827]]],[[[114.457392,15.599305],[114.466631,15.576823],[114.491884,15.59354],[114.457392,15.599305]]],[[[114.985252,11.078332],[115.013585,11.063062],[115.021592,11.085967],[114.985252,11.078332]]],[[[114.10569,16.004124],[114.110618,15.978235],[114.132176,16.007575],[114.10569,16.004124]]],[[[116.045283,10.095338],[116.067457,10.065876],[116.09579,10.09357],[116.070537,10.12892],[116.045283,10.095338]]],[[[117.266691,10.69163],[117.348611,10.672811],[117.404661,10.671047],[117.418212,10.702803],[117.369553,10.7422],[117.293176,10.735144],[117.266691,10.69163]]],[[[114.854057,7.244611],[114.819564,7.192957],[114.869455,7.198895],[114.854057,7.244611]]],[[[112.823305,8.910729],[112.859645,8.889444],[112.873196,8.908364],[112.823305,8.910729]]],[[[111.670266,7.651098],[111.707223,7.648725],[111.749722,7.703884],[111.726317,7.729977],[111.691208,7.711593],[111.670266,7.651098]]],[[[112.207981,8.835634],[112.235699,8.827355],[112.241242,8.852783],[112.207981,8.835634]]],[[[112.527654,5.79444],[112.531965,5.766455],[112.562762,5.75931],[112.562146,5.820637],[112.527654,5.79444]]],[[[114.599058,8.846278],[114.645869,8.844504],[114.68221,8.881166],[114.665579,8.900087],[114.61692,8.881166],[114.599058,8.846278]]],[[[114.868223,7.983715],[114.907643,7.951117],[114.914419,8.00742],[114.883006,8.011569],[114.868223,7.983715]]],[[[112.945261,8.410204],[112.985297,8.429149],[112.949572,8.432701],[112.945261,8.410204]]],[[[113.600004,6.961929],[113.580294,6.920344],[113.62341,6.942325],[113.600004,6.961929]]],[[[116.695099,16.345538],[116.708034,16.299591],[116.738831,16.303612],[116.747454,16.360469],[116.717889,16.373676],[116.695099,16.345538]]],[[[117.347995,10.090624],[117.354154,10.06293],[117.385567,10.063519],[117.373864,10.106532],[117.347995,10.090624]]],[[[112.993304,19.472003],[113.038883,19.480466],[113.048123,19.506417],[113.029028,19.52898],[112.993304,19.52616],[112.980369,19.496263],[112.993304,19.472003]]],[[[114.448153,16.034035],[114.485109,16.034611],[114.521449,16.056466],[114.465399,16.067393],[114.448153,16.034035]]],[[[113.832213,19.158552],[113.874097,19.151203],[113.914749,19.172119],[113.920293,19.223551],[113.875945,19.237113],[113.80696,19.222986],[113.799568,19.19925],[113.832213,19.158552]]],[[[112.650842,5.106941],[112.655769,5.055676],[112.682871,5.048522],[112.719211,5.075944],[112.678559,5.121247],[112.650842,5.106941]]],[[[111.638853,7.907254],[111.665339,7.887099],[111.712766,7.887099],[111.713382,7.927408],[111.651788,7.932743],[111.638853,7.907254]]],[[[112.244322,8.874662],[112.281278,8.855148],[112.288669,8.885896],[112.244322,8.874662]]],[[[112.89229,7.844416],[112.929862,7.827815],[112.93171,7.867537],[112.89229,7.844416]]],[[[112.583088,5.56159],[112.606494,5.51751],[112.614501,5.465683],[112.642834,5.489512],[112.616349,5.568737],[112.583088,5.56159]]],[[[112.523342,5.656289],[112.5449,5.616386],[112.565842,5.63068],[112.56153,5.677133],[112.528886,5.687257],[112.523342,5.656289]]],[[[115.361591,13.948985],[115.397315,13.92517],[115.438583,13.943757],[115.423185,13.977443],[115.377605,13.968732],[115.361591,13.948985]]],[[[113.596924,10.240836],[113.617866,10.22199],[113.638192,10.243192],[113.596924,10.240836]]],[[[113.860546,15.477068],[113.893807,15.463802],[113.890112,15.490909],[113.860546,15.477068]]],[[[112.907072,4.993079],[112.943413,4.991887],[112.952652,5.047926],[112.910768,5.038388],[112.907072,4.993079]]],[[[112.557219,5.109326],[112.568922,5.071771],[112.610806,5.091443],[112.601567,5.120055],[112.557219,5.109326]]],[[[112.350263,5.621747],[112.385988,5.615791],[112.385372,5.643187],[112.350263,5.621747]]],[[[112.226459,16.759147],[112.254177,16.751698],[112.262184,16.778057],[112.211061,16.795819],[112.226459,16.759147]]],[[[112.233851,15.69612],[112.25972,15.734718],[112.240626,15.741055],[112.20367,15.71398],[112.233851,15.69612]]],[[[112.612037,5.367973],[112.640371,5.347715],[112.685334,5.371548],[112.690878,5.406702],[112.62374,5.401935],[112.612037,5.367973]]],[[[112.472219,5.73966],[112.496857,5.736683],[112.498089,5.775387],[112.472219,5.73966]]],[[[113.217506,6.306249],[113.230441,6.285429],[113.243991,6.325878],[113.217506,6.306249]]],[[[116.152457,9.579384],[116.189413,9.565221],[116.187565,9.595317],[116.152457,9.579384]]],[[[114.948911,7.508722],[114.960614,7.484988],[115.012353,7.484988],[115.013585,7.525928],[114.948911,7.508722]]],[[[111.553854,7.807656],[111.585267,7.771487],[111.619759,7.840265],[111.603745,7.861608],[111.553854,7.807656]]],[[[113.938771,15.8355],[113.973263,15.805558],[113.9708,15.83953],[113.938771,15.8355]]],[[[114.926122,16.036911],[114.895325,16.036336],[114.910723,16.001823],[114.926122,16.036911]]],[[[116.749302,9.056736],[116.699411,9.049053],[116.70865,9.024229],[116.740679,9.028367],[116.749302,9.056736]]],[[[112.64653,16.385733],[112.681639,16.400661],[112.660081,16.426494],[112.64653,16.385733]]],[[[111.203384,19.92557],[111.203384,19.925007],[111.204,19.92557],[111.204,19.926132],[111.203384,19.92557]]],[[[115.758256,10.461018],[115.776118,10.434534],[115.801987,10.463372],[115.758256,10.461018]]],[[[117.21372,10.735144],[117.187235,10.741612],[117.206945,10.707507],[117.21372,10.735144]]],[[[112.671784,16.331755],[112.701349,16.331755],[112.677943,16.35932],[112.671784,16.331755]]],[[[115.782277,10.541046],[115.795212,10.499858],[115.805067,10.524571],[115.782277,10.541046]]],[[[112.512255,9.544566],[112.50856,9.525679],[112.568922,9.516826],[112.567074,9.554008],[112.512255,9.544566]]],[[[114.610145,15.649447],[114.581195,15.625242],[114.610761,15.615444],[114.610145,15.649447]]],[[[117.299336,11.077745],[117.264227,11.063062],[117.284553,11.02547],[117.304263,11.027232],[117.299336,11.077745]]],[[[117.691073,11.048965],[117.653501,11.046029],[117.655965,11.024882],[117.690457,11.016658],[117.691073,11.048965]]],[[[114.166668,9.38459],[114.175291,9.342075],[114.195617,9.350933],[114.194386,9.391676],[114.166668,9.38459]]],[[[114.714854,9.736909],[114.693296,9.741038],[114.680978,9.707416],[114.704999,9.700337],[114.714854,9.736909]]],[[[112.554139,5.97839],[112.553523,5.942676],[112.575697,5.971247],[112.554139,5.97839]]]]}},{"type":"Feature","properties":{"adcode":500000,"name":"重庆市","center":[106.504962,29.533155],"centroid":[107.8839,30.067297],"childrenNum":38,"level":"province","parent":{"adcode":100000},"subFeatureIndex":21,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.37442,28.525742],[106.403369,28.569901],[106.477282,28.530474],[106.504999,28.544669],[106.466811,28.586193],[106.49268,28.591448],[106.502535,28.661313],[106.528405,28.677591],[106.492064,28.742153],[106.461883,28.761041],[106.45326,28.817162],[106.474202,28.832891],[106.561666,28.756319],[106.56105,28.719062],[106.587535,28.691767],[106.6171,28.691242],[106.617716,28.66709],[106.651593,28.649235],[106.618332,28.645033],[106.63681,28.622972],[106.606629,28.593024],[106.615252,28.549401],[106.567825,28.523638],[106.564745,28.485247],[106.632499,28.503655],[106.697788,28.47683],[106.708259,28.450524],[106.747063,28.467361],[106.726121,28.51838],[106.73844,28.554657],[106.77786,28.563068],[106.756918,28.607211],[106.784636,28.626649],[106.807425,28.589346],[106.830831,28.623497],[106.866556,28.624548],[106.889345,28.695966],[106.86594,28.690192],[106.824056,28.756319],[106.845614,28.780975],[106.872099,28.777304],[106.923222,28.809821],[106.951555,28.766812],[106.988512,28.776254],[106.983584,28.851239],[107.019308,28.861722],[107.016229,28.882685],[107.14188,28.887925],[107.206554,28.868535],[107.194851,28.838134],[107.227496,28.836037],[107.210866,28.817686],[107.219489,28.772582],[107.24659,28.76209],[107.261373,28.792514],[107.327894,28.810869],[107.339597,28.845997],[107.383945,28.848618],[107.41351,28.911502],[107.441227,28.943977],[107.412894,28.960211],[107.396879,28.993718],[107.364235,29.00942],[107.395647,29.041341],[107.369778,29.091558],[107.412278,29.094696],[107.427676,29.128682],[107.408582,29.138091],[107.401807,29.184603],[107.441227,29.203934],[107.486806,29.174153],[107.570574,29.218037],[107.589052,29.150113],[107.605683,29.164747],[107.659885,29.162656],[107.700537,29.141228],[107.749197,29.199754],[107.810791,29.139137],[107.784921,29.048143],[107.823725,29.034016],[107.810175,28.984295],[107.867457,28.960211],[107.882855,29.00628],[107.908725,29.007327],[107.925971,29.032446],[108.026369,29.039772],[108.070717,29.086328],[108.150173,29.053375],[108.193289,29.072207],[108.256115,29.040295],[108.277673,29.091558],[108.306622,29.079006],[108.297999,29.045527],[108.319556,28.961258],[108.345426,28.943453],[108.357745,28.893165],[108.346658,28.859625],[108.352817,28.815589],[108.386078,28.803003],[108.385462,28.772058],[108.347274,28.736381],[108.332491,28.679166],[108.439049,28.634003],[108.501258,28.626649],[108.50249,28.63768],[108.575787,28.659738],[108.636149,28.621396],[108.604736,28.590922],[108.610896,28.539412],[108.573939,28.531],[108.586874,28.463678],[108.609664,28.43579],[108.609048,28.407368],[108.576403,28.38631],[108.580099,28.343128],[108.611512,28.324691],[108.667562,28.334173],[108.656475,28.359981],[108.697127,28.401051],[108.688504,28.422106],[108.640461,28.456838],[108.657091,28.47683],[108.700207,28.48209],[108.709446,28.501026],[108.746402,28.45105],[108.780279,28.42579],[108.759953,28.389995],[108.783359,28.380518],[108.761801,28.304143],[108.726692,28.282011],[108.738395,28.228241],[108.772888,28.212949],[108.821547,28.245113],[108.855424,28.199764],[108.89546,28.219804],[108.923793,28.217167],[108.929952,28.19027],[109.005713,28.162837],[109.026655,28.220331],[109.086401,28.184467],[109.101799,28.202401],[109.081473,28.247749],[109.117198,28.277795],[109.152306,28.349975],[109.153538,28.417369],[109.191726,28.471043],[109.23361,28.474726],[109.274262,28.494714],[109.273646,28.53836],[109.319842,28.579886],[109.306907,28.62087],[109.252089,28.606685],[109.235458,28.61982],[109.201581,28.597753],[109.192958,28.636104],[109.271183,28.671816],[109.252704,28.691767],[109.294588,28.722211],[109.2989,28.7474],[109.241002,28.776779],[109.246545,28.80143],[109.235458,28.882161],[109.261328,28.952356],[109.292741,28.987436],[109.294588,29.015177],[109.319842,29.042388],[109.312451,29.066453],[109.240386,29.086328],[109.232378,29.119271],[109.215748,29.145409],[109.162777,29.180946],[109.139372,29.168927],[109.110422,29.21647],[109.141835,29.270256],[109.106727,29.288526],[109.11227,29.361053],[109.060531,29.403292],[109.034662,29.360531],[108.999553,29.36366],[108.983539,29.332883],[108.919481,29.3261],[108.934264,29.399643],[108.927488,29.435612],[108.884373,29.440824],[108.866511,29.470527],[108.888684,29.502305],[108.878213,29.539279],[108.913322,29.574679],[108.901003,29.604863],[108.870206,29.596537],[108.888068,29.628795],[108.844337,29.658443],[108.781511,29.635558],[108.797525,29.660003],[108.786438,29.691721],[108.752562,29.649082],[108.690968,29.689642],[108.676801,29.749412],[108.680497,29.800319],[108.658939,29.854833],[108.601041,29.863656],[108.556077,29.818493],[108.52528,29.770713],[108.548686,29.749412],[108.504954,29.728626],[108.504338,29.707836],[108.460606,29.741098],[108.437201,29.741098],[108.442744,29.778505],[108.422418,29.772791],[108.424266,29.815897],[108.371295,29.841337],[108.433505,29.880262],[108.467998,29.864175],[108.516041,29.885451],[108.517889,29.9394],[108.536367,29.983472],[108.532055,30.051873],[108.513577,30.057571],[108.546222,30.104178],[108.56778,30.157491],[108.551766,30.1637],[108.581947,30.255759],[108.54499,30.269716],[108.524048,30.309506],[108.501258,30.314673],[108.460606,30.35961],[108.431041,30.354446],[108.402092,30.376649],[108.430425,30.416397],[108.411331,30.438586],[108.42673,30.492233],[108.472925,30.487076],[108.512961,30.501515],[108.556077,30.487592],[108.56778,30.468508],[108.6497,30.53915],[108.642925,30.578831],[108.688504,30.58759],[108.698975,30.54482],[108.743939,30.494812],[108.789518,30.513374],[108.808612,30.491202],[108.838793,30.503062],[108.893612,30.565434],[108.971836,30.627766],[109.006329,30.626736],[109.042669,30.655571],[109.071002,30.640125],[109.111654,30.646303],[109.106111,30.61077],[109.105495,30.585529],[109.102415,30.580377],[109.101183,30.579346],[109.106111,30.570587],[109.103647,30.565949],[109.143683,30.521108],[109.191726,30.545851],[109.191726,30.545851],[109.245313,30.580892],[109.299516,30.630341],[109.314298,30.599953],[109.36111,30.551004],[109.337088,30.521623],[109.35495,30.487076],[109.418392,30.559766],[109.435638,30.595832],[109.535421,30.664837],[109.543428,30.63961],[109.574225,30.646818],[109.590855,30.69366],[109.625348,30.702923],[109.661072,30.738936],[109.656761,30.760538],[109.701724,30.783677],[109.780564,30.848437],[109.828608,30.864364],[109.894513,30.899803],[109.943788,30.878746],[110.008462,30.883369],[110.019549,30.829425],[110.048498,30.800642],[110.082375,30.799614],[110.151976,30.911613],[110.153824,30.953708],[110.172918,30.978853],[110.140889,30.987062],[110.140273,31.030661],[110.120563,31.0322],[110.119947,31.088592],[110.147048,31.116776],[110.180309,31.121899],[110.200019,31.158779],[110.180309,31.179774],[110.155671,31.279564],[110.161831,31.314338],[110.118715,31.409899],[110.054042,31.410921],[110.036795,31.436966],[109.98752,31.474744],[109.94502,31.47066],[109.969658,31.508935],[109.894513,31.519139],[109.837847,31.555354],[109.727594,31.548214],[109.745456,31.598182],[109.76455,31.602769],[109.737449,31.628761],[109.731289,31.700582],[109.683246,31.719929],[109.622268,31.711783],[109.585928,31.726546],[109.549587,31.73011],[109.502776,31.716365],[109.446109,31.722983],[109.381436,31.705165],[109.281654,31.716874],[109.282885,31.743343],[109.253936,31.759628],[109.279806,31.776418],[109.27611,31.79931],[109.195422,31.817618],[109.191111,31.85575],[109.123357,31.892851],[109.085785,31.929428],[108.986619,31.980205],[108.902235,31.984774],[108.837561,32.039072],[108.78767,32.04871],[108.75133,32.076098],[108.734084,32.106519],[108.676801,32.10297],[108.585026,32.17189],[108.543758,32.177969],[108.509882,32.201266],[108.480317,32.182527],[108.399013,32.194176],[108.370063,32.172397],[108.379918,32.154158],[108.379918,32.154158],[108.379303,32.153652],[108.379303,32.153652],[108.399628,32.147065],[108.452599,32.090296],[108.42981,32.061391],[108.372527,32.077112],[108.344194,32.067477],[108.362056,32.035521],[108.329411,32.020299],[108.370063,31.988835],[108.351585,31.971575],[108.307238,31.997463],[108.259194,31.967006],[108.343578,31.860834],[108.386078,31.854226],[108.391005,31.829822],[108.429194,31.809482],[108.455063,31.814059],[108.462454,31.780488],[108.535135,31.757592],[108.50557,31.734182],[108.514809,31.693963],[108.546838,31.665442],[108.519121,31.665952],[108.468614,31.636404],[108.442744,31.633856],[108.390389,31.591555],[108.386078,31.544134],[108.339266,31.539033],[108.344194,31.512506],[108.254883,31.49873],[108.233941,31.506894],[108.191441,31.492096],[108.193289,31.467598],[108.224086,31.464024],[108.216079,31.41041],[108.153869,31.371073],[108.185898,31.336831],[108.095354,31.268311],[108.038688,31.252964],[108.031297,31.217144],[108.07626,31.231985],[108.089811,31.204859],[108.025753,31.116263],[108.009123,31.109602],[108.026985,31.061938],[108.060246,31.052197],[108.00358,31.025533],[107.983254,30.983983],[107.942602,30.989114],[107.948145,30.918802],[107.994956,30.908533],[107.956152,30.882855],[107.851443,30.792931],[107.788001,30.81966],[107.763979,30.817091],[107.760899,30.862823],[107.739957,30.884396],[107.693146,30.875665],[107.645103,30.821202],[107.57735,30.847924],[107.515756,30.854603],[107.483111,30.838675],[107.498509,30.809381],[107.454162,30.771851],[107.454162,30.771851],[107.424597,30.74048],[107.458473,30.704981],[107.477567,30.664837],[107.516987,30.644759],[107.485575,30.598408],[107.427676,30.547397],[107.443075,30.53348],[107.408582,30.521623],[107.368546,30.468508],[107.338981,30.386459],[107.288474,30.337402],[107.257677,30.267131],[107.221337,30.213878],[107.103076,30.090198],[107.080286,30.094341],[107.084598,30.063786],[107.058113,30.043066],[107.055649,30.040476],[107.054417,30.040994],[107.053801,30.043584],[107.02054,30.036849],[106.981736,30.08502],[106.976193,30.083467],[106.94478,30.037367],[106.913367,30.025451],[106.862244,30.033223],[106.83699,30.049801],[106.825904,30.03115],[106.825904,30.03115],[106.785252,30.01716],[106.732281,30.027005],[106.724274,30.058607],[106.699636,30.074145],[106.700252,30.111944],[106.672535,30.122297],[106.677462,30.156974],[106.631883,30.186464],[106.611557,30.235596],[106.612173,30.235596],[106.611557,30.235596],[106.612173,30.235596],[106.612173,30.235596],[106.612789,30.235596],[106.612789,30.235596],[106.642354,30.246454],[106.611557,30.292455],[106.560434,30.31519],[106.545035,30.296589],[106.49884,30.295556],[106.43971,30.308473],[106.428623,30.254725],[106.401521,30.242318],[106.349167,30.24542],[106.334384,30.225772],[106.306667,30.238182],[106.296196,30.205603],[106.264167,30.20974],[106.260471,30.19681],[106.232754,30.185947],[106.180399,30.233011],[106.168696,30.303823],[106.132356,30.323972],[106.132972,30.30279],[106.07261,30.333786],[106.031958,30.373551],[105.943263,30.372002],[105.900763,30.405042],[105.84656,30.410203],[105.825618,30.436006],[105.792357,30.427234],[105.760329,30.384393],[105.754785,30.342567],[105.714749,30.322939],[105.720292,30.252657],[105.720292,30.252657],[105.670401,30.254208],[105.624822,30.275918],[105.619894,30.234045],[105.662394,30.210258],[105.642684,30.186464],[105.56138,30.183878],[105.550909,30.179222],[105.536127,30.152834],[105.596489,30.159043],[105.574315,30.130579],[105.580474,30.129544],[105.582938,30.127474],[105.582938,30.12385],[105.642068,30.101072],[105.638988,30.076216],[105.676561,30.06793],[105.687032,30.038922],[105.719677,30.042548],[105.753553,30.018196],[105.723372,29.975177],[105.730763,29.95755],[105.70243,29.924879],[105.717213,29.893753],[105.738771,29.891159],[105.707974,29.840818],[105.610655,29.837184],[105.582938,29.819013],[105.574931,29.744216],[105.529351,29.707836],[105.481924,29.718232],[105.476996,29.674564],[105.419714,29.688082],[105.38091,29.628275],[105.347649,29.621512],[105.332867,29.592374],[105.296526,29.571035],[105.305149,29.53199],[105.337794,29.459064],[105.334099,29.441345],[105.387069,29.455416],[105.387069,29.455416],[105.399388,29.43874],[105.372903,29.421018],[105.426489,29.419454],[105.441888,29.400686],[105.418482,29.352185],[105.42033,29.31149],[105.465294,29.322969],[105.459134,29.288526],[105.513337,29.283306],[105.521344,29.264513],[105.557684,29.278608],[105.631597,29.280174],[105.647612,29.253027],[105.695039,29.287482],[105.712285,29.219082],[105.703662,29.176766],[105.728916,29.134432],[105.752321,29.129727],[105.728916,29.1062],[105.757865,29.069068],[105.74185,29.039249],[105.766488,29.013607],[105.762176,28.9911],[105.801596,28.958116],[105.797285,28.936121],[105.830546,28.944501],[105.852719,28.927217],[105.910002,28.920407],[105.969132,28.965971],[106.001161,28.973824],[106.040581,28.955498],[106.049204,28.906263],[106.070762,28.919884],[106.101559,28.898928],[106.14837,28.901548],[106.173008,28.920407],[106.206885,28.904691],[106.264783,28.845997],[106.245689,28.817686],[106.267863,28.779402],[106.274022,28.739004],[106.305435,28.704365],[106.304203,28.64976],[106.346703,28.583565],[106.33192,28.55308],[106.37442,28.525742]]],[[[109.105495,30.585529],[109.106111,30.61077],[109.09256,30.578831],[109.09872,30.579346],[109.101183,30.579346],[109.102415,30.580377],[109.105495,30.585529]]],[[[105.582938,30.12385],[105.582938,30.127474],[105.580474,30.129544],[105.574315,30.130579],[105.582938,30.12385]]],[[[109.09872,30.579346],[109.09256,30.578831],[109.103647,30.565949],[109.106111,30.570587],[109.09872,30.579346]]],[[[107.058113,30.043066],[107.053801,30.043584],[107.054417,30.040994],[107.055649,30.040476],[107.058113,30.043066]]]]}},{"type":"Feature","properties":{"adcode":510000,"name":"四川省","center":[104.065735,30.659462],"centroid":[102.693453,30.674545],"childrenNum":21,"level":"province","parent":{"adcode":100000},"subFeatureIndex":22,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[101.167885,27.198311],[101.170349,27.175421],[101.145095,27.103523],[101.157414,27.094999],[101.136472,27.023584],[101.228863,26.981992],[101.227015,26.959057],[101.264587,26.955323],[101.267667,26.903034],[101.311399,26.903034],[101.365602,26.883819],[101.399478,26.841642],[101.358826,26.771669],[101.387159,26.753501],[101.389623,26.723036],[101.435819,26.740675],[101.458608,26.731054],[101.445674,26.77434],[101.466,26.786629],[101.513427,26.768463],[101.453065,26.692563],[101.481398,26.673313],[101.461072,26.640687],[101.461688,26.606447],[101.402558,26.604841],[101.395783,26.591998],[101.422884,26.53151],[101.458608,26.49563],[101.506652,26.499915],[101.530057,26.467239],[101.565782,26.454381],[101.637847,26.388995],[101.635383,26.357361],[101.660636,26.346635],[101.64031,26.318745],[101.597195,26.303187],[101.586108,26.279579],[101.630455,26.224832],[101.690202,26.241473],[101.737013,26.219463],[101.773353,26.168448],[101.807846,26.156093],[101.796759,26.114723],[101.839875,26.082477],[101.835563,26.04592],[101.857737,26.049146],[101.899621,26.099139],[101.929186,26.105588],[101.954439,26.084627],[102.020961,26.096451],[102.080091,26.065275],[102.107808,26.068501],[102.152156,26.10935],[102.174946,26.146961],[102.242699,26.190468],[102.245163,26.212483],[102.349257,26.244694],[102.392372,26.296749],[102.440416,26.300505],[102.542046,26.338591],[102.570995,26.362723],[102.629509,26.336982],[102.638748,26.307479],[102.60056,26.250598],[102.659074,26.221611],[102.709581,26.210336],[102.739762,26.268846],[102.785342,26.298895],[102.833385,26.306406],[102.878964,26.364332],[102.893131,26.338591],[102.975667,26.340736],[102.998457,26.371839],[102.988602,26.413117],[102.989833,26.482775],[103.030485,26.485989],[103.052659,26.514374],[103.052659,26.555602],[103.035413,26.556673],[103.026174,26.664221],[103.005232,26.679195],[103.008312,26.710741],[102.983674,26.76686],[102.991681,26.775409],[102.966428,26.837904],[102.949181,26.843244],[102.896211,26.91264],[102.894979,27.001724],[102.870957,27.026782],[102.913457,27.133886],[102.904218,27.227584],[102.883276,27.258444],[102.883892,27.299401],[102.899906,27.317481],[102.941174,27.405711],[102.989833,27.367983],[103.055739,27.40943],[103.080992,27.396679],[103.141355,27.420586],[103.144434,27.450331],[103.19063,27.523596],[103.232514,27.56976],[103.2861,27.561802],[103.29226,27.632872],[103.349542,27.678459],[103.369868,27.708664],[103.393274,27.709194],[103.461027,27.779638],[103.487512,27.794992],[103.509686,27.843687],[103.502295,27.910343],[103.55465,27.978543],[103.515846,27.965329],[103.486281,28.033495],[103.459179,28.021345],[103.430846,28.044587],[103.470266,28.122204],[103.533092,28.168641],[103.573128,28.230877],[103.643961,28.260401],[103.692004,28.232459],[103.701859,28.198709],[103.740048,28.23615],[103.770845,28.233514],[103.828743,28.285173],[103.877402,28.316262],[103.85338,28.356822],[103.860156,28.383677],[103.828743,28.44],[103.829975,28.459995],[103.781931,28.525216],[103.802873,28.563068],[103.838598,28.587244],[103.833054,28.605109],[103.850917,28.66709],[103.887873,28.61982],[103.910047,28.631377],[103.953779,28.600906],[104.05972,28.6277],[104.09606,28.603533],[104.117618,28.634003],[104.170589,28.642932],[104.230951,28.635579],[104.252509,28.660788],[104.277147,28.631902],[104.314719,28.615617],[104.372617,28.649235],[104.425588,28.626649],[104.417581,28.598279],[104.375697,28.5946],[104.355987,28.555183],[104.323342,28.540989],[104.260516,28.536257],[104.267908,28.499448],[104.254357,28.403683],[104.282074,28.343128],[104.314103,28.306778],[104.343052,28.334173],[104.384936,28.329959],[104.392943,28.291497],[104.420045,28.269889],[104.44961,28.269889],[104.462544,28.241422],[104.442834,28.211366],[104.402182,28.202928],[104.406494,28.173389],[104.444682,28.16231],[104.448994,28.113758],[104.40095,28.091586],[104.373233,28.051454],[104.304248,28.050926],[104.30856,28.036136],[104.362762,28.012891],[104.40095,27.952114],[104.44961,27.927794],[104.508124,27.878078],[104.52537,27.889187],[104.573413,27.840512],[104.607906,27.857974],[104.63316,27.850567],[104.676275,27.880723],[104.743413,27.901881],[104.761891,27.884426],[104.796999,27.901352],[104.842579,27.900294],[104.888158,27.914574],[104.918339,27.938897],[104.903557,27.962158],[104.975006,28.020816],[104.980549,28.063073],[105.002107,28.064129],[105.061853,28.096866],[105.119752,28.07205],[105.168411,28.071522],[105.186889,28.054623],[105.167795,28.021345],[105.186273,27.995454],[105.218302,27.990698],[105.247867,28.009193],[105.270657,27.99704],[105.284823,27.935725],[105.233084,27.895534],[105.25957,27.827811],[105.313157,27.810874],[105.273736,27.794992],[105.293447,27.770637],[105.290367,27.712373],[105.308229,27.704955],[105.353809,27.748924],[105.44004,27.775402],[105.508409,27.769048],[105.560148,27.71979],[105.605112,27.715552],[105.62359,27.666269],[105.664242,27.683759],[105.720292,27.683759],[105.722756,27.706015],[105.76772,27.7182],[105.848408,27.707074],[105.868118,27.732504],[105.922937,27.746805],[105.92848,27.729855],[105.985146,27.749983],[106.023335,27.746805],[106.063987,27.776991],[106.120653,27.779638],[106.193334,27.75422],[106.242609,27.767459],[106.306667,27.808756],[106.337464,27.859033],[106.325145,27.898708],[106.304819,27.899237],[106.307899,27.936782],[106.328225,27.952643],[106.286341,28.007079],[106.246305,28.011835],[106.266631,28.066769],[106.206885,28.134343],[106.145291,28.162837],[106.093552,28.162837],[105.975907,28.107952],[105.943878,28.143314],[105.895219,28.119565],[105.860727,28.159672],[105.889676,28.237732],[105.848408,28.255656],[105.824386,28.306251],[105.78743,28.335753],[105.76464,28.308359],[105.76464,28.308359],[105.737539,28.30309],[105.730147,28.271997],[105.68888,28.284119],[105.639604,28.324164],[105.655003,28.362615],[105.643916,28.431053],[105.612503,28.438947],[105.62359,28.517854],[105.68272,28.534154],[105.693191,28.58882],[105.712901,28.586718],[105.74493,28.616668],[105.757249,28.590397],[105.78435,28.610889],[105.808372,28.599855],[105.884748,28.595126],[105.889676,28.670765],[105.937719,28.686517],[105.966668,28.761041],[106.001161,28.743727],[106.030726,28.694917],[106.085544,28.681792],[106.103407,28.636104],[106.14837,28.642932],[106.17116,28.629275],[106.184711,28.58882],[106.254928,28.539412],[106.2925,28.537309],[106.304819,28.505233],[106.349167,28.473674],[106.379348,28.479986],[106.37442,28.525742],[106.33192,28.55308],[106.346703,28.583565],[106.304203,28.64976],[106.305435,28.704365],[106.274022,28.739004],[106.267863,28.779402],[106.245689,28.817686],[106.264783,28.845997],[106.206885,28.904691],[106.173008,28.920407],[106.14837,28.901548],[106.101559,28.898928],[106.070762,28.919884],[106.049204,28.906263],[106.040581,28.955498],[106.001161,28.973824],[105.969132,28.965971],[105.910002,28.920407],[105.852719,28.927217],[105.830546,28.944501],[105.797285,28.936121],[105.801596,28.958116],[105.762176,28.9911],[105.766488,29.013607],[105.74185,29.039249],[105.757865,29.069068],[105.728916,29.1062],[105.752321,29.129727],[105.728916,29.134432],[105.703662,29.176766],[105.712285,29.219082],[105.695039,29.287482],[105.647612,29.253027],[105.631597,29.280174],[105.557684,29.278608],[105.521344,29.264513],[105.513337,29.283306],[105.459134,29.288526],[105.465294,29.322969],[105.42033,29.31149],[105.418482,29.352185],[105.441888,29.400686],[105.426489,29.419454],[105.372903,29.421018],[105.399388,29.43874],[105.387069,29.455416],[105.387069,29.455416],[105.334099,29.441345],[105.337794,29.459064],[105.305149,29.53199],[105.296526,29.571035],[105.332867,29.592374],[105.347649,29.621512],[105.38091,29.628275],[105.419714,29.688082],[105.476996,29.674564],[105.481924,29.718232],[105.529351,29.707836],[105.574931,29.744216],[105.582938,29.819013],[105.610655,29.837184],[105.707974,29.840818],[105.738771,29.891159],[105.717213,29.893753],[105.70243,29.924879],[105.730763,29.95755],[105.723372,29.975177],[105.753553,30.018196],[105.719677,30.042548],[105.687032,30.038922],[105.676561,30.06793],[105.638988,30.076216],[105.642068,30.101072],[105.582938,30.12385],[105.574315,30.130579],[105.596489,30.159043],[105.536127,30.152834],[105.550909,30.179222],[105.556453,30.187499],[105.558916,30.18543],[105.56138,30.183878],[105.642684,30.186464],[105.662394,30.210258],[105.619894,30.234045],[105.624822,30.275918],[105.670401,30.254208],[105.720292,30.252657],[105.720292,30.252657],[105.714749,30.322939],[105.754785,30.342567],[105.760329,30.384393],[105.792357,30.427234],[105.825618,30.436006],[105.84656,30.410203],[105.900763,30.405042],[105.943263,30.372002],[106.031958,30.373551],[106.07261,30.333786],[106.132972,30.30279],[106.132356,30.323972],[106.168696,30.303823],[106.180399,30.233011],[106.232754,30.185947],[106.260471,30.19681],[106.260471,30.204051],[106.260471,30.207672],[106.264167,30.20974],[106.296196,30.205603],[106.306667,30.238182],[106.334384,30.225772],[106.349167,30.24542],[106.401521,30.242318],[106.428623,30.254725],[106.43971,30.308473],[106.49884,30.295556],[106.545035,30.296589],[106.560434,30.31519],[106.611557,30.292455],[106.642354,30.246454],[106.612789,30.235596],[106.612789,30.235596],[106.612173,30.235596],[106.612173,30.235596],[106.611557,30.235596],[106.612173,30.235596],[106.611557,30.235596],[106.631883,30.186464],[106.677462,30.156974],[106.672535,30.122297],[106.700252,30.111944],[106.699636,30.074145],[106.724274,30.058607],[106.732281,30.027005],[106.785252,30.01716],[106.825904,30.03115],[106.825904,30.03115],[106.83699,30.049801],[106.862244,30.033223],[106.913367,30.025451],[106.94478,30.037367],[106.976193,30.083467],[106.975577,30.088127],[106.976809,30.088127],[106.977425,30.087609],[106.978656,30.087609],[106.979888,30.088127],[106.980504,30.087609],[106.981736,30.08502],[107.02054,30.036849],[107.053801,30.043584],[107.058113,30.043066],[107.084598,30.063786],[107.080286,30.094341],[107.103076,30.090198],[107.221337,30.213878],[107.257677,30.267131],[107.288474,30.337402],[107.338981,30.386459],[107.368546,30.468508],[107.408582,30.521623],[107.443075,30.53348],[107.427676,30.547397],[107.485575,30.598408],[107.516987,30.644759],[107.477567,30.664837],[107.458473,30.704981],[107.424597,30.74048],[107.454162,30.771851],[107.454162,30.771851],[107.498509,30.809381],[107.483111,30.838675],[107.515756,30.854603],[107.57735,30.847924],[107.645103,30.821202],[107.693146,30.875665],[107.739957,30.884396],[107.760899,30.862823],[107.763979,30.817091],[107.788001,30.81966],[107.851443,30.792931],[107.956152,30.882855],[107.994956,30.908533],[107.948145,30.918802],[107.942602,30.989114],[107.983254,30.983983],[108.00358,31.025533],[108.060246,31.052197],[108.026985,31.061938],[108.009123,31.109602],[108.025753,31.116263],[108.089811,31.204859],[108.07626,31.231985],[108.031297,31.217144],[108.038688,31.252964],[108.095354,31.268311],[108.185898,31.336831],[108.153869,31.371073],[108.216079,31.41041],[108.224086,31.464024],[108.193289,31.467598],[108.191441,31.492096],[108.233941,31.506894],[108.254883,31.49873],[108.344194,31.512506],[108.339266,31.539033],[108.386078,31.544134],[108.390389,31.591555],[108.442744,31.633856],[108.468614,31.636404],[108.519121,31.665952],[108.546838,31.665442],[108.514809,31.693963],[108.50557,31.734182],[108.535135,31.757592],[108.462454,31.780488],[108.455063,31.814059],[108.429194,31.809482],[108.391005,31.829822],[108.386078,31.854226],[108.343578,31.860834],[108.259194,31.967006],[108.307238,31.997463],[108.351585,31.971575],[108.370063,31.988835],[108.329411,32.020299],[108.362056,32.035521],[108.344194,32.067477],[108.372527,32.077112],[108.42981,32.061391],[108.452599,32.090296],[108.399628,32.147065],[108.379303,32.153652],[108.379303,32.153652],[108.379918,32.154158],[108.379918,32.154158],[108.370063,32.172397],[108.399013,32.194176],[108.480317,32.182527],[108.509882,32.201266],[108.507418,32.245819],[108.469846,32.270618],[108.414411,32.252399],[108.389773,32.263533],[108.310933,32.232152],[108.240716,32.274666],[108.179738,32.221521],[108.156948,32.239239],[108.143398,32.219495],[108.086731,32.233165],[108.018362,32.2119],[108.024521,32.177462],[107.979558,32.146051],[107.924739,32.197215],[107.890247,32.214432],[107.864377,32.201266],[107.812022,32.247844],[107.753508,32.338399],[107.707929,32.331826],[107.680827,32.397035],[107.648183,32.413709],[107.598291,32.411688],[107.527458,32.38238],[107.489886,32.425328],[107.456625,32.41775],[107.460937,32.453612],[107.438763,32.465732],[107.436299,32.529835],[107.382097,32.54043],[107.356843,32.506622],[107.313727,32.489965],[107.287858,32.457147],[107.263836,32.403099],[107.212097,32.428864],[107.189924,32.468256],[107.127098,32.482393],[107.080286,32.542448],[107.108004,32.600951],[107.098765,32.649338],[107.05996,32.686115],[107.066736,32.708779],[107.012533,32.721367],[106.912751,32.704247],[106.903512,32.721367],[106.854853,32.724388],[106.82344,32.705254],[106.793259,32.712807],[106.783404,32.735967],[106.733513,32.739491],[106.670071,32.694678],[106.626955,32.682086],[106.585687,32.68813],[106.517934,32.668485],[106.498224,32.649338],[106.451412,32.65992],[106.421231,32.616579],[106.389203,32.62666],[106.347935,32.671003],[106.301123,32.680071],[106.267863,32.673522],[106.254928,32.693671],[106.17424,32.6977],[106.120037,32.719856],[106.071378,32.758114],[106.07261,32.76365],[106.093552,32.82402],[106.071378,32.828546],[106.044277,32.864747],[106.011632,32.829552],[105.969132,32.849162],[105.93156,32.826032],[105.893371,32.838603],[105.849024,32.817985],[105.825002,32.824523],[105.822538,32.770192],[105.779423,32.750061],[105.768952,32.767676],[105.719061,32.759624],[105.677793,32.726402],[105.596489,32.69921],[105.585402,32.728919],[105.563844,32.724891],[105.555221,32.794343],[105.534279,32.790822],[105.524424,32.847654],[105.495475,32.873292],[105.49917,32.911986],[105.467757,32.930071],[105.414171,32.922034],[105.408011,32.885857],[105.38091,32.876307],[105.396308,32.85067],[105.396308,32.85067],[105.427721,32.784281],[105.454207,32.767173],[105.448663,32.732946],[105.368591,32.712807],[105.347033,32.68259],[105.297758,32.656897],[105.263265,32.652362],[105.219534,32.666469],[105.215222,32.63674],[105.185041,32.617587],[105.111128,32.593893],[105.0791,32.637244],[105.026745,32.650346],[104.925115,32.607505],[104.881999,32.600951],[104.845659,32.653873],[104.820405,32.662943],[104.795768,32.643292],[104.739717,32.635228],[104.696601,32.673522],[104.643015,32.661935],[104.592508,32.695685],[104.582653,32.722374],[104.526602,32.728416],[104.51182,32.753585],[104.458849,32.748551],[104.363994,32.822511],[104.294393,32.835586],[104.277147,32.90244],[104.288234,32.942628],[104.345516,32.940117],[104.378161,32.953174],[104.383704,32.994343],[104.426204,33.010906],[104.391711,33.035493],[104.337509,33.038002],[104.378161,33.109214],[104.351059,33.158828],[104.32827,33.223934],[104.323958,33.26898],[104.303632,33.304499],[104.333813,33.315502],[104.386168,33.298497],[104.420045,33.327004],[104.373849,33.345004],[104.292545,33.336505],[104.272219,33.391486],[104.22048,33.404477],[104.213089,33.446932],[104.180444,33.472895],[104.155191,33.542755],[104.176749,33.5996],[104.103452,33.663381],[104.046169,33.686291],[103.980264,33.670852],[103.861388,33.682307],[103.778236,33.658898],[103.690772,33.69376],[103.667983,33.685793],[103.645809,33.708697],[103.593454,33.716164],[103.563889,33.699735],[103.552186,33.671351],[103.520157,33.678323],[103.545411,33.719649],[103.518309,33.807213],[103.464723,33.80224],[103.434542,33.752993],[103.35447,33.743539],[103.278709,33.774387],[103.284868,33.80224],[103.24976,33.814175],[103.228202,33.79478],[103.165376,33.805721],[103.153673,33.819147],[103.181391,33.900649],[103.16476,33.929454],[103.1315,33.931937],[103.120413,33.953286],[103.157369,33.998944],[103.147514,34.036644],[103.119797,34.03466],[103.129652,34.065899],[103.178927,34.079779],[103.121644,34.112487],[103.124108,34.162022],[103.100087,34.181828],[103.052043,34.195194],[103.005848,34.184798],[102.973203,34.205588],[102.977515,34.252595],[102.949181,34.292159],[102.911609,34.312923],[102.85987,34.301058],[102.856791,34.270895],[102.798276,34.272874],[102.779798,34.236764],[102.728675,34.235774],[102.694799,34.198659],[102.664002,34.192719],[102.651067,34.165983],[102.598712,34.14766],[102.655994,34.113478],[102.649219,34.080275],[102.615958,34.099604],[102.511865,34.086222],[102.471213,34.072839],[102.437336,34.087214],[102.406539,34.033172],[102.392372,33.971651],[102.345561,33.969666],[102.315996,33.993983],[102.287047,33.977607],[102.248858,33.98654],[102.226069,33.963214],[102.16817,33.983066],[102.136142,33.965199],[102.25317,33.861399],[102.261177,33.821136],[102.243315,33.786823],[102.296286,33.783838],[102.324619,33.754486],[102.284583,33.719151],[102.342481,33.725622],[102.31538,33.665374],[102.346793,33.605582],[102.440416,33.574673],[102.477988,33.543254],[102.446575,33.53228],[102.461358,33.501345],[102.462589,33.449429],[102.447807,33.454922],[102.392988,33.404477],[102.368967,33.41247],[102.310452,33.397982],[102.296286,33.413969],[102.258098,33.409472],[102.218062,33.349503],[102.192192,33.337005],[102.217446,33.247961],[102.200815,33.223434],[102.160163,33.242956],[102.144765,33.273983],[102.117047,33.288492],[102.08933,33.227439],[102.08933,33.204908],[102.054838,33.189884],[101.99386,33.1999],[101.935345,33.186879],[101.921795,33.153817],[101.887302,33.135778],[101.865744,33.103198],[101.825708,33.119239],[101.841723,33.184876],[101.83002,33.213921],[101.770274,33.248962],[101.769658,33.26898],[101.877447,33.314502],[101.887302,33.383991],[101.915635,33.425957],[101.946432,33.442937],[101.906396,33.48188],[101.907012,33.539264],[101.884222,33.578163],[101.844186,33.602591],[101.831252,33.554726],[101.783208,33.556721],[101.769042,33.538765],[101.777665,33.533776],[101.769042,33.45592],[101.695745,33.433948],[101.663716,33.383991],[101.64955,33.323004],[101.677883,33.297497],[101.735781,33.279987],[101.709912,33.21292],[101.653861,33.162835],[101.661252,33.135778],[101.633535,33.101193],[101.557775,33.167344],[101.515275,33.192889],[101.487557,33.226938],[101.403174,33.225436],[101.386543,33.207412],[101.393935,33.157826],[101.381616,33.153316],[101.297232,33.262475],[101.217776,33.256469],[101.182668,33.26948],[101.156798,33.236449],[101.124769,33.221431],[101.11553,33.194893],[101.169733,33.10019],[101.143863,33.086151],[101.146327,33.056563],[101.184515,33.041514],[101.171581,33.009902],[101.183899,32.984304],[101.129081,32.989324],[101.134624,32.95217],[101.124153,32.909976],[101.178356,32.892892],[101.223935,32.855698],[101.237486,32.825026],[101.22332,32.725898],[101.157414,32.661431],[101.124769,32.658408],[101.077342,32.68259],[101.030531,32.660424],[100.99727,32.627668],[100.956618,32.621116],[100.93198,32.600447],[100.887633,32.632708],[100.834046,32.648835],[100.77122,32.643795],[100.690532,32.678056],[100.71209,32.645307],[100.710242,32.610026],[100.673286,32.628172],[100.661583,32.616075],[100.657887,32.546484],[100.645568,32.526303],[100.603069,32.553547],[100.54517,32.569687],[100.516837,32.632204],[100.470026,32.694678],[100.450932,32.694678],[100.420135,32.73194],[100.378251,32.698707],[100.399193,32.756101],[100.339447,32.719353],[100.258759,32.742511],[100.231041,32.696189],[100.229809,32.650346],[100.208252,32.606497],[100.189773,32.630692],[100.109701,32.640268],[100.088143,32.668988],[100.139266,32.724388],[100.117093,32.802392],[100.123252,32.837095],[100.064738,32.895907],[100.029629,32.895907],[100.038252,32.929066],[99.956332,32.948152],[99.947709,32.986814],[99.877492,33.045527],[99.877492,32.993339],[99.851007,32.941623],[99.805427,32.940619],[99.788181,32.956689],[99.764159,32.924545],[99.791877,32.883344],[99.766623,32.826032],[99.760464,32.769689],[99.717964,32.732443],[99.700718,32.76667],[99.646515,32.774721],[99.640355,32.790822],[99.589233,32.789312],[99.558436,32.839106],[99.45311,32.862233],[99.376118,32.899927],[99.353944,32.885354],[99.268944,32.878318],[99.24677,32.924043],[99.235067,32.982296],[99.214741,32.991332],[99.196263,33.035493],[99.124814,33.046028],[99.090322,33.079131],[99.024416,33.094675],[99.014561,33.081137],[98.971445,33.098185],[98.967134,33.115229],[98.92217,33.118738],[98.858728,33.150811],[98.804526,33.219428],[98.802062,33.270481],[98.759562,33.276985],[98.779888,33.370497],[98.736157,33.406975],[98.742316,33.477887],[98.725686,33.503341],[98.678258,33.522801],[98.648077,33.548741],[98.652389,33.595114],[98.622824,33.610067],[98.61728,33.637476],[98.6567,33.64744],[98.610505,33.682805],[98.582788,33.731595],[98.539672,33.746525],[98.51873,33.77389],[98.494092,33.768915],[98.492861,33.796272],[98.463295,33.848477],[98.434962,33.843009],[98.407245,33.867362],[98.425723,33.913066],[98.415252,33.956761],[98.440506,33.981577],[98.428187,34.029204],[98.396774,34.053008],[98.399854,34.085231],[98.344419,34.094648],[98.258188,34.083249],[98.206449,34.08424],[98.158405,34.107037],[98.098043,34.122892],[98.028442,34.122892],[97.95453,34.190739],[97.898479,34.209548],[97.8104,34.207568],[97.796849,34.199154],[97.796849,34.199154],[97.789458,34.182818],[97.789458,34.182818],[97.766668,34.158555],[97.665654,34.126855],[97.70261,34.036644],[97.652719,33.998448],[97.660111,33.956264],[97.629314,33.919523],[97.601596,33.929951],[97.52214,33.903133],[97.503662,33.912073],[97.460546,33.887236],[97.395257,33.889224],[97.398336,33.848477],[97.371851,33.842015],[97.373083,33.817655],[97.406344,33.795278],[97.422974,33.754984],[97.418046,33.728608],[97.435293,33.682307],[97.415583,33.605582],[97.450075,33.582152],[97.523372,33.577166],[97.511669,33.520805],[97.552321,33.465906],[97.625618,33.461412],[97.674893,33.432949],[97.754349,33.409972],[97.676125,33.341004],[97.622538,33.337005],[97.607756,33.263976],[97.548626,33.203907],[97.487648,33.168346],[97.498119,33.137783],[97.487032,33.107209],[97.517213,33.097683],[97.542466,33.035995],[97.499966,33.011408],[97.523988,32.988822],[97.438372,32.976271],[97.375547,32.956689],[97.347829,32.895907],[97.376163,32.886359],[97.392793,32.828546],[97.386018,32.77925],[97.429133,32.714318],[97.42359,32.70475],[97.48272,32.654377],[97.535075,32.638252],[97.543698,32.62162],[97.607756,32.614059],[97.616995,32.586329],[97.700763,32.53488],[97.730944,32.527312],[97.795617,32.521257],[97.80732,32.50006],[97.863986,32.499051],[97.880001,32.486431],[97.940363,32.482393],[98.079565,32.415224],[98.107283,32.391476],[98.125145,32.401077],[98.218768,32.342444],[98.208913,32.318171],[98.23047,32.262521],[98.218768,32.234683],[98.260035,32.208862],[98.303151,32.121726],[98.357354,32.087253],[98.404781,32.045159],[98.402933,32.026896],[98.434962,32.007613],[98.432498,31.922825],[98.399238,31.895899],[98.426339,31.856767],[98.414636,31.832365],[98.461448,31.800327],[98.508875,31.751995],[98.516882,31.717383],[98.545831,31.717383],[98.553839,31.660349],[98.619128,31.591555],[98.651157,31.57881],[98.696736,31.538523],[98.714599,31.508935],[98.844562,31.429817],[98.84333,31.416028],[98.887062,31.37465],[98.810685,31.306668],[98.805758,31.279052],[98.773113,31.249382],[98.691809,31.333253],[98.643766,31.338876],[98.616048,31.3036],[98.60373,31.257568],[98.62344,31.221238],[98.602498,31.192062],[98.675179,31.15417],[98.710287,31.1178],[98.712135,31.082954],[98.736772,31.049121],[98.774961,31.031174],[98.806374,30.995783],[98.797135,30.948575],[98.774345,30.908019],[98.797135,30.87926],[98.850105,30.849465],[98.904924,30.782649],[98.957895,30.765166],[98.963438,30.728134],[98.907388,30.698292],[98.92217,30.609225],[98.939417,30.598923],[98.926482,30.569556],[98.932025,30.521623],[98.965286,30.449937],[98.967134,30.33482],[98.986844,30.280569],[98.970829,30.260928],[98.993003,30.215429],[98.9813,30.182843],[98.989308,30.151799],[99.044742,30.079842],[99.036735,30.053945],[99.055213,29.958587],[99.068148,29.931621],[99.0238,29.846009],[99.018873,29.792009],[98.992387,29.677163],[99.014561,29.607464],[99.052133,29.563748],[99.044742,29.520013],[99.066916,29.421018],[99.058909,29.417368],[99.075539,29.316186],[99.114343,29.243628],[99.113727,29.221171],[99.105104,29.162656],[99.118039,29.100971],[99.113727,29.07273],[99.132206,28.94869],[99.123582,28.890021],[99.103872,28.841803],[99.114343,28.765763],[99.134053,28.734806],[99.126662,28.698066],[99.147604,28.640831],[99.183944,28.58882],[99.170394,28.566221],[99.191952,28.494714],[99.187024,28.44],[99.16485,28.425264],[99.200575,28.365774],[99.229524,28.350502],[99.237531,28.317842],[99.28927,28.286227],[99.306516,28.227714],[99.374886,28.18183],[99.412458,28.295186],[99.392748,28.318369],[99.437095,28.398419],[99.404451,28.44421],[99.426625,28.454207],[99.396444,28.491032],[99.403219,28.546246],[99.463581,28.549401],[99.466045,28.579886],[99.504233,28.619294],[99.540573,28.623497],[99.53195,28.677591],[99.553508,28.710664],[99.614486,28.740054],[99.609559,28.784122],[99.625573,28.81454],[99.676696,28.810345],[99.717964,28.846521],[99.722275,28.757369],[99.755536,28.701216],[99.79434,28.699116],[99.834992,28.660788],[99.834376,28.628225],[99.873181,28.631902],[99.875644,28.611939],[99.91876,28.599329],[99.985281,28.529422],[99.990209,28.47683],[100.073977,28.426317],[100.057346,28.368934],[100.136803,28.349975],[100.176223,28.325218],[100.147274,28.288862],[100.188541,28.252493],[100.153433,28.208202],[100.102926,28.201873],[100.091223,28.181302],[100.062274,28.193962],[100.033325,28.184467],[100.021006,28.147008],[100.05673,28.097922],[100.088759,28.029269],[100.120788,28.018703],[100.196549,27.936254],[100.170063,27.907699],[100.210715,27.87702],[100.30865,27.861149],[100.30865,27.830457],[100.28586,27.80611],[100.304954,27.788639],[100.311729,27.724028],[100.327744,27.72032],[100.350534,27.755809],[100.412127,27.816167],[100.442924,27.86644],[100.504518,27.852154],[100.511294,27.827811],[100.54517,27.809286],[100.609228,27.859033],[100.634482,27.915631],[100.681293,27.923035],[100.719481,27.858503],[100.707162,27.800816],[100.757053,27.770107],[100.775532,27.743098],[100.782307,27.691708],[100.848212,27.672099],[100.827886,27.615904],[100.854988,27.623858],[100.91227,27.521473],[100.901183,27.453517],[100.936908,27.469448],[100.95169,27.426961],[101.021907,27.332899],[101.026219,27.270679],[101.042233,27.22173],[101.071798,27.194585],[101.119226,27.208957],[101.167885,27.198311],[101.167885,27.198311]]],[[[106.264167,30.20974],[106.260471,30.207672],[106.260471,30.204051],[106.260471,30.19681],[106.264167,30.20974]]],[[[106.976809,30.088127],[106.975577,30.088127],[106.976193,30.083467],[106.981736,30.08502],[106.980504,30.087609],[106.979888,30.088127],[106.978656,30.087609],[106.977425,30.087609],[106.976809,30.088127]]],[[[105.558916,30.18543],[105.556453,30.187499],[105.550909,30.179222],[105.56138,30.183878],[105.558916,30.18543]]]]}},{"type":"Feature","properties":{"adcode":520000,"name":"贵州省","center":[106.713478,26.578343],"centroid":[106.880455,26.826368],"childrenNum":9,"level":"province","parent":{"adcode":100000},"subFeatureIndex":23,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[109.274262,28.494714],[109.23361,28.474726],[109.191726,28.471043],[109.153538,28.417369],[109.152306,28.349975],[109.117198,28.277795],[109.081473,28.247749],[109.101799,28.202401],[109.086401,28.184467],[109.026655,28.220331],[109.005713,28.162837],[108.929952,28.19027],[108.923793,28.217167],[108.89546,28.219804],[108.855424,28.199764],[108.821547,28.245113],[108.772888,28.212949],[108.738395,28.228241],[108.726692,28.282011],[108.761801,28.304143],[108.783359,28.380518],[108.759953,28.389995],[108.780279,28.42579],[108.746402,28.45105],[108.709446,28.501026],[108.700207,28.48209],[108.657091,28.47683],[108.640461,28.456838],[108.688504,28.422106],[108.697127,28.401051],[108.656475,28.359981],[108.667562,28.334173],[108.611512,28.324691],[108.580099,28.343128],[108.576403,28.38631],[108.609048,28.407368],[108.609664,28.43579],[108.586874,28.463678],[108.573939,28.531],[108.610896,28.539412],[108.604736,28.590922],[108.636149,28.621396],[108.575787,28.659738],[108.50249,28.63768],[108.501258,28.626649],[108.439049,28.634003],[108.332491,28.679166],[108.347274,28.736381],[108.385462,28.772058],[108.386078,28.803003],[108.352817,28.815589],[108.346658,28.859625],[108.357745,28.893165],[108.345426,28.943453],[108.319556,28.961258],[108.297999,29.045527],[108.306622,29.079006],[108.277673,29.091558],[108.256115,29.040295],[108.193289,29.072207],[108.150173,29.053375],[108.070717,29.086328],[108.026369,29.039772],[107.925971,29.032446],[107.908725,29.007327],[107.882855,29.00628],[107.867457,28.960211],[107.810175,28.984295],[107.823725,29.034016],[107.784921,29.048143],[107.810791,29.139137],[107.749197,29.199754],[107.700537,29.141228],[107.659885,29.162656],[107.605683,29.164747],[107.589052,29.150113],[107.570574,29.218037],[107.486806,29.174153],[107.441227,29.203934],[107.401807,29.184603],[107.408582,29.138091],[107.427676,29.128682],[107.412278,29.094696],[107.369778,29.091558],[107.395647,29.041341],[107.364235,29.00942],[107.396879,28.993718],[107.412894,28.960211],[107.441227,28.943977],[107.41351,28.911502],[107.383945,28.848618],[107.339597,28.845997],[107.327894,28.810869],[107.261373,28.792514],[107.24659,28.76209],[107.219489,28.772582],[107.210866,28.817686],[107.227496,28.836037],[107.194851,28.838134],[107.206554,28.868535],[107.14188,28.887925],[107.016229,28.882685],[107.019308,28.861722],[106.983584,28.851239],[106.988512,28.776254],[106.951555,28.766812],[106.923222,28.809821],[106.872099,28.777304],[106.845614,28.780975],[106.824056,28.756319],[106.86594,28.690192],[106.889345,28.695966],[106.866556,28.624548],[106.830831,28.623497],[106.807425,28.589346],[106.784636,28.626649],[106.756918,28.607211],[106.77786,28.563068],[106.73844,28.554657],[106.726121,28.51838],[106.747063,28.467361],[106.708259,28.450524],[106.697788,28.47683],[106.632499,28.503655],[106.564745,28.485247],[106.567825,28.523638],[106.615252,28.549401],[106.606629,28.593024],[106.63681,28.622972],[106.618332,28.645033],[106.651593,28.649235],[106.617716,28.66709],[106.6171,28.691242],[106.587535,28.691767],[106.56105,28.719062],[106.561666,28.756319],[106.474202,28.832891],[106.45326,28.817162],[106.461883,28.761041],[106.492064,28.742153],[106.528405,28.677591],[106.502535,28.661313],[106.49268,28.591448],[106.466811,28.586193],[106.504999,28.544669],[106.477282,28.530474],[106.403369,28.569901],[106.37442,28.525742],[106.379348,28.479986],[106.349167,28.473674],[106.304819,28.505233],[106.2925,28.537309],[106.254928,28.539412],[106.184711,28.58882],[106.17116,28.629275],[106.14837,28.642932],[106.103407,28.636104],[106.085544,28.681792],[106.030726,28.694917],[106.001161,28.743727],[105.966668,28.761041],[105.937719,28.686517],[105.889676,28.670765],[105.884748,28.595126],[105.808372,28.599855],[105.78435,28.610889],[105.757249,28.590397],[105.74493,28.616668],[105.712901,28.586718],[105.693191,28.58882],[105.68272,28.534154],[105.62359,28.517854],[105.612503,28.438947],[105.643916,28.431053],[105.655003,28.362615],[105.639604,28.324164],[105.68888,28.284119],[105.730147,28.271997],[105.737539,28.30309],[105.76464,28.308359],[105.76464,28.308359],[105.78743,28.335753],[105.824386,28.306251],[105.848408,28.255656],[105.889676,28.237732],[105.860727,28.159672],[105.895219,28.119565],[105.943878,28.143314],[105.975907,28.107952],[106.093552,28.162837],[106.145291,28.162837],[106.206885,28.134343],[106.266631,28.066769],[106.246305,28.011835],[106.286341,28.007079],[106.328225,27.952643],[106.307899,27.936782],[106.304819,27.899237],[106.325145,27.898708],[106.337464,27.859033],[106.306667,27.808756],[106.242609,27.767459],[106.193334,27.75422],[106.120653,27.779638],[106.063987,27.776991],[106.023335,27.746805],[105.985146,27.749983],[105.92848,27.729855],[105.922937,27.746805],[105.868118,27.732504],[105.848408,27.707074],[105.76772,27.7182],[105.722756,27.706015],[105.720292,27.683759],[105.664242,27.683759],[105.62359,27.666269],[105.605112,27.715552],[105.560148,27.71979],[105.508409,27.769048],[105.44004,27.775402],[105.353809,27.748924],[105.308229,27.704955],[105.29591,27.631811],[105.304533,27.611661],[105.25649,27.582491],[105.232469,27.546945],[105.260186,27.514573],[105.234316,27.489093],[105.233084,27.436522],[105.182577,27.367451],[105.184425,27.392959],[105.120984,27.418461],[105.068013,27.418461],[105.01073,27.379143],[104.913412,27.327051],[104.871528,27.290891],[104.851818,27.299401],[104.856746,27.332368],[104.824717,27.3531],[104.77113,27.317481],[104.7545,27.345658],[104.611602,27.306846],[104.570334,27.331836],[104.539537,27.327583],[104.497037,27.414743],[104.467472,27.414211],[104.363378,27.467855],[104.30856,27.407305],[104.295625,27.37436],[104.247582,27.336621],[104.248813,27.291955],[104.210625,27.297273],[104.173053,27.263232],[104.113923,27.338216],[104.084358,27.330773],[104.01722,27.383926],[104.015372,27.429086],[103.956242,27.425367],[103.932221,27.443958],[103.905119,27.38552],[103.903271,27.347785],[103.874322,27.331304],[103.865699,27.28185],[103.80041,27.26536],[103.801641,27.250464],[103.748671,27.210021],[103.696316,27.126429],[103.63349,27.12057],[103.620555,27.096598],[103.652584,27.092868],[103.659975,27.065692],[103.614396,27.079548],[103.601461,27.061962],[103.623635,27.035312],[103.623019,27.007056],[103.675374,27.051836],[103.704939,27.049171],[103.73204,27.018785],[103.753598,26.963858],[103.775156,26.951056],[103.763453,26.905702],[103.779468,26.87421],[103.722185,26.851253],[103.705555,26.794642],[103.725265,26.742812],[103.773308,26.716621],[103.759142,26.689355],[103.748671,26.623568],[103.763453,26.585041],[103.815808,26.55239],[103.819504,26.529903],[103.865699,26.512232],[103.953163,26.521336],[104.008597,26.511697],[104.067727,26.51491],[104.068343,26.573266],[104.121314,26.638012],[104.160734,26.646571],[104.222328,26.620358],[104.268524,26.617683],[104.274683,26.633733],[104.313487,26.612867],[104.353523,26.620893],[104.398487,26.686147],[104.424356,26.709137],[104.468088,26.644431],[104.459465,26.602701],[104.488414,26.579689],[104.556783,26.590393],[104.579573,26.568449],[104.57095,26.524549],[104.598667,26.520801],[104.638703,26.477954],[104.631928,26.451702],[104.665804,26.434019],[104.664572,26.397572],[104.684283,26.3772],[104.659645,26.335373],[104.592508,26.317672],[104.542616,26.253282],[104.548776,26.226979],[104.518595,26.165762],[104.52845,26.114186],[104.499501,26.070651],[104.460081,26.085702],[104.470552,26.009352],[104.438523,25.92757],[104.414501,25.909807],[104.441602,25.868889],[104.42374,25.841961],[104.397871,25.76168],[104.370769,25.730415],[104.328886,25.760602],[104.310407,25.647901],[104.332581,25.598796],[104.389248,25.595558],[104.428668,25.576126],[104.436059,25.520512],[104.418813,25.499447],[104.434827,25.472436],[104.44961,25.495126],[104.483486,25.494585],[104.524138,25.526992],[104.556783,25.524832],[104.543232,25.400556],[104.566638,25.402719],[104.615913,25.364871],[104.646094,25.356759],[104.639935,25.295632],[104.689826,25.296173],[104.736021,25.268034],[104.816094,25.262622],[104.826565,25.235558],[104.806854,25.224189],[104.822869,25.170037],[104.801927,25.163537],[104.753884,25.214443],[104.724319,25.195491],[104.732326,25.167871],[104.695369,25.122364],[104.685514,25.078466],[104.619609,25.060577],[104.684898,25.054072],[104.713232,24.996048],[104.663957,24.964584],[104.635623,24.903803],[104.586964,24.872859],[104.539537,24.813663],[104.542616,24.75607],[104.529682,24.731611],[104.595587,24.709323],[104.628848,24.660927],[104.703377,24.645698],[104.729246,24.617953],[104.771746,24.659839],[104.841963,24.676155],[104.865985,24.730524],[104.899245,24.752809],[105.03352,24.787586],[105.026745,24.815836],[105.039064,24.872859],[105.077868,24.918459],[105.09573,24.92877],[105.131454,24.959701],[105.157324,24.958616],[105.178266,24.985199],[105.212758,24.995505],[105.251563,24.967296],[105.267577,24.929313],[105.334099,24.9266],[105.365511,24.943423],[105.428337,24.930941],[105.457286,24.87123],[105.493011,24.833217],[105.497322,24.809318],[105.573083,24.797366],[105.607576,24.803885],[105.617431,24.78161],[105.70551,24.768569],[105.767104,24.719109],[105.827466,24.702799],[105.863806,24.729437],[105.942031,24.725088],[105.961741,24.677786],[106.024566,24.633186],[106.047356,24.684312],[106.113878,24.714216],[106.150218,24.762591],[106.173008,24.760417],[106.206269,24.851139],[106.197645,24.885889],[106.145291,24.954275],[106.191486,24.95319],[106.215508,24.981944],[106.253696,24.971094],[106.304819,24.973807],[106.332536,24.988454],[106.442173,25.019369],[106.450181,25.033468],[106.519782,25.054072],[106.551195,25.082802],[106.590615,25.08768],[106.63989,25.132658],[106.644817,25.164621],[106.691013,25.179245],[106.732281,25.162454],[106.764926,25.183036],[106.787715,25.17112],[106.853005,25.186827],[106.888113,25.181953],[106.904128,25.231768],[106.933077,25.250714],[106.975577,25.232851],[107.013765,25.275611],[107.012533,25.352973],[106.987896,25.358922],[106.963874,25.437852],[106.996519,25.442716],[107.015613,25.495666],[107.066736,25.50917],[107.064272,25.559391],[107.185612,25.578825],[107.205322,25.607971],[107.228728,25.604733],[107.232423,25.556691],[107.263836,25.543193],[107.336517,25.461089],[107.308184,25.432988],[107.318039,25.401637],[107.358691,25.393528],[107.375937,25.411908],[107.420901,25.392987],[107.409198,25.347024],[107.432604,25.289139],[107.481263,25.299961],[107.489886,25.276693],[107.472024,25.213902],[107.512676,25.209029],[107.576734,25.256668],[107.599523,25.250714],[107.632168,25.310241],[107.659885,25.316192],[107.661733,25.258833],[107.696226,25.219858],[107.700537,25.194408],[107.741805,25.24043],[107.762131,25.229061],[107.760283,25.188451],[107.789233,25.15487],[107.762747,25.125073],[107.839124,25.115861],[107.872384,25.141327],[107.928435,25.155954],[108.001732,25.196574],[108.080572,25.193867],[108.115065,25.210112],[108.143398,25.269658],[108.152021,25.324306],[108.142782,25.390825],[108.193289,25.405421],[108.162492,25.444878],[108.192673,25.458928],[108.251803,25.430286],[108.241332,25.46217],[108.280752,25.48],[108.308469,25.525912],[108.348506,25.536173],[108.359592,25.513491],[108.400244,25.491344],[108.418723,25.443257],[108.471693,25.458928],[108.585642,25.365952],[108.589338,25.335125],[108.625062,25.308076],[108.62999,25.335666],[108.600425,25.432448],[108.6072,25.491885],[108.634917,25.520512],[108.68912,25.533473],[108.658323,25.550212],[108.660787,25.584763],[108.68604,25.587462],[108.68912,25.623081],[108.724844,25.634952],[108.783975,25.628477],[108.799989,25.576666],[108.781511,25.554531],[108.814772,25.526992],[108.826474,25.550212],[108.890532,25.556151],[108.8893,25.543193],[108.949046,25.557231],[109.024807,25.51241],[109.088249,25.550752],[109.051908,25.566949],[109.030966,25.629556],[109.075314,25.693749],[109.07901,25.72071],[109.043285,25.738502],[109.007561,25.734728],[108.953974,25.686738],[108.953974,25.686738],[108.900387,25.682423],[108.896076,25.71424],[108.940423,25.740119],[108.963829,25.732572],[108.999553,25.765453],[108.989698,25.778926],[109.048213,25.790781],[109.077778,25.776771],[109.095024,25.80533],[109.143683,25.795092],[109.13198,25.762758],[109.147995,25.741736],[109.206509,25.788087],[109.207125,25.740119],[109.296436,25.71424],[109.340168,25.731493],[109.327849,25.76168],[109.339552,25.83442],[109.359262,25.836036],[109.396834,25.900117],[109.435022,25.93349],[109.408537,25.967392],[109.473211,26.006663],[109.48245,26.029788],[109.452885,26.055598],[109.449805,26.101826],[109.502776,26.096451],[109.513863,26.128157],[109.47629,26.148035],[109.439334,26.238789],[109.467051,26.313917],[109.442414,26.289774],[109.369733,26.277432],[109.351255,26.264016],[109.325385,26.29031],[109.285965,26.295676],[109.271183,26.327863],[109.29582,26.350389],[109.319842,26.418477],[109.38082,26.454381],[109.362342,26.472061],[109.385747,26.493487],[109.381436,26.518659],[109.407305,26.533116],[109.390675,26.598955],[109.35495,26.658873],[109.334008,26.646036],[109.306291,26.661012],[109.283501,26.698445],[109.35495,26.693098],[109.407305,26.719829],[109.447957,26.759913],[109.486761,26.759913],[109.47629,26.829894],[109.467051,26.83203],[109.452885,26.861932],[109.436254,26.892359],[109.555131,26.946788],[109.520022,27.058764],[109.497848,27.079548],[109.486761,27.053968],[109.454733,27.069423],[109.472595,27.134951],[109.441182,27.117907],[109.415312,27.154123],[109.358646,27.153058],[109.33524,27.139212],[109.264407,27.131755],[109.239154,27.14933],[109.21698,27.114711],[109.165857,27.066758],[109.101183,27.06889],[109.128901,27.122701],[109.032814,27.104056],[109.007561,27.08008],[108.940423,27.044907],[108.942887,27.017186],[108.942887,27.017186],[108.877597,27.01612],[108.79075,27.084343],[108.878829,27.106187],[108.926873,27.160512],[108.907778,27.204699],[108.963213,27.235565],[108.983539,27.26802],[109.053756,27.293551],[109.044517,27.331304],[109.103647,27.336621],[109.142451,27.418461],[109.141835,27.448207],[109.167089,27.41793],[109.202197,27.450331],[109.245313,27.41793],[109.300132,27.423774],[109.303211,27.47582],[109.404841,27.55066],[109.461508,27.567637],[109.451037,27.586204],[109.470131,27.62863],[109.45658,27.673689],[109.470747,27.680049],[109.414081,27.725087],[109.366653,27.721909],[109.37774,27.736741],[109.332777,27.782815],[109.346943,27.838396],[109.32169,27.868027],[109.30198,27.956343],[109.319842,27.988585],[109.362342,28.007608],[109.378972,28.034551],[109.335856,28.063073],[109.298284,28.036136],[109.314298,28.103729],[109.33832,28.141731],[109.340168,28.19027],[109.367885,28.254602],[109.388211,28.268307],[109.33524,28.293605],[109.317994,28.277795],[109.275494,28.313101],[109.268719,28.33786],[109.289045,28.373673],[109.264407,28.392628],[109.260712,28.46473],[109.274262,28.494714]]],[[[109.47629,26.829894],[109.486761,26.759913],[109.52187,26.749226],[109.522486,26.749226],[109.497232,26.815474],[109.513247,26.84004],[109.509551,26.877947],[109.486761,26.895562],[109.452885,26.861932],[109.467051,26.83203],[109.47629,26.829894]]],[[[109.528645,26.743881],[109.568065,26.726243],[109.597015,26.756173],[109.554515,26.73533],[109.528645,26.743881]]]]}},{"type":"Feature","properties":{"adcode":530000,"name":"云南省","center":[102.712251,25.040609],"centroid":[101.485106,25.008643],"childrenNum":16,"level":"province","parent":{"adcode":100000},"subFeatureIndex":24,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[105.308229,27.704955],[105.290367,27.712373],[105.293447,27.770637],[105.273736,27.794992],[105.313157,27.810874],[105.25957,27.827811],[105.233084,27.895534],[105.284823,27.935725],[105.270657,27.99704],[105.247867,28.009193],[105.218302,27.990698],[105.186273,27.995454],[105.167795,28.021345],[105.186889,28.054623],[105.168411,28.071522],[105.119752,28.07205],[105.061853,28.096866],[105.002107,28.064129],[104.980549,28.063073],[104.975006,28.020816],[104.903557,27.962158],[104.918339,27.938897],[104.888158,27.914574],[104.842579,27.900294],[104.796999,27.901352],[104.761891,27.884426],[104.743413,27.901881],[104.676275,27.880723],[104.63316,27.850567],[104.607906,27.857974],[104.573413,27.840512],[104.52537,27.889187],[104.508124,27.878078],[104.44961,27.927794],[104.40095,27.952114],[104.362762,28.012891],[104.30856,28.036136],[104.304248,28.050926],[104.373233,28.051454],[104.40095,28.091586],[104.448994,28.113758],[104.444682,28.16231],[104.406494,28.173389],[104.402182,28.202928],[104.442834,28.211366],[104.462544,28.241422],[104.44961,28.269889],[104.420045,28.269889],[104.392943,28.291497],[104.384936,28.329959],[104.343052,28.334173],[104.314103,28.306778],[104.282074,28.343128],[104.254357,28.403683],[104.267908,28.499448],[104.260516,28.536257],[104.323342,28.540989],[104.355987,28.555183],[104.375697,28.5946],[104.417581,28.598279],[104.425588,28.626649],[104.372617,28.649235],[104.314719,28.615617],[104.277147,28.631902],[104.252509,28.660788],[104.230951,28.635579],[104.170589,28.642932],[104.117618,28.634003],[104.09606,28.603533],[104.05972,28.6277],[103.953779,28.600906],[103.910047,28.631377],[103.887873,28.61982],[103.850917,28.66709],[103.833054,28.605109],[103.838598,28.587244],[103.802873,28.563068],[103.781931,28.525216],[103.829975,28.459995],[103.828743,28.44],[103.860156,28.383677],[103.85338,28.356822],[103.877402,28.316262],[103.828743,28.285173],[103.770845,28.233514],[103.740048,28.23615],[103.701859,28.198709],[103.692004,28.232459],[103.643961,28.260401],[103.573128,28.230877],[103.533092,28.168641],[103.470266,28.122204],[103.430846,28.044587],[103.459179,28.021345],[103.486281,28.033495],[103.515846,27.965329],[103.55465,27.978543],[103.502295,27.910343],[103.509686,27.843687],[103.487512,27.794992],[103.461027,27.779638],[103.393274,27.709194],[103.369868,27.708664],[103.349542,27.678459],[103.29226,27.632872],[103.2861,27.561802],[103.232514,27.56976],[103.19063,27.523596],[103.144434,27.450331],[103.141355,27.420586],[103.080992,27.396679],[103.055739,27.40943],[102.989833,27.367983],[102.941174,27.405711],[102.899906,27.317481],[102.883892,27.299401],[102.883276,27.258444],[102.904218,27.227584],[102.913457,27.133886],[102.870957,27.026782],[102.894979,27.001724],[102.896211,26.91264],[102.949181,26.843244],[102.966428,26.837904],[102.991681,26.775409],[102.983674,26.76686],[103.008312,26.710741],[103.005232,26.679195],[103.026174,26.664221],[103.035413,26.556673],[103.052659,26.555602],[103.052659,26.514374],[103.030485,26.485989],[102.989833,26.482775],[102.988602,26.413117],[102.998457,26.371839],[102.975667,26.340736],[102.893131,26.338591],[102.878964,26.364332],[102.833385,26.306406],[102.785342,26.298895],[102.739762,26.268846],[102.709581,26.210336],[102.659074,26.221611],[102.60056,26.250598],[102.638748,26.307479],[102.629509,26.336982],[102.570995,26.362723],[102.542046,26.338591],[102.440416,26.300505],[102.392372,26.296749],[102.349257,26.244694],[102.245163,26.212483],[102.242699,26.190468],[102.174946,26.146961],[102.152156,26.10935],[102.107808,26.068501],[102.080091,26.065275],[102.020961,26.096451],[101.954439,26.084627],[101.929186,26.105588],[101.899621,26.099139],[101.857737,26.049146],[101.835563,26.04592],[101.839875,26.082477],[101.796759,26.114723],[101.807846,26.156093],[101.773353,26.168448],[101.737013,26.219463],[101.690202,26.241473],[101.630455,26.224832],[101.586108,26.279579],[101.597195,26.303187],[101.64031,26.318745],[101.660636,26.346635],[101.635383,26.357361],[101.637847,26.388995],[101.565782,26.454381],[101.530057,26.467239],[101.506652,26.499915],[101.458608,26.49563],[101.422884,26.53151],[101.395783,26.591998],[101.402558,26.604841],[101.461688,26.606447],[101.461072,26.640687],[101.481398,26.673313],[101.453065,26.692563],[101.513427,26.768463],[101.466,26.786629],[101.445674,26.77434],[101.458608,26.731054],[101.435819,26.740675],[101.389623,26.723036],[101.387159,26.753501],[101.358826,26.771669],[101.399478,26.841642],[101.365602,26.883819],[101.311399,26.903034],[101.267667,26.903034],[101.264587,26.955323],[101.227015,26.959057],[101.228863,26.981992],[101.136472,27.023584],[101.157414,27.094999],[101.145095,27.103523],[101.170349,27.175421],[101.167885,27.198311],[101.167885,27.198311],[101.119226,27.208957],[101.071798,27.194585],[101.042233,27.22173],[101.026219,27.270679],[101.021907,27.332899],[100.95169,27.426961],[100.936908,27.469448],[100.901183,27.453517],[100.91227,27.521473],[100.854988,27.623858],[100.827886,27.615904],[100.848212,27.672099],[100.782307,27.691708],[100.775532,27.743098],[100.757053,27.770107],[100.707162,27.800816],[100.719481,27.858503],[100.681293,27.923035],[100.634482,27.915631],[100.609228,27.859033],[100.54517,27.809286],[100.511294,27.827811],[100.504518,27.852154],[100.442924,27.86644],[100.412127,27.816167],[100.350534,27.755809],[100.327744,27.72032],[100.311729,27.724028],[100.304954,27.788639],[100.28586,27.80611],[100.30865,27.830457],[100.30865,27.861149],[100.210715,27.87702],[100.170063,27.907699],[100.196549,27.936254],[100.120788,28.018703],[100.088759,28.029269],[100.05673,28.097922],[100.021006,28.147008],[100.033325,28.184467],[100.062274,28.193962],[100.091223,28.181302],[100.102926,28.201873],[100.153433,28.208202],[100.188541,28.252493],[100.147274,28.288862],[100.176223,28.325218],[100.136803,28.349975],[100.057346,28.368934],[100.073977,28.426317],[99.990209,28.47683],[99.985281,28.529422],[99.91876,28.599329],[99.875644,28.611939],[99.873181,28.631902],[99.834376,28.628225],[99.834992,28.660788],[99.79434,28.699116],[99.755536,28.701216],[99.722275,28.757369],[99.717964,28.846521],[99.676696,28.810345],[99.625573,28.81454],[99.609559,28.784122],[99.614486,28.740054],[99.553508,28.710664],[99.53195,28.677591],[99.540573,28.623497],[99.504233,28.619294],[99.466045,28.579886],[99.463581,28.549401],[99.403219,28.546246],[99.396444,28.491032],[99.426625,28.454207],[99.404451,28.44421],[99.437095,28.398419],[99.392748,28.318369],[99.412458,28.295186],[99.374886,28.18183],[99.306516,28.227714],[99.28927,28.286227],[99.237531,28.317842],[99.229524,28.350502],[99.200575,28.365774],[99.16485,28.425264],[99.187024,28.44],[99.191952,28.494714],[99.170394,28.566221],[99.183944,28.58882],[99.147604,28.640831],[99.126662,28.698066],[99.134053,28.734806],[99.114343,28.765763],[99.103872,28.841803],[99.123582,28.890021],[99.132206,28.94869],[99.113727,29.07273],[99.118039,29.100971],[99.105104,29.162656],[99.113727,29.221171],[99.037351,29.20759],[99.024416,29.188783],[98.9813,29.204978],[98.960974,29.165792],[98.967134,29.128159],[98.991771,29.105677],[99.013329,29.036632],[98.925866,28.978536],[98.917859,28.886877],[98.973909,28.864867],[98.972677,28.832367],[98.922786,28.823978],[98.912931,28.800906],[98.852569,28.798283],[98.827932,28.821356],[98.821772,28.920931],[98.786048,28.998952],[98.757714,29.004186],[98.70228,28.9644],[98.655469,28.976966],[98.624056,28.95864],[98.6567,28.910454],[98.643766,28.895261],[98.668403,28.843376],[98.652389,28.817162],[98.683802,28.740054],[98.666555,28.712239],[98.594491,28.667615],[98.637606,28.552029],[98.619128,28.50944],[98.625903,28.489455],[98.673947,28.478934],[98.693041,28.43158],[98.740468,28.348395],[98.746628,28.321003],[98.710287,28.288862],[98.712135,28.229296],[98.649925,28.200291],[98.625903,28.165475],[98.559382,28.182885],[98.494092,28.141203],[98.464527,28.151229],[98.428803,28.104785],[98.389383,28.114814],[98.389999,28.16442],[98.370289,28.18394],[98.37768,28.246167],[98.353042,28.293078],[98.317934,28.324691],[98.301303,28.384204],[98.208913,28.358401],[98.207681,28.330486],[98.231702,28.314681],[98.266811,28.242477],[98.21692,28.212949],[98.169492,28.206093],[98.17442,28.163365],[98.139311,28.142259],[98.160253,28.101089],[98.133152,27.990698],[98.143007,27.948942],[98.187355,27.939426],[98.205217,27.889716],[98.169492,27.851096],[98.215688,27.810874],[98.234166,27.690648],[98.283441,27.654608],[98.310542,27.583552],[98.317318,27.51935],[98.337644,27.508734],[98.388767,27.515104],[98.429419,27.549068],[98.430035,27.653547],[98.444201,27.665209],[98.474998,27.634462],[98.53536,27.620676],[98.554454,27.646126],[98.587099,27.587265],[98.583404,27.571351],[98.650541,27.567637],[98.662244,27.586734],[98.706591,27.553313],[98.685034,27.484315],[98.704744,27.462014],[98.686881,27.425367],[98.702896,27.412618],[98.706591,27.362136],[98.741084,27.330241],[98.734925,27.287168],[98.717062,27.271211],[98.723222,27.221198],[98.696121,27.211086],[98.713983,27.139744],[98.712751,27.075817],[98.765722,27.05077],[98.762642,27.018252],[98.732461,27.002257],[98.757098,26.877947],[98.730613,26.851253],[98.762026,26.798916],[98.746012,26.696841],[98.770033,26.690424],[98.762642,26.660478],[98.781736,26.620893],[98.773113,26.578083],[98.753403,26.559349],[98.757098,26.491881],[98.741084,26.432947],[98.750323,26.424372],[98.733693,26.350926],[98.681338,26.308016],[98.672715,26.239863],[98.713367,26.231274],[98.735541,26.185097],[98.712751,26.156093],[98.720142,26.127082],[98.661012,26.087852],[98.656084,26.139977],[98.632679,26.145887],[98.575396,26.118485],[98.602498,26.054523],[98.614201,25.968468],[98.637606,25.971696],[98.686881,25.925955],[98.705976,25.855426],[98.677642,25.816105],[98.640686,25.798864],[98.553839,25.845731],[98.529201,25.840884],[98.476846,25.77731],[98.461448,25.735267],[98.457752,25.682963],[98.409709,25.664084],[98.402317,25.593939],[98.326557,25.566409],[98.314854,25.543193],[98.247717,25.607971],[98.170724,25.620383],[98.189818,25.569108],[98.163949,25.524292],[98.131304,25.51025],[98.15779,25.457307],[98.137464,25.381633],[98.101123,25.388662],[98.099891,25.354055],[98.06971,25.311864],[98.006884,25.298338],[98.0075,25.279399],[97.940363,25.214985],[97.904023,25.216609],[97.875689,25.25721],[97.839349,25.27074],[97.796233,25.155954],[97.743262,25.078466],[97.719857,25.080634],[97.727864,25.04377],[97.716777,24.978147],[97.729712,24.908689],[97.785762,24.876117],[97.797465,24.845709],[97.765436,24.823984],[97.680437,24.827243],[97.652103,24.790846],[97.569567,24.765852],[97.547394,24.739221],[97.569567,24.708236],[97.570799,24.602719],[97.554785,24.490577],[97.530147,24.443187],[97.588662,24.435559],[97.669966,24.452993],[97.679821,24.401228],[97.716161,24.358711],[97.662574,24.339083],[97.665038,24.296544],[97.721089,24.295999],[97.767284,24.258357],[97.729712,24.227252],[97.72848,24.183585],[97.754349,24.163929],[97.748806,24.160653],[97.743262,24.159561],[97.730944,24.113685],[97.700763,24.093473],[97.697067,24.092927],[97.637321,24.04812],[97.628698,24.004938],[97.572647,23.983068],[97.529531,23.943146],[97.5283,23.926736],[97.618227,23.888438],[97.640401,23.866001],[97.647176,23.840823],[97.684132,23.876946],[97.718009,23.867643],[97.72848,23.895551],[97.763588,23.907041],[97.795617,23.951897],[97.8104,23.943146],[97.863371,23.978693],[97.896015,23.974319],[97.902175,24.014231],[97.984095,24.031177],[97.995182,24.04648],[98.091268,24.085824],[98.096196,24.08637],[98.123297,24.092927],[98.125761,24.092927],[98.132536,24.09238],[98.19721,24.09839],[98.219999,24.113685],[98.343187,24.098936],[98.37768,24.114232],[98.48239,24.122425],[98.487933,24.123517],[98.547063,24.128433],[98.593875,24.08036],[98.646229,24.106038],[98.681954,24.100029],[98.71891,24.127887],[98.818692,24.133348],[98.841482,24.126794],[98.876591,24.15137],[98.895069,24.098936],[98.807606,24.025164],[98.773729,24.022431],[98.727533,23.970491],[98.701048,23.981427],[98.673331,23.960647],[98.701048,23.946427],[98.68565,23.90157],[98.701664,23.834254],[98.669019,23.800857],[98.696121,23.784429],[98.784816,23.781691],[98.824236,23.727462],[98.811917,23.703354],[98.835939,23.683625],[98.847026,23.632097],[98.882134,23.620035],[98.882134,23.595358],[98.844562,23.578904],[98.80391,23.540504],[98.826084,23.470257],[98.874743,23.483431],[98.912315,23.426333],[98.920938,23.360971],[98.872895,23.329651],[98.906772,23.331849],[98.936953,23.309866],[98.928946,23.26589],[98.889525,23.209249],[98.906772,23.185595],[99.002242,23.160287],[99.057677,23.164689],[99.048438,23.11461],[99.106336,23.086536],[99.187024,23.100299],[99.255393,23.077727],[99.281879,23.101399],[99.3484,23.12892],[99.380429,23.099748],[99.440791,23.079379],[99.477747,23.083233],[99.528255,23.065614],[99.517168,23.006685],[99.533798,22.961507],[99.563363,22.925684],[99.531334,22.897019],[99.446951,22.934503],[99.43648,22.913557],[99.462965,22.844635],[99.401371,22.826434],[99.385357,22.761882],[99.326842,22.751396],[99.31514,22.737598],[99.339777,22.708894],[99.385973,22.57136],[99.359487,22.535435],[99.382277,22.493418],[99.297277,22.41156],[99.251698,22.393301],[99.278183,22.34626],[99.233836,22.296434],[99.235683,22.250468],[99.207966,22.232188],[99.175321,22.185647],[99.188256,22.162924],[99.156227,22.159599],[99.219669,22.110816],[99.294814,22.109152],[99.35456,22.095845],[99.400139,22.100281],[99.486987,22.128557],[99.516552,22.099726],[99.562747,22.113034],[99.578762,22.098617],[99.581841,22.103053],[99.648979,22.100835],[99.696406,22.067562],[99.762927,22.068117],[99.870101,22.029288],[99.871333,22.067007],[99.972347,22.053141],[99.965571,22.014309],[100.000064,21.973245],[99.982202,21.919401],[99.960028,21.907186],[99.944014,21.821097],[99.991441,21.703821],[100.049339,21.669899],[100.094303,21.702709],[100.131875,21.699929],[100.169447,21.663225],[100.107853,21.585337],[100.123252,21.565302],[100.131259,21.504066],[100.168831,21.482906],[100.184846,21.516315],[100.206404,21.509634],[100.235353,21.466756],[100.298795,21.477894],[100.349302,21.528564],[100.437381,21.533017],[100.48296,21.458958],[100.526692,21.471211],[100.579047,21.451717],[100.691764,21.510748],[100.730568,21.518542],[100.753358,21.555283],[100.789082,21.570867],[100.804481,21.609821],[100.847597,21.634856],[100.870386,21.67268],[100.896872,21.68269],[100.899335,21.684915],[100.936292,21.694368],[100.937524,21.693812],[101.015132,21.707157],[101.089661,21.773865],[101.123537,21.771642],[101.111835,21.746074],[101.116762,21.691032],[101.153102,21.669343],[101.169117,21.590345],[101.146943,21.560293],[101.209153,21.55751],[101.210385,21.509077],[101.225167,21.499055],[101.193138,21.473996],[101.194986,21.424979],[101.142631,21.409379],[101.183899,21.334699],[101.244877,21.302364],[101.246725,21.275598],[101.222088,21.234324],[101.290457,21.17853],[101.387775,21.225956],[101.439514,21.227072],[101.532521,21.252174],[101.601506,21.233208],[101.588572,21.191365],[101.605818,21.172392],[101.672339,21.194713],[101.703136,21.14616],[101.76473,21.147835],[101.794911,21.208104],[101.834331,21.204756],[101.833715,21.252731],[101.791832,21.285636],[101.745636,21.297345],[101.730238,21.336929],[101.749948,21.409379],[101.741324,21.482906],[101.772737,21.512975],[101.755491,21.538027],[101.754875,21.58478],[101.804766,21.577546],[101.828788,21.617054],[101.807846,21.644313],[101.780129,21.640975],[101.76781,21.716054],[101.747484,21.729953],[101.771506,21.833319],[101.740093,21.845541],[101.735165,21.875534],[101.700057,21.897191],[101.701288,21.938832],[101.666796,21.934391],[101.606434,21.967695],[101.626144,22.005986],[101.573789,22.115251],[101.602738,22.131883],[101.596579,22.161262],[101.547304,22.238282],[101.56455,22.269299],[101.625528,22.28259],[101.671723,22.372826],[101.648318,22.400494],[101.672339,22.47517],[101.715455,22.477935],[101.774585,22.506135],[101.824476,22.45692],[101.823244,22.42705],[101.862665,22.389427],[101.901469,22.384447],[101.907628,22.437007],[101.978461,22.427603],[102.046214,22.458026],[102.131214,22.430922],[102.145381,22.397727],[102.179257,22.430369],[102.270416,22.419858],[102.25625,22.457473],[102.322771,22.554227],[102.356648,22.563623],[102.404691,22.629925],[102.384365,22.679631],[102.43672,22.699508],[102.45951,22.762986],[102.510633,22.774574],[102.551285,22.743669],[102.569763,22.701164],[102.607335,22.730975],[102.657226,22.687913],[102.688639,22.70006],[102.80074,22.620534],[102.82353,22.623296],[102.880196,22.586832],[102.892515,22.533223],[102.930703,22.482359],[102.986754,22.477935],[103.030485,22.441432],[103.081608,22.454154],[103.071753,22.488441],[103.183238,22.558649],[103.161065,22.590147],[103.195557,22.648153],[103.220195,22.643734],[103.283021,22.678526],[103.288564,22.732078],[103.321209,22.777885],[103.323057,22.807678],[103.375411,22.794989],[103.441317,22.753052],[103.436389,22.6973],[103.457947,22.658646],[103.50907,22.601198],[103.529396,22.59291],[103.580519,22.66693],[103.567585,22.701164],[103.642113,22.794989],[103.740048,22.709446],[103.743127,22.697852],[103.766533,22.688465],[103.825047,22.615562],[103.863851,22.584069],[103.875554,22.565833],[103.894032,22.564728],[103.964865,22.502265],[104.009213,22.517745],[104.009213,22.575228],[104.022148,22.593463],[104.04309,22.67687],[104.045553,22.728215],[104.089901,22.768504],[104.117618,22.808781],[104.224176,22.826434],[104.261748,22.841877],[104.274067,22.828088],[104.256821,22.77347],[104.272835,22.73815],[104.323342,22.728767],[104.375697,22.690122],[104.422508,22.734838],[104.498885,22.774574],[104.527834,22.814298],[104.596203,22.846289],[104.674428,22.817056],[104.737869,22.825882],[104.732942,22.852356],[104.760659,22.862282],[104.772362,22.893711],[104.846275,22.926235],[104.860441,22.970874],[104.821021,23.032022],[104.804391,23.110207],[104.874608,23.123417],[104.882615,23.163589],[104.912796,23.175693],[104.949136,23.152033],[104.958991,23.188896],[105.093266,23.260942],[105.122215,23.247745],[105.181962,23.279084],[105.238012,23.26424],[105.260186,23.31811],[105.325475,23.390086],[105.353809,23.362069],[105.372903,23.317561],[105.416018,23.283482],[105.445584,23.292827],[105.50225,23.202648],[105.542902,23.184495],[105.526272,23.234548],[105.560148,23.257093],[105.593409,23.312614],[105.649459,23.346136],[105.699966,23.327453],[105.694423,23.363168],[105.637757,23.404366],[105.699966,23.40162],[105.758481,23.459826],[105.805908,23.467512],[105.815763,23.507031],[105.852103,23.526786],[105.89214,23.52514],[105.913081,23.499348],[105.935871,23.508678],[105.986378,23.489469],[105.999929,23.447748],[106.039965,23.484529],[106.071994,23.495506],[106.08616,23.524043],[106.141595,23.569579],[106.120653,23.605229],[106.149602,23.665538],[106.157609,23.724175],[106.136667,23.795381],[106.192102,23.824947],[106.173008,23.861622],[106.192718,23.879135],[106.157609,23.891174],[106.128044,23.956819],[106.091088,23.998924],[106.096631,24.018058],[106.053516,24.051399],[106.04982,24.089649],[106.011632,24.099482],[105.998081,24.120786],[105.963589,24.110954],[105.919241,24.122425],[105.901995,24.099482],[105.908154,24.069432],[105.89214,24.040468],[105.859495,24.056864],[105.841633,24.03063],[105.796669,24.023524],[105.802212,24.051945],[105.765256,24.073804],[105.739387,24.059596],[105.704278,24.0667],[105.649459,24.032816],[105.628518,24.126794],[105.594641,24.137718],[105.533663,24.130071],[105.493011,24.016965],[105.406163,24.043748],[105.395692,24.065607],[105.334099,24.094566],[105.320548,24.116416],[105.273121,24.092927],[105.292831,24.074896],[105.260186,24.061236],[105.20044,24.105491],[105.182577,24.167205],[105.229389,24.165567],[105.24294,24.208695],[105.215222,24.214699],[105.164715,24.288362],[105.196744,24.326541],[105.188121,24.347261],[105.138846,24.376701],[105.111744,24.37234],[105.106817,24.414853],[105.042759,24.442097],[104.979933,24.412673],[104.930042,24.411038],[104.914028,24.426296],[104.83642,24.446456],[104.784681,24.443732],[104.765587,24.45953],[104.74834,24.435559],[104.715695,24.441552],[104.703377,24.419757],[104.721239,24.340173],[104.70892,24.321087],[104.641783,24.367979],[104.610986,24.377246],[104.63008,24.397958],[104.616529,24.421937],[104.575877,24.424661],[104.550008,24.518894],[104.520443,24.535228],[104.489646,24.653313],[104.529682,24.731611],[104.542616,24.75607],[104.539537,24.813663],[104.586964,24.872859],[104.635623,24.903803],[104.663957,24.964584],[104.713232,24.996048],[104.684898,25.054072],[104.619609,25.060577],[104.685514,25.078466],[104.695369,25.122364],[104.732326,25.167871],[104.724319,25.195491],[104.753884,25.214443],[104.801927,25.163537],[104.822869,25.170037],[104.806854,25.224189],[104.826565,25.235558],[104.816094,25.262622],[104.736021,25.268034],[104.689826,25.296173],[104.639935,25.295632],[104.646094,25.356759],[104.615913,25.364871],[104.566638,25.402719],[104.543232,25.400556],[104.556783,25.524832],[104.524138,25.526992],[104.483486,25.494585],[104.44961,25.495126],[104.434827,25.472436],[104.418813,25.499447],[104.436059,25.520512],[104.428668,25.576126],[104.389248,25.595558],[104.332581,25.598796],[104.310407,25.647901],[104.328886,25.760602],[104.370769,25.730415],[104.397871,25.76168],[104.42374,25.841961],[104.441602,25.868889],[104.414501,25.909807],[104.438523,25.92757],[104.470552,26.009352],[104.460081,26.085702],[104.499501,26.070651],[104.52845,26.114186],[104.518595,26.165762],[104.548776,26.226979],[104.542616,26.253282],[104.592508,26.317672],[104.659645,26.335373],[104.684283,26.3772],[104.664572,26.397572],[104.665804,26.434019],[104.631928,26.451702],[104.638703,26.477954],[104.598667,26.520801],[104.57095,26.524549],[104.579573,26.568449],[104.556783,26.590393],[104.488414,26.579689],[104.459465,26.602701],[104.468088,26.644431],[104.424356,26.709137],[104.398487,26.686147],[104.353523,26.620893],[104.313487,26.612867],[104.274683,26.633733],[104.268524,26.617683],[104.222328,26.620358],[104.160734,26.646571],[104.121314,26.638012],[104.068343,26.573266],[104.067727,26.51491],[104.008597,26.511697],[103.953163,26.521336],[103.865699,26.512232],[103.819504,26.529903],[103.815808,26.55239],[103.763453,26.585041],[103.748671,26.623568],[103.759142,26.689355],[103.773308,26.716621],[103.725265,26.742812],[103.705555,26.794642],[103.722185,26.851253],[103.779468,26.87421],[103.763453,26.905702],[103.775156,26.951056],[103.753598,26.963858],[103.73204,27.018785],[103.704939,27.049171],[103.675374,27.051836],[103.623019,27.007056],[103.623635,27.035312],[103.601461,27.061962],[103.614396,27.079548],[103.659975,27.065692],[103.652584,27.092868],[103.620555,27.096598],[103.63349,27.12057],[103.696316,27.126429],[103.748671,27.210021],[103.801641,27.250464],[103.80041,27.26536],[103.865699,27.28185],[103.874322,27.331304],[103.903271,27.347785],[103.905119,27.38552],[103.932221,27.443958],[103.956242,27.425367],[104.015372,27.429086],[104.01722,27.383926],[104.084358,27.330773],[104.113923,27.338216],[104.173053,27.263232],[104.210625,27.297273],[104.248813,27.291955],[104.247582,27.336621],[104.295625,27.37436],[104.30856,27.407305],[104.363378,27.467855],[104.467472,27.414211],[104.497037,27.414743],[104.539537,27.327583],[104.570334,27.331836],[104.611602,27.306846],[104.7545,27.345658],[104.77113,27.317481],[104.824717,27.3531],[104.856746,27.332368],[104.851818,27.299401],[104.871528,27.290891],[104.913412,27.327051],[105.01073,27.379143],[105.068013,27.418461],[105.120984,27.418461],[105.184425,27.392959],[105.182577,27.367451],[105.233084,27.436522],[105.234316,27.489093],[105.260186,27.514573],[105.232469,27.546945],[105.25649,27.582491],[105.304533,27.611661],[105.29591,27.631811],[105.308229,27.704955]]]]}},{"type":"Feature","properties":{"adcode":540000,"name":"西藏自治区","center":[91.132212,29.660361],"centroid":[88.388277,31.56375],"childrenNum":7,"level":"province","parent":{"adcode":100000},"subFeatureIndex":25,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[89.711414,36.093272],[89.614711,36.109712],[89.594385,36.126632],[89.490291,36.151281],[89.375727,36.228078],[89.335075,36.23725],[89.292575,36.231457],[89.232213,36.295636],[89.198952,36.260417],[89.126887,36.254626],[89.10225,36.281164],[89.054822,36.291777],[89.013554,36.315409],[88.964279,36.318785],[88.926091,36.36458],[88.870657,36.348193],[88.838628,36.353496],[88.802903,36.33807],[88.783809,36.291777],[88.766563,36.292259],[88.690186,36.367954],[88.623665,36.389636],[88.618121,36.428168],[88.573158,36.461386],[88.498629,36.446463],[88.470912,36.48208],[88.41055,36.473418],[88.356963,36.477268],[88.366202,36.458016],[88.282434,36.470049],[88.241782,36.468605],[88.222688,36.447426],[88.182652,36.452721],[88.134609,36.427205],[88.092109,36.43539],[88.006494,36.430575],[87.983088,36.437797],[87.95845,36.408423],[87.919646,36.39349],[87.838342,36.383855],[87.826023,36.391563],[87.767509,36.3747],[87.731785,36.384818],[87.6203,36.360243],[87.570409,36.342409],[87.470626,36.354459],[87.460155,36.409868],[87.426895,36.42576],[87.386859,36.412757],[87.363453,36.420463],[87.348055,36.393008],[87.292004,36.358797],[87.193454,36.349158],[87.161425,36.325535],[87.149106,36.297565],[87.08628,36.310587],[87.051788,36.2966],[86.996353,36.308658],[86.943998,36.284058],[86.931064,36.265242],[86.887332,36.262829],[86.86331,36.299977],[86.836209,36.291294],[86.746282,36.291777],[86.69947,36.24449],[86.599072,36.222285],[86.531935,36.227113],[86.515305,36.205385],[86.454943,36.221319],[86.392733,36.206834],[86.35824,36.168676],[86.2794,36.170608],[86.248603,36.141616],[86.187625,36.130983],[86.182081,36.064734],[86.199944,36.047801],[86.173458,36.008113],[86.150668,36.00424],[86.129111,35.941761],[86.093386,35.906868],[86.090306,35.876809],[86.05335,35.842857],[86.035488,35.846738],[85.949256,35.778794],[85.903677,35.78462],[85.835308,35.771996],[85.811286,35.778794],[85.691178,35.751114],[85.65299,35.731199],[85.612953,35.651486],[85.566142,35.6403],[85.518715,35.680658],[85.373969,35.700101],[85.341324,35.753543],[85.271107,35.788989],[85.146071,35.742371],[85.053065,35.752086],[84.99455,35.737028],[84.973608,35.709334],[84.920022,35.696213],[84.798066,35.647595],[84.729081,35.613546],[84.704443,35.616951],[84.628067,35.595055],[84.570168,35.588242],[84.513502,35.564391],[84.448828,35.550272],[84.475929,35.516181],[84.45314,35.473303],[84.424191,35.466479],[84.333032,35.413821],[84.274517,35.404065],[84.200605,35.381135],[84.160569,35.359663],[84.140859,35.379184],[84.095895,35.362592],[84.077417,35.400163],[84.005968,35.422599],[83.906186,35.40309],[83.885244,35.367472],[83.79778,35.354783],[83.785462,35.36308],[83.677672,35.361128],[83.622238,35.335256],[83.599448,35.351366],[83.54155,35.341603],[83.540318,35.364056],[83.502745,35.360639],[83.449159,35.382111],[83.405427,35.380648],[83.333978,35.397236],[83.280391,35.401138],[83.251442,35.417722],[83.178145,35.38943],[83.127022,35.398699],[83.088834,35.425526],[83.067892,35.46258],[82.998907,35.484512],[82.971806,35.548324],[82.981661,35.599922],[82.956407,35.636409],[82.967494,35.667532],[82.894813,35.673852],[82.873871,35.688922],[82.795031,35.688436],[82.780249,35.666073],[82.731589,35.637868],[82.652133,35.67288],[82.628727,35.692324],[82.546192,35.708362],[82.501844,35.701073],[82.468583,35.717595],[82.424852,35.712736],[82.392823,35.656349],[82.336156,35.651486],[82.350323,35.611113],[82.328149,35.559523],[82.2992,35.544916],[82.263475,35.547837],[82.234526,35.520565],[82.189563,35.513258],[82.164925,35.495719],[82.086701,35.467454],[82.071302,35.450393],[82.034346,35.451855],[82.029419,35.426013],[82.05344,35.35039],[82.030034,35.321585],[81.99123,35.30547],[81.955506,35.307423],[81.927789,35.271275],[81.853876,35.25857],[81.804601,35.270786],[81.736847,35.26248],[81.68634,35.235599],[81.513261,35.23511],[81.504638,35.279092],[81.447972,35.318167],[81.441196,35.333303],[81.385762,35.335256],[81.363588,35.354783],[81.314313,35.337209],[81.285364,35.345508],[81.26627,35.322562],[81.219458,35.319144],[81.191741,35.36552],[81.142466,35.365032],[81.103662,35.386015],[81.09935,35.40748],[81.054387,35.402602],[81.031597,35.380648],[81.030981,35.337209],[81.002648,35.334768],[81.026053,35.31133],[80.963844,35.310842],[80.924423,35.330862],[80.894242,35.324027],[80.844351,35.345508],[80.759968,35.334768],[80.689135,35.339162],[80.690982,35.364544],[80.65649,35.393821],[80.599823,35.409431],[80.56841,35.391381],[80.532686,35.404553],[80.514824,35.391869],[80.444607,35.417235],[80.432904,35.449418],[80.375006,35.387966],[80.321419,35.38699],[80.286926,35.35283],[80.267832,35.295701],[80.362687,35.20871],[80.257977,35.203331],[80.223484,35.177409],[80.23026,35.147565],[80.118159,35.066293],[80.078123,35.076578],[80.031311,35.034447],[80.04363,35.022196],[80.02392,34.971209],[80.041782,34.943252],[80.034391,34.902033],[80.003594,34.895162],[79.996819,34.856375],[79.961094,34.862759],[79.926602,34.849499],[79.947544,34.821008],[79.898268,34.732035],[79.906892,34.683821],[79.866856,34.671517],[79.88595,34.642965],[79.84345,34.55725],[79.861312,34.528166],[79.801566,34.478847],[79.735661,34.471447],[79.699936,34.477861],[79.675914,34.451216],[79.58106,34.456151],[79.545335,34.476381],[79.504683,34.45467],[79.435082,34.447761],[79.363017,34.428018],[79.326677,34.44332],[79.274322,34.435916],[79.241677,34.415183],[79.179467,34.422588],[79.161605,34.441345],[79.072294,34.412714],[79.039033,34.421601],[79.0107,34.399877],[79.048888,34.348506],[79.039649,34.33467],[79.019939,34.313417],[78.981751,34.31836],[78.958345,34.230827],[78.941099,34.212022],[78.9257,34.155584],[78.910302,34.143202],[78.878273,34.163012],[78.828998,34.125369],[78.801897,34.137258],[78.737223,34.089692],[78.661462,34.086718],[78.656535,34.030196],[78.736607,33.999937],[78.744614,33.980585],[78.734143,33.918529],[78.762476,33.90959],[78.756317,33.8773],[78.766172,33.823124],[78.758165,33.790802],[78.779723,33.73259],[78.692259,33.676331],[78.684868,33.654415],[78.713201,33.623025],[78.755085,33.623025],[78.74215,33.55323],[78.816679,33.480882],[78.84994,33.419963],[78.896751,33.41247],[78.949722,33.376495],[78.9682,33.334505],[79.022403,33.323504],[79.041497,33.268479],[79.083997,33.245459],[79.072294,33.22844],[79.10925,33.200401],[79.152366,33.184375],[79.162221,33.165841],[79.139431,33.117735],[79.162837,33.01191],[79.204721,32.964724],[79.255844,32.942628],[79.227511,32.89038],[79.237982,32.846145],[79.225047,32.784281],[79.275554,32.778746],[79.301423,32.728919],[79.27309,32.678056],[79.299575,32.637244],[79.308199,32.596918],[79.272474,32.561113],[79.252148,32.516715],[79.190554,32.511669],[79.180083,32.492994],[79.135736,32.472295],[79.124649,32.416235],[79.103091,32.369744],[79.067982,32.380863],[79.005772,32.375304],[78.970664,32.331826],[78.904142,32.374798],[78.87273,32.40512],[78.81052,32.436441],[78.782186,32.480373],[78.760629,32.563635],[78.781571,32.608009],[78.74215,32.654881],[78.741534,32.703743],[78.6861,32.680071],[78.675013,32.658408],[78.628202,32.630188],[78.588782,32.637748],[78.577695,32.615067],[78.518564,32.605993],[78.500086,32.580782],[78.424942,32.565652],[78.395377,32.530339],[78.426174,32.502584],[78.472985,32.435431],[78.458818,32.379853],[78.483456,32.357106],[78.480992,32.329297],[78.508709,32.297939],[78.475449,32.236708],[78.430485,32.212407],[78.429869,32.194683],[78.469905,32.127808],[78.509941,32.147065],[78.527188,32.11463],[78.609107,32.052768],[78.60726,32.023851],[78.705194,31.988835],[78.762476,31.947203],[78.768636,31.92638],[78.739687,31.885228],[78.665158,31.851684],[78.654687,31.819144],[78.706426,31.778453],[78.763092,31.668499],[78.798817,31.675629],[78.806824,31.64099],[78.845628,31.609905],[78.833925,31.584927],[78.779723,31.545154],[78.740303,31.532912],[78.729832,31.478316],[78.755701,31.478316],[78.792041,31.435944],[78.760013,31.392531],[78.755085,31.355742],[78.795121,31.301043],[78.859179,31.289281],[78.865338,31.312804],[78.884432,31.277006],[78.923852,31.246824],[78.930628,31.220726],[78.997765,31.158779],[78.97436,31.115751],[79.010084,31.043994],[79.059359,31.028097],[79.096931,30.992192],[79.181931,31.015788],[79.205953,31.0004],[79.227511,30.949088],[79.33222,30.969103],[79.316206,31.01784],[79.35809,31.031174],[79.404901,31.071678],[79.424611,31.061425],[79.427075,31.018353],[79.505915,31.027584],[79.550879,30.957813],[79.59769,30.925989],[79.660516,30.956787],[79.668523,30.980392],[79.729501,30.941389],[79.75845,30.936769],[79.835443,30.851006],[79.890877,30.855116],[79.913051,30.833022],[79.900732,30.7991],[79.961094,30.771337],[79.955551,30.738422],[79.970333,30.685941],[80.014065,30.661748],[80.04363,30.603559],[80.143412,30.55822],[80.214245,30.586044],[80.261673,30.566465],[80.322035,30.564403],[80.357759,30.520592],[80.43044,30.515952],[80.446454,30.495327],[80.504969,30.483466],[80.549316,30.448905],[80.585041,30.463866],[80.633084,30.458707],[80.692214,30.416913],[80.719316,30.414848],[80.81725,30.321389],[80.910873,30.30279],[80.933662,30.266614],[80.996488,30.267648],[81.034677,30.246971],[81.038372,30.205086],[81.082104,30.151281],[81.085799,30.100554],[81.110437,30.085538],[81.09627,30.052909],[81.131995,30.016124],[81.225618,30.005759],[81.256415,30.011978],[81.247792,30.032705],[81.2829,30.061197],[81.293371,30.094859],[81.269349,30.153351],[81.335871,30.149729],[81.393769,30.199396],[81.397465,30.240767],[81.419023,30.270232],[81.406088,30.291938],[81.427646,30.305373],[81.399929,30.319323],[81.406088,30.369421],[81.432573,30.379231],[81.406704,30.40401],[81.418407,30.420525],[81.454131,30.412268],[81.494783,30.381296],[81.555761,30.369421],[81.566232,30.428782],[81.613044,30.412784],[81.63029,30.446842],[81.723913,30.407623],[81.759021,30.385426],[81.872354,30.373035],[81.939491,30.344633],[81.954274,30.355995],[81.99123,30.322939],[82.022027,30.339468],[82.060215,30.332237],[82.104563,30.346182],[82.132896,30.30434],[82.11873,30.279019],[82.114418,30.226806],[82.142135,30.200948],[82.188947,30.18543],[82.207425,30.143519],[82.183403,30.12178],[82.17786,30.06793],[82.246845,30.071555],[82.311519,30.035813],[82.333693,30.045138],[82.368185,30.014051],[82.412533,30.011978],[82.431011,29.989692],[82.474743,29.973622],[82.498148,29.947698],[82.560974,29.955476],[82.609017,29.886489],[82.64351,29.868846],[82.6238,29.834588],[82.703872,29.847566],[82.737749,29.80655],[82.691553,29.766037],[82.757459,29.761881],[82.774089,29.726548],[82.816589,29.717192],[82.830756,29.687562],[82.885574,29.689122],[82.9484,29.704718],[82.966878,29.658963],[83.011226,29.667804],[83.088834,29.604863],[83.12887,29.623593],[83.159667,29.61735],[83.164595,29.595496],[83.217565,29.60018],[83.266841,29.571035],[83.27608,29.505951],[83.325355,29.502826],[83.383253,29.42206],[83.415898,29.420496],[83.423289,29.361053],[83.450391,29.332883],[83.463941,29.285916],[83.492274,29.280174],[83.548941,29.201322],[83.57789,29.203934],[83.596368,29.174153],[83.656114,29.16736],[83.667201,29.200277],[83.727563,29.244672],[83.800244,29.249372],[83.82057,29.294267],[83.851367,29.294789],[83.911729,29.323491],[83.949301,29.312533],[83.986874,29.325057],[84.002272,29.291658],[84.052163,29.296877],[84.116837,29.286438],[84.130388,29.239972],[84.203068,29.239972],[84.197525,29.210202],[84.17104,29.19453],[84.176583,29.133909],[84.20738,29.118749],[84.192597,29.084236],[84.194445,29.045004],[84.224626,29.049189],[84.248648,29.030353],[84.228322,28.949738],[84.234481,28.889497],[84.268358,28.895261],[84.330568,28.859101],[84.340423,28.866963],[84.408176,28.85386],[84.404481,28.828173],[84.434046,28.823978],[84.445133,28.764189],[84.483321,28.735331],[84.557233,28.74635],[84.620059,28.732182],[84.650856,28.714338],[84.669334,28.680742],[84.699515,28.671816],[84.698284,28.633478],[84.773428,28.610363],[84.857196,28.567798],[84.896616,28.587244],[84.981616,28.586193],[84.995782,28.611414],[85.05676,28.674441],[85.126361,28.676016],[85.155926,28.643983],[85.195963,28.624022],[85.18426,28.587244],[85.189803,28.544669],[85.160238,28.49261],[85.108499,28.461047],[85.129441,28.377885],[85.113427,28.344708],[85.179948,28.324164],[85.209513,28.338914],[85.272339,28.282538],[85.349947,28.298347],[85.379512,28.274105],[85.415853,28.321003],[85.458969,28.332593],[85.520563,28.326798],[85.602483,28.295712],[85.601251,28.254075],[85.650526,28.283592],[85.682555,28.375779],[85.720743,28.372093],[85.753388,28.227714],[85.791576,28.195544],[85.854402,28.172334],[85.871648,28.124843],[85.898749,28.101617],[85.901213,28.053566],[85.980053,27.984357],[85.949256,27.937311],[86.002227,27.90717],[86.053966,27.900823],[86.125415,27.923035],[86.082915,28.018175],[86.086611,28.090002],[86.128495,28.086835],[86.140198,28.114814],[86.19132,28.167058],[86.223965,28.092642],[86.206103,28.084195],[86.231972,27.974315],[86.27324,27.976958],[86.308965,27.950528],[86.393349,27.926736],[86.414906,27.904526],[86.450015,27.908757],[86.475884,27.944713],[86.514689,27.954757],[86.513457,27.996511],[86.537478,28.044587],[86.55842,28.047757],[86.568891,28.103201],[86.60092,28.097922],[86.611391,28.069938],[86.647732,28.06941],[86.662514,28.092114],[86.700086,28.101617],[86.74813,28.089474],[86.768456,28.06941],[86.756753,28.032967],[86.827586,28.012363],[86.864542,28.022401],[86.885484,27.995983],[86.926752,27.985942],[86.935375,27.955286],[87.035157,27.946299],[87.080737,27.910872],[87.118309,27.840512],[87.173744,27.818284],[87.227946,27.812991],[87.249504,27.839454],[87.280917,27.845275],[87.317258,27.826753],[87.364069,27.824106],[87.421967,27.856916],[87.418272,27.825694],[87.45954,27.820931],[87.58088,27.859562],[87.598126,27.814579],[87.670191,27.832045],[87.668343,27.809815],[87.727473,27.802933],[87.77798,27.860091],[87.782292,27.890774],[87.826639,27.927794],[87.930733,27.909285],[87.982472,27.884426],[88.037291,27.901881],[88.090877,27.885484],[88.111819,27.864852],[88.137689,27.878607],[88.120442,27.915103],[88.156783,27.957929],[88.203594,27.943127],[88.242398,27.967444],[88.254101,27.939426],[88.357579,27.986471],[88.401311,27.976958],[88.43334,28.002852],[88.469064,28.009721],[88.498013,28.04089],[88.554064,28.027684],[88.565151,28.083139],[88.620585,28.091586],[88.645223,28.111119],[88.67602,28.068353],[88.764099,28.068353],[88.812142,28.018175],[88.842939,28.006023],[88.846635,27.921448],[88.864497,27.921448],[88.888519,27.846863],[88.863265,27.811932],[88.870657,27.743098],[88.850331,27.710783],[88.852178,27.671039],[88.816454,27.641354],[88.813374,27.606889],[88.770874,27.563924],[88.797976,27.521473],[88.783193,27.467324],[88.809063,27.405711],[88.838012,27.37808],[88.867577,27.3818],[88.901453,27.327583],[88.920548,27.325456],[88.911924,27.272807],[88.942105,27.261636],[88.984605,27.208957],[89.067757,27.240354],[89.077612,27.287168],[89.152757,27.319076],[89.182938,27.373829],[89.132431,27.441302],[89.095474,27.471572],[89.109025,27.537925],[89.163228,27.574534],[89.128735,27.611131],[89.131815,27.633402],[89.184786,27.673689],[89.238988,27.796581],[89.295655,27.84845],[89.375727,27.875962],[89.44348,27.968501],[89.461958,28.03191],[89.511233,28.086307],[89.541414,28.088418],[89.605472,28.161782],[89.720037,28.170224],[89.779167,28.197127],[89.789638,28.240895],[89.869094,28.221386],[89.901739,28.18183],[89.976268,28.189215],[90.017536,28.162837],[90.03355,28.136981],[90.07297,28.155451],[90.103151,28.141731],[90.124709,28.190797],[90.166593,28.187632],[90.189999,28.161782],[90.231882,28.144897],[90.297172,28.153868],[90.367389,28.088946],[90.384019,28.06096],[90.43699,28.063073],[90.47949,28.044587],[90.513983,28.062016],[90.569417,28.044059],[90.591591,28.021345],[90.701844,28.076274],[90.741264,28.053038],[90.802242,28.040362],[90.806554,28.015005],[90.853365,27.969029],[90.896481,27.946299],[90.96177,27.9537],[90.976553,27.935725],[90.96485,27.900294],[91.025828,27.857445],[91.113292,27.846333],[91.155175,27.894476],[91.147784,27.927794],[91.162567,27.968501],[91.216153,27.989113],[91.251878,27.970615],[91.309776,28.057791],[91.464993,28.002852],[91.490246,27.971672],[91.486551,27.937311],[91.552456,27.90717],[91.611586,27.891303],[91.618978,27.856916],[91.561079,27.855329],[91.544449,27.820401],[91.610355,27.819343],[91.642383,27.7664],[91.622673,27.692238],[91.570934,27.650897],[91.562311,27.627569],[91.582637,27.598933],[91.564775,27.58196],[91.585101,27.540578],[91.626985,27.509265],[91.663325,27.507142],[91.71876,27.467324],[91.753868,27.462545],[91.839484,27.489624],[91.946657,27.464138],[92.010715,27.474758],[92.021802,27.444489],[92.064918,27.391365],[92.125896,27.273339],[92.091403,27.264296],[92.071077,27.237694],[92.061222,27.190327],[92.032273,27.167967],[92.02673,27.108318],[92.043976,27.052902],[92.076005,27.041175],[92.124664,26.960124],[92.109265,26.854991],[92.197961,26.86994],[92.28604,26.892359],[92.404916,26.9025],[92.496691,26.921711],[92.549046,26.941453],[92.64698,26.952656],[92.682089,26.947855],[92.802813,26.895028],[92.909371,26.914241],[93.050421,26.883819],[93.111399,26.880082],[93.232739,26.906769],[93.56781,26.938252],[93.625092,26.955323],[93.747048,27.015587],[93.817265,27.025183],[93.841903,27.045973],[93.849294,27.168499],[93.970634,27.30525],[94.056866,27.375423],[94.147409,27.458297],[94.220705,27.536333],[94.277372,27.58143],[94.353132,27.578778],[94.399944,27.589386],[94.443675,27.585143],[94.478168,27.602116],[94.524979,27.596282],[94.660486,27.650367],[94.722696,27.683759],[94.78121,27.699127],[94.836645,27.728796],[94.88592,27.743098],[94.947514,27.792345],[95.015267,27.82887],[95.067006,27.840512],[95.28628,27.939955],[95.32878,28.017646],[95.352802,28.04089],[95.371896,28.110063],[95.39715,28.142259],[95.437802,28.161782],[95.528345,28.182885],[95.674322,28.254075],[95.740228,28.275159],[95.787655,28.270416],[95.832003,28.295186],[95.874502,28.29782],[95.899756,28.278322],[95.907763,28.241422],[95.936096,28.240368],[95.989067,28.198181],[96.074683,28.193434],[96.098088,28.212421],[96.194175,28.212949],[96.275479,28.228241],[96.298269,28.140148],[96.367254,28.118509],[96.398667,28.118509],[96.395587,28.143842],[96.426384,28.161782],[96.46334,28.143314],[96.499681,28.067297],[96.538485,28.075218],[96.623485,28.024514],[96.635188,27.994926],[96.690622,27.948942],[96.711564,27.9574],[96.784245,27.931495],[96.810114,27.890245],[96.849534,27.874375],[96.908049,27.884426],[96.972722,27.861149],[97.008447,27.807698],[97.049099,27.81405],[97.062649,27.742568],[97.097758,27.740979],[97.103301,27.780697],[97.167975,27.811932],[97.253591,27.891832],[97.303482,27.913516],[97.324424,27.880723],[97.386634,27.882839],[97.372467,27.907699],[97.379242,27.970087],[97.413119,28.01342],[97.378626,28.031382],[97.375547,28.062545],[97.320728,28.054095],[97.305945,28.071522],[97.340438,28.104785],[97.326887,28.132759],[97.352757,28.149646],[97.362612,28.199236],[97.349677,28.235623],[97.398336,28.238786],[97.402032,28.279903],[97.422358,28.297293],[97.461162,28.26778],[97.469169,28.30309],[97.518445,28.327852],[97.488879,28.347341],[97.485184,28.38631],[97.499966,28.428948],[97.521524,28.444736],[97.507974,28.46473],[97.521524,28.495766],[97.569567,28.541515],[97.60406,28.515225],[97.634857,28.532051],[97.68598,28.519958],[97.737103,28.465782],[97.738335,28.396313],[97.769748,28.3742],[97.801161,28.326798],[97.842429,28.326798],[97.871378,28.361561],[97.907718,28.363141],[98.020435,28.253548],[98.008116,28.214003],[98.03337,28.187105],[98.056775,28.202401],[98.090036,28.195544],[98.097427,28.166531],[98.139311,28.142259],[98.17442,28.163365],[98.169492,28.206093],[98.21692,28.212949],[98.266811,28.242477],[98.231702,28.314681],[98.207681,28.330486],[98.208913,28.358401],[98.301303,28.384204],[98.317934,28.324691],[98.353042,28.293078],[98.37768,28.246167],[98.370289,28.18394],[98.389999,28.16442],[98.389383,28.114814],[98.428803,28.104785],[98.464527,28.151229],[98.494092,28.141203],[98.559382,28.182885],[98.625903,28.165475],[98.649925,28.200291],[98.712135,28.229296],[98.710287,28.288862],[98.746628,28.321003],[98.740468,28.348395],[98.693041,28.43158],[98.673947,28.478934],[98.625903,28.489455],[98.619128,28.50944],[98.637606,28.552029],[98.594491,28.667615],[98.666555,28.712239],[98.683802,28.740054],[98.652389,28.817162],[98.668403,28.843376],[98.643766,28.895261],[98.6567,28.910454],[98.624056,28.95864],[98.655469,28.976966],[98.70228,28.9644],[98.757714,29.004186],[98.786048,28.998952],[98.821772,28.920931],[98.827932,28.821356],[98.852569,28.798283],[98.912931,28.800906],[98.922786,28.823978],[98.972677,28.832367],[98.973909,28.864867],[98.917859,28.886877],[98.925866,28.978536],[99.013329,29.036632],[98.991771,29.105677],[98.967134,29.128159],[98.960974,29.165792],[98.9813,29.204978],[99.024416,29.188783],[99.037351,29.20759],[99.113727,29.221171],[99.114343,29.243628],[99.075539,29.316186],[99.058909,29.417368],[99.066916,29.421018],[99.044742,29.520013],[99.052133,29.563748],[99.014561,29.607464],[98.992387,29.677163],[99.018873,29.792009],[99.0238,29.846009],[99.068148,29.931621],[99.055213,29.958587],[99.036735,30.053945],[99.044742,30.079842],[98.989308,30.151799],[98.9813,30.182843],[98.993003,30.215429],[98.970829,30.260928],[98.986844,30.280569],[98.967134,30.33482],[98.965286,30.449937],[98.932025,30.521623],[98.926482,30.569556],[98.939417,30.598923],[98.92217,30.609225],[98.907388,30.698292],[98.963438,30.728134],[98.957895,30.765166],[98.904924,30.782649],[98.850105,30.849465],[98.797135,30.87926],[98.774345,30.908019],[98.797135,30.948575],[98.806374,30.995783],[98.774961,31.031174],[98.736772,31.049121],[98.712135,31.082954],[98.710287,31.1178],[98.675179,31.15417],[98.602498,31.192062],[98.62344,31.221238],[98.60373,31.257568],[98.616048,31.3036],[98.643766,31.338876],[98.691809,31.333253],[98.773113,31.249382],[98.805758,31.279052],[98.810685,31.306668],[98.887062,31.37465],[98.84333,31.416028],[98.844562,31.429817],[98.714599,31.508935],[98.696736,31.538523],[98.651157,31.57881],[98.619128,31.591555],[98.553839,31.660349],[98.545831,31.717383],[98.516882,31.717383],[98.508875,31.751995],[98.461448,31.800327],[98.414636,31.832365],[98.426339,31.856767],[98.399238,31.895899],[98.432498,31.922825],[98.434962,32.007613],[98.402933,32.026896],[98.404781,32.045159],[98.357354,32.087253],[98.303151,32.121726],[98.260035,32.208862],[98.218768,32.234683],[98.23047,32.262521],[98.208913,32.318171],[98.218768,32.342444],[98.125145,32.401077],[98.107283,32.391476],[98.079565,32.415224],[97.940363,32.482393],[97.880001,32.486431],[97.863986,32.499051],[97.80732,32.50006],[97.795617,32.521257],[97.730944,32.527312],[97.684132,32.530339],[97.670582,32.51722],[97.540618,32.536899],[97.50243,32.530844],[97.463626,32.55506],[97.448843,32.586833],[97.411887,32.575235],[97.374315,32.546484],[97.3583,32.563635],[97.332431,32.542448],[97.334895,32.514192],[97.388481,32.501575],[97.341054,32.440987],[97.387865,32.427349],[97.424822,32.322723],[97.415583,32.296421],[97.371235,32.273148],[97.32196,32.303503],[97.299786,32.294904],[97.264062,32.182527],[97.271453,32.139971],[97.313953,32.130342],[97.293011,32.096887],[97.308409,32.076605],[97.258518,32.072041],[97.219714,32.109054],[97.201852,32.090296],[97.233881,32.063927],[97.214786,32.042623],[97.188301,32.055304],[97.169823,32.032984],[97.127323,32.044145],[97.028773,32.04871],[97.006599,32.067984],[96.935766,32.048203],[96.965947,32.008628],[96.941925,31.986297],[96.894498,32.013703],[96.863085,31.996448],[96.868629,31.964975],[96.824281,32.007613],[96.722651,32.013195],[96.742977,32.001016],[96.753448,31.944156],[96.776238,31.935015],[96.81073,31.894375],[96.794716,31.869474],[96.760223,31.860325],[96.765767,31.819144],[96.799027,31.792188],[96.840295,31.720438],[96.790404,31.698545],[96.778701,31.675629],[96.722651,31.686833],[96.691854,31.722474],[96.661057,31.705674],[96.615477,31.737236],[96.56805,31.711783],[96.519391,31.74945],[96.468884,31.769804],[96.435623,31.796258],[96.407906,31.845583],[96.389428,31.919777],[96.288414,31.919777],[96.253305,31.929936],[96.220044,31.905553],[96.188632,31.904028],[96.214501,31.876589],[96.202798,31.841008],[96.183088,31.835924],[96.178161,31.775401],[96.231131,31.749959],[96.222508,31.733164],[96.252073,31.697527],[96.245298,31.657802],[96.221892,31.647613],[96.207726,31.598691],[96.156603,31.602769],[96.148595,31.686324],[96.135661,31.70211],[96.064828,31.720438],[95.989067,31.78761],[95.983524,31.816601],[95.89914,31.81711],[95.846169,31.736218],[95.853561,31.714329],[95.823995,31.68225],[95.779648,31.748941],[95.634286,31.782523],[95.580083,31.76726],[95.546823,31.73978],[95.511714,31.750468],[95.480301,31.795749],[95.456896,31.801853],[95.406389,31.896915],[95.408852,31.918761],[95.3682,31.92892],[95.360809,31.95939],[95.395918,32.001523],[95.454432,32.007613],[95.421171,32.033999],[95.454432,32.061898],[95.440265,32.157705],[95.406389,32.182021],[95.367584,32.178982],[95.366968,32.151118],[95.31523,32.148585],[95.270266,32.194683],[95.270266,32.194683],[95.239469,32.287315],[95.241317,32.3207],[95.214216,32.321712],[95.20744,32.297433],[95.10581,32.258979],[95.079325,32.279726],[95.096571,32.322217],[95.193274,32.332331],[95.261643,32.348006],[95.228382,32.363678],[95.218527,32.397035],[95.153853,32.386423],[95.081789,32.384907],[95.075013,32.376315],[95.075013,32.376315],[95.057151,32.395014],[94.988166,32.422802],[94.944434,32.404109],[94.912405,32.41573],[94.889616,32.472295],[94.852043,32.463712],[94.80708,32.486431],[94.78737,32.522266],[94.762116,32.526303],[94.737479,32.587338],[94.638312,32.645307],[94.614291,32.673522],[94.591501,32.640772],[94.522516,32.595909],[94.459074,32.599439],[94.463386,32.572209],[94.435052,32.562626],[94.395016,32.594397],[94.371611,32.524789],[94.350053,32.533871],[94.294002,32.519743],[94.292154,32.502584],[94.250886,32.51722],[94.196684,32.51621],[94.176974,32.454117],[94.137554,32.433915],[94.091974,32.463207],[94.049474,32.469771],[94.03038,32.448057],[93.978641,32.459672],[93.960163,32.484917],[93.90904,32.463207],[93.861613,32.466237],[93.851142,32.50965],[93.820345,32.549511],[93.75136,32.56313],[93.721795,32.578261],[93.651577,32.571705],[93.618933,32.522771],[93.516687,32.47583],[93.501904,32.503593],[93.476651,32.504603],[93.4631,32.556069],[93.411977,32.558086],[93.385492,32.525294],[93.33868,32.5712],[93.308499,32.580278],[93.300492,32.619604],[93.260456,32.62666],[93.239514,32.662439],[93.210565,32.655385],[93.176688,32.6705],[93.159442,32.644803],[93.087993,32.63674],[93.069515,32.626156],[93.023935,32.703239],[93.019624,32.737477],[93.00053,32.741001],[92.964189,32.714821],[92.933392,32.719353],[92.866871,32.698203],[92.822523,32.729926],[92.789262,32.719856],[92.756618,32.743014],[92.686401,32.76516],[92.667922,32.73194],[92.634662,32.720863],[92.574916,32.741001],[92.56814,32.73194],[92.484372,32.745028],[92.459119,32.76365],[92.411076,32.748048],[92.355641,32.764657],[92.343938,32.738484],[92.310062,32.751571],[92.255243,32.720863],[92.198577,32.754591],[92.211511,32.788306],[92.193649,32.801889],[92.227526,32.821003],[92.205352,32.866255],[92.145606,32.885857],[92.101874,32.860222],[92.038432,32.860725],[92.018722,32.829552],[91.955897,32.8205],[91.896766,32.907967],[91.857962,32.90244],[91.839484,32.948152],[91.799448,32.942126],[91.752637,32.969242],[91.685499,32.989324],[91.664557,33.012913],[91.583253,33.0375],[91.55492,33.060074],[91.535826,33.10019],[91.49579,33.109214],[91.436044,33.066092],[91.370138,33.100691],[91.311624,33.108211],[91.261733,33.141291],[91.226624,33.141792],[91.18782,33.106206],[91.161335,33.108712],[91.147784,33.07211],[91.072024,33.113224],[91.037531,33.098686],[91.001807,33.11573],[90.927894,33.120241],[90.902024,33.083143],[90.88293,33.120241],[90.803474,33.114227],[90.740032,33.142293],[90.704308,33.135778],[90.627315,33.180368],[90.562642,33.229441],[90.490577,33.264977],[90.405577,33.260473],[90.363077,33.279487],[90.332896,33.310501],[90.246665,33.423959],[90.22018,33.437943],[90.107463,33.460913],[90.088984,33.478885],[90.083441,33.525295],[90.01076,33.553728],[89.984275,33.612061],[90.008296,33.687785],[89.981195,33.70322],[89.983659,33.725622],[89.907282,33.741051],[89.902355,33.758467],[89.942391,33.801246],[89.899891,33.80771],[89.837065,33.868853],[89.795181,33.865374],[89.73174,33.921509],[89.718805,33.946832],[89.688008,33.959739],[89.684928,33.990013],[89.635037,34.049537],[89.656595,34.057966],[89.655979,34.097126],[89.71203,34.131809],[89.756993,34.124874],[89.760073,34.152613],[89.789638,34.150632],[89.816739,34.16945],[89.838297,34.263477],[89.825362,34.293642],[89.86663,34.324785],[89.858623,34.359375],[89.820435,34.369255],[89.799493,34.39642],[89.819819,34.420614],[89.823515,34.455657],[89.814891,34.548871],[89.777935,34.574499],[89.798877,34.628686],[89.74837,34.641981],[89.72558,34.660689],[89.732356,34.732035],[89.799493,34.743838],[89.825978,34.796931],[89.867862,34.81069],[89.838913,34.865705],[89.814891,34.86816],[89.821051,34.902033],[89.78779,34.921664],[89.747138,34.903506],[89.707102,34.919701],[89.670146,34.887798],[89.578987,34.895162],[89.560509,34.938836],[89.59069,35.057965],[89.593153,35.104491],[89.579603,35.118688],[89.519241,35.133862],[89.46935,35.214577],[89.450255,35.223867],[89.48598,35.256616],[89.531559,35.276161],[89.494603,35.298632],[89.516161,35.330862],[89.497067,35.361128],[89.58761,35.383575],[89.619639,35.412357],[89.658443,35.425526],[89.685544,35.416259],[89.739131,35.468429],[89.765,35.482563],[89.740979,35.507412],[89.720037,35.501566],[89.699711,35.544916],[89.71203,35.581915],[89.75145,35.580942],[89.765616,35.599922],[89.726196,35.648082],[89.748986,35.66267],[89.747138,35.7516],[89.782863,35.773453],[89.767464,35.799183],[89.801957,35.848193],[89.778551,35.861775],[89.707718,35.849163],[89.654747,35.848193],[89.62395,35.859349],[89.550654,35.856924],[89.554965,35.873414],[89.489676,35.903475],[89.428082,35.917531],[89.434857,35.992136],[89.404676,36.016827],[89.417611,36.044897],[89.474893,36.022151],[89.605472,36.038123],[89.688624,36.091337],[89.711414,36.093272]]]]}},{"type":"Feature","properties":{"adcode":610000,"name":"陕西省","center":[108.948024,34.263161],"centroid":[108.887114,35.263661],"childrenNum":10,"level":"province","parent":{"adcode":100000},"subFeatureIndex":26,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[110.379257,34.600612],[110.29549,34.610956],[110.269004,34.629671],[110.229584,34.692679],[110.243135,34.725641],[110.246831,34.789068],[110.230816,34.880925],[110.262229,34.944233],[110.320743,35.00504],[110.373714,35.134351],[110.364475,35.197952],[110.378642,35.210666],[110.374946,35.251728],[110.45009,35.327933],[110.477808,35.413821],[110.531394,35.511309],[110.567735,35.539559],[110.589293,35.602355],[110.609619,35.632031],[110.57759,35.701559],[110.571431,35.800639],[110.550489,35.838005],[110.549257,35.877778],[110.511684,35.879718],[110.516612,35.918501],[110.502445,35.947575],[110.516612,35.971796],[110.49259,35.994073],[110.491974,36.034735],[110.467953,36.074893],[110.447011,36.164328],[110.45625,36.22663],[110.474112,36.248352],[110.474112,36.306729],[110.459946,36.327946],[110.487047,36.393972],[110.489511,36.430094],[110.47288,36.453203],[110.503677,36.488335],[110.488895,36.556628],[110.496902,36.582102],[110.447627,36.621018],[110.426685,36.657514],[110.394656,36.676716],[110.402663,36.697352],[110.438388,36.685835],[110.447011,36.737649],[110.407591,36.776007],[110.423605,36.818179],[110.406975,36.824886],[110.424221,36.855539],[110.376178,36.882351],[110.408823,36.892403],[110.424221,36.963685],[110.381721,37.002408],[110.382953,37.022001],[110.426685,37.008621],[110.417446,37.027257],[110.460561,37.044932],[110.49567,37.086956],[110.535706,37.115118],[110.53509,37.138021],[110.590525,37.187145],[110.651503,37.256722],[110.661974,37.281963],[110.690307,37.287201],[110.678604,37.317668],[110.695234,37.34955],[110.641648,37.360015],[110.630561,37.372858],[110.644111,37.435135],[110.740198,37.44939],[110.759292,37.474567],[110.770995,37.538184],[110.795017,37.558586],[110.771611,37.594634],[110.763604,37.639668],[110.793169,37.650567],[110.775306,37.680886],[110.706321,37.705511],[110.716792,37.728708],[110.750669,37.736281],[110.735886,37.77035],[110.680452,37.790216],[110.59422,37.922049],[110.522771,37.955088],[110.528315,37.990471],[110.507989,38.013107],[110.501829,38.097929],[110.519692,38.130889],[110.509221,38.192061],[110.528315,38.211814],[110.565887,38.215105],[110.57759,38.297345],[110.601612,38.308147],[110.661358,38.308617],[110.701394,38.353215],[110.746973,38.366355],[110.77777,38.440924],[110.796864,38.453579],[110.840596,38.439986],[110.874473,38.453579],[110.870777,38.510265],[110.907733,38.521035],[110.920052,38.581878],[110.898494,38.587024],[110.880632,38.626776],[110.916357,38.673981],[110.915125,38.704345],[110.965016,38.755699],[111.009363,38.847579],[110.995813,38.868084],[111.016755,38.889981],[111.009979,38.932823],[110.980414,38.970056],[110.998276,38.998433],[111.038313,39.020289],[111.094363,39.030053],[111.138095,39.064447],[111.147334,39.100681],[111.173819,39.135041],[111.163348,39.152678],[111.219399,39.244044],[111.213239,39.257021],[111.247732,39.302419],[111.202152,39.305197],[111.179363,39.326959],[111.186138,39.35149],[111.155341,39.338531],[111.159037,39.362596],[111.125776,39.366297],[111.087588,39.376013],[111.098059,39.401914],[111.064182,39.400989],[111.058639,39.447681],[111.10545,39.472631],[111.10545,39.497573],[111.148566,39.531277],[111.154725,39.569116],[111.136863,39.587106],[111.101138,39.559428],[111.017371,39.552045],[110.958856,39.519275],[110.891103,39.509118],[110.869545,39.494341],[110.782698,39.38804],[110.73835,39.348713],[110.731575,39.30705],[110.702626,39.273701],[110.626249,39.266751],[110.596684,39.282966],[110.566503,39.320014],[110.559728,39.351027],[110.524003,39.382952],[110.482735,39.360745],[110.434692,39.381101],[110.429764,39.341308],[110.385417,39.310291],[110.257917,39.407001],[110.243751,39.423645],[110.152592,39.45415],[110.12549,39.432891],[110.136577,39.39174],[110.161831,39.387115],[110.184005,39.355192],[110.217881,39.281113],[110.109476,39.249606],[110.041107,39.21623],[109.962267,39.212056],[109.90252,39.271848],[109.871723,39.243581],[109.961035,39.191651],[109.893897,39.141075],[109.92223,39.107183],[109.890818,39.103932],[109.851397,39.122971],[109.793499,39.074204],[109.762086,39.057476],[109.72513,39.018429],[109.665384,38.981687],[109.685094,38.968195],[109.672159,38.928167],[109.624116,38.85457],[109.549587,38.805618],[109.511399,38.833595],[109.444262,38.782763],[109.404226,38.720689],[109.338936,38.701542],[109.329081,38.66043],[109.367269,38.627711],[109.331545,38.597783],[109.276726,38.623035],[109.196654,38.552867],[109.175712,38.518694],[109.128901,38.480288],[109.054372,38.433892],[109.051292,38.385122],[109.007561,38.359316],[108.961981,38.26493],[108.976148,38.245192],[108.938575,38.207582],[108.964445,38.154894],[109.069155,38.091336],[109.050676,38.055059],[109.06977,38.023008],[109.037742,38.021593],[109.018648,37.971602],[108.982923,37.964053],[108.9743,37.931962],[108.93488,37.922521],[108.893612,37.978207],[108.883141,38.01405],[108.830786,38.049875],[108.797525,38.04799],[108.82709,37.989056],[108.798141,37.93385],[108.791982,37.872934],[108.799989,37.784068],[108.784591,37.764673],[108.791982,37.700303],[108.777815,37.683728],[108.720533,37.683728],[108.699591,37.669518],[108.628142,37.651988],[108.532671,37.690832],[108.485244,37.678044],[108.422418,37.648672],[108.301078,37.640616],[108.293071,37.656726],[108.24626,37.665728],[108.205608,37.655779],[108.193905,37.638246],[108.134159,37.622131],[108.055318,37.652462],[108.025137,37.649619],[108.012819,37.66857],[108.025753,37.696041],[107.993109,37.735335],[107.982022,37.787378],[107.884703,37.808186],[107.842819,37.828987],[107.732566,37.84931],[107.684523,37.888522],[107.65003,37.86443],[107.659269,37.844112],[107.646335,37.805349],[107.620465,37.776026],[107.599523,37.791162],[107.57119,37.776499],[107.499125,37.765619],[107.484959,37.706458],[107.425828,37.684201],[107.387024,37.691305],[107.389488,37.671413],[107.422133,37.665254],[107.361155,37.613125],[107.311264,37.609806],[107.330358,37.584201],[107.369162,37.58752],[107.345756,37.518725],[107.284162,37.481691],[107.282931,37.437036],[107.257677,37.337179],[107.273075,37.29101],[107.309416,37.239095],[107.270612,37.229089],[107.317423,37.200017],[107.336517,37.165687],[107.334669,37.138975],[107.306952,37.100799],[107.281083,37.127047],[107.268764,37.099367],[107.28601,37.054963],[107.288474,37.008143],[107.288474,37.008143],[107.291554,36.979463],[107.291554,36.979463],[107.310032,36.912502],[107.336517,36.925899],[107.365466,36.905324],[107.478183,36.908196],[107.533618,36.867031],[107.540393,36.828718],[107.5909,36.836382],[107.642023,36.819137],[107.670356,36.83303],[107.722095,36.802367],[107.742421,36.811951],[107.768291,36.792783],[107.866841,36.766899],[107.907493,36.750118],[107.914268,36.720861],[107.940754,36.694953],[107.938906,36.655594],[108.006659,36.683435],[108.02329,36.647912],[108.001732,36.639269],[108.060862,36.592194],[108.079956,36.614294],[108.092891,36.587388],[108.163724,36.563839],[108.1976,36.630144],[108.222854,36.631105],[108.204992,36.606607],[108.204992,36.606607],[108.210535,36.577296],[108.245644,36.571048],[108.262274,36.549417],[108.340498,36.559032],[108.365136,36.519603],[108.391621,36.505654],[108.408252,36.45946],[108.460606,36.422871],[108.495099,36.422389],[108.514809,36.445501],[108.510498,36.47438],[108.562852,36.43876],[108.618903,36.433946],[108.651548,36.384818],[108.641693,36.359279],[108.646004,36.254143],[108.712526,36.138716],[108.682345,36.062316],[108.688504,36.021183],[108.659555,35.990683],[108.652164,35.94806],[108.593649,35.950967],[108.562852,35.921409],[108.518505,35.905414],[108.499411,35.872444],[108.527744,35.82442],[108.533903,35.746257],[108.517889,35.699615],[108.539447,35.605761],[108.618287,35.557088],[108.625678,35.537124],[108.605968,35.503028],[108.631222,35.418698],[108.61028,35.355271],[108.614591,35.328909],[108.583178,35.294724],[108.547454,35.304981],[108.48894,35.275184],[108.36144,35.279581],[108.345426,35.300586],[108.296767,35.267855],[108.239484,35.256127],[108.221622,35.296678],[108.174811,35.304981],[108.094739,35.280069],[108.049159,35.253683],[107.949993,35.245375],[107.960464,35.263457],[107.867457,35.256127],[107.841587,35.276649],[107.745501,35.311819],[107.737494,35.267366],[107.667277,35.257104],[107.652494,35.244886],[107.686371,35.218],[107.715936,35.168114],[107.727639,35.120157],[107.769523,35.064333],[107.769523,35.064333],[107.773218,35.060904],[107.773218,35.060904],[107.814486,35.024646],[107.846515,35.024646],[107.863145,34.999158],[107.842203,34.979056],[107.741805,34.953553],[107.675284,34.9511],[107.638943,34.935402],[107.619849,34.964834],[107.564415,34.968757],[107.523763,34.909886],[107.455394,34.916757],[107.400575,34.932949],[107.369162,34.917738],[107.350068,34.93393],[107.286626,34.931968],[107.252749,34.880925],[107.189308,34.893198],[107.162206,34.944233],[107.119707,34.950119],[107.089526,34.976604],[107.08275,35.024156],[107.012533,35.029547],[106.990975,35.068252],[106.950323,35.066782],[106.901664,35.094698],[106.838222,35.080007],[106.710723,35.100574],[106.706411,35.081966],[106.615252,35.071191],[106.577064,35.089312],[106.541956,35.083925],[106.52163,35.027587],[106.494528,35.006021],[106.494528,35.006021],[106.484673,34.983959],[106.493296,34.941289],[106.527789,34.876507],[106.556122,34.861285],[106.550579,34.82936],[106.575216,34.769897],[106.539492,34.745805],[106.505615,34.746789],[106.487137,34.715311],[106.456956,34.703996],[106.442173,34.675455],[106.471122,34.634102],[106.419384,34.643458],[106.314058,34.578934],[106.341159,34.568093],[106.334384,34.517811],[106.455108,34.531617],[106.514238,34.511894],[106.513622,34.498085],[106.558586,34.48822],[106.610941,34.454177],[106.638042,34.391481],[106.717498,34.369255],[106.691013,34.337635],[106.705179,34.299575],[106.68239,34.256057],[106.652825,34.24369],[106.63373,34.260014],[106.589383,34.253584],[106.577064,34.280786],[106.526557,34.292159],[106.496376,34.238248],[106.5321,34.254079],[106.55797,34.229837],[106.585071,34.149641],[106.560434,34.109514],[106.501919,34.105055],[106.505615,34.056479],[106.471738,34.024244],[106.474202,33.970659],[106.41076,33.909093],[106.428007,33.866368],[106.475434,33.875809],[106.491448,33.834559],[106.461883,33.789807],[106.488369,33.757969],[106.482825,33.707203],[106.534564,33.695254],[106.575832,33.631497],[106.58076,33.576169],[106.540108,33.512822],[106.456956,33.532779],[106.447101,33.613058],[106.384891,33.612061],[106.35163,33.587137],[106.303587,33.604585],[106.237681,33.564201],[106.187174,33.546746],[106.108334,33.569686],[106.117573,33.602591],[106.086776,33.617045],[106.047356,33.610067],[105.971596,33.613058],[105.940183,33.570684],[105.902611,33.556222],[105.871198,33.511325],[105.842248,33.489866],[105.831162,33.451926],[105.837937,33.410971],[105.827466,33.379993],[105.709822,33.382991],[105.755401,33.329004],[105.752937,33.291994],[105.791741,33.278486],[105.799133,33.258471],[105.862574,33.234447],[105.917393,33.237951],[105.965436,33.204407],[105.968516,33.154318],[105.93156,33.178365],[105.897067,33.146803],[105.923552,33.147805],[105.934639,33.112221],[105.914929,33.066092],[105.926632,33.042517],[105.917393,32.993841],[105.861959,32.939112],[105.82685,32.950663],[105.735691,32.905454],[105.656851,32.895405],[105.638373,32.879323],[105.590329,32.87681],[105.565692,32.906962],[105.528119,32.919019],[105.49917,32.911986],[105.495475,32.873292],[105.524424,32.847654],[105.534279,32.790822],[105.555221,32.794343],[105.563844,32.724891],[105.585402,32.728919],[105.596489,32.69921],[105.677793,32.726402],[105.719061,32.759624],[105.768952,32.767676],[105.779423,32.750061],[105.822538,32.770192],[105.825002,32.824523],[105.849024,32.817985],[105.893371,32.838603],[105.93156,32.826032],[105.969132,32.849162],[106.011632,32.829552],[106.044277,32.864747],[106.071378,32.828546],[106.093552,32.82402],[106.07261,32.76365],[106.076921,32.76365],[106.076305,32.759121],[106.071378,32.758114],[106.120037,32.719856],[106.17424,32.6977],[106.254928,32.693671],[106.267863,32.673522],[106.301123,32.680071],[106.347935,32.671003],[106.389203,32.62666],[106.421231,32.616579],[106.451412,32.65992],[106.498224,32.649338],[106.517934,32.668485],[106.585687,32.68813],[106.626955,32.682086],[106.670071,32.694678],[106.733513,32.739491],[106.783404,32.735967],[106.793259,32.712807],[106.82344,32.705254],[106.854853,32.724388],[106.903512,32.721367],[106.912751,32.704247],[107.012533,32.721367],[107.066736,32.708779],[107.05996,32.686115],[107.098765,32.649338],[107.108004,32.600951],[107.080286,32.542448],[107.127098,32.482393],[107.189924,32.468256],[107.212097,32.428864],[107.263836,32.403099],[107.287858,32.457147],[107.313727,32.489965],[107.356843,32.506622],[107.382097,32.54043],[107.436299,32.529835],[107.438763,32.465732],[107.460937,32.453612],[107.456625,32.41775],[107.489886,32.425328],[107.527458,32.38238],[107.598291,32.411688],[107.648183,32.413709],[107.680827,32.397035],[107.707929,32.331826],[107.753508,32.338399],[107.812022,32.247844],[107.864377,32.201266],[107.890247,32.214432],[107.924739,32.197215],[107.979558,32.146051],[108.024521,32.177462],[108.018362,32.2119],[108.086731,32.233165],[108.143398,32.219495],[108.156948,32.239239],[108.179738,32.221521],[108.240716,32.274666],[108.310933,32.232152],[108.389773,32.263533],[108.414411,32.252399],[108.469846,32.270618],[108.507418,32.245819],[108.509882,32.201266],[108.543758,32.177969],[108.585026,32.17189],[108.676801,32.10297],[108.734084,32.106519],[108.75133,32.076098],[108.78767,32.04871],[108.837561,32.039072],[108.902235,31.984774],[108.986619,31.980205],[109.085785,31.929428],[109.123357,31.892851],[109.191111,31.85575],[109.195422,31.817618],[109.27611,31.79931],[109.279806,31.776418],[109.253936,31.759628],[109.282885,31.743343],[109.281654,31.716874],[109.381436,31.705165],[109.446109,31.722983],[109.502776,31.716365],[109.549587,31.73011],[109.585928,31.726546],[109.592087,31.789136],[109.633971,31.804396],[109.633971,31.824738],[109.60379,31.885737],[109.584696,31.900472],[109.62042,31.928412],[109.631507,31.962436],[109.590855,32.012688],[109.590855,32.047696],[109.621652,32.106519],[109.58716,32.161251],[109.604406,32.199241],[109.592703,32.219495],[109.550203,32.225065],[109.528645,32.270112],[109.495385,32.300468],[109.513247,32.342444],[109.502776,32.38895],[109.529877,32.405625],[109.526797,32.43341],[109.575457,32.506622],[109.637051,32.540935],[109.619804,32.56767],[109.631507,32.599943],[109.726978,32.608513],[109.746072,32.594901],[109.816905,32.577252],[109.910528,32.592884],[109.97089,32.577756],[110.017701,32.546989],[110.084223,32.580782],[110.090382,32.617083],[110.124259,32.616579],[110.153824,32.593388],[110.206179,32.633212],[110.156903,32.683093],[110.159367,32.767173],[110.127338,32.77774],[110.142121,32.802895],[110.105164,32.832569],[110.051578,32.851676],[109.988752,32.886359],[109.927158,32.887364],[109.907448,32.903947],[109.856941,32.910479],[109.847702,32.893395],[109.789804,32.882339],[109.76455,32.909474],[109.785492,32.987316],[109.794731,33.067095],[109.704188,33.101694],[109.688174,33.116733],[109.576073,33.110216],[109.522486,33.138785],[109.468283,33.140288],[109.438718,33.152314],[109.498464,33.207412],[109.514479,33.237951],[109.60687,33.235949],[109.619804,33.275484],[109.649985,33.251465],[109.693101,33.254468],[109.732521,33.231443],[109.813209,33.236449],[109.852013,33.247961],[109.916687,33.229942],[109.973353,33.203907],[109.999223,33.212419],[110.031252,33.191888],[110.164911,33.209415],[110.218497,33.163336],[110.285635,33.171352],[110.33799,33.160331],[110.372482,33.186379],[110.398352,33.176862],[110.398352,33.176862],[110.471032,33.171352],[110.54125,33.255469],[110.57759,33.250464],[110.59422,33.168346],[110.623785,33.143796],[110.650887,33.157324],[110.702626,33.097182],[110.753133,33.15031],[110.824582,33.158327],[110.828893,33.201403],[110.865234,33.213921],[110.9219,33.203907],[110.960704,33.253967],[110.984726,33.255469],[111.025994,33.330504],[111.025994,33.375495],[110.996429,33.435946],[111.02661,33.467903],[111.021066,33.471397],[111.021682,33.476389],[111.02661,33.478386],[111.002588,33.535772],[111.00382,33.578662],[110.966864,33.609071],[110.878784,33.634486],[110.823966,33.685793],[110.831973,33.713675],[110.81719,33.751003],[110.782082,33.796272],[110.74143,33.798759],[110.712481,33.833564],[110.66259,33.85295],[110.612083,33.852453],[110.587445,33.887733],[110.628713,33.910086],[110.627481,33.925482],[110.665669,33.937895],[110.671213,33.966192],[110.620706,34.035652],[110.587445,34.023252],[110.591757,34.101586],[110.61393,34.113478],[110.642264,34.161032],[110.621938,34.177372],[110.55788,34.193214],[110.55172,34.213012],[110.507989,34.217466],[110.43962,34.243196],[110.428533,34.288203],[110.451938,34.292653],[110.503677,34.33714],[110.473496,34.393457],[110.403279,34.433448],[110.403279,34.433448],[110.360779,34.516825],[110.372482,34.544435],[110.404511,34.557743],[110.366939,34.566614],[110.379257,34.600612]]],[[[111.02661,33.478386],[111.021682,33.476389],[111.021066,33.471397],[111.02661,33.467903],[111.02661,33.478386]]],[[[106.076921,32.76365],[106.07261,32.76365],[106.071378,32.758114],[106.076305,32.759121],[106.076921,32.76365]]]]}},{"type":"Feature","properties":{"adcode":620000,"name":"甘肃省","center":[103.823557,36.058039],"childrenNum":14,"level":"province","parent":{"adcode":100000},"subFeatureIndex":27,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.506231,35.737514],[106.504383,35.736057],[106.498224,35.732656],[106.49268,35.732656],[106.434782,35.688436],[106.460036,35.643705],[106.47913,35.575101],[106.460036,35.578995],[106.440941,35.52641],[106.465579,35.481101],[106.490217,35.480613],[106.483441,35.450393],[106.503767,35.415284],[106.501304,35.364056],[106.472354,35.310842],[106.415688,35.276161],[106.368261,35.273718],[106.363333,35.238532],[106.319601,35.265411],[106.241377,35.358687],[106.237681,35.409431],[106.196414,35.409919],[106.173008,35.437716],[106.129892,35.393333],[106.113262,35.361616],[106.083081,35.421624],[106.073226,35.420649],[106.067682,35.436254],[106.073226,35.447468],[106.071378,35.449418],[106.06953,35.458193],[106.071994,35.463555],[106.054132,35.45478],[106.034422,35.469404],[106.002393,35.438692],[105.894603,35.413821],[105.897683,35.451368],[106.048588,35.488898],[106.047356,35.498155],[106.023335,35.49377],[106.017175,35.519103],[105.900147,35.54735],[105.868734,35.540046],[105.847176,35.490359],[105.816379,35.575101],[105.800365,35.564878],[105.762176,35.602841],[105.759097,35.634464],[105.713517,35.650513],[105.722756,35.673366],[105.690727,35.698643],[105.723988,35.725854],[105.740618,35.698643],[105.759097,35.724883],[105.70243,35.733142],[105.667322,35.749657],[105.595873,35.715651],[105.481924,35.727312],[105.457286,35.771511],[105.432033,35.787533],[105.428953,35.819082],[105.408627,35.822479],[105.38091,35.792873],[105.371055,35.844312],[105.39754,35.857409],[105.350113,35.875839],[105.324859,35.941761],[105.343954,36.033767],[105.406163,36.074409],[105.430801,36.10391],[105.491163,36.101009],[105.515185,36.147415],[105.478844,36.213111],[105.460366,36.223733],[105.45975,36.268137],[105.476381,36.293224],[105.455439,36.321678],[105.425873,36.330357],[105.401236,36.369881],[105.398156,36.430575],[105.363048,36.443093],[105.362432,36.496514],[105.322396,36.535954],[105.281744,36.522489],[105.252179,36.553263],[105.2762,36.563358],[105.261418,36.602764],[105.22015,36.631105],[105.225693,36.664716],[105.201056,36.700711],[105.218302,36.730455],[105.272505,36.739567],[105.275584,36.752515],[105.319932,36.742924],[105.340874,36.764502],[105.334714,36.80093],[105.303302,36.820575],[105.279896,36.86751],[105.244787,36.894796],[105.178882,36.892403],[105.185657,36.942164],[105.165331,36.99476],[105.128991,36.996194],[105.05939,37.022956],[105.03968,37.007187],[105.004571,37.035378],[104.95468,37.040156],[104.954064,37.077407],[104.914644,37.097935],[104.888158,37.15901],[104.864753,37.17284],[104.85613,37.211933],[104.776673,37.246718],[104.717543,37.208597],[104.638087,37.201923],[104.600515,37.242907],[104.624536,37.298627],[104.651022,37.290534],[104.673812,37.317668],[104.713848,37.329566],[104.662109,37.367626],[104.679971,37.408044],[104.521059,37.43466],[104.499501,37.421353],[104.448994,37.42468],[104.437907,37.445589],[104.365226,37.418026],[104.298705,37.414223],[104.287002,37.428007],[104.237727,37.411847],[104.183524,37.406618],[104.089285,37.465067],[103.935916,37.572818],[103.874938,37.604117],[103.841062,37.64725],[103.683381,37.777919],[103.627947,37.797783],[103.40744,37.860651],[103.362477,38.037621],[103.368636,38.08898],[103.53494,38.156776],[103.507838,38.280905],[103.465339,38.353215],[103.416063,38.404821],[103.85954,38.64454],[104.011677,38.85923],[104.044322,38.895105],[104.173053,38.94446],[104.196459,38.9882],[104.190915,39.042139],[104.207546,39.083495],[104.171205,39.160567],[104.047401,39.297788],[104.073271,39.351953],[104.089901,39.419947],[103.955626,39.456923],[103.85338,39.461543],[103.728961,39.430117],[103.595302,39.386652],[103.428998,39.353341],[103.344615,39.331588],[103.259615,39.263971],[103.188166,39.215302],[103.133347,39.192579],[103.007696,39.099753],[102.883892,39.120649],[102.616574,39.171703],[102.579002,39.183301],[102.45335,39.255167],[102.3548,39.231993],[102.276576,39.188868],[102.050526,39.141075],[102.012338,39.127149],[101.902701,39.111827],[101.833715,39.08907],[101.926106,39.000758],[101.955055,38.985874],[102.045599,38.904885],[102.075164,38.891378],[101.941505,38.808883],[101.873751,38.733761],[101.777049,38.66043],[101.672955,38.6908],[101.601506,38.65529],[101.562702,38.713218],[101.412413,38.764099],[101.331109,38.777164],[101.307087,38.80282],[101.34158,38.822406],[101.33542,38.847113],[101.24303,38.860628],[101.237486,38.907214],[101.198682,38.943064],[101.228863,39.020754],[101.117378,38.975174],[100.969553,38.946788],[100.961545,39.005874],[100.901799,39.030053],[100.875314,39.002619],[100.835278,39.025869],[100.829118,39.075133],[100.864227,39.106719],[100.842669,39.199999],[100.842053,39.405614],[100.707778,39.404689],[100.606764,39.387577],[100.498975,39.400527],[100.500823,39.481408],[100.44354,39.485565],[100.326512,39.509118],[100.301258,39.572345],[100.314193,39.606935],[100.250135,39.685274],[100.128179,39.702312],[100.040716,39.757083],[99.958796,39.769504],[99.904593,39.785601],[99.822058,39.860063],[99.672384,39.888079],[99.469124,39.875221],[99.440791,39.885783],[99.459885,39.898181],[99.491298,39.884406],[99.533182,39.891753],[99.714268,39.972061],[99.751225,40.006909],[99.841152,40.013326],[99.927383,40.063727],[99.955716,40.150695],[100.007455,40.20008],[100.169447,40.277743],[100.169447,40.541131],[100.242744,40.618855],[100.237201,40.716905],[100.224882,40.727337],[100.107853,40.875475],[100.057346,40.908049],[99.985897,40.909858],[99.673,40.93292],[99.565827,40.846961],[99.174705,40.858278],[99.172858,40.747289],[99.12543,40.715091],[99.102025,40.676522],[99.041662,40.693767],[98.984996,40.782644],[98.790975,40.705564],[98.80699,40.660181],[98.802678,40.607043],[98.762642,40.639748],[98.72199,40.657911],[98.689345,40.691952],[98.668403,40.773128],[98.569853,40.746836],[98.627751,40.677884],[98.344419,40.568413],[98.333332,40.918903],[98.25018,40.93925],[98.184891,40.988056],[98.142391,41.001607],[97.971776,41.09774],[97.903407,41.168057],[97.629314,41.440498],[97.613915,41.477276],[97.84674,41.656379],[97.653335,41.986856],[97.500582,42.243894],[97.371235,42.457076],[97.172903,42.795257],[96.968411,42.756161],[96.742361,42.75704],[96.386348,42.727592],[96.166458,42.623314],[96.103632,42.604375],[96.072219,42.569566],[96.02356,42.542675],[96.0174,42.482239],[95.978596,42.436762],[96.06606,42.414674],[96.042038,42.352787],[96.040806,42.326688],[96.178161,42.21775],[96.077147,42.149457],[96.13874,42.05399],[96.137509,42.019765],[96.117183,41.985966],[96.054973,41.936124],[95.998306,41.906289],[95.855408,41.849699],[95.801206,41.848361],[95.759322,41.835878],[95.65646,41.826067],[95.57146,41.796181],[95.445193,41.719841],[95.39407,41.693481],[95.335556,41.644305],[95.299831,41.565994],[95.247476,41.61344],[95.194505,41.694821],[95.199433,41.719395],[95.16494,41.735474],[95.135991,41.772976],[95.110738,41.768513],[95.011572,41.726541],[94.969072,41.718948],[94.861898,41.668451],[94.809543,41.619256],[94.750413,41.538227],[94.534219,41.505966],[94.184365,41.268444],[94.01067,41.114875],[93.908424,40.983539],[93.809874,40.879548],[93.820961,40.793519],[93.760599,40.664721],[93.506216,40.648376],[92.928465,40.572504],[92.920458,40.391792],[92.906907,40.310609],[92.796654,40.153897],[92.745531,39.868331],[92.687632,39.657174],[92.639589,39.514196],[92.52564,39.368611],[92.378431,39.258411],[92.339011,39.236628],[92.343938,39.146181],[92.366112,39.096037],[92.366728,39.059335],[92.41046,39.03842],[92.459119,39.042604],[92.459119,39.063982],[92.489916,39.099753],[92.545966,39.111362],[92.659299,39.109969],[92.765857,39.136898],[92.866871,39.138754],[92.889045,39.160103],[92.938936,39.169848],[92.978356,39.143396],[93.043029,39.146645],[93.115094,39.17959],[93.142196,39.160567],[93.131725,39.108112],[93.165601,39.090928],[93.198246,39.045857],[93.179152,38.923977],[93.237666,38.916062],[93.274007,38.896036],[93.453245,38.915596],[93.729186,38.924443],[93.834511,38.867618],[93.884403,38.867618],[93.884403,38.826136],[93.769838,38.821007],[93.756287,38.807484],[93.773533,38.771099],[93.800019,38.750566],[93.885018,38.720689],[93.95154,38.715086],[93.973098,38.724891],[94.281067,38.7599],[94.370379,38.7627],[94.511429,38.445142],[94.527443,38.425922],[94.527443,38.365416],[94.56132,38.351807],[94.582878,38.36917],[94.672805,38.386998],[94.812623,38.385591],[94.861282,38.393565],[94.884072,38.414669],[94.973999,38.430142],[95.045448,38.418889],[95.072549,38.402476],[95.122441,38.417014],[95.140919,38.392158],[95.185266,38.379492],[95.209904,38.327868],[95.229614,38.330685],[95.259179,38.302981],[95.315846,38.318947],[95.408236,38.300163],[95.440881,38.310965],[95.455664,38.291709],[95.487693,38.314721],[95.51849,38.294997],[95.585011,38.343359],[95.608417,38.339134],[95.671858,38.388405],[95.703887,38.400131],[95.723597,38.378554],[95.775952,38.356031],[95.83693,38.344298],[95.852945,38.287481],[95.89606,38.2903],[95.932401,38.259291],[95.93856,38.237202],[96.006929,38.207582],[96.06606,38.173245],[96.109175,38.187358],[96.221892,38.149246],[96.252689,38.167599],[96.264392,38.145952],[96.313051,38.161952],[96.301964,38.183124],[96.335841,38.246132],[96.378341,38.277146],[96.46334,38.277616],[96.665369,38.23015],[96.655514,38.295936],[96.638883,38.307208],[96.626564,38.356031],[96.698013,38.422172],[96.707868,38.459203],[96.6666,38.483567],[96.706637,38.505582],[96.780549,38.504177],[96.800259,38.52759],[96.767614,38.552399],[96.808882,38.582346],[96.7941,38.608072],[96.847071,38.599186],[96.876636,38.580475],[96.961019,38.558015],[97.055874,38.594508],[97.047251,38.653888],[97.057722,38.67258],[97.009063,38.702477],[97.023229,38.755699],[97.00044,38.7613],[96.987505,38.793025],[96.993664,38.834993],[96.983809,38.869016],[96.940693,38.90768],[96.938846,38.95563],[96.965331,39.017034],[96.95794,39.041674],[96.969643,39.097895],[97.012142,39.142004],[96.962251,39.198144],[97.017686,39.208347],[97.060186,39.19768],[97.14149,39.199999],[97.220946,39.193042],[97.315185,39.164744],[97.347213,39.167528],[97.371235,39.140611],[97.401416,39.146645],[97.458698,39.117863],[97.504894,39.076527],[97.58127,39.052364],[97.679205,39.010524],[97.701379,38.963076],[97.828878,38.93003],[97.875689,38.898365],[98.009348,38.85923],[98.029058,38.834061],[98.068478,38.816344],[98.091884,38.786495],[98.167645,38.840121],[98.242173,38.880664],[98.235398,38.918855],[98.276666,38.963541],[98.287753,38.992386],[98.280977,39.027263],[98.316702,39.040744],[98.383839,39.029588],[98.401086,39.001688],[98.432498,38.996107],[98.428187,38.976104],[98.457752,38.952838],[98.526737,38.95563],[98.584635,38.93003],[98.624056,38.959353],[98.612353,38.977035],[98.661628,38.993782],[98.70536,39.043533],[98.730613,39.057011],[98.743548,39.086747],[98.816845,39.085818],[98.818076,39.064911],[98.886446,39.040744],[98.903076,39.012384],[98.951735,38.987735],[99.054597,38.97657],[99.107568,38.951907],[99.071843,38.921184],[99.068764,38.896968],[99.141445,38.852706],[99.222133,38.788827],[99.291118,38.765966],[99.361951,38.718354],[99.375502,38.684727],[99.412458,38.665571],[99.450646,38.60433],[99.501769,38.612281],[99.52887,38.546314],[99.585537,38.498556],[99.63974,38.474666],[99.65945,38.449361],[99.727203,38.415607],[99.758,38.410449],[99.826985,38.370109],[99.960028,38.320825],[100.001912,38.315191],[100.049955,38.283254],[100.071513,38.284663],[100.117093,38.253652],[100.126332,38.231561],[100.182998,38.222158],[100.159592,38.291239],[100.163904,38.328337],[100.136803,38.33444],[100.093071,38.407166],[100.022238,38.432017],[100.001296,38.467169],[100.025933,38.507923],[100.064122,38.518694],[100.086911,38.492936],[100.113397,38.497151],[100.163288,38.461546],[100.24028,38.441861],[100.259374,38.366355],[100.301874,38.388405],[100.331439,38.337257],[100.318505,38.329276],[100.396729,38.293118],[100.424446,38.307208],[100.432453,38.275267],[100.459555,38.2654],[100.474953,38.288891],[100.516837,38.272448],[100.545786,38.247072],[100.595061,38.242372],[100.619083,38.26587],[100.71517,38.253652],[100.752126,38.238612],[100.825423,38.158658],[100.860531,38.148305],[100.913502,38.17889],[100.93814,38.16007],[100.91843,38.129006],[100.922125,38.084741],[100.888864,38.056001],[100.895024,38.013107],[100.91843,37.999432],[100.964009,38.011221],[101.077342,37.941874],[101.103211,37.946593],[101.114298,37.92016],[101.152486,37.891356],[101.159262,37.86821],[101.202994,37.84742],[101.276906,37.83655],[101.362522,37.791162],[101.382848,37.822369],[101.459224,37.86632],[101.551615,37.835604],[101.598427,37.827569],[101.670491,37.754264],[101.659405,37.733441],[101.791832,37.696041],[101.815853,37.654357],[101.854657,37.664781],[101.873135,37.686569],[101.946432,37.728235],[101.998787,37.724921],[102.036359,37.685149],[102.048678,37.651515],[102.035128,37.627819],[102.102265,37.582304],[102.131214,37.54625],[102.103497,37.482641],[102.125055,37.48549],[102.176794,37.458892],[102.19712,37.420403],[102.299981,37.391404],[102.29875,37.370004],[102.368351,37.327662],[102.428097,37.308624],[102.419474,37.294343],[102.45335,37.271487],[102.457662,37.248147],[102.490307,37.223371],[102.533422,37.217176],[102.578386,37.17284],[102.599944,37.174748],[102.642444,37.099845],[102.583314,37.104618],[102.488459,37.078362],[102.506321,37.019134],[102.450271,36.968467],[102.499546,36.954599],[102.526031,36.928291],[102.56114,36.91968],[102.587009,36.869904],[102.639364,36.852666],[102.720052,36.767858],[102.692335,36.775528],[102.639364,36.732853],[102.612879,36.738129],[102.601176,36.710307],[102.630741,36.650793],[102.684328,36.619097],[102.724364,36.613813],[102.714509,36.599401],[102.761936,36.568645],[102.734219,36.562396],[102.753313,36.525855],[102.793349,36.497957],[102.771791,36.47438],[102.829689,36.365544],[102.831537,36.365544],[102.838928,36.345783],[102.836465,36.344819],[102.845704,36.331803],[102.896827,36.331803],[102.922696,36.298047],[103.024942,36.256556],[103.021246,36.232906],[103.066826,36.216974],[103.048964,36.199107],[102.986754,36.193312],[102.965812,36.151765],[102.948566,36.150798],[102.941174,36.104877],[102.882044,36.082632],[102.932551,36.048285],[102.968276,36.044414],[102.951645,36.021667],[102.971971,35.995525],[102.942406,35.92674],[102.954725,35.858864],[102.94487,35.829757],[102.914073,35.845282],[102.81737,35.850133],[102.787189,35.862745],[102.739146,35.821023],[102.715125,35.815685],[102.686175,35.771996],[102.707733,35.70496],[102.744074,35.657807],[102.7644,35.653431],[102.763168,35.612086],[102.808747,35.560496],[102.746537,35.545403],[102.729291,35.523487],[102.782878,35.527871],[102.743458,35.494745],[102.695414,35.528358],[102.570995,35.548324],[102.531575,35.580455],[102.503241,35.585322],[102.49893,35.545403],[102.437952,35.455268],[102.447807,35.437229],[102.408387,35.409431],[102.314764,35.434303],[102.293822,35.424063],[102.287663,35.36552],[102.317844,35.343067],[102.311684,35.31426],[102.280887,35.303028],[102.3123,35.282512],[102.370199,35.263946],[102.365887,35.235599],[102.404075,35.179366],[102.346793,35.164201],[102.310452,35.128967],[102.29567,35.071681],[102.252554,35.048657],[102.218062,35.057475],[102.211286,35.034937],[102.176178,35.032977],[102.157699,35.010923],[102.133678,35.014844],[102.094874,34.986901],[102.048062,34.910868],[102.068388,34.887798],[101.985852,34.90007],[101.916867,34.873561],[101.923027,34.835746],[101.917483,34.705964],[101.919947,34.621791],[101.934729,34.58731],[101.956287,34.582876],[101.97415,34.548871],[102.001867,34.538519],[102.093026,34.536547],[102.139837,34.50351],[102.155852,34.507456],[102.169402,34.457631],[102.205743,34.407777],[102.259329,34.355917],[102.237156,34.34307],[102.237156,34.34307],[102.186649,34.352952],[102.149692,34.271885],[102.067772,34.293642],[102.062229,34.227858],[102.01357,34.218456],[102.030816,34.190739],[102.003099,34.162022],[101.965526,34.167469],[101.955055,34.109514],[101.897773,34.133791],[101.874367,34.130323],[101.851578,34.153108],[101.836795,34.124378],[101.788136,34.131809],[101.764114,34.122892],[101.736397,34.080275],[101.718535,34.083249],[101.703136,34.119424],[101.674187,34.110506],[101.6206,34.178857],[101.53868,34.212022],[101.492485,34.195689],[101.482014,34.218951],[101.417956,34.227858],[101.369913,34.248143],[101.327413,34.24468],[101.325565,34.268423],[101.268899,34.278808],[101.228863,34.298586],[101.235022,34.325279],[101.193754,34.336646],[101.178356,34.320831],[101.098284,34.329233],[101.054552,34.322808],[100.986799,34.374689],[100.951074,34.38358],[100.895024,34.375183],[100.868538,34.332693],[100.821727,34.317371],[100.798321,34.260014],[100.809408,34.247153],[100.764445,34.178857],[100.806329,34.155584],[100.848828,34.089692],[100.870386,34.083744],[100.880857,34.036644],[100.93506,33.990013],[100.927669,33.975126],[100.965857,33.946832],[100.994806,33.891707],[101.023139,33.896178],[101.054552,33.863386],[101.153718,33.8445],[101.153102,33.823124],[101.190675,33.791796],[101.186363,33.741051],[101.162957,33.719649],[101.177124,33.685295],[101.166653,33.659894],[101.217776,33.669856],[101.23687,33.685793],[101.302776,33.657902],[101.385312,33.644949],[101.424732,33.655411],[101.428427,33.680315],[101.501724,33.702723],[101.58426,33.674339],[101.585492,33.645448],[101.616905,33.598603],[101.611977,33.565199],[101.622448,33.502343],[101.718535,33.494857],[101.748716,33.505337],[101.769042,33.538765],[101.783208,33.556721],[101.831252,33.554726],[101.844186,33.602591],[101.884222,33.578163],[101.907012,33.539264],[101.906396,33.48188],[101.946432,33.442937],[101.915635,33.425957],[101.887302,33.383991],[101.877447,33.314502],[101.769658,33.26898],[101.770274,33.248962],[101.83002,33.213921],[101.841723,33.184876],[101.825708,33.119239],[101.865744,33.103198],[101.887302,33.135778],[101.921795,33.153817],[101.935345,33.186879],[101.99386,33.1999],[102.054838,33.189884],[102.08933,33.204908],[102.08933,33.227439],[102.117047,33.288492],[102.144765,33.273983],[102.160163,33.242956],[102.200815,33.223434],[102.217446,33.247961],[102.192192,33.337005],[102.218062,33.349503],[102.258098,33.409472],[102.296286,33.413969],[102.310452,33.397982],[102.368967,33.41247],[102.392988,33.404477],[102.447807,33.454922],[102.462589,33.449429],[102.461358,33.501345],[102.446575,33.53228],[102.477988,33.543254],[102.440416,33.574673],[102.346793,33.605582],[102.31538,33.665374],[102.342481,33.725622],[102.284583,33.719151],[102.324619,33.754486],[102.296286,33.783838],[102.243315,33.786823],[102.261177,33.821136],[102.25317,33.861399],[102.136142,33.965199],[102.16817,33.983066],[102.226069,33.963214],[102.248858,33.98654],[102.287047,33.977607],[102.315996,33.993983],[102.345561,33.969666],[102.392372,33.971651],[102.406539,34.033172],[102.437336,34.087214],[102.471213,34.072839],[102.511865,34.086222],[102.615958,34.099604],[102.649219,34.080275],[102.655994,34.113478],[102.598712,34.14766],[102.651067,34.165983],[102.664002,34.192719],[102.694799,34.198659],[102.728675,34.235774],[102.779798,34.236764],[102.798276,34.272874],[102.856791,34.270895],[102.85987,34.301058],[102.911609,34.312923],[102.949181,34.292159],[102.977515,34.252595],[102.973203,34.205588],[103.005848,34.184798],[103.052043,34.195194],[103.100087,34.181828],[103.124108,34.162022],[103.121644,34.112487],[103.178927,34.079779],[103.129652,34.065899],[103.119797,34.03466],[103.147514,34.036644],[103.157369,33.998944],[103.120413,33.953286],[103.1315,33.931937],[103.16476,33.929454],[103.181391,33.900649],[103.153673,33.819147],[103.165376,33.805721],[103.228202,33.79478],[103.24976,33.814175],[103.284868,33.80224],[103.278709,33.774387],[103.35447,33.743539],[103.434542,33.752993],[103.464723,33.80224],[103.518309,33.807213],[103.545411,33.719649],[103.520157,33.678323],[103.552186,33.671351],[103.563889,33.699735],[103.593454,33.716164],[103.645809,33.708697],[103.667983,33.685793],[103.690772,33.69376],[103.778236,33.658898],[103.861388,33.682307],[103.980264,33.670852],[104.046169,33.686291],[104.103452,33.663381],[104.176749,33.5996],[104.155191,33.542755],[104.180444,33.472895],[104.213089,33.446932],[104.22048,33.404477],[104.272219,33.391486],[104.292545,33.336505],[104.373849,33.345004],[104.420045,33.327004],[104.386168,33.298497],[104.333813,33.315502],[104.303632,33.304499],[104.323958,33.26898],[104.32827,33.223934],[104.351059,33.158828],[104.378161,33.109214],[104.337509,33.038002],[104.391711,33.035493],[104.426204,33.010906],[104.383704,32.994343],[104.378161,32.953174],[104.345516,32.940117],[104.288234,32.942628],[104.277147,32.90244],[104.294393,32.835586],[104.363994,32.822511],[104.458849,32.748551],[104.51182,32.753585],[104.526602,32.728416],[104.582653,32.722374],[104.592508,32.695685],[104.643015,32.661935],[104.696601,32.673522],[104.739717,32.635228],[104.795768,32.643292],[104.820405,32.662943],[104.845659,32.653873],[104.881999,32.600951],[104.925115,32.607505],[105.026745,32.650346],[105.0791,32.637244],[105.111128,32.593893],[105.185041,32.617587],[105.215222,32.63674],[105.219534,32.666469],[105.263265,32.652362],[105.297758,32.656897],[105.347033,32.68259],[105.368591,32.712807],[105.448663,32.732946],[105.454207,32.767173],[105.427721,32.784281],[105.396308,32.85067],[105.396308,32.85067],[105.38091,32.876307],[105.408011,32.885857],[105.414171,32.922034],[105.467757,32.930071],[105.49917,32.911986],[105.528119,32.919019],[105.565692,32.906962],[105.590329,32.87681],[105.638373,32.879323],[105.656851,32.895405],[105.735691,32.905454],[105.82685,32.950663],[105.861959,32.939112],[105.917393,32.993841],[105.926632,33.042517],[105.914929,33.066092],[105.934639,33.112221],[105.923552,33.147805],[105.897067,33.146803],[105.93156,33.178365],[105.968516,33.154318],[105.965436,33.204407],[105.917393,33.237951],[105.862574,33.234447],[105.799133,33.258471],[105.791741,33.278486],[105.752937,33.291994],[105.755401,33.329004],[105.709822,33.382991],[105.827466,33.379993],[105.837937,33.410971],[105.831162,33.451926],[105.842248,33.489866],[105.871198,33.511325],[105.902611,33.556222],[105.940183,33.570684],[105.971596,33.613058],[106.047356,33.610067],[106.086776,33.617045],[106.117573,33.602591],[106.108334,33.569686],[106.187174,33.546746],[106.237681,33.564201],[106.303587,33.604585],[106.35163,33.587137],[106.384891,33.612061],[106.447101,33.613058],[106.456956,33.532779],[106.540108,33.512822],[106.58076,33.576169],[106.575832,33.631497],[106.534564,33.695254],[106.482825,33.707203],[106.488369,33.757969],[106.461883,33.789807],[106.491448,33.834559],[106.475434,33.875809],[106.428007,33.866368],[106.41076,33.909093],[106.474202,33.970659],[106.471738,34.024244],[106.505615,34.056479],[106.501919,34.105055],[106.560434,34.109514],[106.585071,34.149641],[106.55797,34.229837],[106.5321,34.254079],[106.496376,34.238248],[106.526557,34.292159],[106.577064,34.280786],[106.589383,34.253584],[106.63373,34.260014],[106.652825,34.24369],[106.68239,34.256057],[106.705179,34.299575],[106.691013,34.337635],[106.717498,34.369255],[106.638042,34.391481],[106.610941,34.454177],[106.558586,34.48822],[106.513622,34.498085],[106.514238,34.511894],[106.455108,34.531617],[106.334384,34.517811],[106.341159,34.568093],[106.314058,34.578934],[106.419384,34.643458],[106.471122,34.634102],[106.442173,34.675455],[106.456956,34.703996],[106.487137,34.715311],[106.505615,34.746789],[106.539492,34.745805],[106.575216,34.769897],[106.550579,34.82936],[106.556122,34.861285],[106.527789,34.876507],[106.493296,34.941289],[106.484673,34.983959],[106.494528,35.006021],[106.494528,35.006021],[106.52163,35.027587],[106.541956,35.083925],[106.577064,35.089312],[106.615252,35.071191],[106.706411,35.081966],[106.710723,35.100574],[106.838222,35.080007],[106.901664,35.094698],[106.950323,35.066782],[106.990975,35.068252],[107.012533,35.029547],[107.08275,35.024156],[107.089526,34.976604],[107.119707,34.950119],[107.162206,34.944233],[107.189308,34.893198],[107.252749,34.880925],[107.286626,34.931968],[107.350068,34.93393],[107.369162,34.917738],[107.400575,34.932949],[107.455394,34.916757],[107.523763,34.909886],[107.564415,34.968757],[107.619849,34.964834],[107.638943,34.935402],[107.675284,34.9511],[107.741805,34.953553],[107.842203,34.979056],[107.863145,34.999158],[107.846515,35.024646],[107.814486,35.024646],[107.773218,35.060904],[107.773218,35.060904],[107.769523,35.064333],[107.769523,35.064333],[107.727639,35.120157],[107.715936,35.168114],[107.686371,35.218],[107.652494,35.244886],[107.667277,35.257104],[107.737494,35.267366],[107.745501,35.311819],[107.841587,35.276649],[107.867457,35.256127],[107.960464,35.263457],[107.949993,35.245375],[108.049159,35.253683],[108.094739,35.280069],[108.174811,35.304981],[108.221622,35.296678],[108.239484,35.256127],[108.296767,35.267855],[108.345426,35.300586],[108.36144,35.279581],[108.48894,35.275184],[108.547454,35.304981],[108.583178,35.294724],[108.614591,35.328909],[108.61028,35.355271],[108.631222,35.418698],[108.605968,35.503028],[108.625678,35.537124],[108.618287,35.557088],[108.539447,35.605761],[108.517889,35.699615],[108.533903,35.746257],[108.527744,35.82442],[108.499411,35.872444],[108.518505,35.905414],[108.562852,35.921409],[108.593649,35.950967],[108.652164,35.94806],[108.659555,35.990683],[108.688504,36.021183],[108.682345,36.062316],[108.712526,36.138716],[108.646004,36.254143],[108.641693,36.359279],[108.651548,36.384818],[108.618903,36.433946],[108.562852,36.43876],[108.510498,36.47438],[108.514809,36.445501],[108.495099,36.422389],[108.460606,36.422871],[108.408252,36.45946],[108.391621,36.505654],[108.365136,36.519603],[108.340498,36.559032],[108.262274,36.549417],[108.245644,36.571048],[108.210535,36.577296],[108.204992,36.606607],[108.204992,36.606607],[108.222854,36.631105],[108.1976,36.630144],[108.163724,36.563839],[108.092891,36.587388],[108.079956,36.614294],[108.060862,36.592194],[108.001732,36.639269],[108.02329,36.647912],[108.006659,36.683435],[107.938906,36.655594],[107.940754,36.694953],[107.914268,36.720861],[107.907493,36.750118],[107.866841,36.766899],[107.768291,36.792783],[107.742421,36.811951],[107.722095,36.802367],[107.670356,36.83303],[107.642023,36.819137],[107.5909,36.836382],[107.540393,36.828718],[107.533618,36.867031],[107.478183,36.908196],[107.365466,36.905324],[107.336517,36.925899],[107.310032,36.912502],[107.291554,36.979463],[107.291554,36.979463],[107.288474,37.008143],[107.288474,37.008143],[107.28601,37.054963],[107.268764,37.099367],[107.234887,37.096503],[107.181916,37.143269],[107.133873,37.134681],[107.095685,37.115595],[107.030395,37.140883],[107.031011,37.108436],[106.998367,37.106527],[106.905976,37.151378],[106.912135,37.110345],[106.891193,37.098413],[106.818512,37.141838],[106.776012,37.158056],[106.772933,37.120367],[106.750143,37.09889],[106.728585,37.121321],[106.687933,37.12991],[106.673151,37.1113],[106.6171,37.135158],[106.605397,37.127524],[106.645433,37.064992],[106.666991,37.016745],[106.646665,37.000496],[106.64297,36.962729],[106.594926,36.967988],[106.595542,36.94025],[106.540108,36.984244],[106.549347,36.941685],[106.601702,36.918244],[106.609709,36.878521],[106.609709,36.878521],[106.626955,36.892403],[106.637426,36.867031],[106.637426,36.867031],[106.657752,36.820575],[106.627571,36.752995],[106.644817,36.72278],[106.59431,36.750118],[106.514238,36.715584],[106.519782,36.708868],[106.519782,36.708868],[106.530869,36.690154],[106.490833,36.685835],[106.491448,36.628703],[106.444637,36.624861],[106.465579,36.583063],[106.444637,36.557109],[106.397826,36.576816],[106.392282,36.556628],[106.363949,36.577296],[106.37134,36.549417],[106.39721,36.548455],[106.455724,36.496995],[106.494528,36.494589],[106.523477,36.468605],[106.492064,36.422389],[106.510543,36.379037],[106.497608,36.31348],[106.470507,36.306246],[106.504383,36.266207],[106.54134,36.25366],[106.559202,36.292259],[106.647897,36.259451],[106.685469,36.273445],[106.698404,36.244008],[106.735976,36.23725],[106.772933,36.212628],[106.808657,36.21118],[106.833295,36.229044],[106.858548,36.206834],[106.858548,36.206834],[106.873947,36.178338],[106.873947,36.178338],[106.930613,36.138716],[106.925686,36.115997],[106.957715,36.091337],[106.940468,36.064734],[106.928149,36.011502],[106.94786,35.988262],[106.90228,35.943699],[106.93862,35.952905],[106.940468,35.931101],[106.912751,35.93207],[106.849925,35.887476],[106.927534,35.810346],[106.897353,35.759856],[106.868403,35.771996],[106.867171,35.738485],[106.819128,35.7448],[106.806193,35.70982],[106.750759,35.725369],[106.750759,35.689408],[106.674998,35.728284],[106.66268,35.70739],[106.633115,35.714679],[106.620796,35.743829],[106.595542,35.727312],[106.566593,35.738971],[106.506231,35.737514]]],[[[106.047356,35.498155],[106.048588,35.488898],[106.054132,35.45478],[106.071994,35.463555],[106.078769,35.509848],[106.047356,35.498155]]],[[[102.831537,36.365544],[102.829689,36.365544],[102.836465,36.344819],[102.838928,36.345783],[102.831537,36.365544]]],[[[106.073226,35.447468],[106.067682,35.436254],[106.073226,35.420649],[106.083081,35.421624],[106.073226,35.447468]]],[[[106.504383,35.736057],[106.506231,35.737514],[106.49268,35.732656],[106.498224,35.732656],[106.504383,35.736057]]]]}},{"type":"Feature","properties":{"adcode":630000,"name":"青海省","center":[101.778916,36.623178],"centroid":[96.043533,35.726403],"childrenNum":8,"level":"province","parent":{"adcode":100000},"subFeatureIndex":28,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[102.829689,36.365544],[102.771791,36.47438],[102.793349,36.497957],[102.753313,36.525855],[102.734219,36.562396],[102.761936,36.568645],[102.714509,36.599401],[102.724364,36.613813],[102.684328,36.619097],[102.630741,36.650793],[102.601176,36.710307],[102.612879,36.738129],[102.639364,36.732853],[102.692335,36.775528],[102.720052,36.767858],[102.639364,36.852666],[102.587009,36.869904],[102.56114,36.91968],[102.526031,36.928291],[102.499546,36.954599],[102.450271,36.968467],[102.506321,37.019134],[102.488459,37.078362],[102.583314,37.104618],[102.642444,37.099845],[102.599944,37.174748],[102.578386,37.17284],[102.533422,37.217176],[102.490307,37.223371],[102.457662,37.248147],[102.45335,37.271487],[102.419474,37.294343],[102.428097,37.308624],[102.368351,37.327662],[102.29875,37.370004],[102.299981,37.391404],[102.19712,37.420403],[102.176794,37.458892],[102.125055,37.48549],[102.103497,37.482641],[102.131214,37.54625],[102.102265,37.582304],[102.035128,37.627819],[102.048678,37.651515],[102.036359,37.685149],[101.998787,37.724921],[101.946432,37.728235],[101.873135,37.686569],[101.854657,37.664781],[101.815853,37.654357],[101.791832,37.696041],[101.659405,37.733441],[101.670491,37.754264],[101.598427,37.827569],[101.551615,37.835604],[101.459224,37.86632],[101.382848,37.822369],[101.362522,37.791162],[101.276906,37.83655],[101.202994,37.84742],[101.159262,37.86821],[101.152486,37.891356],[101.114298,37.92016],[101.103211,37.946593],[101.077342,37.941874],[100.964009,38.011221],[100.91843,37.999432],[100.895024,38.013107],[100.888864,38.056001],[100.922125,38.084741],[100.91843,38.129006],[100.93814,38.16007],[100.913502,38.17889],[100.860531,38.148305],[100.825423,38.158658],[100.752126,38.238612],[100.71517,38.253652],[100.619083,38.26587],[100.595061,38.242372],[100.545786,38.247072],[100.516837,38.272448],[100.474953,38.288891],[100.459555,38.2654],[100.432453,38.275267],[100.424446,38.307208],[100.396729,38.293118],[100.318505,38.329276],[100.331439,38.337257],[100.301874,38.388405],[100.259374,38.366355],[100.24028,38.441861],[100.163288,38.461546],[100.113397,38.497151],[100.086911,38.492936],[100.064122,38.518694],[100.025933,38.507923],[100.001296,38.467169],[100.022238,38.432017],[100.093071,38.407166],[100.136803,38.33444],[100.163904,38.328337],[100.159592,38.291239],[100.182998,38.222158],[100.126332,38.231561],[100.117093,38.253652],[100.071513,38.284663],[100.049955,38.283254],[100.001912,38.315191],[99.960028,38.320825],[99.826985,38.370109],[99.758,38.410449],[99.727203,38.415607],[99.65945,38.449361],[99.63974,38.474666],[99.585537,38.498556],[99.52887,38.546314],[99.501769,38.612281],[99.450646,38.60433],[99.412458,38.665571],[99.375502,38.684727],[99.361951,38.718354],[99.291118,38.765966],[99.222133,38.788827],[99.141445,38.852706],[99.068764,38.896968],[99.071843,38.921184],[99.107568,38.951907],[99.054597,38.97657],[98.951735,38.987735],[98.903076,39.012384],[98.886446,39.040744],[98.818076,39.064911],[98.816845,39.085818],[98.743548,39.086747],[98.730613,39.057011],[98.70536,39.043533],[98.661628,38.993782],[98.612353,38.977035],[98.624056,38.959353],[98.584635,38.93003],[98.526737,38.95563],[98.457752,38.952838],[98.428187,38.976104],[98.432498,38.996107],[98.401086,39.001688],[98.383839,39.029588],[98.316702,39.040744],[98.280977,39.027263],[98.287753,38.992386],[98.276666,38.963541],[98.235398,38.918855],[98.242173,38.880664],[98.167645,38.840121],[98.091884,38.786495],[98.068478,38.816344],[98.029058,38.834061],[98.009348,38.85923],[97.875689,38.898365],[97.828878,38.93003],[97.701379,38.963076],[97.679205,39.010524],[97.58127,39.052364],[97.504894,39.076527],[97.458698,39.117863],[97.401416,39.146645],[97.371235,39.140611],[97.347213,39.167528],[97.315185,39.164744],[97.220946,39.193042],[97.14149,39.199999],[97.060186,39.19768],[97.017686,39.208347],[96.962251,39.198144],[97.012142,39.142004],[96.969643,39.097895],[96.95794,39.041674],[96.965331,39.017034],[96.938846,38.95563],[96.940693,38.90768],[96.983809,38.869016],[96.993664,38.834993],[96.987505,38.793025],[97.00044,38.7613],[97.023229,38.755699],[97.009063,38.702477],[97.057722,38.67258],[97.047251,38.653888],[97.055874,38.594508],[96.961019,38.558015],[96.876636,38.580475],[96.847071,38.599186],[96.7941,38.608072],[96.808882,38.582346],[96.767614,38.552399],[96.800259,38.52759],[96.780549,38.504177],[96.706637,38.505582],[96.6666,38.483567],[96.707868,38.459203],[96.698013,38.422172],[96.626564,38.356031],[96.638883,38.307208],[96.655514,38.295936],[96.665369,38.23015],[96.46334,38.277616],[96.378341,38.277146],[96.335841,38.246132],[96.301964,38.183124],[96.313051,38.161952],[96.264392,38.145952],[96.252689,38.167599],[96.221892,38.149246],[96.109175,38.187358],[96.06606,38.173245],[96.006929,38.207582],[95.93856,38.237202],[95.932401,38.259291],[95.89606,38.2903],[95.852945,38.287481],[95.83693,38.344298],[95.775952,38.356031],[95.723597,38.378554],[95.703887,38.400131],[95.671858,38.388405],[95.608417,38.339134],[95.585011,38.343359],[95.51849,38.294997],[95.487693,38.314721],[95.455664,38.291709],[95.440881,38.310965],[95.408236,38.300163],[95.315846,38.318947],[95.259179,38.302981],[95.229614,38.330685],[95.209904,38.327868],[95.185266,38.379492],[95.140919,38.392158],[95.122441,38.417014],[95.072549,38.402476],[95.045448,38.418889],[94.973999,38.430142],[94.884072,38.414669],[94.861282,38.393565],[94.812623,38.385591],[94.672805,38.386998],[94.582878,38.36917],[94.56132,38.351807],[94.527443,38.365416],[94.527443,38.425922],[94.511429,38.445142],[94.370379,38.7627],[94.281067,38.7599],[93.973098,38.724891],[93.95154,38.715086],[93.885018,38.720689],[93.800019,38.750566],[93.773533,38.771099],[93.756287,38.807484],[93.769838,38.821007],[93.884403,38.826136],[93.884403,38.867618],[93.834511,38.867618],[93.729186,38.924443],[93.453245,38.915596],[93.274007,38.896036],[93.237666,38.916062],[93.179152,38.923977],[93.198246,39.045857],[93.165601,39.090928],[93.131725,39.108112],[93.142196,39.160567],[93.115094,39.17959],[93.043029,39.146645],[92.978356,39.143396],[92.938936,39.169848],[92.889045,39.160103],[92.866871,39.138754],[92.765857,39.136898],[92.659299,39.109969],[92.545966,39.111362],[92.489916,39.099753],[92.459119,39.063982],[92.459119,39.042604],[92.41046,39.03842],[92.416003,39.010524],[92.380279,38.999828],[92.263866,39.002153],[92.197961,38.983548],[92.173323,38.960749],[92.10865,38.963541],[91.966368,38.930961],[91.880752,38.899297],[91.87952,38.884391],[91.806223,38.872744],[91.694738,38.86622],[91.681188,38.852706],[91.501333,38.815411],[91.446515,38.813546],[91.298689,38.746365],[91.242639,38.752433],[91.188436,38.73096],[90.992567,38.695003],[90.970394,38.697806],[90.899561,38.679588],[90.724634,38.658094],[90.65996,38.674449],[90.619308,38.664636],[90.645794,38.635191],[90.606374,38.610878],[90.608837,38.594508],[90.560794,38.593573],[90.525685,38.561291],[90.463476,38.556611],[90.465323,38.521971],[90.427135,38.493873],[90.353222,38.482162],[90.315034,38.501835],[90.248513,38.491531],[90.130868,38.494341],[90.111774,38.477945],[90.111774,38.418889],[90.129636,38.400131],[90.179528,38.396848],[90.137644,38.340543],[90.280542,38.238142],[90.352607,38.233441],[90.361846,38.300163],[90.401882,38.311434],[90.531229,38.319886],[90.516446,38.207111],[90.519526,37.730601],[90.579272,37.720661],[90.586663,37.703144],[90.643946,37.696988],[90.777605,37.648672],[90.820104,37.613599],[90.854597,37.604117],[90.882314,37.575664],[90.865684,37.53059],[90.911879,37.519674],[90.958075,37.477891],[91.019669,37.493088],[91.073256,37.475992],[91.099741,37.447965],[91.113292,37.387124],[91.136081,37.355734],[91.134849,37.324331],[91.194596,37.273868],[91.1909,37.205737],[91.280211,37.163779],[91.286371,37.105095],[91.303617,37.083136],[91.291298,37.042544],[91.303617,37.012444],[91.216153,37.010054],[91.181045,37.025345],[91.133618,37.007665],[91.126842,36.978507],[91.051698,36.96751],[91.036915,36.929727],[90.983944,36.913459],[90.924198,36.921115],[90.853981,36.915373],[90.758511,36.825844],[90.732025,36.825844],[90.727098,36.755872],[90.754815,36.721341],[90.720938,36.708868],[90.706156,36.658955],[90.730793,36.655594],[90.72217,36.620058],[90.741264,36.585947],[90.810865,36.585466],[90.831191,36.55807],[90.905104,36.560474],[91.011662,36.539801],[91.035683,36.529703],[91.039995,36.474861],[91.028292,36.443093],[91.051698,36.433946],[91.026444,36.323607],[91.07264,36.299012],[91.051698,36.238215],[91.096045,36.219871],[91.09235,36.163844],[91.124994,36.115514],[91.081263,36.088436],[90.979017,36.106811],[90.922966,36.028927],[90.850285,36.016827],[90.815793,36.035703],[90.776373,36.086501],[90.659344,36.13485],[90.613149,36.126632],[90.534925,36.147899],[90.478258,36.13195],[90.424055,36.133883],[90.325505,36.159496],[90.23681,36.160462],[90.198006,36.187516],[90.130252,36.2078],[90.145651,36.239181],[90.058188,36.255591],[90.043405,36.276822],[90.003369,36.278752],[90.028006,36.258486],[90.019999,36.213594],[89.997825,36.168193],[89.944855,36.140649],[89.941159,36.067637],[89.914058,36.079246],[89.819819,36.080697],[89.766848,36.073925],[89.711414,36.093272],[89.688624,36.091337],[89.605472,36.038123],[89.474893,36.022151],[89.417611,36.044897],[89.404676,36.016827],[89.434857,35.992136],[89.428082,35.917531],[89.489676,35.903475],[89.554965,35.873414],[89.550654,35.856924],[89.62395,35.859349],[89.654747,35.848193],[89.707718,35.849163],[89.778551,35.861775],[89.801957,35.848193],[89.767464,35.799183],[89.782863,35.773453],[89.747138,35.7516],[89.748986,35.66267],[89.726196,35.648082],[89.765616,35.599922],[89.75145,35.580942],[89.71203,35.581915],[89.699711,35.544916],[89.720037,35.501566],[89.740979,35.507412],[89.765,35.482563],[89.739131,35.468429],[89.685544,35.416259],[89.658443,35.425526],[89.619639,35.412357],[89.58761,35.383575],[89.497067,35.361128],[89.516161,35.330862],[89.494603,35.298632],[89.531559,35.276161],[89.48598,35.256616],[89.450255,35.223867],[89.46935,35.214577],[89.519241,35.133862],[89.579603,35.118688],[89.593153,35.104491],[89.59069,35.057965],[89.560509,34.938836],[89.578987,34.895162],[89.670146,34.887798],[89.707102,34.919701],[89.747138,34.903506],[89.78779,34.921664],[89.821051,34.902033],[89.814891,34.86816],[89.838913,34.865705],[89.867862,34.81069],[89.825978,34.796931],[89.799493,34.743838],[89.732356,34.732035],[89.72558,34.660689],[89.74837,34.641981],[89.798877,34.628686],[89.777935,34.574499],[89.814891,34.548871],[89.823515,34.455657],[89.819819,34.420614],[89.799493,34.39642],[89.820435,34.369255],[89.858623,34.359375],[89.86663,34.324785],[89.825362,34.293642],[89.838297,34.263477],[89.816739,34.16945],[89.789638,34.150632],[89.760073,34.152613],[89.756993,34.124874],[89.71203,34.131809],[89.655979,34.097126],[89.656595,34.057966],[89.635037,34.049537],[89.684928,33.990013],[89.688008,33.959739],[89.718805,33.946832],[89.73174,33.921509],[89.795181,33.865374],[89.837065,33.868853],[89.899891,33.80771],[89.942391,33.801246],[89.902355,33.758467],[89.907282,33.741051],[89.983659,33.725622],[89.981195,33.70322],[90.008296,33.687785],[89.984275,33.612061],[90.01076,33.553728],[90.083441,33.525295],[90.088984,33.478885],[90.107463,33.460913],[90.22018,33.437943],[90.246665,33.423959],[90.332896,33.310501],[90.363077,33.279487],[90.405577,33.260473],[90.490577,33.264977],[90.562642,33.229441],[90.627315,33.180368],[90.704308,33.135778],[90.740032,33.142293],[90.803474,33.114227],[90.88293,33.120241],[90.902024,33.083143],[90.927894,33.120241],[91.001807,33.11573],[91.037531,33.098686],[91.072024,33.113224],[91.147784,33.07211],[91.161335,33.108712],[91.18782,33.106206],[91.226624,33.141792],[91.261733,33.141291],[91.311624,33.108211],[91.370138,33.100691],[91.436044,33.066092],[91.49579,33.109214],[91.535826,33.10019],[91.55492,33.060074],[91.583253,33.0375],[91.664557,33.012913],[91.685499,32.989324],[91.752637,32.969242],[91.799448,32.942126],[91.839484,32.948152],[91.857962,32.90244],[91.896766,32.907967],[91.955897,32.8205],[92.018722,32.829552],[92.038432,32.860725],[92.101874,32.860222],[92.145606,32.885857],[92.205352,32.866255],[92.227526,32.821003],[92.193649,32.801889],[92.211511,32.788306],[92.198577,32.754591],[92.255243,32.720863],[92.310062,32.751571],[92.343938,32.738484],[92.355641,32.764657],[92.411076,32.748048],[92.459119,32.76365],[92.484372,32.745028],[92.56814,32.73194],[92.574916,32.741001],[92.634662,32.720863],[92.667922,32.73194],[92.686401,32.76516],[92.756618,32.743014],[92.789262,32.719856],[92.822523,32.729926],[92.866871,32.698203],[92.933392,32.719353],[92.964189,32.714821],[93.00053,32.741001],[93.019624,32.737477],[93.023935,32.703239],[93.069515,32.626156],[93.087993,32.63674],[93.159442,32.644803],[93.176688,32.6705],[93.210565,32.655385],[93.239514,32.662439],[93.260456,32.62666],[93.300492,32.619604],[93.308499,32.580278],[93.33868,32.5712],[93.385492,32.525294],[93.411977,32.558086],[93.4631,32.556069],[93.476651,32.504603],[93.501904,32.503593],[93.516687,32.47583],[93.618933,32.522771],[93.651577,32.571705],[93.721795,32.578261],[93.75136,32.56313],[93.820345,32.549511],[93.851142,32.50965],[93.861613,32.466237],[93.90904,32.463207],[93.960163,32.484917],[93.978641,32.459672],[94.03038,32.448057],[94.049474,32.469771],[94.091974,32.463207],[94.137554,32.433915],[94.176974,32.454117],[94.196684,32.51621],[94.250886,32.51722],[94.292154,32.502584],[94.294002,32.519743],[94.350053,32.533871],[94.371611,32.524789],[94.395016,32.594397],[94.435052,32.562626],[94.463386,32.572209],[94.459074,32.599439],[94.522516,32.595909],[94.591501,32.640772],[94.614291,32.673522],[94.638312,32.645307],[94.737479,32.587338],[94.762116,32.526303],[94.78737,32.522266],[94.80708,32.486431],[94.852043,32.463712],[94.889616,32.472295],[94.912405,32.41573],[94.944434,32.404109],[94.988166,32.422802],[95.057151,32.395014],[95.075013,32.376315],[95.075013,32.376315],[95.081789,32.384907],[95.153853,32.386423],[95.218527,32.397035],[95.228382,32.363678],[95.261643,32.348006],[95.193274,32.332331],[95.096571,32.322217],[95.079325,32.279726],[95.10581,32.258979],[95.20744,32.297433],[95.214216,32.321712],[95.241317,32.3207],[95.239469,32.287315],[95.270266,32.194683],[95.270266,32.194683],[95.31523,32.148585],[95.366968,32.151118],[95.367584,32.178982],[95.406389,32.182021],[95.440265,32.157705],[95.454432,32.061898],[95.421171,32.033999],[95.454432,32.007613],[95.395918,32.001523],[95.360809,31.95939],[95.3682,31.92892],[95.408852,31.918761],[95.406389,31.896915],[95.456896,31.801853],[95.480301,31.795749],[95.511714,31.750468],[95.546823,31.73978],[95.580083,31.76726],[95.634286,31.782523],[95.779648,31.748941],[95.823995,31.68225],[95.853561,31.714329],[95.846169,31.736218],[95.89914,31.81711],[95.983524,31.816601],[95.989067,31.78761],[96.064828,31.720438],[96.135661,31.70211],[96.148595,31.686324],[96.156603,31.602769],[96.207726,31.598691],[96.221892,31.647613],[96.245298,31.657802],[96.252073,31.697527],[96.222508,31.733164],[96.231131,31.749959],[96.178161,31.775401],[96.183088,31.835924],[96.202798,31.841008],[96.214501,31.876589],[96.188632,31.904028],[96.220044,31.905553],[96.253305,31.929936],[96.288414,31.919777],[96.389428,31.919777],[96.407906,31.845583],[96.435623,31.796258],[96.468884,31.769804],[96.519391,31.74945],[96.56805,31.711783],[96.615477,31.737236],[96.661057,31.705674],[96.691854,31.722474],[96.722651,31.686833],[96.778701,31.675629],[96.790404,31.698545],[96.840295,31.720438],[96.799027,31.792188],[96.765767,31.819144],[96.760223,31.860325],[96.794716,31.869474],[96.81073,31.894375],[96.776238,31.935015],[96.753448,31.944156],[96.742977,32.001016],[96.722651,32.013195],[96.824281,32.007613],[96.868629,31.964975],[96.863085,31.996448],[96.894498,32.013703],[96.941925,31.986297],[96.965947,32.008628],[96.935766,32.048203],[97.006599,32.067984],[97.028773,32.04871],[97.127323,32.044145],[97.169823,32.032984],[97.188301,32.055304],[97.214786,32.042623],[97.233881,32.063927],[97.201852,32.090296],[97.219714,32.109054],[97.258518,32.072041],[97.308409,32.076605],[97.293011,32.096887],[97.313953,32.130342],[97.271453,32.139971],[97.264062,32.182527],[97.299786,32.294904],[97.32196,32.303503],[97.371235,32.273148],[97.415583,32.296421],[97.424822,32.322723],[97.387865,32.427349],[97.341054,32.440987],[97.388481,32.501575],[97.334895,32.514192],[97.332431,32.542448],[97.3583,32.563635],[97.374315,32.546484],[97.411887,32.575235],[97.448843,32.586833],[97.463626,32.55506],[97.50243,32.530844],[97.540618,32.536899],[97.670582,32.51722],[97.684132,32.530339],[97.730944,32.527312],[97.700763,32.53488],[97.616995,32.586329],[97.607756,32.614059],[97.543698,32.62162],[97.535075,32.638252],[97.48272,32.654377],[97.42359,32.70475],[97.429133,32.714318],[97.386018,32.77925],[97.392793,32.828546],[97.376163,32.886359],[97.347829,32.895907],[97.375547,32.956689],[97.438372,32.976271],[97.523988,32.988822],[97.499966,33.011408],[97.542466,33.035995],[97.517213,33.097683],[97.487032,33.107209],[97.498119,33.137783],[97.487648,33.168346],[97.548626,33.203907],[97.607756,33.263976],[97.622538,33.337005],[97.676125,33.341004],[97.754349,33.409972],[97.674893,33.432949],[97.625618,33.461412],[97.552321,33.465906],[97.511669,33.520805],[97.523372,33.577166],[97.450075,33.582152],[97.415583,33.605582],[97.435293,33.682307],[97.418046,33.728608],[97.422974,33.754984],[97.406344,33.795278],[97.373083,33.817655],[97.371851,33.842015],[97.398336,33.848477],[97.395257,33.889224],[97.460546,33.887236],[97.503662,33.912073],[97.52214,33.903133],[97.601596,33.929951],[97.629314,33.919523],[97.660111,33.956264],[97.652719,33.998448],[97.70261,34.036644],[97.665654,34.126855],[97.766668,34.158555],[97.789458,34.182818],[97.789458,34.182818],[97.796849,34.199154],[97.796849,34.199154],[97.8104,34.207568],[97.898479,34.209548],[97.95453,34.190739],[98.028442,34.122892],[98.098043,34.122892],[98.158405,34.107037],[98.206449,34.08424],[98.258188,34.083249],[98.344419,34.094648],[98.399854,34.085231],[98.396774,34.053008],[98.428187,34.029204],[98.440506,33.981577],[98.415252,33.956761],[98.425723,33.913066],[98.407245,33.867362],[98.434962,33.843009],[98.463295,33.848477],[98.492861,33.796272],[98.494092,33.768915],[98.51873,33.77389],[98.539672,33.746525],[98.582788,33.731595],[98.610505,33.682805],[98.6567,33.64744],[98.61728,33.637476],[98.622824,33.610067],[98.652389,33.595114],[98.648077,33.548741],[98.678258,33.522801],[98.725686,33.503341],[98.742316,33.477887],[98.736157,33.406975],[98.779888,33.370497],[98.759562,33.276985],[98.802062,33.270481],[98.804526,33.219428],[98.858728,33.150811],[98.92217,33.118738],[98.967134,33.115229],[98.971445,33.098185],[99.014561,33.081137],[99.024416,33.094675],[99.090322,33.079131],[99.124814,33.046028],[99.196263,33.035493],[99.214741,32.991332],[99.235067,32.982296],[99.24677,32.924043],[99.268944,32.878318],[99.353944,32.885354],[99.376118,32.899927],[99.45311,32.862233],[99.558436,32.839106],[99.589233,32.789312],[99.640355,32.790822],[99.646515,32.774721],[99.700718,32.76667],[99.717964,32.732443],[99.760464,32.769689],[99.766623,32.826032],[99.791877,32.883344],[99.764159,32.924545],[99.788181,32.956689],[99.805427,32.940619],[99.851007,32.941623],[99.877492,32.993339],[99.877492,33.045527],[99.947709,32.986814],[99.956332,32.948152],[100.038252,32.929066],[100.029629,32.895907],[100.064738,32.895907],[100.123252,32.837095],[100.117093,32.802392],[100.139266,32.724388],[100.088143,32.668988],[100.109701,32.640268],[100.189773,32.630692],[100.208252,32.606497],[100.229809,32.650346],[100.231041,32.696189],[100.258759,32.742511],[100.339447,32.719353],[100.399193,32.756101],[100.378251,32.698707],[100.420135,32.73194],[100.450932,32.694678],[100.470026,32.694678],[100.516837,32.632204],[100.54517,32.569687],[100.603069,32.553547],[100.645568,32.526303],[100.657887,32.546484],[100.661583,32.616075],[100.673286,32.628172],[100.710242,32.610026],[100.71209,32.645307],[100.690532,32.678056],[100.77122,32.643795],[100.834046,32.648835],[100.887633,32.632708],[100.93198,32.600447],[100.956618,32.621116],[100.99727,32.627668],[101.030531,32.660424],[101.077342,32.68259],[101.124769,32.658408],[101.157414,32.661431],[101.22332,32.725898],[101.237486,32.825026],[101.223935,32.855698],[101.178356,32.892892],[101.124153,32.909976],[101.134624,32.95217],[101.129081,32.989324],[101.183899,32.984304],[101.171581,33.009902],[101.184515,33.041514],[101.146327,33.056563],[101.143863,33.086151],[101.169733,33.10019],[101.11553,33.194893],[101.124769,33.221431],[101.156798,33.236449],[101.182668,33.26948],[101.217776,33.256469],[101.297232,33.262475],[101.381616,33.153316],[101.393935,33.157826],[101.386543,33.207412],[101.403174,33.225436],[101.487557,33.226938],[101.515275,33.192889],[101.557775,33.167344],[101.633535,33.101193],[101.661252,33.135778],[101.653861,33.162835],[101.709912,33.21292],[101.735781,33.279987],[101.677883,33.297497],[101.64955,33.323004],[101.663716,33.383991],[101.695745,33.433948],[101.769042,33.45592],[101.777665,33.533776],[101.769042,33.538765],[101.748716,33.505337],[101.718535,33.494857],[101.622448,33.502343],[101.611977,33.565199],[101.616905,33.598603],[101.585492,33.645448],[101.58426,33.674339],[101.501724,33.702723],[101.428427,33.680315],[101.424732,33.655411],[101.385312,33.644949],[101.302776,33.657902],[101.23687,33.685793],[101.217776,33.669856],[101.166653,33.659894],[101.177124,33.685295],[101.162957,33.719649],[101.186363,33.741051],[101.190675,33.791796],[101.153102,33.823124],[101.153718,33.8445],[101.054552,33.863386],[101.023139,33.896178],[100.994806,33.891707],[100.965857,33.946832],[100.927669,33.975126],[100.93506,33.990013],[100.880857,34.036644],[100.870386,34.083744],[100.848828,34.089692],[100.806329,34.155584],[100.764445,34.178857],[100.809408,34.247153],[100.798321,34.260014],[100.821727,34.317371],[100.868538,34.332693],[100.895024,34.375183],[100.951074,34.38358],[100.986799,34.374689],[101.054552,34.322808],[101.098284,34.329233],[101.178356,34.320831],[101.193754,34.336646],[101.235022,34.325279],[101.228863,34.298586],[101.268899,34.278808],[101.325565,34.268423],[101.327413,34.24468],[101.369913,34.248143],[101.417956,34.227858],[101.482014,34.218951],[101.492485,34.195689],[101.53868,34.212022],[101.6206,34.178857],[101.674187,34.110506],[101.703136,34.119424],[101.718535,34.083249],[101.736397,34.080275],[101.764114,34.122892],[101.788136,34.131809],[101.836795,34.124378],[101.851578,34.153108],[101.874367,34.130323],[101.897773,34.133791],[101.955055,34.109514],[101.965526,34.167469],[102.003099,34.162022],[102.030816,34.190739],[102.01357,34.218456],[102.062229,34.227858],[102.067772,34.293642],[102.149692,34.271885],[102.186649,34.352952],[102.237156,34.34307],[102.237156,34.34307],[102.259329,34.355917],[102.205743,34.407777],[102.169402,34.457631],[102.155852,34.507456],[102.139837,34.50351],[102.093026,34.536547],[102.001867,34.538519],[101.97415,34.548871],[101.956287,34.582876],[101.934729,34.58731],[101.919947,34.621791],[101.917483,34.705964],[101.923027,34.835746],[101.916867,34.873561],[101.985852,34.90007],[102.068388,34.887798],[102.048062,34.910868],[102.094874,34.986901],[102.133678,35.014844],[102.157699,35.010923],[102.176178,35.032977],[102.211286,35.034937],[102.218062,35.057475],[102.252554,35.048657],[102.29567,35.071681],[102.310452,35.128967],[102.346793,35.164201],[102.404075,35.179366],[102.365887,35.235599],[102.370199,35.263946],[102.3123,35.282512],[102.280887,35.303028],[102.311684,35.31426],[102.317844,35.343067],[102.287663,35.36552],[102.293822,35.424063],[102.314764,35.434303],[102.408387,35.409431],[102.447807,35.437229],[102.437952,35.455268],[102.49893,35.545403],[102.503241,35.585322],[102.531575,35.580455],[102.570995,35.548324],[102.695414,35.528358],[102.743458,35.494745],[102.782878,35.527871],[102.729291,35.523487],[102.746537,35.545403],[102.808747,35.560496],[102.763168,35.612086],[102.7644,35.653431],[102.744074,35.657807],[102.707733,35.70496],[102.686175,35.771996],[102.715125,35.815685],[102.739146,35.821023],[102.787189,35.862745],[102.81737,35.850133],[102.914073,35.845282],[102.94487,35.829757],[102.954725,35.858864],[102.942406,35.92674],[102.971971,35.995525],[102.951645,36.021667],[102.968276,36.044414],[102.932551,36.048285],[102.882044,36.082632],[102.941174,36.104877],[102.948566,36.150798],[102.965812,36.151765],[102.986754,36.193312],[103.048964,36.199107],[103.066826,36.216974],[103.021246,36.232906],[103.024942,36.256556],[102.922696,36.298047],[102.896827,36.331803],[102.845704,36.331803],[102.836465,36.344819],[102.829689,36.365544]]]]}},{"type":"Feature","properties":{"adcode":640000,"name":"宁夏回族自治区","center":[106.278179,38.46637],"centroid":[106.169866,37.291332],"childrenNum":5,"level":"province","parent":{"adcode":100000},"subFeatureIndex":29,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[107.268764,37.099367],[107.281083,37.127047],[107.306952,37.100799],[107.334669,37.138975],[107.336517,37.165687],[107.317423,37.200017],[107.270612,37.229089],[107.309416,37.239095],[107.273075,37.29101],[107.257677,37.337179],[107.282931,37.437036],[107.284162,37.481691],[107.345756,37.518725],[107.369162,37.58752],[107.330358,37.584201],[107.311264,37.609806],[107.361155,37.613125],[107.422133,37.665254],[107.389488,37.671413],[107.387024,37.691305],[107.425828,37.684201],[107.484959,37.706458],[107.499125,37.765619],[107.57119,37.776499],[107.599523,37.791162],[107.620465,37.776026],[107.646335,37.805349],[107.659269,37.844112],[107.65003,37.86443],[107.560719,37.893717],[107.49235,37.944706],[107.448618,37.933378],[107.411662,37.948009],[107.440611,37.995659],[107.3938,38.014993],[107.33159,38.086625],[107.240431,38.111586],[107.19054,38.153953],[107.138801,38.161011],[107.119091,38.134185],[107.071047,38.138892],[107.051337,38.122886],[107.010069,38.120532],[106.942316,38.132302],[106.858548,38.156306],[106.779092,38.171833],[106.737824,38.197706],[106.654672,38.22921],[106.627571,38.232501],[106.555506,38.263521],[106.482209,38.319417],[106.599854,38.389812],[106.647897,38.470917],[106.66268,38.601524],[106.709491,38.718821],[106.756302,38.748699],[106.837606,38.847579],[106.954019,38.941202],[106.971881,39.026333],[106.96757,39.054688],[106.933693,39.076527],[106.878874,39.091392],[106.859164,39.107648],[106.825288,39.19397],[106.795723,39.214375],[106.790795,39.241263],[106.806193,39.277407],[106.806809,39.318625],[106.781556,39.371849],[106.751375,39.381564],[106.683622,39.357506],[106.643586,39.357969],[106.602318,39.37555],[106.556122,39.322329],[106.525325,39.308439],[106.511774,39.272311],[106.402753,39.291767],[106.280181,39.262118],[106.29558,39.167992],[106.285109,39.146181],[106.251232,39.131327],[106.192718,39.142932],[106.170544,39.163352],[106.145907,39.153142],[106.096631,39.084889],[106.078153,39.026333],[106.087392,39.006339],[106.060907,38.96866],[106.021487,38.953769],[105.97098,38.909077],[105.992538,38.857366],[105.909386,38.791159],[105.908154,38.737496],[105.88598,38.716953],[105.894603,38.696405],[105.852719,38.641735],[105.874277,38.593105],[105.856415,38.569714],[105.863806,38.53508],[105.836705,38.476071],[105.850872,38.443736],[105.827466,38.432486],[105.835473,38.387467],[105.821307,38.366824],[105.86627,38.296406],[105.842248,38.240962],[105.802828,38.220277],[105.775111,38.186887],[105.76772,38.121474],[105.780655,38.084741],[105.840401,38.004147],[105.799749,37.939986],[105.80406,37.862068],[105.760944,37.799674],[105.677177,37.771769],[105.622358,37.777919],[105.616199,37.722555],[105.598952,37.699356],[105.467141,37.695094],[105.4037,37.710246],[105.315004,37.702197],[105.221998,37.677097],[105.187505,37.657674],[105.111128,37.633981],[105.027977,37.580881],[104.866601,37.566651],[104.805007,37.539133],[104.623305,37.522522],[104.433595,37.515402],[104.419429,37.511604],[104.407726,37.464592],[104.322726,37.44844],[104.287002,37.428007],[104.298705,37.414223],[104.365226,37.418026],[104.437907,37.445589],[104.448994,37.42468],[104.499501,37.421353],[104.521059,37.43466],[104.679971,37.408044],[104.662109,37.367626],[104.713848,37.329566],[104.673812,37.317668],[104.651022,37.290534],[104.624536,37.298627],[104.600515,37.242907],[104.638087,37.201923],[104.717543,37.208597],[104.776673,37.246718],[104.85613,37.211933],[104.864753,37.17284],[104.888158,37.15901],[104.914644,37.097935],[104.954064,37.077407],[104.95468,37.040156],[105.004571,37.035378],[105.03968,37.007187],[105.05939,37.022956],[105.128991,36.996194],[105.165331,36.99476],[105.185657,36.942164],[105.178882,36.892403],[105.244787,36.894796],[105.279896,36.86751],[105.303302,36.820575],[105.334714,36.80093],[105.340874,36.764502],[105.319932,36.742924],[105.275584,36.752515],[105.272505,36.739567],[105.218302,36.730455],[105.201056,36.700711],[105.225693,36.664716],[105.22015,36.631105],[105.261418,36.602764],[105.2762,36.563358],[105.252179,36.553263],[105.281744,36.522489],[105.322396,36.535954],[105.362432,36.496514],[105.363048,36.443093],[105.398156,36.430575],[105.401236,36.369881],[105.425873,36.330357],[105.455439,36.321678],[105.476381,36.293224],[105.45975,36.268137],[105.460366,36.223733],[105.478844,36.213111],[105.515185,36.147415],[105.491163,36.101009],[105.430801,36.10391],[105.406163,36.074409],[105.343954,36.033767],[105.324859,35.941761],[105.350113,35.875839],[105.39754,35.857409],[105.371055,35.844312],[105.38091,35.792873],[105.408627,35.822479],[105.428953,35.819082],[105.432033,35.787533],[105.457286,35.771511],[105.481924,35.727312],[105.595873,35.715651],[105.667322,35.749657],[105.70243,35.733142],[105.759097,35.724883],[105.740618,35.698643],[105.723988,35.725854],[105.690727,35.698643],[105.722756,35.673366],[105.713517,35.650513],[105.759097,35.634464],[105.762176,35.602841],[105.800365,35.564878],[105.816379,35.575101],[105.847176,35.490359],[105.868734,35.540046],[105.900147,35.54735],[106.017175,35.519103],[106.023335,35.49377],[106.047356,35.498155],[106.078769,35.509848],[106.071994,35.463555],[106.06953,35.458193],[106.073842,35.45478],[106.073226,35.450393],[106.071378,35.449418],[106.073226,35.447468],[106.083081,35.421624],[106.113262,35.361616],[106.129892,35.393333],[106.173008,35.437716],[106.196414,35.409919],[106.237681,35.409431],[106.241377,35.358687],[106.319601,35.265411],[106.363333,35.238532],[106.368261,35.273718],[106.415688,35.276161],[106.472354,35.310842],[106.501304,35.364056],[106.503767,35.415284],[106.483441,35.450393],[106.490217,35.480613],[106.465579,35.481101],[106.440941,35.52641],[106.460036,35.578995],[106.47913,35.575101],[106.460036,35.643705],[106.434782,35.688436],[106.49268,35.732656],[106.506231,35.737514],[106.566593,35.738971],[106.595542,35.727312],[106.620796,35.743829],[106.633115,35.714679],[106.66268,35.70739],[106.674998,35.728284],[106.750759,35.689408],[106.750759,35.725369],[106.806193,35.70982],[106.819128,35.7448],[106.867171,35.738485],[106.868403,35.771996],[106.897353,35.759856],[106.927534,35.810346],[106.849925,35.887476],[106.912751,35.93207],[106.940468,35.931101],[106.93862,35.952905],[106.90228,35.943699],[106.94786,35.988262],[106.928149,36.011502],[106.940468,36.064734],[106.957715,36.091337],[106.925686,36.115997],[106.930613,36.138716],[106.873947,36.178338],[106.873947,36.178338],[106.858548,36.206834],[106.858548,36.206834],[106.833295,36.229044],[106.808657,36.21118],[106.772933,36.212628],[106.735976,36.23725],[106.698404,36.244008],[106.685469,36.273445],[106.647897,36.259451],[106.559202,36.292259],[106.54134,36.25366],[106.504383,36.266207],[106.470507,36.306246],[106.497608,36.31348],[106.510543,36.379037],[106.492064,36.422389],[106.523477,36.468605],[106.494528,36.494589],[106.455724,36.496995],[106.39721,36.548455],[106.37134,36.549417],[106.363949,36.577296],[106.392282,36.556628],[106.397826,36.576816],[106.444637,36.557109],[106.465579,36.583063],[106.444637,36.624861],[106.491448,36.628703],[106.490833,36.685835],[106.530869,36.690154],[106.519782,36.708868],[106.519782,36.708868],[106.514238,36.715584],[106.59431,36.750118],[106.644817,36.72278],[106.627571,36.752995],[106.657752,36.820575],[106.637426,36.867031],[106.637426,36.867031],[106.626955,36.892403],[106.609709,36.878521],[106.609709,36.878521],[106.601702,36.918244],[106.549347,36.941685],[106.540108,36.984244],[106.595542,36.94025],[106.594926,36.967988],[106.64297,36.962729],[106.646665,37.000496],[106.666991,37.016745],[106.645433,37.064992],[106.605397,37.127524],[106.6171,37.135158],[106.673151,37.1113],[106.687933,37.12991],[106.728585,37.121321],[106.750143,37.09889],[106.772933,37.120367],[106.776012,37.158056],[106.818512,37.141838],[106.891193,37.098413],[106.912135,37.110345],[106.905976,37.151378],[106.998367,37.106527],[107.031011,37.108436],[107.030395,37.140883],[107.095685,37.115595],[107.133873,37.134681],[107.181916,37.143269],[107.234887,37.096503],[107.268764,37.099367]]],[[[106.048588,35.488898],[105.897683,35.451368],[105.894603,35.413821],[106.002393,35.438692],[106.034422,35.469404],[106.054132,35.45478],[106.048588,35.488898]]],[[[106.073842,35.45478],[106.06953,35.458193],[106.071378,35.449418],[106.073226,35.450393],[106.073842,35.45478]]]]}},{"type":"Feature","properties":{"adcode":650000,"name":"新疆维吾尔自治区","center":[87.617733,43.792818],"centroid":[85.294711,41.371801],"childrenNum":24,"level":"province","parent":{"adcode":100000},"subFeatureIndex":30,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[96.386348,42.727592],[96.363558,42.900562],[95.921314,43.229789],[95.880046,43.28035],[95.857872,43.417436],[95.735916,43.597569],[95.705735,43.67077],[95.645373,43.787966],[95.623199,43.855756],[95.527113,44.007466],[95.426099,44.009618],[95.377439,44.025972],[95.326932,44.028554],[95.35157,44.090054],[95.355882,44.166087],[95.376208,44.227444],[95.4107,44.245024],[95.43041,44.281882],[95.41378,44.298589],[95.238853,44.277169],[95.1286,44.269884],[94.998637,44.253169],[94.945666,44.292592],[94.826174,44.320001],[94.768275,44.34055],[94.722696,44.34055],[94.673421,44.397021],[94.606283,44.448311],[94.557008,44.462408],[94.470777,44.509373],[94.390705,44.521749],[94.359292,44.515775],[94.329727,44.582734],[94.279836,44.603617],[94.227481,44.645785],[94.215162,44.667921],[94.152336,44.684944],[94.066105,44.732154],[93.723642,44.865498],[93.716251,44.894334],[93.613389,44.926546],[93.509296,44.968055],[93.434767,44.955351],[93.376869,44.985412],[93.314659,44.995147],[93.314043,44.980333],[93.252449,44.991761],[93.174225,45.015458],[93.100312,45.007419],[93.062124,45.018419],[93.002377,45.009958],[92.932776,45.017573],[92.922921,45.03703],[92.884117,45.046756],[92.847777,45.038721],[92.779407,45.050561],[92.683937,45.02561],[92.547814,45.018419],[92.501003,45.001072],[92.414155,45.018419],[92.348866,45.014188],[92.315605,45.028994],[92.240461,45.015881],[92.100026,45.081417],[92.056911,45.086911],[91.885679,45.078882],[91.803144,45.082685],[91.694738,45.065357],[91.561695,45.075501],[91.500101,45.103809],[91.448978,45.156586],[91.429268,45.156586],[91.37753,45.11099],[91.33503,45.129571],[91.242023,45.13717],[91.230936,45.153632],[91.195827,45.159118],[91.17119,45.199616],[91.129922,45.21606],[91.050466,45.208892],[91.007966,45.218589],[90.96177,45.201303],[90.881698,45.192025],[90.866916,45.209314],[90.897713,45.249776],[90.877387,45.280946],[90.831807,45.300313],[90.804706,45.29484],[90.813329,45.32851],[90.773909,45.405874],[90.772677,45.432338],[90.723402,45.464667],[90.671047,45.487747],[90.676591,45.582488],[90.714779,45.728895],[90.799778,45.834905],[90.890937,45.921566],[91.028292,46.023054],[91.014741,46.06667],[91.021517,46.121038],[90.98456,46.160431],[90.94822,46.219262],[90.955611,46.233752],[90.900177,46.31235],[90.983328,46.374734],[90.996263,46.419309],[91.025828,46.444057],[91.038147,46.500936],[91.060937,46.516999],[91.079415,46.558989],[91.068328,46.579149],[91.017821,46.58244],[91.036299,46.670393],[91.054161,46.717598],[91.019053,46.766402],[90.992567,46.769682],[90.992567,46.790583],[90.942676,46.82581],[90.958075,46.879425],[90.929742,46.893331],[90.92235,46.938707],[90.901408,46.960768],[90.830575,46.995883],[90.767134,46.992617],[90.691989,47.080717],[90.653801,47.111681],[90.579888,47.198364],[90.56141,47.206903],[90.521374,47.2845],[90.488113,47.317374],[90.526301,47.379007],[90.507823,47.400076],[90.468403,47.404937],[90.459164,47.43895],[90.474562,47.462422],[90.468403,47.497611],[90.398186,47.547724],[90.376012,47.603036],[90.346447,47.637324],[90.384635,47.644179],[90.331665,47.681663],[90.216484,47.70543],[90.180144,47.72516],[90.13518,47.723147],[90.07605,47.777469],[90.070506,47.820483],[90.086521,47.86547],[90.066195,47.883534],[90.040941,47.874704],[89.960253,47.885942],[89.957789,47.842982],[89.86971,47.834144],[89.761921,47.835751],[89.735435,47.89758],[89.651052,47.913627],[89.645508,47.947711],[89.595617,47.973359],[89.599313,48.015811],[89.569132,48.037825],[89.498299,48.02822],[89.38127,48.046227],[89.359712,48.026219],[89.308589,48.021816],[89.282104,47.994189],[89.231597,47.98017],[89.156452,47.996992],[89.078228,47.98698],[89.044967,48.009806],[89.027105,48.051028],[88.953808,48.090618],[88.939026,48.115396],[88.824461,48.107005],[88.79736,48.133772],[88.721599,48.160526],[88.700657,48.180881],[88.668628,48.171303],[88.638447,48.183674],[88.601491,48.221567],[88.594716,48.259831],[88.575006,48.277757],[88.605803,48.337863],[88.573774,48.351785],[88.573158,48.369679],[88.535586,48.368884],[88.523267,48.403461],[88.503557,48.412996],[88.462289,48.392335],[88.438267,48.393528],[88.360659,48.433251],[88.363123,48.460641],[88.318159,48.478497],[88.229464,48.498329],[88.196819,48.493967],[88.151855,48.526478],[88.130297,48.521721],[88.10874,48.545895],[88.041602,48.548272],[87.973233,48.575997],[87.96153,48.599353],[88.010805,48.618742],[88.02682,48.65315],[88.089645,48.69504],[88.090877,48.71992],[88.064392,48.712813],[88.029283,48.750313],[87.96153,48.773588],[87.93874,48.757809],[87.872219,48.799612],[87.826639,48.800795],[87.803234,48.824835],[87.829103,48.825623],[87.792147,48.849258],[87.78106,48.872094],[87.742256,48.881146],[87.760118,48.925992],[87.793995,48.927565],[87.814321,48.945256],[87.87653,48.949186],[87.871603,48.963726],[87.911639,48.979833],[87.883922,48.993971],[87.883306,49.023806],[87.835263,49.054406],[87.858052,49.07362],[87.844502,49.090084],[87.867291,49.108892],[87.845733,49.146096],[87.82048,49.148445],[87.821096,49.173883],[87.793379,49.18249],[87.762582,49.172709],[87.700372,49.175839],[87.67635,49.15549],[87.602437,49.152359],[87.563017,49.142572],[87.517438,49.145704],[87.49588,49.132001],[87.511894,49.10184],[87.43675,49.075188],[87.388707,49.097921],[87.304939,49.112418],[87.239033,49.114376],[87.211932,49.140615],[87.112766,49.15549],[87.088128,49.133567],[87.000049,49.142572],[86.953853,49.131218],[86.887948,49.132001],[86.854071,49.109284],[86.84976,49.066563],[86.836209,49.051269],[86.772151,49.02773],[86.732115,48.994757],[86.730267,48.959797],[86.757985,48.894919],[86.782006,48.887049],[86.821426,48.850439],[86.818963,48.831139],[86.770303,48.810255],[86.754289,48.78463],[86.780774,48.731369],[86.771535,48.717156],[86.70255,48.666195],[86.693311,48.64366],[86.640956,48.629027],[86.635413,48.612016],[86.594761,48.576789],[86.579978,48.538763],[86.416138,48.481671],[86.38103,48.49357],[86.305269,48.491984],[86.270161,48.452307],[86.225813,48.432456],[86.053966,48.441192],[85.916612,48.438015],[85.791576,48.418954],[85.758315,48.403064],[85.695489,48.335078],[85.695489,48.302445],[85.678243,48.266205],[85.633895,48.232731],[85.622193,48.202824],[85.587084,48.191654],[85.576613,48.15853],[85.55136,48.127781],[85.551975,48.081423],[85.531649,48.046227],[85.547048,48.008205],[85.617881,47.550552],[85.614801,47.498015],[85.685018,47.428829],[85.701649,47.384275],[85.675779,47.321837],[85.701033,47.28856],[85.682555,47.249982],[85.682555,47.222757],[85.641903,47.18413],[85.582772,47.142626],[85.547048,47.096609],[85.545816,47.057891],[85.441106,47.063191],[85.355491,47.054629],[85.325926,47.044842],[85.276651,47.068898],[85.213825,47.041172],[85.175637,46.997924],[85.102956,46.968936],[85.082014,46.939933],[84.987159,46.918272],[84.979768,46.883106],[84.95513,46.861013],[84.934188,46.863878],[84.867051,46.927673],[84.849189,46.957092],[84.781435,46.979962],[84.748175,47.009759],[84.699515,47.008535],[84.668718,46.995067],[84.563393,46.991801],[84.506726,46.97302],[84.425422,47.008943],[84.37122,46.993434],[84.336727,47.00527],[84.2893,46.994658],[84.195061,47.003638],[84.150098,46.977512],[84.086656,46.965261],[84.038613,46.973428],[84.002888,46.990576],[83.951765,46.98731],[83.932671,46.970161],[83.88586,46.982003],[83.766367,47.026896],[83.69923,47.015472],[83.700462,47.032199],[83.576042,47.059114],[83.566803,47.080717],[83.53847,47.083977],[83.463325,47.132042],[83.418978,47.119012],[83.370318,47.178436],[83.324739,47.167858],[83.306261,47.179656],[83.257602,47.173147],[83.221877,47.186977],[83.207094,47.213814],[83.17445,47.218286],[83.15474,47.236168],[83.108544,47.221944],[83.02724,47.21544],[83.031552,47.168265],[82.993364,47.065229],[82.937929,47.014248],[82.923762,46.932169],[82.876335,46.823762],[82.878183,46.797138],[82.829524,46.772551],[82.788872,46.677784],[82.774089,46.600124],[82.726662,46.494756],[82.609017,46.294985],[82.518474,46.153798],[82.461808,45.97982],[82.401446,45.972333],[82.342932,45.935303],[82.336156,45.882418],[82.349707,45.822811],[82.340468,45.772742],[82.289961,45.71636],[82.288729,45.655321],[82.266555,45.620172],[82.281954,45.53891],[82.448257,45.461309],[82.546808,45.426038],[82.60101,45.346178],[82.58746,45.224069],[82.562822,45.204676],[82.487061,45.181058],[82.344779,45.219011],[82.294272,45.247669],[82.206809,45.236713],[82.109491,45.211422],[82.091012,45.222383],[82.09594,45.249776],[82.052824,45.255674],[81.993078,45.237978],[81.921013,45.233342],[81.879745,45.284314],[81.832318,45.319673],[81.78797,45.3836],[81.677101,45.35459],[81.645072,45.359216],[81.582863,45.336503],[81.575471,45.30789],[81.536667,45.304101],[81.52866,45.285999],[81.462754,45.264099],[81.437501,45.28263],[81.398697,45.275471],[81.382066,45.257781],[81.327864,45.260729],[81.284748,45.23882],[81.236705,45.247248],[81.175111,45.227863],[81.170183,45.211001],[81.111669,45.218168],[81.080872,45.182745],[81.024821,45.162916],[80.966307,45.168402],[80.93551,45.160384],[80.897938,45.127459],[80.862214,45.127037],[80.816634,45.152788],[80.731634,45.156164],[80.686055,45.129148],[80.599207,45.105921],[80.519135,45.108878],[80.493882,45.127037],[80.445839,45.097895],[80.443991,45.077614],[80.404571,45.049293],[80.358375,45.040836],[80.328194,45.070007],[80.291854,45.06578],[80.24381,45.031532],[80.195767,45.030686],[80.144644,45.059017],[80.136021,45.041259],[80.111999,45.052675],[80.060876,45.026033],[80.056565,45.011227],[79.98142,44.964244],[79.951855,44.957892],[79.944464,44.937985],[79.887798,44.90917],[79.969102,44.877797],[79.953703,44.849377],[79.991891,44.830281],[79.999283,44.793768],[80.087978,44.817122],[80.115695,44.815424],[80.169898,44.84471],[80.18776,44.825612],[80.178521,44.796741],[80.200695,44.756808],[80.238883,44.7228],[80.313412,44.704938],[80.400259,44.628751],[80.411962,44.605321],[80.350368,44.484615],[80.383013,44.401297],[80.399027,44.30587],[80.413194,44.264741],[80.400875,44.198704],[80.407034,44.149772],[80.3941,44.127009],[80.449534,44.078017],[80.458773,44.047054],[80.457541,43.981203],[80.485259,43.95579],[80.475404,43.938124],[80.511128,43.906657],[80.522215,43.816473],[80.75504,43.494329],[80.761199,43.446554],[80.746417,43.439167],[80.735946,43.389609],[80.686055,43.333916],[80.69283,43.32042],[80.777214,43.308227],[80.769207,43.265535],[80.788917,43.242433],[80.789533,43.201876],[80.804315,43.178314],[80.79446,43.137277],[80.752576,43.148194],[80.73225,43.131163],[80.706997,43.143828],[80.650946,43.147321],[80.593048,43.133347],[80.556092,43.104515],[80.482795,43.06955],[80.416889,43.05687],[80.378701,43.031502],[80.397795,42.996933],[80.487106,42.948766],[80.5912,42.923354],[80.602903,42.894424],[80.503737,42.882146],[80.450766,42.861971],[80.407034,42.834767],[80.338049,42.831695],[80.280151,42.838278],[80.262289,42.828623],[80.259209,42.790865],[80.225948,42.713083],[80.228412,42.692852],[80.179753,42.670415],[80.163738,42.629919],[80.180985,42.590718],[80.221637,42.533415],[80.265368,42.502097],[80.225948,42.485769],[80.206238,42.431462],[80.239499,42.389927],[80.229028,42.358536],[80.283847,42.320493],[80.272144,42.281984],[80.29247,42.259842],[80.28631,42.233261],[80.233339,42.210215],[80.168666,42.200462],[80.163738,42.152563],[80.139717,42.151232],[80.16805,42.096635],[80.193303,42.081535],[80.14218,42.03488],[80.089826,42.047325],[79.923522,42.042436],[79.852689,42.015319],[79.854537,41.984186],[79.822508,41.963275],[79.776313,41.89248],[79.724574,41.896935],[79.640806,41.884907],[79.616784,41.856385],[79.550879,41.834094],[79.500988,41.835432],[79.457256,41.847915],[79.415372,41.836769],[79.356242,41.795735],[79.326061,41.809565],[79.276786,41.78101],[79.271858,41.767174],[79.21704,41.725648],[79.138199,41.722968],[79.10925,41.697503],[79.043345,41.681414],[79.021787,41.657273],[78.99407,41.664427],[78.957729,41.65146],[78.891824,41.597777],[78.86657,41.593749],[78.825302,41.560173],[78.739071,41.555695],[78.696571,41.54181],[78.707042,41.522098],[78.675629,41.50238],[78.650375,41.467411],[78.580774,41.481759],[78.527188,41.440947],[78.454507,41.412228],[78.391681,41.408189],[78.385522,41.394721],[78.338094,41.397415],[78.324544,41.384395],[78.235232,41.399211],[78.163783,41.383497],[78.149617,41.368228],[78.165015,41.340825],[78.136682,41.279239],[78.129291,41.228398],[78.094798,41.224347],[77.972842,41.173013],[77.905089,41.185174],[77.836104,41.153189],[77.814546,41.13426],[77.807155,41.091876],[77.829328,41.059394],[77.796068,41.049014],[77.780669,41.022832],[77.737553,41.032313],[77.684583,41.00793],[77.654402,41.016059],[77.597119,41.005221],[77.591576,40.992122],[77.540453,41.006575],[77.476395,40.999349],[77.473931,41.022832],[77.415417,41.038633],[77.363062,41.04089],[77.296541,41.004769],[77.236795,41.027798],[77.169041,41.009285],[77.108063,41.038181],[77.091433,41.062553],[77.023064,41.059394],[77.002122,41.073381],[76.940528,41.028701],[76.885709,41.027347],[76.85368,40.97631],[76.817956,40.975406],[76.761905,40.954167],[76.741579,40.912119],[76.731724,40.818887],[76.693536,40.779472],[76.646725,40.759983],[76.646725,40.73686],[76.676906,40.696036],[76.654732,40.652917],[76.657196,40.620218],[76.611,40.601591],[76.601145,40.578868],[76.556798,40.542495],[76.543247,40.513837],[76.539551,40.464226],[76.508754,40.429613],[76.470566,40.422779],[76.442233,40.391336],[76.390494,40.37766],[76.381871,40.39088],[76.333212,40.343459],[76.327668,40.391336],[76.283321,40.415034],[76.279625,40.439179],[76.22419,40.401819],[76.176147,40.381307],[76.144118,40.393615],[76.081293,40.39635],[76.048648,40.388601],[76.048648,40.357141],[76.026474,40.355317],[75.986438,40.381763],[75.932235,40.339353],[75.921764,40.291439],[75.890351,40.30924],[75.84046,40.312434],[75.831221,40.327492],[75.785642,40.301025],[75.739446,40.299199],[75.709265,40.280939],[75.688323,40.343915],[75.669845,40.363982],[75.686475,40.418223],[75.717272,40.443278],[75.733287,40.474242],[75.646439,40.516567],[75.631041,40.548862],[75.627345,40.605226],[75.636584,40.624306],[75.599628,40.659727],[75.550353,40.64883],[75.467817,40.599773],[75.432093,40.563412],[75.355716,40.537947],[75.292274,40.483802],[75.268869,40.483802],[75.242383,40.448743],[75.206659,40.447833],[75.13521,40.463315],[75.102565,40.44009],[75.051442,40.449654],[75.021877,40.466958],[74.995392,40.455119],[74.963363,40.464681],[74.891914,40.507467],[74.844486,40.521117],[74.819233,40.505647],[74.814921,40.461039],[74.795211,40.443278],[74.908544,40.338897],[74.862965,40.32658],[74.824776,40.344371],[74.700357,40.346195],[74.697893,40.310153],[74.673255,40.278656],[74.618437,40.27957],[74.577169,40.260391],[74.534669,40.207851],[74.485394,40.182251],[74.433039,40.13148],[74.356662,40.089371],[74.316626,40.106767],[74.280902,40.09807],[74.26304,40.125074],[74.126301,40.104479],[74.113366,40.086624],[74.023439,40.085251],[74.008041,40.050901],[73.943367,40.016076],[73.980324,40.004617],[73.910722,39.934443],[73.907027,39.873843],[73.845433,39.831115],[73.841737,39.756163],[73.905795,39.741899],[73.924273,39.722108],[73.953838,39.600018],[73.916266,39.586644],[73.914418,39.564041],[73.883621,39.540969],[73.893476,39.528046],[73.868223,39.482794],[73.836194,39.472169],[73.745651,39.462005],[73.6471,39.474479],[73.61076,39.465702],[73.592898,39.412087],[73.502355,39.383877],[73.554094,39.350102],[73.554709,39.295935],[73.542391,39.269531],[73.564564,39.266288],[73.580579,39.237555],[73.623079,39.235237],[73.639709,39.220402],[73.657571,39.166136],[73.688368,39.154999],[73.719781,39.108112],[73.720397,39.071881],[73.743187,39.029588],[73.780143,39.026798],[73.820179,39.041674],[73.839889,39.008199],[73.846665,38.962145],[73.826339,38.916993],[73.767824,38.941202],[73.742571,38.933754],[73.70931,38.893241],[73.699455,38.857832],[73.729636,38.837324],[73.769056,38.775765],[73.757353,38.719755],[73.809092,38.634256],[73.799237,38.610878],[73.852208,38.584217],[73.89902,38.579071],[73.926121,38.536016],[74.011736,38.52478],[74.034526,38.541634],[74.090577,38.542102],[74.068403,38.585621],[74.088113,38.610878],[74.11275,38.611345],[74.147859,38.676785],[74.229779,38.656224],[74.353583,38.655757],[74.421952,38.647812],[74.455829,38.632853],[74.506336,38.637528],[74.546988,38.607604],[74.613509,38.593105],[74.639995,38.599653],[74.717603,38.542102],[74.78474,38.538357],[74.821697,38.491062],[74.862965,38.484035],[74.868508,38.403883],[74.834015,38.361193],[74.789668,38.324581],[74.806914,38.285602],[74.793363,38.271039],[74.816769,38.215576],[74.80445,38.167128],[74.821697,38.10311],[74.879595,38.021122],[74.92579,38.01735],[74.911008,37.966884],[74.919015,37.908357],[74.936877,37.876241],[74.917167,37.845057],[74.989848,37.797783],[75.006478,37.770823],[74.949196,37.725395],[74.923327,37.717347],[74.920863,37.684675],[74.891914,37.668097],[74.940573,37.559061],[75.000935,37.53059],[75.002167,37.511604],[75.035428,37.500685],[75.078543,37.511129],[75.090862,37.486915],[75.129666,37.459367],[75.153072,37.414223],[75.125971,37.388075],[75.140137,37.355258],[75.125971,37.322427],[75.078543,37.318144],[75.018181,37.293867],[74.927022,37.277678],[74.911008,37.233378],[74.816153,37.216699],[74.800139,37.248147],[74.753943,37.281011],[74.727458,37.282916],[74.665864,37.23576],[74.642458,37.261485],[74.598727,37.258151],[74.578401,37.231472],[74.54514,37.2491],[74.511263,37.240048],[74.477387,37.19954],[74.487858,37.161871],[74.465068,37.147085],[74.496481,37.116072],[74.498944,37.072155],[74.530357,37.082182],[74.56793,37.032512],[74.617205,37.043499],[74.632603,37.066425],[74.70898,37.084569],[74.739161,37.028212],[74.792747,37.027257],[74.806914,37.054485],[74.84695,37.056873],[74.84387,37.0134],[74.86974,36.990458],[74.893762,36.939772],[74.938725,36.94312],[74.927638,36.978029],[75.005862,36.99476],[75.032348,37.016745],[75.063145,37.006231],[75.172166,37.013877],[75.16847,36.991892],[75.244847,36.963207],[75.288579,36.974682],[75.345861,36.960816],[75.413614,36.954599],[75.396368,36.904367],[75.430245,36.873255],[75.434556,36.83303],[75.425933,36.778883],[75.458578,36.720861],[75.504773,36.743404],[75.536802,36.729975],[75.537418,36.773131],[75.588541,36.762584],[75.634121,36.771693],[75.724048,36.750597],[75.8072,36.707908],[75.871257,36.666636],[75.947018,36.590752],[75.924228,36.566242],[75.991981,36.505654],[76.035097,36.409386],[75.991365,36.35205],[75.998757,36.312034],[76.055423,36.252695],[76.060967,36.225182],[76.011691,36.229044],[76.016619,36.165294],[75.96796,36.159013],[75.936547,36.13485],[75.949482,36.070056],[75.982742,36.031347],[76.028322,36.016827],[76.044336,36.026991],[76.097307,36.022635],[76.117017,35.975186],[76.16506,35.908807],[76.146582,35.839946],[76.160133,35.82442],[76.221727,35.823449],[76.228502,35.837035],[76.298719,35.841401],[76.365857,35.82442],[76.369552,35.86323],[76.431762,35.851589],[76.471798,35.886021],[76.51553,35.881173],[76.55803,35.923347],[76.59745,35.895718],[76.579587,35.866625],[76.587595,35.840431],[76.566037,35.819082],[76.593754,35.771996],[76.69292,35.747714],[76.769297,35.653917],[76.848753,35.668018],[76.906651,35.615005],[76.967013,35.591649],[76.99781,35.611113],[77.072339,35.591162],[77.093281,35.569746],[77.195527,35.519103],[77.307628,35.540533],[77.331649,35.530793],[77.355055,35.494257],[77.396939,35.467942],[77.451758,35.46063],[77.518895,35.482075],[77.578025,35.47574],[77.590344,35.460143],[77.639619,35.45478],[77.657481,35.477689],[77.690742,35.448443],[77.735706,35.461605],[77.757879,35.497181],[77.797299,35.491334],[77.816394,35.518616],[77.85643,35.487436],[77.870596,35.495232],[77.914944,35.465017],[77.917408,35.490847],[77.951284,35.478664],[78.009799,35.491821],[78.029509,35.469404],[78.048603,35.491334],[78.140378,35.494745],[78.113892,35.466967],[78.107117,35.437229],[78.046755,35.384063],[78.013494,35.366008],[78.020885,35.315237],[78.01719,35.228267],[78.060306,35.180344],[78.062769,35.114772],[78.078784,35.100084],[78.124979,35.108407],[78.150849,35.069721],[78.123131,35.036897],[78.160704,34.990823],[78.201972,34.974642],[78.182262,34.936874],[78.206283,34.891726],[78.237696,34.882398],[78.230921,34.776288],[78.21429,34.760556],[78.213059,34.717771],[78.267261,34.705472],[78.265413,34.651335],[78.280812,34.623269],[78.346101,34.60406],[78.397224,34.605538],[78.427405,34.594207],[78.436029,34.543942],[78.492695,34.578441],[78.542586,34.574499],[78.559832,34.55725],[78.562912,34.51288],[78.58139,34.505483],[78.634977,34.538026],[78.708274,34.522249],[78.715049,34.502031],[78.758781,34.481807],[78.742766,34.45467],[78.809288,34.432955],[78.878273,34.391481],[78.899831,34.354929],[78.958961,34.386049],[78.973128,34.362833],[79.039649,34.33467],[79.048888,34.348506],[79.0107,34.399877],[79.039033,34.421601],[79.072294,34.412714],[79.161605,34.441345],[79.179467,34.422588],[79.241677,34.415183],[79.274322,34.435916],[79.326677,34.44332],[79.363017,34.428018],[79.435082,34.447761],[79.504683,34.45467],[79.545335,34.476381],[79.58106,34.456151],[79.675914,34.451216],[79.699936,34.477861],[79.735661,34.471447],[79.801566,34.478847],[79.861312,34.528166],[79.84345,34.55725],[79.88595,34.642965],[79.866856,34.671517],[79.906892,34.683821],[79.898268,34.732035],[79.947544,34.821008],[79.926602,34.849499],[79.961094,34.862759],[79.996819,34.856375],[80.003594,34.895162],[80.034391,34.902033],[80.041782,34.943252],[80.02392,34.971209],[80.04363,35.022196],[80.031311,35.034447],[80.078123,35.076578],[80.118159,35.066293],[80.23026,35.147565],[80.223484,35.177409],[80.257977,35.203331],[80.362687,35.20871],[80.267832,35.295701],[80.286926,35.35283],[80.321419,35.38699],[80.375006,35.387966],[80.432904,35.449418],[80.444607,35.417235],[80.514824,35.391869],[80.532686,35.404553],[80.56841,35.391381],[80.599823,35.409431],[80.65649,35.393821],[80.690982,35.364544],[80.689135,35.339162],[80.759968,35.334768],[80.844351,35.345508],[80.894242,35.324027],[80.924423,35.330862],[80.963844,35.310842],[81.026053,35.31133],[81.002648,35.334768],[81.030981,35.337209],[81.031597,35.380648],[81.054387,35.402602],[81.09935,35.40748],[81.103662,35.386015],[81.142466,35.365032],[81.191741,35.36552],[81.219458,35.319144],[81.26627,35.322562],[81.285364,35.345508],[81.314313,35.337209],[81.363588,35.354783],[81.385762,35.335256],[81.441196,35.333303],[81.447972,35.318167],[81.504638,35.279092],[81.513261,35.23511],[81.68634,35.235599],[81.736847,35.26248],[81.804601,35.270786],[81.853876,35.25857],[81.927789,35.271275],[81.955506,35.307423],[81.99123,35.30547],[82.030034,35.321585],[82.05344,35.35039],[82.029419,35.426013],[82.034346,35.451855],[82.071302,35.450393],[82.086701,35.467454],[82.164925,35.495719],[82.189563,35.513258],[82.234526,35.520565],[82.263475,35.547837],[82.2992,35.544916],[82.328149,35.559523],[82.350323,35.611113],[82.336156,35.651486],[82.392823,35.656349],[82.424852,35.712736],[82.468583,35.717595],[82.501844,35.701073],[82.546192,35.708362],[82.628727,35.692324],[82.652133,35.67288],[82.731589,35.637868],[82.780249,35.666073],[82.795031,35.688436],[82.873871,35.688922],[82.894813,35.673852],[82.967494,35.667532],[82.956407,35.636409],[82.981661,35.599922],[82.971806,35.548324],[82.998907,35.484512],[83.067892,35.46258],[83.088834,35.425526],[83.127022,35.398699],[83.178145,35.38943],[83.251442,35.417722],[83.280391,35.401138],[83.333978,35.397236],[83.405427,35.380648],[83.449159,35.382111],[83.502745,35.360639],[83.540318,35.364056],[83.54155,35.341603],[83.599448,35.351366],[83.622238,35.335256],[83.677672,35.361128],[83.785462,35.36308],[83.79778,35.354783],[83.885244,35.367472],[83.906186,35.40309],[84.005968,35.422599],[84.077417,35.400163],[84.095895,35.362592],[84.140859,35.379184],[84.160569,35.359663],[84.200605,35.381135],[84.274517,35.404065],[84.333032,35.413821],[84.424191,35.466479],[84.45314,35.473303],[84.475929,35.516181],[84.448828,35.550272],[84.513502,35.564391],[84.570168,35.588242],[84.628067,35.595055],[84.704443,35.616951],[84.729081,35.613546],[84.798066,35.647595],[84.920022,35.696213],[84.973608,35.709334],[84.99455,35.737028],[85.053065,35.752086],[85.146071,35.742371],[85.271107,35.788989],[85.341324,35.753543],[85.373969,35.700101],[85.518715,35.680658],[85.566142,35.6403],[85.612953,35.651486],[85.65299,35.731199],[85.691178,35.751114],[85.811286,35.778794],[85.835308,35.771996],[85.903677,35.78462],[85.949256,35.778794],[86.035488,35.846738],[86.05335,35.842857],[86.090306,35.876809],[86.093386,35.906868],[86.129111,35.941761],[86.150668,36.00424],[86.173458,36.008113],[86.199944,36.047801],[86.182081,36.064734],[86.187625,36.130983],[86.248603,36.141616],[86.2794,36.170608],[86.35824,36.168676],[86.392733,36.206834],[86.454943,36.221319],[86.515305,36.205385],[86.531935,36.227113],[86.599072,36.222285],[86.69947,36.24449],[86.746282,36.291777],[86.836209,36.291294],[86.86331,36.299977],[86.887332,36.262829],[86.931064,36.265242],[86.943998,36.284058],[86.996353,36.308658],[87.051788,36.2966],[87.08628,36.310587],[87.149106,36.297565],[87.161425,36.325535],[87.193454,36.349158],[87.292004,36.358797],[87.348055,36.393008],[87.363453,36.420463],[87.386859,36.412757],[87.426895,36.42576],[87.460155,36.409868],[87.470626,36.354459],[87.570409,36.342409],[87.6203,36.360243],[87.731785,36.384818],[87.767509,36.3747],[87.826023,36.391563],[87.838342,36.383855],[87.919646,36.39349],[87.95845,36.408423],[87.983088,36.437797],[88.006494,36.430575],[88.092109,36.43539],[88.134609,36.427205],[88.182652,36.452721],[88.222688,36.447426],[88.241782,36.468605],[88.282434,36.470049],[88.366202,36.458016],[88.356963,36.477268],[88.41055,36.473418],[88.470912,36.48208],[88.498629,36.446463],[88.573158,36.461386],[88.618121,36.428168],[88.623665,36.389636],[88.690186,36.367954],[88.766563,36.292259],[88.783809,36.291777],[88.802903,36.33807],[88.838628,36.353496],[88.870657,36.348193],[88.926091,36.36458],[88.964279,36.318785],[89.013554,36.315409],[89.054822,36.291777],[89.10225,36.281164],[89.126887,36.254626],[89.198952,36.260417],[89.232213,36.295636],[89.292575,36.231457],[89.335075,36.23725],[89.375727,36.228078],[89.490291,36.151281],[89.594385,36.126632],[89.614711,36.109712],[89.711414,36.093272],[89.766848,36.073925],[89.819819,36.080697],[89.914058,36.079246],[89.941159,36.067637],[89.944855,36.140649],[89.997825,36.168193],[90.019999,36.213594],[90.028006,36.258486],[90.003369,36.278752],[90.043405,36.276822],[90.058188,36.255591],[90.145651,36.239181],[90.130252,36.2078],[90.198006,36.187516],[90.23681,36.160462],[90.325505,36.159496],[90.424055,36.133883],[90.478258,36.13195],[90.534925,36.147899],[90.613149,36.126632],[90.659344,36.13485],[90.776373,36.086501],[90.815793,36.035703],[90.850285,36.016827],[90.922966,36.028927],[90.979017,36.106811],[91.081263,36.088436],[91.124994,36.115514],[91.09235,36.163844],[91.096045,36.219871],[91.051698,36.238215],[91.07264,36.299012],[91.026444,36.323607],[91.051698,36.433946],[91.028292,36.443093],[91.039995,36.474861],[91.035683,36.529703],[91.011662,36.539801],[90.905104,36.560474],[90.831191,36.55807],[90.810865,36.585466],[90.741264,36.585947],[90.72217,36.620058],[90.730793,36.655594],[90.706156,36.658955],[90.720938,36.708868],[90.754815,36.721341],[90.727098,36.755872],[90.732025,36.825844],[90.758511,36.825844],[90.853981,36.915373],[90.924198,36.921115],[90.983944,36.913459],[91.036915,36.929727],[91.051698,36.96751],[91.126842,36.978507],[91.133618,37.007665],[91.181045,37.025345],[91.216153,37.010054],[91.303617,37.012444],[91.291298,37.042544],[91.303617,37.083136],[91.286371,37.105095],[91.280211,37.163779],[91.1909,37.205737],[91.194596,37.273868],[91.134849,37.324331],[91.136081,37.355734],[91.113292,37.387124],[91.099741,37.447965],[91.073256,37.475992],[91.019669,37.493088],[90.958075,37.477891],[90.911879,37.519674],[90.865684,37.53059],[90.882314,37.575664],[90.854597,37.604117],[90.820104,37.613599],[90.777605,37.648672],[90.643946,37.696988],[90.586663,37.703144],[90.579272,37.720661],[90.519526,37.730601],[90.516446,38.207111],[90.531229,38.319886],[90.401882,38.311434],[90.361846,38.300163],[90.352607,38.233441],[90.280542,38.238142],[90.137644,38.340543],[90.179528,38.396848],[90.129636,38.400131],[90.111774,38.418889],[90.111774,38.477945],[90.130868,38.494341],[90.248513,38.491531],[90.315034,38.501835],[90.353222,38.482162],[90.427135,38.493873],[90.465323,38.521971],[90.463476,38.556611],[90.525685,38.561291],[90.560794,38.593573],[90.608837,38.594508],[90.606374,38.610878],[90.645794,38.635191],[90.619308,38.664636],[90.65996,38.674449],[90.724634,38.658094],[90.899561,38.679588],[90.970394,38.697806],[90.992567,38.695003],[91.188436,38.73096],[91.242639,38.752433],[91.298689,38.746365],[91.446515,38.813546],[91.501333,38.815411],[91.681188,38.852706],[91.694738,38.86622],[91.806223,38.872744],[91.87952,38.884391],[91.880752,38.899297],[91.966368,38.930961],[92.10865,38.963541],[92.173323,38.960749],[92.197961,38.983548],[92.263866,39.002153],[92.380279,38.999828],[92.416003,39.010524],[92.41046,39.03842],[92.366728,39.059335],[92.366112,39.096037],[92.343938,39.146181],[92.339011,39.236628],[92.378431,39.258411],[92.52564,39.368611],[92.639589,39.514196],[92.687632,39.657174],[92.745531,39.868331],[92.796654,40.153897],[92.906907,40.310609],[92.920458,40.391792],[92.928465,40.572504],[93.506216,40.648376],[93.760599,40.664721],[93.820961,40.793519],[93.809874,40.879548],[93.908424,40.983539],[94.01067,41.114875],[94.184365,41.268444],[94.534219,41.505966],[94.750413,41.538227],[94.809543,41.619256],[94.861898,41.668451],[94.969072,41.718948],[95.011572,41.726541],[95.110738,41.768513],[95.135991,41.772976],[95.16494,41.735474],[95.199433,41.719395],[95.194505,41.694821],[95.247476,41.61344],[95.299831,41.565994],[95.335556,41.644305],[95.39407,41.693481],[95.445193,41.719841],[95.57146,41.796181],[95.65646,41.826067],[95.759322,41.835878],[95.801206,41.848361],[95.855408,41.849699],[95.998306,41.906289],[96.054973,41.936124],[96.117183,41.985966],[96.137509,42.019765],[96.13874,42.05399],[96.077147,42.149457],[96.178161,42.21775],[96.040806,42.326688],[96.042038,42.352787],[96.06606,42.414674],[95.978596,42.436762],[96.0174,42.482239],[96.02356,42.542675],[96.072219,42.569566],[96.103632,42.604375],[96.166458,42.623314],[96.386348,42.727592]]]]}},{"type":"Feature","properties":{"adcode":710000,"name":"台湾省","center":[121.509062,25.044332],"centroid":[120.971485,23.749452],"childrenNum":0,"level":"province","parent":{"adcode":100000},"subFeatureIndex":31,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[120.443706,22.441432],[120.517619,22.408793],[120.569973,22.361757],[120.640806,22.241605],[120.659285,22.154056],[120.661748,22.067007],[120.651277,22.033171],[120.667908,21.983235],[120.701784,21.927174],[120.743052,21.915515],[120.781857,21.923843],[120.854537,21.883309],[120.873016,21.897191],[120.86624,21.984345],[120.907508,22.033171],[120.912436,22.086418],[120.903197,22.12634],[120.914899,22.302525],[120.981421,22.528248],[121.014682,22.584069],[121.03316,22.650914],[121.078739,22.669691],[121.170514,22.723247],[121.21055,22.770711],[121.237652,22.836362],[121.276456,22.877171],[121.324499,22.945526],[121.35468,23.00999],[121.370695,23.084334],[121.409499,23.1025],[121.430441,23.137175],[121.415042,23.196047],[121.440296,23.271937],[121.479716,23.322507],[121.497578,23.419744],[121.5216,23.483431],[121.522832,23.538858],[121.587505,23.760878],[121.621382,23.920718],[121.65957,24.007125],[121.63986,24.064514],[121.643556,24.097843],[121.678048,24.133895],[121.689135,24.174303],[121.809243,24.339083],[121.82649,24.423572],[121.867758,24.47914],[121.88562,24.529784],[121.892395,24.617953],[121.86283,24.671261],[121.841272,24.734329],[121.844968,24.836476],[121.933047,24.938539],[122.012503,25.001471],[121.98109,25.030757],[121.947214,25.031841],[121.917033,25.138076],[121.841888,25.135367],[121.782142,25.160287],[121.745186,25.161912],[121.707613,25.191701],[121.700222,25.226896],[121.655259,25.242054],[121.62323,25.29455],[121.585041,25.309159],[121.53515,25.307535],[121.444607,25.27074],[121.413194,25.238806],[121.371926,25.159746],[121.319572,25.140785],[121.209318,25.12724],[121.132942,25.078466],[121.102145,25.075214],[121.024537,25.040517],[121.009754,24.993878],[120.961095,24.940167],[120.914899,24.864715],[120.89211,24.767482],[120.82374,24.688118],[120.762147,24.658208],[120.68885,24.600542],[120.642654,24.490033],[120.589068,24.43229],[120.546568,24.370159],[120.520698,24.311816],[120.470807,24.242533],[120.451713,24.182493],[120.391967,24.118055],[120.316206,23.984708],[120.278018,23.92783],[120.245989,23.840276],[120.175156,23.807427],[120.102476,23.701162],[120.095084,23.58768],[120.12157,23.504836],[120.108019,23.341191],[120.081534,23.291728],[120.018708,23.073322],[120.029795,23.048544],[120.133272,23.000625],[120.149287,22.896468],[120.20041,22.721039],[120.274323,22.560307],[120.297112,22.531565],[120.443706,22.441432]]],[[[124.542782,25.903886],[124.584666,25.908731],[124.566804,25.941563],[124.542782,25.903886]]],[[[123.445178,25.726102],[123.469816,25.712623],[123.50862,25.722867],[123.512316,25.755212],[123.479055,25.768687],[123.445794,25.749822],[123.445178,25.726102]]],[[[119.646064,23.550928],[119.691028,23.547087],[119.678093,23.600294],[119.61034,23.604132],[119.601717,23.575613],[119.566608,23.584937],[119.562297,23.530627],[119.578927,23.502641],[119.609108,23.503738],[119.646064,23.550928]]],[[[123.666916,25.914114],[123.706952,25.91519],[123.689706,25.939949],[123.666916,25.914114]]],[[[119.506246,23.625518],[119.506246,23.577259],[119.47237,23.556962],[119.519181,23.559705],[119.52534,23.62497],[119.506246,23.625518]]],[[[119.497623,23.38679],[119.495159,23.349982],[119.516717,23.349982],[119.497623,23.38679]]],[[[119.557369,23.666634],[119.608492,23.620035],[119.615268,23.661153],[119.586318,23.675952],[119.557369,23.666634]]],[[[122.066706,25.6247],[122.087032,25.61067],[122.092575,25.639268],[122.066706,25.6247]]],[[[121.468013,22.67687],[121.474788,22.643734],[121.513592,22.631582],[121.514824,22.676318],[121.468013,22.67687]]],[[[121.510513,22.086972],[121.507433,22.048704],[121.533918,22.022076],[121.594281,21.995443],[121.604752,22.022631],[121.575186,22.037055],[121.575802,22.0842],[121.510513,22.086972]]],[[[122.097503,25.499987],[122.110438,25.465952],[122.122141,25.495666],[122.097503,25.499987]]],[[[119.421247,23.216949],[119.436029,23.186146],[119.453275,23.216399],[119.421247,23.216949]]],[[[120.355011,22.327439],[120.395663,22.342385],[120.383344,22.355669],[120.355011,22.327439]]]]}},{"type":"Feature","properties":{"adcode":810000,"name":"香港特别行政区","center":[114.173355,22.320048],"centroid":[114.134357,22.377366],"childrenNum":18,"level":"province","parent":{"adcode":100000},"subFeatureIndex":32,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.031778,22.503923],[114.000981,22.491206],[113.977575,22.45692],[113.918445,22.418199],[113.920293,22.367845],[113.951706,22.355116],[113.956633,22.359543],[113.980039,22.366185],[114.026234,22.34792],[113.955401,22.298649],[113.969568,22.321349],[113.898119,22.308615],[113.889496,22.271514],[113.8433,22.229418],[113.84946,22.191188],[113.899351,22.215568],[113.935691,22.205041],[113.981271,22.229972],[113.996669,22.206149],[114.026234,22.229418],[114.004676,22.239389],[114.02993,22.263207],[114.034857,22.300864],[114.069966,22.326885],[114.121089,22.320795],[114.145726,22.300864],[114.120473,22.272068],[114.164821,22.226648],[114.200545,22.232188],[114.203009,22.206703],[114.265835,22.200608],[114.248588,22.274837],[114.262139,22.294773],[114.284929,22.263761],[114.313262,22.264315],[114.315726,22.299203],[114.315726,22.299756],[114.278153,22.328546],[114.283081,22.386661],[114.322501,22.385554],[114.323117,22.385554],[114.323733,22.385001],[114.323733,22.384447],[114.356994,22.340171],[114.394566,22.361757],[114.385327,22.41156],[114.406269,22.432582],[114.406269,22.433688],[114.376088,22.436454],[114.325581,22.479041],[114.278769,22.435901],[114.220255,22.427603],[114.205473,22.449729],[114.23319,22.466875],[114.2529,22.445304],[114.340979,22.50337],[114.309566,22.497288],[114.28924,22.52272],[114.263987,22.541515],[114.263371,22.541515],[114.260291,22.547595],[114.232574,22.528801],[114.232574,22.539857],[114.222719,22.553122],[114.166052,22.559201],[114.156813,22.543726],[114.095219,22.534329],[114.082285,22.512216],[114.031778,22.503923]]],[[[114.142647,22.213906],[114.123553,22.238836],[114.120473,22.177888],[114.154965,22.177888],[114.166668,22.205041],[114.142647,22.213906]]],[[[114.305871,22.372273],[114.313878,22.340724],[114.332972,22.353455],[114.305255,22.372826],[114.305871,22.372273]]],[[[114.320037,22.381127],[114.323733,22.384447],[114.323733,22.385001],[114.323117,22.385554],[114.322501,22.385554],[114.319421,22.382234],[114.320037,22.38168],[114.320037,22.381127]]],[[[114.305871,22.369506],[114.305871,22.372273],[114.305255,22.372826],[114.305871,22.369506]]],[[[114.315726,22.299203],[114.316958,22.298649],[114.316342,22.30031],[114.315726,22.299756],[114.315726,22.299203]]],[[[114.319421,22.382234],[114.320037,22.381127],[114.320037,22.38168],[114.319421,22.382234]]],[[[114.372392,22.32301],[114.373008,22.323564],[114.372392,22.323564],[114.372392,22.32301]]],[[[114.323733,22.297541],[114.324349,22.297541],[114.323733,22.298095],[114.323733,22.297541]]]]}},{"type":"Feature","properties":{"adcode":820000,"name":"澳门特别行政区","center":[113.54909,22.198951],"centroid":[113.566988,22.159307],"childrenNum":8,"level":"province","parent":{"adcode":100000},"subFeatureIndex":33,"acroutes":[100000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[113.554425,22.107489],[113.6037,22.132438],[113.575983,22.194513],[113.558736,22.212244],[113.53841,22.209473],[113.534715,22.174009],[113.554425,22.142416],[113.554425,22.107489]]],[[[113.586453,22.201162],[113.575983,22.201162],[113.575983,22.194513],[113.586453,22.201162]]]]}},{"type":"Feature","properties":{"name":"","adchar":"JD","adcode":"100000_JD"},"geometry":{"type":"MultiPolygon","coordinates":[[[[122.51865306,23.46078502],[122.79861399,24.57367379],[122.79889322,24.57678999],[122.79819583,24.57983997],[122.79659008,24.58252516],[122.79423315,24.58458272],[122.79135575,24.58581125],[122.78823955,24.58609049],[122.78518957,24.5853931],[122.78250438,24.58378734],[122.78044682,24.58143041],[122.77921829,24.57855302],[122.49925737,23.46566424],[122.49897813,23.46254804],[122.49967552,23.45949807],[122.50128127,23.45681287],[122.5036382,23.45475531],[122.5065156,23.45352678],[122.50963181,23.45324755],[122.51268178,23.45394494],[122.51536697,23.45555069],[122.51742454,23.45790762],[122.51865306,23.46078502]]],[[[121.17202617,20.8054593],[121.90938804,21.68743347],[121.9109946,21.69011818],[121.91169291,21.69316794],[121.91141462,21.69628423],[121.91018696,21.699162],[121.9081301,21.70151955],[121.9054454,21.70312611],[121.90239563,21.70382443],[121.89927934,21.70354613],[121.89640158,21.70231847],[121.89404403,21.70026162],[121.15668216,20.81828744],[121.1550756,20.81560273],[121.15437729,20.81255297],[121.15465558,20.80943668],[121.15588324,20.80655891],[121.1579401,20.80420136],[121.1606248,20.8025948],[121.16367457,20.80189649],[121.16679085,20.80217478],[121.16966862,20.80340244],[121.17202617,20.8054593]]],[[[119.47366172,18.00707291],[120.02569734,19.02403788],[120.02674143,19.02698721],[120.02682302,19.03011484],[120.02593412,19.0331146],[120.02416175,19.03569286],[120.02167941,19.03759723],[120.01873007,19.03864132],[120.01560245,19.03872291],[120.01260269,19.03783401],[120.01002443,19.03606165],[120.00812005,19.0335793],[119.45608443,18.01661433],[119.45504035,18.01366499],[119.45495876,18.01053737],[119.45584765,18.00753761],[119.45762002,18.00495935],[119.46010237,18.00305497],[119.4630517,18.00201089],[119.46617933,18.0019293],[119.46917909,18.0028182],[119.47175735,18.00459056],[119.47366172,18.00707291]]],[[[119.0726757,15.04098494],[119.0726757,16.04388528],[119.07218626,16.04697545],[119.07076587,16.04976313],[119.06855355,16.05197545],[119.06576587,16.05339584],[119.0626757,16.05388528],[119.05958553,16.05339584],[119.05679784,16.05197545],[119.05458553,16.04976313],[119.05316513,16.04697545],[119.0526757,16.04388528],[119.0526757,15.04105889],[119.0521839,15.00781004],[119.05262758,15.00471297],[119.05400659,15.00190458],[119.05618595,14.99965979],[119.05895232,14.99819832],[119.06203491,14.99766324],[119.06513198,14.99810691],[119.06794036,14.99948592],[119.07018516,15.00166528],[119.07164663,15.00443165],[119.07218171,15.00751424],[119.0726746,15.04083704],[119.0726757,15.04098494]]],[[[118.68646749,11.18959191],[118.52518702,10.91547751],[118.52404181,10.91256595],[118.52385237,10.909443],[118.52463726,10.90641436],[118.52631962,10.9037765],[118.5287348,10.90178762],[118.53164636,10.90064241],[118.53476931,10.90045298],[118.53779795,10.90123786],[118.54043581,10.90292022],[118.54242469,10.9053354],[118.70409227,11.18010771],[118.70476212,11.18147468],[118.87431591,11.606662],[118.87459939,11.60747236],[118.98894963,11.98573108],[118.98937534,11.98883067],[118.9888224,11.99191011],[118.98734492,11.99466796],[118.98508753,11.99683427],[118.98227119,11.99819697],[118.9791716,11.99862269],[118.97609216,11.99806975],[118.97333431,11.99659227],[118.97116801,11.99433487],[118.9698053,11.99151854],[118.85557939,11.6136711],[118.68646749,11.18959191]]],[[[115.54466883,7.14672265],[116.2504858,7.979279],[116.25211077,7.98195261],[116.25283001,7.9849975],[116.25257312,7.98811563],[116.25136525,7.99100176],[116.24932463,7.99337338],[116.24665102,7.99499834],[116.24360613,7.99571758],[116.240488,7.99546069],[116.23760187,7.99425282],[116.23523025,7.99221221],[115.52941328,7.15965587],[115.52778832,7.15698226],[115.52706908,7.15393736],[115.52732596,7.15081924],[115.52853383,7.1479331],[115.53057445,7.14556148],[115.53324806,7.14393652],[115.53629295,7.14321728],[115.53941108,7.14347417],[115.54229721,7.14468204],[115.54466883,7.14672265]]],[[[112.30705249,3.53487257],[111.78690114,3.41687263],[111.78399583,3.41571167],[111.78159146,3.41370973],[111.77992341,3.41106279],[111.77915495,3.40802995],[111.77936129,3.40490807],[111.78052226,3.40200275],[111.78252419,3.39959839],[111.78517113,3.39793033],[111.78820398,3.39716187],[111.79132585,3.39736822],[112.31181658,3.51544515],[112.31248917,3.51562254],[112.52147408,3.5785908],[112.52281386,3.57910186],[112.85206367,3.73256867],[112.85465776,3.7343178],[112.85658437,3.73678292],[112.85765492,3.73972276],[112.85776462,3.74284952],[112.85690272,3.74585715],[112.8551536,3.74845124],[112.85268847,3.75037785],[112.84974864,3.7514484],[112.84662187,3.75155809],[112.84361424,3.7506962],[112.51501594,3.59753306],[112.30705249,3.53487257]]],[[[108.26055972,6.08912451],[108.29013305,6.01266273],[108.29170425,6.00995718],[108.29403462,6.00786957],[108.29689603,6.00660426],[108.3000084,6.00628511],[108.30306706,6.00694335],[108.30577262,6.00851455],[108.30786022,6.01084492],[108.30912553,6.01370633],[108.30944469,6.0168187],[108.30878645,6.01987736],[108.279563,6.09543449],[108.25611734,6.22752625],[108.21679964,6.53816468],[108.21876335,6.94964057],[108.24419535,7.07390742],[108.24433543,7.07703297],[108.24350281,7.08004883],[108.24177899,7.0826598],[108.2393327,7.08461028],[108.23640341,7.08570936],[108.23327786,7.08584944],[108.230262,7.08501682],[108.22765103,7.083293],[108.22570055,7.08084671],[108.22460147,7.07791743],[108.19897125,6.95268198],[108.1987683,6.95072469],[108.19679674,6.53760583],[108.19687578,6.53630242],[108.23630689,6.22476797],[108.23638164,6.22427602],[108.26004031,6.09098419],[108.26055972,6.08912451]]],[[[110.12822847,11.36894451],[110.05553696,11.25335394],[110.05430621,11.25047749],[110.05402458,11.2473615],[110.05471962,11.24431099],[110.05632331,11.24162456],[110.05867865,11.23956519],[110.0615551,11.23833444],[110.06467109,11.23805281],[110.0677216,11.23874785],[110.07040803,11.24035153],[110.07246741,11.24270688],[110.14541497,11.35870461],[110.14588682,11.35954163],[110.20700505,11.48128846],[110.20728377,11.48189306],[110.25854422,11.60358735],[110.25901765,11.60499559],[110.30436343,11.7826124],[110.30456934,11.78364161],[110.32822801,11.94571326],[110.32832827,11.94685414],[110.33424294,12.14159753],[110.33424553,12.14210167],[110.33227398,12.24038351],[110.33172267,12.24346324],[110.33024665,12.24622187],[110.3279904,12.24838938],[110.32517479,12.24975358],[110.32207543,12.25018094],[110.3189957,12.24962962],[110.31623706,12.2481536],[110.31406956,12.24589736],[110.31270536,12.24308175],[110.312278,12.23998238],[110.3142445,12.14195265],[110.3083549,11.94803461],[110.28485499,11.78705054],[110.23982347,11.61066468],[110.18898148,11.48996382],[110.12822847,11.36894451]]],[[[109.82951587,15.22896754],[109.84522534,15.15316562],[109.84633168,15.15023907],[109.84828823,15.14779763],[109.85090347,15.14608029],[109.85392139,15.14525516],[109.85704658,15.145403],[109.85997314,15.14650935],[109.86241457,15.1484659],[109.86413191,15.15108113],[109.86495704,15.15409906],[109.8648092,15.15722425],[109.84903675,15.23333003],[109.84889209,15.23393326],[109.78974541,15.45068337],[109.7892391,15.45210582],[109.69066131,15.67432448],[109.6900529,15.67548445],[109.59147511,15.83677407],[109.59116145,15.8372556],[109.53201478,15.92259221],[109.53166592,15.92306523],[109.30888011,16.20725797],[109.30658844,16.20938798],[109.30375073,16.21070558],[109.30064474,16.21108179],[109.29757451,16.21047978],[109.29484059,16.20895848],[109.29271057,16.20666681],[109.29139298,16.2038291],[109.29101677,16.20072311],[109.29161878,16.19765288],[109.29314007,16.19491896],[109.51574449,15.91095759],[109.57455994,15.82609887],[109.67264555,15.66561455],[109.77065019,15.44468789],[109.82951587,15.22896754]]]]}}]} diff --git a/packages/client/src-tauri/Cargo.lock b/packages/client/src-tauri/Cargo.lock index 887e2e0a8..3a4226474 100644 --- a/packages/client/src-tauri/Cargo.lock +++ b/packages/client/src-tauri/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -144,7 +144,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix", + "rustix 0.38.43", "slab", "tracing", "windows-sys 0.59.0", @@ -176,7 +176,7 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix", + "rustix 0.38.43", "tracing", ] @@ -203,7 +203,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix", + "rustix 0.38.43", "signal-hook-registry", "slab", "windows-sys 0.59.0", @@ -303,12 +303,6 @@ dependencies = [ "serde", ] -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - [[package]] name = "block-buffer" version = "0.10.4" @@ -324,7 +318,16 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "objc2", + "objc2 0.5.2", +] + +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2 0.6.3", ] [[package]] @@ -342,9 +345,9 @@ dependencies = [ [[package]] name = "brotli" -version = "7.0.0" +version = "8.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -353,9 +356,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -447,12 +450,12 @@ dependencies = [ [[package]] name = "cargo_toml" -version = "0.21.0" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbd1fe9db3ebf71b89060adaf7b0504c2d6a425cf061313099547e382c2e472" +checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" dependencies = [ "serde", - "toml 0.8.19", + "toml 0.9.8", ] [[package]] @@ -514,6 +517,7 @@ dependencies = [ "tauri-build", "tauri-plugin-dialog", "tauri-plugin-fs", + "tauri-plugin-global-shortcut", "tauri-plugin-opener", ] @@ -530,36 +534,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "cocoa" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" -dependencies = [ - "bitflags 2.8.0", - "block", - "cocoa-foundation", - "core-foundation", - "core-graphics", - "foreign-types", - "libc", - "objc", -] - -[[package]] -name = "cocoa-foundation" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" -dependencies = [ - "bitflags 2.8.0", - "block", - "core-foundation", - "core-graphics-types", - "libc", - "objc", -] - [[package]] name = "combine" version = "4.6.7" @@ -680,15 +654,15 @@ dependencies = [ [[package]] name = "cssparser" -version = "0.27.2" +version = "0.29.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" dependencies = [ "cssparser-macros", "dtoa-short", - "itoa 0.4.8", + "itoa", "matches", - "phf 0.8.0", + "phf 0.10.1", "proc-macro2", "quote", "smallvec", @@ -785,23 +759,23 @@ dependencies = [ [[package]] name = "dirs" -version = "5.0.1" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -810,6 +784,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.8.0", + "objc2 0.6.3", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -832,9 +816,9 @@ dependencies = [ [[package]] name = "dlopen2" -version = "0.7.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" dependencies = [ "dlopen2_derive", "libc", @@ -897,14 +881,14 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "embed-resource" -version = "2.5.1" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b68b6f9f63a0b6a38bc447d4ce84e2b388f3ec95c99c641c8ff0dd3ef89a6379" +checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e" dependencies = [ "cc", "memchr", "rustc_version", - "toml 0.8.19", + "toml 0.9.8", "vswhom", "winreg", ] @@ -1279,6 +1263,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix 1.1.2", + "windows-link 0.2.1", +] + [[package]] name = "getrandom" version = "0.1.16" @@ -1301,6 +1295,18 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + [[package]] name = "gimli" version = "0.31.1" @@ -1392,6 +1398,24 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +[[package]] +name = "global-hotkey" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9247516746aa8e53411a0db9b62b0e24efbcf6a76e0ba73e5a91b512ddabed7" +dependencies = [ + "crossbeam-channel", + "keyboard-types", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "once_cell", + "serde", + "thiserror 2.0.11", + "windows-sys 0.59.0", + "x11rb", + "xkeysym", +] + [[package]] name = "gobject-sys" version = "0.18.0" @@ -1463,9 +1487,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "heck" @@ -1493,16 +1517,14 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "html5ever" -version = "0.26.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" dependencies = [ "log", "mac", "markup5ever", - "proc-macro2", - "quote", - "syn 1.0.109", + "match_token", ] [[package]] @@ -1513,7 +1535,7 @@ checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", - "itoa 1.0.14", + "itoa", ] [[package]] @@ -1557,7 +1579,7 @@ dependencies = [ "http", "http-body", "httparse", - "itoa 1.0.14", + "itoa", "pin-project-lite", "smallvec", "tokio", @@ -1608,9 +1630,9 @@ dependencies = [ [[package]] name = "ico" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" +checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98" dependencies = [ "byteorder", "png", @@ -1774,20 +1796,21 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.1" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.16.1", "serde", + "serde_core", ] [[package]] name = "infer" -version = "0.16.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" dependencies = [ "cfb", ] @@ -1817,12 +1840,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - [[package]] name = "itoa" version = "1.0.14" @@ -1919,14 +1936,13 @@ dependencies = [ [[package]] name = "kuchikiki" -version = "0.8.2" +version = "0.8.8-speedreader" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" +checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" dependencies = [ "cssparser", "html5ever", - "indexmap 1.9.3", - "matches", + "indexmap 2.12.1", "selectors", ] @@ -1962,9 +1978,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.169" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libloading" @@ -1992,6 +2008,12 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + [[package]] name = "litemap" version = "0.7.4" @@ -2020,29 +2042,31 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - [[package]] name = "markup5ever" -version = "0.11.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" dependencies = [ "log", - "phf 0.10.1", - "phf_codegen 0.10.0", + "phf 0.11.3", + "phf_codegen 0.11.3", "string_cache", "string_cache_codegen", "tendril", ] +[[package]] +name = "match_token" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "matches" version = "0.1.10" @@ -2093,22 +2117,23 @@ dependencies = [ [[package]] name = "muda" -version = "0.15.3" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdae9c00e61cc0579bcac625e8ad22104c60548a025bfc972dc83868a28e1484" +checksum = "01c1738382f66ed56b3b9c8119e794a2e23148ac8ea214eda86622d4cb9d415a" dependencies = [ "crossbeam-channel", "dpi", "gtk", "keyboard-types", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", "once_cell", "png", "serde", - "thiserror 1.0.69", - "windows-sys 0.59.0", + "thiserror 2.0.11", + "windows-sys 0.60.2", ] [[package]] @@ -2202,23 +2227,11 @@ dependencies = [ "syn 2.0.96", ] -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", -] - [[package]] name = "objc-sys" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" -dependencies = [ - "cc", -] [[package]] name = "objc2" @@ -2230,6 +2243,16 @@ dependencies = [ "objc2-encode", ] +[[package]] +name = "objc2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + [[package]] name = "objc2-app-kit" version = "0.2.2" @@ -2237,37 +2260,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ "bitflags 2.8.0", - "block2", + "block2 0.5.1", "libc", - "objc2", - "objc2-core-data", - "objc2-core-image", - "objc2-foundation", - "objc2-quartz-core", + "objc2 0.5.2", + "objc2-core-data 0.2.2", + "objc2-core-image 0.2.2", + "objc2-foundation 0.2.2", + "objc2-quartz-core 0.2.2", ] [[package]] -name = "objc2-cloud-kit" -version = "0.2.2" +name = "objc2-app-kit" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-core-location", - "objc2-foundation", + "block2 0.6.2", + "libc", + "objc2 0.6.3", + "objc2-cloud-kit", + "objc2-core-data 0.3.2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image 0.3.2", + "objc2-core-text", + "objc2-core-video", + "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", ] [[package]] -name = "objc2-contacts" -version = "0.2.2" +name = "objc2-cloud-kit" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" dependencies = [ - "block2", - "objc2", - "objc2-foundation", + "bitflags 2.8.0", + "objc2 0.6.3", + "objc2-foundation 0.3.2", ] [[package]] @@ -2277,9 +2308,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-foundation", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "bitflags 2.8.0", + "objc2 0.6.3", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.8.0", + "dispatch2", + "objc2 0.6.3", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.8.0", + "dispatch2", + "objc2 0.6.3", + "objc2-core-foundation", + "objc2-io-surface", ] [[package]] @@ -2288,29 +2354,61 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "block2", - "objc2", - "objc2-foundation", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", "objc2-metal", ] [[package]] -name = "objc2-core-location" -version = "0.2.2" +name = "objc2-core-image" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" +dependencies = [ + "objc2 0.6.3", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-core-text" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" dependencies = [ - "block2", - "objc2", - "objc2-contacts", - "objc2-foundation", + "bitflags 2.8.0", + "objc2 0.6.3", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-core-video" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" +dependencies = [ + "bitflags 2.8.0", + "objc2 0.6.3", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-io-surface", ] [[package]] name = "objc2-encode" -version = "4.0.3" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] [[package]] name = "objc2-foundation" @@ -2319,115 +2417,119 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.8.0", - "block2", + "block2 0.5.1", "dispatch", "libc", - "objc2", + "objc2 0.5.2", ] [[package]] -name = "objc2-link-presentation" -version = "0.2.2" +name = "objc2-foundation" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "block2", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "bitflags 2.8.0", + "block2 0.6.2", + "libc", + "objc2 0.6.3", + "objc2-core-foundation", ] [[package]] -name = "objc2-metal" -version = "0.2.2" +name = "objc2-io-surface" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-foundation", + "objc2 0.6.3", + "objc2-core-foundation", ] [[package]] -name = "objc2-quartz-core" +name = "objc2-javascript-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a1e6550c4caed348956ce3370c9ffeca70bb1dbed4fa96112e7c6170e074586" +dependencies = [ + "objc2 0.6.3", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-metal" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-foundation", - "objc2-metal", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] -name = "objc2-symbols" +name = "objc2-quartz-core" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "objc2", - "objc2-foundation", + "bitflags 2.8.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", ] [[package]] -name = "objc2-ui-kit" -version = "0.2.2" +name = "objc2-quartz-core" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-image", - "objc2-core-location", - "objc2-foundation", - "objc2-link-presentation", - "objc2-quartz-core", - "objc2-symbols", - "objc2-uniform-type-identifiers", - "objc2-user-notifications", + "objc2 0.6.3", + "objc2-foundation 0.3.2", ] [[package]] -name = "objc2-uniform-type-identifiers" -version = "0.2.2" +name = "objc2-security" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a" dependencies = [ - "block2", - "objc2", - "objc2-foundation", + "bitflags 2.8.0", + "objc2 0.6.3", + "objc2-core-foundation", ] [[package]] -name = "objc2-user-notifications" -version = "0.2.2" +name = "objc2-ui-kit" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-core-location", - "objc2-foundation", + "objc2 0.6.3", + "objc2-core-foundation", + "objc2-foundation 0.3.2", ] [[package]] name = "objc2-web-kit" -version = "0.2.2" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68bc69301064cebefc6c4c90ce9cba69225239e4b8ff99d445a2b5563797da65" +checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "block2 0.6.2", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-javascript-core", + "objc2-security", ] [[package]] @@ -2545,9 +2647,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" dependencies = [ - "phf_macros 0.8.0", "phf_shared 0.8.0", - "proc-macro-hack", ] [[package]] @@ -2556,7 +2656,9 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" dependencies = [ + "phf_macros 0.10.0", "phf_shared 0.10.0", + "proc-macro-hack", ] [[package]] @@ -2581,12 +2683,12 @@ dependencies = [ [[package]] name = "phf_codegen" -version = "0.10.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", + "phf_generator 0.11.3", + "phf_shared 0.11.3", ] [[package]] @@ -2621,12 +2723,12 @@ dependencies = [ [[package]] name = "phf_macros" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", + "phf_generator 0.10.0", + "phf_shared 0.10.0", "proc-macro-hack", "proc-macro2", "quote", @@ -2709,7 +2811,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ "base64 0.22.1", - "indexmap 2.7.1", + "indexmap 2.12.1", "quick-xml 0.32.0", "serde", "time", @@ -2738,7 +2840,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix", + "rustix 0.38.43", "tracing", "windows-sys 0.59.0", ] @@ -2858,6 +2960,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.7.3" @@ -2956,13 +3064,13 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.6" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.15", "libredox", - "thiserror 1.0.69", + "thiserror 2.0.11", ] [[package]] @@ -3039,7 +3147,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a24763657bff09769a8ccf12c8b8a50416fb035fe199263b4c5071e4e3f006f" dependencies = [ "ashpd", - "block2", + "block2 0.5.1", "core-foundation", "core-foundation-sys", "glib-sys", @@ -3047,9 +3155,9 @@ dependencies = [ "gtk-sys", "js-sys", "log", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", "raw-window-handle", "wasm-bindgen", "wasm-bindgen-futures", @@ -3081,7 +3189,20 @@ dependencies = [ "bitflags 2.8.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags 2.8.0", + "errno", + "libc", + "linux-raw-sys 0.11.0", "windows-sys 0.59.0", ] @@ -3147,22 +3268,20 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "selectors" -version = "0.22.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" dependencies = [ "bitflags 1.3.2", "cssparser", "derive_more", "fxhash", "log", - "matches", "phf 0.8.0", "phf_codegen 0.8.0", "precomputed-hash", "servo_arc", "smallvec", - "thin-slice", ] [[package]] @@ -3176,10 +3295,11 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.217" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -3194,11 +3314,20 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -3222,7 +3351,7 @@ version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" dependencies = [ - "itoa 1.0.14", + "itoa", "memchr", "ryu", "serde", @@ -3248,6 +3377,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" +dependencies = [ + "serde_core", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -3255,7 +3393,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.14", + "itoa", "ryu", "serde", ] @@ -3270,7 +3408,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.7.1", + "indexmap 2.12.1", "serde", "serde_derive", "serde_json", @@ -3292,9 +3430,9 @@ dependencies = [ [[package]] name = "serialize-to-javascript" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" +checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" dependencies = [ "serde", "serde_json", @@ -3303,20 +3441,20 @@ dependencies = [ [[package]] name = "serialize-to-javascript-impl" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" +checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.96", ] [[package]] name = "servo_arc" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741" dependencies = [ "nodrop", "stable_deref_trait", @@ -3403,9 +3541,9 @@ dependencies = [ "foreign-types", "js-sys", "log", - "objc2", - "objc2-foundation", - "objc2-quartz-core", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-quartz-core 0.2.2", "raw-window-handle", "redox_syscall", "wasm-bindgen", @@ -3551,12 +3689,12 @@ dependencies = [ [[package]] name = "tao" -version = "0.31.1" +version = "0.34.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3731d04d4ac210cd5f344087733943b9bfb1a32654387dad4d1c70de21aee2c9" +checksum = "f3a753bdc39c07b192151523a3f77cd0394aa75413802c883a0f6f6a0e5ee2e7" dependencies = [ "bitflags 2.8.0", - "cocoa", + "block2 0.6.2", "core-foundation", "core-graphics", "crossbeam-channel", @@ -3573,7 +3711,9 @@ dependencies = [ "ndk", "ndk-context", "ndk-sys", - "objc", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", "once_cell", "parking_lot", "raw-window-handle", @@ -3581,8 +3721,8 @@ dependencies = [ "tao-macros", "unicode-segmentation", "url", - "windows", - "windows-core 0.58.0", + "windows 0.61.3", + "windows-core 0.61.2", "windows-version", "x11-dl", ] @@ -3606,17 +3746,17 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tauri" -version = "2.2.3" +version = "2.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78f6efc261c7905839b4914889a5b25df07f0ff89c63fb4afd6ff8c96af15e4d" +checksum = "8a3868da5508446a7cd08956d523ac3edf0a8bc20bf7e4038f9a95c2800d2033" dependencies = [ "anyhow", "bytes", + "cookie", "dirs", "dunce", "embed_plist", - "futures-util", - "getrandom 0.2.15", + "getrandom 0.3.4", "glob", "gtk", "heck 0.5.0", @@ -3626,9 +3766,11 @@ dependencies = [ "log", "mime", "muda", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", + "objc2-ui-kit", + "objc2-web-kit", "percent-encoding", "plist", "raw-window-handle", @@ -3647,18 +3789,17 @@ dependencies = [ "tokio", "tray-icon", "url", - "urlpattern", "webkit2gtk", "webview2-com", "window-vibrancy", - "windows", + "windows 0.61.3", ] [[package]] name = "tauri-build" -version = "2.0.5" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e950124f6779c6cf98e3260c7a6c8488a74aa6350dd54c6950fdaa349bca2df" +checksum = "17fcb8819fd16463512a12f531d44826ce566f486d7ccd211c9c8cebdaec4e08" dependencies = [ "anyhow", "cargo_toml", @@ -3672,15 +3813,15 @@ dependencies = [ "serde_json", "tauri-utils", "tauri-winres", - "toml 0.8.19", + "toml 0.9.8", "walkdir", ] [[package]] name = "tauri-codegen" -version = "2.0.4" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f77894f9ddb5cb6c04fcfe8c8869ebe0aded4dabf19917118d48be4a95599ab5" +checksum = "9fa9844cefcf99554a16e0a278156ae73b0d8680bbc0e2ad1e4287aadd8489cf" dependencies = [ "base64 0.22.1", "brotli", @@ -3705,9 +3846,9 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.0.4" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3240a5caed760a532e8f687be6f05b2c7d11a1d791fb53ccc08cfeb3e5308736" +checksum = "3764a12f886d8245e66b7ee9b43ccc47883399be2019a61d80cf0f4117446fde" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -3719,9 +3860,9 @@ dependencies = [ [[package]] name = "tauri-plugin" -version = "2.0.4" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5841b9a0200e954ef7457f8d327091424328891e267a97b641dc246cc54d0dec" +checksum = "0e1d0a4860b7ff570c891e1d2a586bf1ede205ff858fbc305e0b5ae5d14c1377" dependencies = [ "anyhow", "glob", @@ -3730,7 +3871,7 @@ dependencies = [ "serde", "serde_json", "tauri-utils", - "toml 0.8.19", + "toml 0.9.8", "walkdir", ] @@ -3775,6 +3916,21 @@ dependencies = [ "uuid", ] +[[package]] +name = "tauri-plugin-global-shortcut" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "424af23c7e88d05e4a1a6fc2c7be077912f8c76bd7900fd50aa2b7cbf5a2c405" +dependencies = [ + "global-hotkey", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.11", +] + [[package]] name = "tauri-plugin-opener" version = "2.2.5" @@ -3783,8 +3939,8 @@ checksum = "635ed7c580dc3cdc61c94097d38ef517d749ffc0141c806d904e68e4b0cf1c2a" dependencies = [ "dunce", "glob", - "objc2-app-kit", - "objc2-foundation", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", "open", "schemars", "serde", @@ -3793,42 +3949,49 @@ dependencies = [ "tauri-plugin", "thiserror 2.0.11", "url", - "windows", + "windows 0.58.0", "zbus", ] [[package]] name = "tauri-runtime" -version = "2.3.0" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2274ef891ccc0a8d318deffa9d70053f947664d12d58b9c0d1ae5e89237e01f7" +checksum = "87f766fe9f3d1efc4b59b17e7a891ad5ed195fa8d23582abb02e6c9a01137892" dependencies = [ + "cookie", "dpi", "gtk", "http", "jni", + "objc2 0.6.3", + "objc2-ui-kit", + "objc2-web-kit", "raw-window-handle", "serde", "serde_json", "tauri-utils", "thiserror 2.0.11", "url", - "windows", + "webkit2gtk", + "webview2-com", + "windows 0.61.3", ] [[package]] name = "tauri-runtime-wry" -version = "2.3.0" +version = "2.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3707b40711d3b9f6519150869e358ffbde7c57567fb9b5a8b51150606939b2a0" +checksum = "187a3f26f681bdf028f796ccf57cf478c1ee422c50128e5a0a6ebeb3f5910065" dependencies = [ "gtk", "http", "jni", "log", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", + "once_cell", "percent-encoding", "raw-window-handle", "softbuffer", @@ -3838,16 +4001,17 @@ dependencies = [ "url", "webkit2gtk", "webview2-com", - "windows", + "windows 0.61.3", "wry", ] [[package]] name = "tauri-utils" -version = "2.1.1" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96fb10e7cc97456b2d5b9c03e335b5de5da982039a303a20d10006885e4523a0" +checksum = "76a423c51176eb3616ee9b516a9fa67fed5f0e78baaba680e44eb5dd2cc37490" dependencies = [ + "anyhow", "brotli", "cargo_metadata", "ctor", @@ -3872,7 +4036,7 @@ dependencies = [ "serde_with", "swift-rs", "thiserror 2.0.11", - "toml 0.8.19", + "toml 0.9.8", "url", "urlpattern", "uuid", @@ -3881,12 +4045,13 @@ dependencies = [ [[package]] name = "tauri-winres" -version = "0.1.1" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" +checksum = "1087b111fe2b005e42dbdc1990fc18593234238d47453b0c99b7de1c9ab2c1e0" dependencies = [ + "dunce", "embed-resource", - "toml 0.7.8", + "toml 0.9.8", ] [[package]] @@ -3899,7 +4064,7 @@ dependencies = [ "fastrand", "getrandom 0.2.15", "once_cell", - "rustix", + "rustix 0.38.43", "windows-sys 0.59.0", ] @@ -3914,12 +4079,6 @@ dependencies = [ "utf-8", ] -[[package]] -name = "thin-slice" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" - [[package]] name = "thiserror" version = "1.0.69" @@ -3967,7 +4126,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", - "itoa 1.0.14", + "itoa", "num-conv", "powerfmt", "serde", @@ -4033,26 +4192,29 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.8" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.19.15", + "serde_spanned 0.6.8", + "toml_datetime 0.6.8", + "toml_edit 0.22.22", ] [[package]] name = "toml" -version = "0.8.19" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.22.22", + "indexmap 2.12.1", + "serde_core", + "serde_spanned 1.0.3", + "toml_datetime 0.7.3", + "toml_parser", + "toml_writer", + "winnow 0.7.14", ] [[package]] @@ -4064,16 +4226,23 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.7.1", - "serde", - "serde_spanned", - "toml_datetime", + "indexmap 2.12.1", + "toml_datetime 0.6.8", "winnow 0.5.40", ] @@ -4083,8 +4252,8 @@ version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ - "indexmap 2.7.1", - "toml_datetime", + "indexmap 2.12.1", + "toml_datetime 0.6.8", "winnow 0.5.40", ] @@ -4094,13 +4263,28 @@ version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.12.1", "serde", - "serde_spanned", - "toml_datetime", + "serde_spanned 0.6.8", + "toml_datetime 0.6.8", "winnow 0.6.24", ] +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow 0.7.14", +] + +[[package]] +name = "toml_writer" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" + [[package]] name = "tower" version = "0.5.2" @@ -4161,23 +4345,24 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.19.2" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d48a05076dd272615d03033bf04f480199f7d1b66a8ac64d75c625fc4a70c06b" +checksum = "e3d5572781bee8e3f994d7467084e1b1fd7a93ce66bd480f8156ba89dee55a2b" dependencies = [ - "core-graphics", "crossbeam-channel", "dirs", "libappindicator", "muda", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", "once_cell", "png", "serde", - "thiserror 1.0.69", - "windows-sys 0.59.0", + "thiserror 2.0.11", + "windows-sys 0.60.2", ] [[package]] @@ -4377,6 +4562,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasm-bindgen" version = "0.2.100" @@ -4469,7 +4663,7 @@ checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" dependencies = [ "cc", "downcast-rs", - "rustix", + "rustix 0.38.43", "scoped-tls", "smallvec", "wayland-sys", @@ -4482,7 +4676,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66249d3fc69f76fd74c82cc319300faa554e9d865dab1f7cd66cc20db10b280" dependencies = [ "bitflags 2.8.0", - "rustix", + "rustix 0.38.43", "wayland-backend", "wayland-scanner", ] @@ -4577,16 +4771,16 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.34.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823e7ebcfaea51e78f72c87fc3b65a1e602c321f407a0b36dbb327d7bb7cd921" +checksum = "d4ba622a989277ef3886dd5afb3e280e3dd6d974b766118950a08f8f678ad6a4" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows", - "windows-core 0.58.0", - "windows-implement", - "windows-interface", + "windows 0.61.3", + "windows-core 0.61.2", + "windows-implement 0.60.2", + "windows-interface 0.59.3", ] [[package]] @@ -4602,13 +4796,13 @@ dependencies = [ [[package]] name = "webview2-com-sys" -version = "0.34.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a82bce72db6e5ee83c68b5de1e2cd6ea195b9fbff91cb37df5884cbe3222df4" +checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c" dependencies = [ - "thiserror 1.0.69", - "windows", - "windows-core 0.58.0", + "thiserror 2.0.11", + "windows 0.61.3", + "windows-core 0.61.2", ] [[package]] @@ -4644,13 +4838,14 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window-vibrancy" -version = "0.5.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea403deff7b51fff19e261330f71608ff2cdef5721d72b64180bb95be7c4150" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" dependencies = [ - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", "raw-window-handle", "windows-sys 0.59.0", "windows-version", @@ -4666,6 +4861,28 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -4681,13 +4898,37 @@ version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", - "windows-strings", + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + [[package]] name = "windows-implement" version = "0.58.0" @@ -4699,6 +4940,17 @@ dependencies = [ "syn 2.0.96", ] +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "windows-interface" version = "0.58.0" @@ -4710,14 +4962,47 @@ dependencies = [ "syn 2.0.96", ] +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + [[package]] name = "windows-registry" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-result", - "windows-strings", + "windows-result 0.2.0", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] @@ -4730,32 +5015,41 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + [[package]] name = "windows-strings" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-targets 0.52.6", ] [[package]] -name = "windows-sys" -version = "0.45.0" +name = "windows-strings" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-targets 0.42.2", + "windows-link 0.1.3", ] [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.42.2", ] [[package]] @@ -4776,6 +5070,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -4791,21 +5094,6 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -4824,10 +5112,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.0" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ + "windows-link 0.2.1", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -4838,13 +5127,22 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + [[package]] name = "windows-version" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c12476c23a74725c539b24eae8bfc0dac4029c39cdb561d9f23616accd4ae26d" dependencies = [ - "windows-targets 0.53.0", + "windows-targets 0.53.5", ] [[package]] @@ -4853,12 +5151,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -4877,12 +5169,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -4901,12 +5187,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -4937,12 +5217,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -4961,12 +5235,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -4985,12 +5253,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -5009,12 +5271,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -5045,16 +5301,28 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" + [[package]] name = "winreg" -version = "0.52.0" +version = "0.55.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" dependencies = [ "cfg-if", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + [[package]] name = "write16" version = "1.0.0" @@ -5069,14 +5337,15 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "wry" -version = "0.48.1" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e33c08b174442ff80d5c791020696f9f8b4e4a87b8cfc7494aad6167ec44e1" +checksum = "728b7d4c8ec8d81cab295e0b5b8a4c263c0d41a785fb8f8c4df284e5411140a2" dependencies = [ "base64 0.22.1", - "block2", + "block2 0.6.2", "cookie", "crossbeam-channel", + "dirs", "dpi", "dunce", "gdkx11", @@ -5088,9 +5357,10 @@ dependencies = [ "kuchikiki", "libc", "ndk", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", "objc2-ui-kit", "objc2-web-kit", "once_cell", @@ -5104,8 +5374,8 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows", - "windows-core 0.58.0", + "windows 0.61.3", + "windows-core 0.61.2", "windows-version", "x11-dl", ] @@ -5131,6 +5401,23 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "x11rb" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" +dependencies = [ + "gethostname", + "rustix 1.1.2", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + [[package]] name = "xdg-home" version = "1.3.0" @@ -5141,6 +5428,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + [[package]] name = "yoke" version = "0.7.5" diff --git a/packages/client/src-tauri/Cargo.toml b/packages/client/src-tauri/Cargo.toml index 201ba0f9e..edbdc5243 100644 --- a/packages/client/src-tauri/Cargo.toml +++ b/packages/client/src-tauri/Cargo.toml @@ -16,4 +16,5 @@ serde_json = "1.0.137" lazy_static = "1.4.0" tauri-plugin-dialog = "2.2.0" tauri-plugin-fs = "2.2.0" +tauri-plugin-global-shortcut = "2.1.0" diff --git a/packages/client/src-tauri/capabilities/default.json b/packages/client/src-tauri/capabilities/default.json index ae6892add..3134dc44c 100644 --- a/packages/client/src-tauri/capabilities/default.json +++ b/packages/client/src-tauri/capabilities/default.json @@ -7,7 +7,68 @@ "core:default", "opener:default", "dialog:default", + "core:window:allow-set-title", + "global-shortcut:allow-register", + "global-shortcut:allow-unregister", + "fs:allow-read-text-file", - "fs:allow-write-text-file" + "fs:allow-write-text-file", + "fs:allow-exists", + "fs:read-dirs", + + "fs:allow-appconfig-meta", + "fs:allow-appconfig-meta-recursive", + "fs:allow-appconfig-read", + "fs:allow-appconfig-read-recursive", + + "fs:allow-appdata-meta", + "fs:allow-appdata-meta-recursive", + "fs:allow-appdata-read", + "fs:allow-appdata-read-recursive", + + "fs:allow-applocaldata-meta", + "fs:allow-applocaldata-meta-recursive", + "fs:allow-applocaldata-read", + "fs:allow-applocaldata-read-recursive", + + "fs:allow-applog-meta", + "fs:allow-applog-meta-recursive", + "fs:allow-applog-read", + "fs:allow-applog-read-recursive", + + "fs:allow-document-meta", + "fs:allow-document-meta-recursive", + "fs:allow-document-read", + "fs:allow-document-read-recursive", + + "fs:allow-desktop-meta", + "fs:allow-desktop-meta-recursive", + "fs:allow-desktop-read", + "fs:allow-desktop-read-recursive", + + "fs:allow-download-meta", + "fs:allow-download-meta-recursive", + "fs:allow-download-read", + "fs:allow-download-read-recursive", + + "fs:allow-home-meta", + "fs:allow-home-meta-recursive", + "fs:allow-home-read", + "fs:allow-home-read-recursive", + + "fs:allow-audio-meta", + "fs:allow-audio-meta-recursive", + "fs:allow-audio-read", + "fs:allow-audio-read-recursive", + + "fs:allow-video-meta", + "fs:allow-video-meta-recursive", + "fs:allow-video-read", + "fs:allow-video-read-recursive", + + "fs:allow-picture-meta", + "fs:allow-picture-meta-recursive", + "fs:allow-picture-read", + "fs:allow-picture-read-recursive" ] } diff --git a/packages/client/src-tauri/src/implement/windows_menu.rs b/packages/client/src-tauri/src/implement/windows_menu.rs index c4c420d3a..b8ecc0dee 100644 --- a/packages/client/src-tauri/src/implement/windows_menu.rs +++ b/packages/client/src-tauri/src/implement/windows_menu.rs @@ -60,11 +60,12 @@ pub fn window_menu(app: &mut App) -> Result<(), tauri::Error> { .item(&toggle_toolbar) .build()?; - let menu = MenuBuilder::new(handle) - .items(&[&file_menu, &language_menu, &setting_menu]) - .build()?; + // let menu = MenuBuilder::new(handle) + // .items(&[&file_menu]) + // // .items(&[&file_menu, &language_menu, &setting_menu]) + // .build()?; - app.set_menu(menu)?; + // app.set_menu(menu)?; app.on_menu_event( move |app_handle: &tauri::AppHandle, event| match event.id().0.as_str() { diff --git a/packages/client/src-tauri/src/main.rs b/packages/client/src-tauri/src/main.rs index 87cc0bbf0..421c4715b 100644 --- a/packages/client/src-tauri/src/main.rs +++ b/packages/client/src-tauri/src/main.rs @@ -17,6 +17,7 @@ fn main() { tauri::Builder::default() .plugin(tauri_plugin_fs::init()) .plugin(tauri_plugin_dialog::init()) + .plugin(tauri_plugin_global_shortcut::Builder::new().build()) .setup(|app| { let _ = implement::windows_menu::window_menu(app); let _ = implement::system_tray::system_tray_menu(app); diff --git a/packages/client/src-tauri/tauri.conf.json b/packages/client/src-tauri/tauri.conf.json index 76cebde12..d6017918f 100644 --- a/packages/client/src-tauri/tauri.conf.json +++ b/packages/client/src-tauri/tauri.conf.json @@ -12,9 +12,13 @@ "app": { "windows": [ { + "label": "main", "title": "Cherry Markdown", - "width": 800, - "height": 600 + "url": "index.html", + "width": 1600, + "height": 800, + "titleBarStyle": "Overlay", + "decorations": true } ], "security": { diff --git a/packages/client/src/App.vue b/packages/client/src/App.vue index 0144706dd..6ea6e220e 100644 --- a/packages/client/src/App.vue +++ b/packages/client/src/App.vue @@ -1,95 +1,366 @@ + + + + diff --git a/packages/client/src/components/CherryMarkdown.ts b/packages/client/src/components/CherryMarkdown.ts index 1145fa6a5..bf0e90361 100644 --- a/packages/client/src/components/CherryMarkdown.ts +++ b/packages/client/src/components/CherryMarkdown.ts @@ -1,42 +1,72 @@ import Cherry from 'cherry-markdown'; import { CherryOptions } from 'cherry-markdown/types/cherry'; -import { previewOnlySidebar } from '../utils'; +import katex from 'katex'; +import 'katex/dist/katex.min.css'; + +import { pinyin } from 'pinyin'; + +/** + * ECharts优化导入 - 使用命名空间导入替代默认导入 + * 优点: + * 1. 更好的TypeScript类型支持 + * 2. 避免版本兼容性问题 + * 3. 支持按需导入echarts功能 + */ +import * as echarts from 'echarts'; + +/** + * ECharts类型兼容性处理 + * 由于cherry-markdown可能期望特定版本的echarts类型, + * 这里定义兼容性接口确保类型安全 + */ +interface EChartsInstance { + init: (dom: HTMLElement, theme?: string, opts?: any) => any; + [key: string]: any; +} + +// 确保echarts实例的类型兼容性 +const echartsInstance: EChartsInstance = echarts as any; + +const toPinyin = (text: string) => pinyin(text, { style: pinyin.STYLE_TONE, heteronym: false }).flat().join(' '); type CustomConfig = { CustomToolbar: { CustomMenuType: { customMenu_fileUpload: any; customMenuChangeModule: any; + customSave: any; }; }; }; -const customMenu_fileUpload = Cherry.createMenuHook('文件上传', { - iconName: '', -}); - const customMenuChangeModule = Cherry.createMenuHook('编辑', { iconName: 'pen', +}); + +const customSave = Cherry.createMenuHook('save', { + icon: { + type: 'svg', + iconStyle: 'width:16px;height:16px;', + content: + '', + }, onClick() { - const markdownPreviewOnly = document.querySelector('.markdown-preview-only'); - if (markdownPreviewOnly) { - markdownPreviewOnly.classList.remove('markdown-preview-only'); - cherryInstance().switchModel('edit&preview'); - const cherryToolbarPen = document.querySelector('.cherry-toolbar-pen'); - if (cherryToolbarPen) { - cherryToolbarPen.className = `${cherryToolbarPen.className} active`; - cherryToolbarPen.innerHTML = ''; - } - } else { - previewOnlySidebar(); + this.updateMarkdown = false; + if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function') { + const markdown = this.$cherry?.getMarkdown?.() ?? ''; + const event = new CustomEvent('cherry:request-save', { detail: { markdown } }); + window.dispatchEvent(event); } }, }); const cherryConfig: CherryOptions = { + id: 'markdown-editor', // 第三方包 externals: { // externals + katex, + echarts: echartsInstance, }, // chatGpt的openai配置 openai: { @@ -48,296 +78,217 @@ const cherryConfig: CherryOptions = { ignoreError: false, // 是否忽略请求失败,默认忽略 }, // 解析引擎配置 - // engine: { - // // 全局配置 - // global: { - // // 是否启用经典换行逻辑 - // // true:一个换行会被忽略,两个以上连续换行会分割成段落, - // // false: 一个换行会转成
,两个连续换行会分割成段落,三个以上连续换行会转成
并分割段落 - // classicBr: false, - // /** - // * 额外允许渲染的html标签 - // * 标签以英文竖线分隔,如:htmlWhiteList: 'iframe|script|style' - // * 默认为空,默认允许渲染的html见src/utils/sanitize.js whiteList 属性 - // * 需要注意: - // * - 启用iframe、script等标签后,会产生xss注入,请根据实际场景判断是否需要启用 - // * - 一般编辑权限可控的场景(如api文档系统)可以允许iframe、script等标签 - // */ - // htmlWhiteList: '', - // /** - // * 适配流式会话的场景,开启后将具备以下特性: - // * - cherry渲染频率从50ms/次提升到10ms/次 - // * - 代码块自动闭合,相当于强制 `engine.syntax.codeBlock.selfClosing=true` - // * - 文章末尾的段横线标题语法(`\n-`)失效 - // * - 表格语法自动闭合,相当于强制`engine.syntax.table.selfClosing=true` - // * - 加粗、斜体语法自动闭合,相当于强制`engine.syntax.fontEmphasis.selfClosing=true` - // * - // * 后续如果有新的需求,可提issue反馈 - // */ - // flowSessionContext: true, - // }, - // // 内置语法配置 - // syntax: { - // // 语法开关 - // // 'hookName': false, - // // 语法配置 - // // 'hookName': { - // // - // // } - // link: { - // /** 生成的标签追加target属性的默认值 空:在标签里不会追加target属性, _blank:在标签里追加target="_blank"属性 */ - // target: '', - // /** 生成的标签追加rel属性的默认值 空:在标签里不会追加rel属性, nofollow:在标签里追加rel="nofollow:在"属性*/ - // rel: '', - // }, - // autoLink: { - // /** 生成的标签追加target属性的默认值 空:在标签里不会追加target属性, _blank:在标签里追加target="_blank"属性 */ - // target: '', - // /** 生成的标签追加rel属性的默认值 空:在标签里不会追加rel属性, nofollow:在标签里追加rel="nofollow:在"属性*/ - // rel: '', - // /** 是否开启短链接 */ - // enableShortLink: true, - // /** 短链接长度 */ - // shortLinkLength: 20, - // }, - // list: { - // listNested: false, // 同级列表类型转换后变为子级 - // indentSpace: 2, // 默认2个空格缩进 - // }, - // table: { - // enableChart: false, - // selfClosing: false, // 自动闭合,为true时,当输入第一行table内容时,cherry会自动按表格进行解析 - // // chartRenderEngine: EChartsTableEngine, - // // externals: ['echarts'], - // }, - // inlineCode: { - // /** - // * @deprecated 不再支持theme的配置,统一在`themeSettings.inlineCodeTheme`中配置 - // */ - // // theme: 'red', - // }, - // codeBlock: { - // /** - // * @deprecated 不再支持theme的配置,统一在`themeSettings.codeBlockTheme`中配置 - // */ - // // theme: 'dark', // 默认为深色主题 - // wrap: true, // 超出长度是否换行,false则显示滚动条 - // lineNumber: true, // 默认显示行号 - // copyCode: true, // 是否显示“复制”按钮 - // editCode: true, // 是否显示“编辑”按钮 - // changeLang: true, // 是否显示“切换语言”按钮 - // expandCode: false, // 是否展开/收起代码块,当代码块行数大于10行时,会自动收起代码块 - // selfClosing: true, // 自动闭合,为true时,当md中有奇数个```时,会自动在md末尾追加一个``` - // customRenderer: { - // // 自定义语法渲染器 - // }, - // mermaid: { - // svg2img: false, // 是否将mermaid生成的画图变成img格式 - // }, - // /** - // * indentedCodeBlock是缩进代码块是否启用的开关 - // * - // * 在6.X之前的版本中默认不支持该语法。 - // * 因为cherry的开发团队认为该语法太丑了(容易误触) - // * 开发团队希望用```代码块语法来彻底取代该语法 - // * 但在后续的沟通中,开发团队发现在某些场景下该语法有更好的显示效果 - // * 因此开发团队在6.X版本中才引入了该语法 - // * 已经引用6.x以下版本的业务如果想做到用户无感知升级,可以去掉该语法: - // * indentedCodeBlock:false - // */ - // indentedCodeBlock: true, - // }, - // emoji: { - // useUnicode: true, // 是否使用unicode进行渲染 - // }, - // fontEmphasis: { - // /** - // * 是否允许首尾空格 - // * 首尾、前后的定义: 语法前**语法首+内容+语法尾**语法后 - // * 例: - // * true: - // * __ hello __ ====> hello - // * __hello__ ====> hello - // * false: - // * __ hello __ ====> _ hello _ - // * __hello__ ====> hello - // */ - // allowWhitespace: false, - // selfClosing: false, // 自动闭合,为true时,当输入**XXX时,会自动在末尾追加** - // }, - // strikethrough: { - // /** - // * 是否必须有前后空格 - // * 首尾、前后的定义: 语法前**语法首+内容+语法尾**语法后 - // * 例: - // * true: - // * hello wor~~l~~d ====> hello wor~~l~~d - // * hello wor ~~l~~ d ====> hello wor l d - // * false: - // * hello wor~~l~~d ====> hello world - // * hello wor ~~l~~ d ====> hello wor l d - // */ - // needWhitespace: false, - // }, - // mathBlock: { - // engine: 'MathJax', // katex或MathJax - // src: '', - // plugins: true, // 默认加载插件 - // }, - // inlineMath: { - // engine: 'MathJax', // katex或MathJax - // src: '', - // }, - // toc: { - // /** 默认只渲染一个目录 */ - // allowMultiToc: false, - // /** 是否显示自增序号 */ - // showAutoNumber: false, - // }, - // header: { - // /** - // * 标题的样式: - // * - default 默认样式,标题前面有锚点 - // * - autonumber 标题前面有自增序号锚点 - // * - none 标题没有锚点 - // */ - // anchorStyle: 'default', - // }, - // }, - // }, + engine: { + // 全局配置 + global: { + // 是否启用经典换行逻辑 + // true:一个换行会被忽略,两个以上连续换行会分割成段落, + // false: 一个换行会转成
,两个连续换行会分割成段落,三个以上连续换行会转成
并分割段落 + classicBr: false, + }, + // 内置语法配置 + syntax: { + link: { + /** 生成的
标签追加target属性的默认值 空:在标签里不会追加target属性, _blank:在标签里追加target="_blank"属性 */ + target: '_blank', + /** 生成的标签追加rel属性的默认值 空:在标签里不会追加rel属性, nofollow:在标签里追加rel="nofollow:在"属性*/ + rel: '', + }, + autoLink: { + /** 生成的标签追加target属性的默认值 空:在标签里不会追加target属性, _blank:在标签里追加target="_blank"属性 */ + target: '_blank', + /** 生成的标签追加rel属性的默认值 空:在标签里不会追加rel属性, nofollow:在标签里追加rel="nofollow:在"属性*/ + rel: '', + /** 是否开启短链接 */ + enableShortLink: true, + /** 短链接长度 */ + shortLinkLength: 20, + }, + table: { + enableChart: true, + selfClosing: true, // 自动闭合,为true时,当输入第一行table内容时,cherry会自动按表格进行解析 + }, + codeBlock: { + wrap: true, // 超出长度是否换行,false则显示滚动条 + lineNumber: true, // 默认显示行号 + copyCode: true, // 是否显示“复制”按钮 + editCode: true, // 是否显示“编辑”按钮 + changeLang: true, // 是否显示“切换语言”按钮 + expandCode: true, // 是否展开/收起代码块,当代码块行数大于10行时,会自动收起代码块 + selfClosing: true, // 自动闭合,为true时,当md中有奇数个```时,会自动在md末尾追加一个``` + mermaid: { + svg2img: false, // 是否将mermaid生成的画图变成img格式 + }, + /** + * indentedCodeBlock是缩进代码块是否启用的开关 + * + * 在6.X之前的版本中默认不支持该语法。 + * 因为cherry的开发团队认为该语法太丑了(容易误触) + * 开发团队希望用```代码块语法来彻底取代该语法 + * 但在后续的沟通中,开发团队发现在某些场景下该语法有更好的显示效果 + * 因此开发团队在6.X版本中才引入了该语法 + * 已经引用6.x以下版本的业务如果想做到用户无感知升级,可以去掉该语法: + * indentedCodeBlock:false + */ + indentedCodeBlock: false, + }, + emoji: { + useUnicode: true, // 是否使用unicode进行渲染 + }, + fontEmphasis: { + /** + * 是否允许首尾空格 + * 首尾、前后的定义: 语法前**语法首+内容+语法尾**语法后 + * 例: + * true: + * __ hello __ ====> hello + * __hello__ ====> hello + * false: + * __ hello __ ====> _ hello _ + * __hello__ ====> hello + */ + allowWhitespace: false, + selfClosing: false, // 自动闭合,为true时,当输入**XXX时,会自动在末尾追加** + }, + strikethrough: { + /** + * 是否必须有前后空格 + * 首尾、前后的定义: 语法前**语法首+内容+语法尾**语法后 + * 例: + * true: + * hello wor~~l~~d ====> hello wor~~l~~d + * hello wor ~~l~~ d ====> hello wor l d + * false: + * hello wor~~l~~d ====> hello world + * hello wor ~~l~~ d ====> hello wor l d + */ + needWhitespace: false, + }, + mathBlock: { + engine: 'katex', // katex或MathJax + src: '', + }, + inlineMath: { + engine: 'katex', // katex或MathJax + src: '', + }, + toc: { + /** 默认只渲染一个目录 */ + allowMultiToc: false, + /** 是否显示自增序号 */ + showAutoNumber: false, + }, + header: { + /** + * 标题的样式: + * - default 默认样式,标题前面有锚点 + * - autonumber 标题前面有自增序号锚点 + * - none 标题没有锚点 + */ + anchorStyle: 'none', + }, + }, + }, editor: { id: 'code', // textarea 的id属性值 name: 'code', // textarea 的name属性值 autoSave2Textarea: false, // 是否自动将编辑区的内容回写到textarea里 - /** - * @deprecated 不再支持theme的配置,废弃该功能,统一由`themeSettings.mainTheme`配置 - */ - // theme: 'default', // 编辑器的高度,默认100%,如果挂载点存在内联设置的height则以内联样式为主 height: '100%', // defaultModel 编辑器初始化后的默认模式,一共有三种模式:1、双栏编辑预览模式;2、纯编辑模式;3、预览模式 // edit&preview: 双栏编辑预览模式 // editOnly: 纯编辑模式(没有预览,可通过toolbar切换成双栏或预览模式) // previewOnly: 预览模式(没有编辑框,toolbar只显示“返回编辑”按钮,可通过toolbar切换成编辑模式) - defaultModel: 'editOnly', + defaultModel: 'edit&preview', // 粘贴时是否自动将html转成markdown convertWhenPaste: true, // 快捷键风格,目前仅支持 sublime 和 vim keyMap: 'sublime', codemirror: { // 是否自动focus 默认为true - autofocus: true, + autofocus: false, + placeholder: '输入文本或「/」开始编辑', }, writingStyle: 'normal', // 书写风格,normal 普通 | typewriter 打字机 | focus 专注,默认normal keepDocumentScrollAfterInit: false, // 在初始化后是否保持网页的滚动,true:保持滚动;false:网页自动滚动到cherry初始化的位置 showFullWidthMark: true, // 是否高亮全角符号 ·|¥|、|:|“|”|【|】|(|)|《|》 showSuggestList: true, // 是否显示联想框 + maxUrlLength: 200, // url最大长度,超过则自动截断 }, toolbars: { - /** - * @deprecated 不再支持theme的配置,统一在`themeSettings.toolbarTheme`中配置 - */ - // theme: 'dark', // light or dark - showToolbar: true, // false:不展示顶部工具栏; true:展示工具栏; toolbars.showToolbar=false 与 toolbars.toolbar=false 等效 toolbar: [ 'bold', 'italic', - 'strikethrough', + { + strikethrough: ['strikethrough', 'underline', 'sub', 'sup', 'ruby'], + }, + 'size', '|', 'color', 'header', - 'ruby', + // '|', + // 'drawIo', '|', - 'list', + 'ol', + 'ul', + 'checklist', 'panel', + // 'align', 'detail', + '|', { - customMenu_fileUpload: [ - 'image', - 'audio', - 'video', - 'link', + insert: [ + // 'image', + // 'audio', + // 'video', + // 'link', 'hr', 'br', 'code', - 'formula', + // 'inlineCode', + // 'formula', 'toc', 'table', - 'line-table', - 'bar-table', - 'pdf', - 'word', + // 'pdf', + // 'word', + // 'file', ], }, + 'formula', + 'image', 'graph', - 'export', - 'settings', + // 'proTable', + '|', + // 'search', + // 'shortcutKey', + 'togglePreview', ], - toolbarRight: [], - sidebar: ['customMenuChangeModule', 'theme'], - bubble: ['bold', 'italic', 'underline', 'strikethrough', 'sub', 'sup', 'quote', '|', 'size', 'color'], // array or false - float: ['h1', 'h2', 'h3', '|', 'checklist', 'quote', 'table', 'code'], // array or false - hiddenToolbar: [], // 不展示在编辑器中的工具栏,只使用工具栏的api和快捷键功能 - toc: false, // 不展示悬浮目录 - // toc: { - // updateLocationHash: false, // 要不要更新URL的hash - // defaultModel: 'full', // pure: 精简模式/缩略模式,只有一排小点; full: 完整模式,会展示所有标题 - // showAutoNumber: false, // 是否显示自增序号 - // position: 'absolute', // 悬浮目录的悬浮方式。当滚动条在cherry内部时,用absolute;当滚动条在cherry外部时,用fixed - // cssText: '', // 自定义样式 - // }, + toolbarRight: ['customSave', 'export', '|', 'wordCount'] as any[], + bubble: ['bold', 'italic', 'underline', 'strikethrough', 'sub', 'sup', 'quote', 'ruby', '|', 'size', 'color'], // array or false + sidebar: ['customMenuChangeModule', 'mobilePreview', 'copy', 'theme'], + // sidebar: ['customMenuChangeModule', 'mobilePreview', 'copy', 'theme', 'codeTheme'], + toc: { + updateLocationHash: false, // 要不要更新URL的hash + defaultModel: 'full', // pure: 精简模式/缩略模式,只有一排小点; full: 完整模式,会展示所有标题 + }, customMenu: { - customMenu_fileUpload, customMenuChangeModule, + customSave, }, - /** - * 自定义快捷键 - * @deprecated 请使用`shortcutKeySettings` - */ - shortcutKey: { - // 'Alt-1': 'header', - // 'Alt-2': 'header', - // 'Ctrl-b': 'bold', - // 'Ctrl-Alt-m': 'formula', - }, - shortcutKeySettings: { - /** 是否替换已有的快捷键, true: 替换默认快捷键; false: 会追加到默认快捷键里,相同的shortcutKey会覆盖默认的 */ - isReplace: false, - shortcutKeyMap: { - // 'Alt-Digit1': { - // hookName: 'header', - // aliasName: '标题', - // }, - // 'Control-Shift-KeyB': { - // hookName: 'bold', - // aliasName: '加粗', - // }, - }, - }, - // 一些按钮的配置信息 config: { - formula: { - showLatexLive: true, // true: 显示 www.latexlive.com 外链; false:不显示 - templateConfig: false, // false: 使用默认模板 + // 地图表格配置 - 支持自定义地图数据源URL + mapTable: { + sourceUrl: [ + // 在线高质量地图数据源(优先) + 'https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json', + // 本地备用地图数据(公共资源目录) + '/data/china.json', + ], }, - changeLocale: [ - { - locale: 'zh_CN', - name: '中文', - }, - { - locale: 'en_US', - name: 'English', - }, - { - locale: 'ru_RU', - name: 'Русский', - }, - ], }, }, // 打开draw.io编辑页的url,如果为空则drawio按钮失效 - drawioIframeUrl: '', + drawioIframeUrl: '../utils/drawio/drawio_demo.html', // drawio iframe的样式 drawioIframeStyle: 'border: none;', /** @@ -401,13 +352,18 @@ const cherryConfig: CherryOptions = { // afterLoadAllImgCallback: () => { }, }, }, + callback: { + // 把中文变成拼音的回调,当然也可以把中文变成英文、英文变成中文 + changeString2Pinyin: toPinyin, + }, /** 定义cherry缓存的作用范围,相同nameSpace的实例共享localStorage缓存 */ nameSpace: 'cherry', themeSettings: { // 主题列表,用于切换主题 themeList: [ - { className: 'default', label: '默认' }, + { className: 'default', label: '默认' }, // 曾用名:light 明亮 { className: 'dark', label: '暗黑' }, + { className: 'gray', label: '沉稳' }, { className: 'abyss', label: '深海' }, { className: 'green', label: '清新' }, { className: 'red', label: '热情' }, @@ -415,7 +371,7 @@ const cherryConfig: CherryOptions = { { className: 'blue', label: '清幽' }, ], mainTheme: 'default', - codeBlockTheme: 'default', + codeBlockTheme: 'twilight', inlineCodeTheme: 'red', // red or black }, // 预览页面不需要绑定事件 @@ -423,7 +379,7 @@ const cherryConfig: CherryOptions = { // 预览区域跟随编辑器光标自动滚动 autoScrollByCursor: true, // 外层容器不存在时,是否强制输出到body上 - forceAppend: true, + forceAppend: false, // The locale Cherry is going to use. Locales live in /src/locales/ locale: 'zh_CN', // Supplementary locales @@ -436,12 +392,7 @@ const cherryConfig: CherryOptions = { * @description cherryInstance */ export const cherryInstance = (() => { - let _cherryInstance: Cherry | null = null; - return () => { - if (!_cherryInstance) { - _cherryInstance = new Cherry(cherryConfig); - } - return _cherryInstance; + return new Cherry(cherryConfig); }; })(); diff --git a/packages/client/src/components/DirectoryNode.vue b/packages/client/src/components/DirectoryNode.vue new file mode 100644 index 000000000..21c21852d --- /dev/null +++ b/packages/client/src/components/DirectoryNode.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/packages/client/src/components/FileManager.vue b/packages/client/src/components/FileManager.vue new file mode 100644 index 000000000..0555a9d3f --- /dev/null +++ b/packages/client/src/components/FileManager.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/packages/client/src/components/FolderManager.vue b/packages/client/src/components/FolderManager.vue new file mode 100644 index 000000000..5cb4a7867 --- /dev/null +++ b/packages/client/src/components/FolderManager.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/packages/client/src/components/composables/useDirectoryManager.ts b/packages/client/src/components/composables/useDirectoryManager.ts new file mode 100644 index 000000000..ab5712340 --- /dev/null +++ b/packages/client/src/components/composables/useDirectoryManager.ts @@ -0,0 +1,362 @@ +import { ref } from 'vue'; +import type { DirectoryNode, FileStore } from '../types'; +import { + checkPathExists, + loadDirectoryStructure, + extractDirectoryPath, + extractFileName, + openDirectoryDialog, +} from '../fileUtils'; + +// 常量定义 +const MAX_DIRECTORY_COUNT = 10; // 最大目录数量 +const STORAGE_KEY_EXPANSION_STATE = 'cherry-markdown-directory-expansion-state'; +const STORAGE_KEY_RECENT_DIRECTORIES = 'cherry-markdown-recent-directories'; + +/** + * 标准化路径分隔符为正斜杠 + */ +const normalizePath = (path: string): string => path.replace(/\\/g, '/'); + +/** + * 检查路径是否为绝对路径 + */ +const isAbsolutePath = (path: string): boolean => path.includes('/') || path.includes('\\'); + +/** + * 目录管理composable + */ +export function useDirectoryManager(fileStore: FileStore) { + // 目录管理相关数据 + const recentDirectories = ref([]); + + // 存储目录展开状态的Map + const directoryExpansionState = ref(new Map()); + + /** + * 从localStorage加载保存的目录展开状态 + */ + const loadExpansionStateFromStorage = (): Map => { + try { + const savedState = localStorage.getItem(STORAGE_KEY_EXPANSION_STATE); + if (!savedState) return new Map(); + + const parsedState = JSON.parse(savedState); + if (typeof parsedState !== 'object' || parsedState === null) { + console.warn('目录展开状态数据格式错误'); + return new Map(); + } + return new Map(Object.entries(parsedState)); + } catch (error) { + console.warn('加载目录展开状态失败:', error); + return new Map(); + } + }; + + /** + * 保存目录展开状态到localStorage + */ + const saveExpansionStateToStorage = (): void => { + try { + const stateObject = Object.fromEntries(directoryExpansionState.value); + localStorage.setItem(STORAGE_KEY_EXPANSION_STATE, JSON.stringify(stateObject)); + } catch (error) { + console.warn('保存目录展开状态失败:', error); + } + }; + + /** + * 从localStorage加载保存的最近目录列表 + */ + const loadRecentDirectoriesFromStorage = (): DirectoryNode[] => { + try { + const savedDirectories = localStorage.getItem(STORAGE_KEY_RECENT_DIRECTORIES); + if (!savedDirectories) return []; + + const parsedDirectories = JSON.parse(savedDirectories); + if (!Array.isArray(parsedDirectories)) { + console.warn('最近目录列表数据格式错误'); + return []; + } + + return parsedDirectories + .filter((dir) => dir && typeof dir.path === 'string') + .map((dir) => ({ + ...dir, + expanded: directoryExpansionState.value.get(dir.path) || false, + children: [], + })); + } catch (error) { + console.warn('加载最近目录列表失败:', error); + return []; + } + }; + + /** + * 保存最近目录列表到localStorage + * 只保存目录的基本信息,不保存children数据 + */ + const saveRecentDirectoriesToStorage = (): void => { + try { + const directoriesToSave = recentDirectories.value.map((dir) => ({ + path: dir.path, + name: dir.name, + type: dir.type, + expanded: dir.expanded, + })); + localStorage.setItem(STORAGE_KEY_RECENT_DIRECTORIES, JSON.stringify(directoriesToSave)); + } catch (error) { + console.warn('保存最近目录列表失败:', error); + } + }; + + // 初始化时从localStorage加载状态 + directoryExpansionState.value = loadExpansionStateFromStorage(); + recentDirectories.value = loadRecentDirectoriesFromStorage(); + + /** + * 合并相似目录路径 + * 例如:将 D:\A\doc, doc, D:\A\doc\dir 合并为 D:\A\doc + * + * 算法逻辑: + * 1. 分离绝对路径和相对路径 + * 2. 按路径长度从短到长排序(父目录优先) + * 3. 对于每个路径,检查是否已有父路径存在 + * 4. 对于相对路径,检查是否已有对应的绝对路径 + */ + const mergeSimilarDirectories = (directories: string[]): string[] => { + if (directories.length === 0) return []; + if (directories.length === 1) return directories; + + // 分离并标准化路径 + const absolutePaths = new Map(); // normalized -> original + const relativePaths = new Set(); + + directories.forEach((dir) => { + if (isAbsolutePath(dir)) { + const normalized = normalizePath(dir); + if (!absolutePaths.has(normalized)) { + absolutePaths.set(normalized, dir); + } + } else { + relativePaths.add(dir); + } + }); + + // 处理绝对路径:按长度排序,保留最短的父目录 + const sortedAbsolutePaths = Array.from(absolutePaths.keys()).sort((a, b) => a.length - b.length); + + const mergedAbsolutePaths = new Set(); + for (const path of sortedAbsolutePaths) { + // 检查是否已有父目录 + let hasParent = false; + for (const existingPath of mergedAbsolutePaths) { + if (path.startsWith(`${existingPath}/`)) { + hasParent = true; + break; + } + } + + if (!hasParent) { + mergedAbsolutePaths.add(absolutePaths.get(path)!); + } + } + + // 处理相对路径:排除已有对应绝对路径的相对路径 + const mergedRelativePaths = Array.from(relativePaths).filter((relPath) => { + return !Array.from(mergedAbsolutePaths).some((absPath) => { + const normalized = normalizePath(absPath); + return normalized.endsWith(`/${relPath}`) || normalized.includes(`/${relPath}/`); + }); + }); + + return [...mergedAbsolutePaths, ...mergedRelativePaths]; + }; + + // 切换目录展开状态 + const toggleDirectory = async (dirPath: string, node?: DirectoryNode): Promise => { + let directory: DirectoryNode | undefined; + + if (node) { + // 如果是子目录节点 + directory = node; + } else { + // 如果是根目录 + directory = recentDirectories.value.find((dir) => dir.path === dirPath); + } + + if (!directory) return; + + directory.expanded = !directory.expanded; + + // 保存展开状态到Map + directoryExpansionState.value.set(dirPath, directory.expanded); + + // 保存状态到localStorage + saveExpansionStateToStorage(); + + if (directory.expanded) { + // 如果展开且没有子节点数据,加载子节点 + if (!directory.children || directory.children.length === 0) { + const result = await loadDirectoryStructure(dirPath, 1); + if (result.success && result.data) { + directory.children = result.data; + } + } + } + }; + + /** + * 获取最近访问的目录列表 + */ + const getRecentDirectories = async (): Promise => { + try { + // 从最近文件中提取目录路径 + const directories = new Set(); + fileStore.sortedRecentFiles.forEach((file) => { + const dirPath = extractDirectoryPath(file.path); + if (dirPath) directories.add(dirPath); + }); + + // 合并相似目录并限制数量 + const mergedDirectories = mergeSimilarDirectories(Array.from(directories)).slice(0, MAX_DIRECTORY_COUNT); + + // 验证目录存在性并创建目录节点 + const directoryResults = await Promise.all( + mergedDirectories.map(async (dirPath) => { + const dirExists = await checkPathExists(dirPath); + if (!dirExists) return null; + + return { + path: dirPath, + name: extractFileName(dirPath), + type: 'directory' as const, + expanded: directoryExpansionState.value.get(dirPath) || false, + children: [] as DirectoryNode[], + }; + }), + ); + + // 合并从localStorage加载的目录和新提取的目录 + const validDirectories = directoryResults.filter(Boolean) as DirectoryNode[]; + const storedDirectories = recentDirectories.value.filter( + (storedDir) => !validDirectories.some((newDir) => newDir.path === storedDir.path), + ); + + recentDirectories.value = [...validDirectories, ...storedDirectories].slice(0, MAX_DIRECTORY_COUNT); + + // 为已展开的目录加载文件列表 + const loadPromises = recentDirectories.value + .filter((dir) => dir.expanded) + .map(async (currentDir) => { + const result = await loadDirectoryStructure(currentDir.path, 1); + if (result.success && result.data) { + const updatedDir = recentDirectories.value.find((dir) => dir.path === currentDir.path); + if (updatedDir) { + updatedDir.children = result.data; + } + } + }); + + await Promise.all(loadPromises); + + // 保存更新后的目录列表 + saveRecentDirectoriesToStorage(); + } catch (error) { + console.error('获取目录列表失败:', error); + } + }; + + /** + * 打开目录对话框并添加到列表 + */ + const openDirectory = async (): Promise => { + try { + const result = await openDirectoryDialog(); + if (!result.success || !result.data) return; + + const dirPath = result.data; + + // 检查目录是否已经在列表中 + const existingDir = recentDirectories.value.find((dir) => dir.path === dirPath); + if (existingDir) { + // 如果已存在,切换展开状态 + await toggleDirectory(dirPath); + return; + } + + // 创建新目录节点 + const newDir: DirectoryNode = { + path: dirPath, + name: extractFileName(dirPath), + type: 'directory', + expanded: true, + children: [], + }; + + // 保存展开状态 + directoryExpansionState.value.set(dirPath, true); + saveExpansionStateToStorage(); + + // 加载目录结构 + const loadResult = await loadDirectoryStructure(dirPath, 1); + if (loadResult.success && loadResult.data) { + newDir.children = loadResult.data; + } + + // 添加到目录列表开头并限制数量 + recentDirectories.value = [newDir, ...recentDirectories.value].slice(0, MAX_DIRECTORY_COUNT); + + // 保存到localStorage + saveRecentDirectoriesToStorage(); + } catch (error) { + console.error('打开目录失败:', error); + } + }; + + // 刷新目录列表 + const refreshDirectories = async (): Promise => { + // 在刷新前保存当前所有目录的展开状态 + const currentExpansionState = new Map(); + recentDirectories.value.forEach((dir) => { + currentExpansionState.set(dir.path, dir.expanded || false); + }); + + // 刷新目录列表 + await getRecentDirectories(); + + // 恢复之前保存的展开状态 + recentDirectories.value.forEach((currentDir) => { + const savedState = currentExpansionState.get(currentDir.path); + if (savedState !== undefined) { + const updatableDir = recentDirectories.value.find((d) => d.path === currentDir.path); + if (updatableDir) { + updatableDir.expanded = savedState; + } + // 如果目录是展开的,加载文件列表 + if (savedState && currentDir.children && currentDir.children.length === 0) { + loadDirectoryStructure(currentDir.path, 1).then((result) => { + if (result.success && result.data) { + const updatedDir = recentDirectories.value.find((d) => d.path === currentDir.path); + if (updatedDir) { + updatedDir.children = result.data; + } + } + }); + } + } + }); + + // 保存更新后的目录列表 + saveRecentDirectoriesToStorage(); + }; + + return { + recentDirectories, + directoryExpansionState, + toggleDirectory, + openDirectory, + refreshDirectories, + getRecentDirectories, + }; +} diff --git a/packages/client/src/components/composables/useFileManager.ts b/packages/client/src/components/composables/useFileManager.ts new file mode 100644 index 000000000..9abb8df3c --- /dev/null +++ b/packages/client/src/components/composables/useFileManager.ts @@ -0,0 +1,295 @@ +import { ref, computed, type Ref } from 'vue'; +import type { FileInfo, ContextMenuState, FileStore } from '../types'; +import { + createNewFile as createNewFileUtil, + openExistingFile as openExistingFileUtil, + readFileContent, + formatTimestamp, + debounce, +} from '../fileUtils'; +import { openPath } from '@tauri-apps/plugin-opener'; + +// 常量定义 +const STORAGE_KEY_DIRECTORY_MANAGER_EXPANDED = 'cherry-markdown-directory-manager-expanded'; +const DEFAULT_DIRECTORY_MANAGER_EXPANDED = true; + +/** + * 文件管理composable + */ +export function useFileManager(fileStore: FileStore, folderManagerRef: Ref) { + // 响应式数据 + const sortedRecentFiles = computed(() => fileStore.sortedRecentFiles); + const currentFilePath = computed(() => fileStore.currentFilePath); + const lastOpenedFile = computed(() => fileStore.lastOpenedFile); + + /** + * 从localStorage加载目录管理展开状态 + */ + const loadDirectoryManagerExpandedState = (): boolean => { + try { + const savedState = localStorage.getItem(STORAGE_KEY_DIRECTORY_MANAGER_EXPANDED); + if (savedState === null) { + return DEFAULT_DIRECTORY_MANAGER_EXPANDED; + } + + const parsed = JSON.parse(savedState); + return typeof parsed === 'boolean' ? parsed : DEFAULT_DIRECTORY_MANAGER_EXPANDED; + } catch (error) { + console.warn('加载目录管理展开状态失败:', error); + return DEFAULT_DIRECTORY_MANAGER_EXPANDED; + } + }; + + /** + * 保存目录管理展开状态到localStorage + */ + const saveDirectoryManagerExpandedState = (expanded: boolean): void => { + try { + localStorage.setItem(STORAGE_KEY_DIRECTORY_MANAGER_EXPANDED, JSON.stringify(expanded)); + } catch (error) { + console.warn('保存目录管理展开状态失败:', error); + } + }; + + // 组件状态 + const recentFilesExpanded = ref(false); + const directoryManagerExpanded = ref(loadDirectoryManagerExpandedState()); + + const contextMenu = ref({ + visible: false, + x: 0, + y: 0, + file: null, + }); + + // 切换目录管理展开状态 + const toggleDirectoryManager = (): void => { + directoryManagerExpanded.value = !directoryManagerExpanded.value; + // 保存状态到localStorage + saveDirectoryManagerExpandedState(directoryManagerExpanded.value); + + if (directoryManagerExpanded.value) { + recentFilesExpanded.value = false; + } + }; + + // 切换最近文件展开状态 + const toggleRecentFiles = (): void => { + recentFilesExpanded.value = !recentFilesExpanded.value; + if (recentFilesExpanded.value) { + directoryManagerExpanded.value = false; + // 保存状态到localStorage + saveDirectoryManagerExpandedState(false); + } + }; + + // 切换侧边栏 + const toggleSidebar = (): void => { + fileStore.toggleSidebar(); + }; + + // 创建新文件 + const createNewFile = async (): Promise => { + const result = await createNewFileUtil(); + if (result.success && result.data) { + await openFile(result.data); + } else if (result.error) { + console.error('创建新文件失败:', result.error); + } + }; + + // 打开现有文件 + const openExistingFile = async (): Promise => { + const result = await openExistingFileUtil(); + if (result.success && result.data) { + await openFile(result.data); + } else if (result.error) { + console.error('打开文件失败:', result.error); + } + }; + + // 打开目录 + const openDirectory = async (): Promise => { + try { + if (folderManagerRef.value) { + await folderManagerRef.value.openDirectory(); + } + } catch (error) { + console.error('打开目录失败:', error); + } + }; + + // 打开文件 + const openFile = async (filePath: string, fromDirectoryManager: boolean = false): Promise => { + try { + const result = await readFileContent(filePath); + if (result.success && result.data) { + // 通过自定义事件传递文件内容到App.vue + window.dispatchEvent( + new CustomEvent('open-file-from-sidebar', { + detail: { filePath, content: result.data }, + }), + ); + // 更新当前文件路径 + fileStore.setCurrentFilePath(filePath); + // 添加到最近访问列表 + fileStore.addRecentFile(filePath); + + if (fromDirectoryManager) { + // 如果从目录管理打开文件,始终展开目录管理区域 + directoryManagerExpanded.value = true; + recentFilesExpanded.value = false; + saveDirectoryManagerExpandedState(true); + } else { + // 如果文件不在目录管理中,展开最近访问列表并高亮文件 + recentFilesExpanded.value = true; + directoryManagerExpanded.value = false; + saveDirectoryManagerExpandedState(false); + } + } else { + console.error('读取文件失败:', result.error); + } + } catch (error) { + console.error('打开文件失败:', error); + } + }; + + // 处理FolderManager的open-file事件 + const handleOpenFile = (filePath: string, fromDirectoryManager: boolean): void => { + openFile(filePath, fromDirectoryManager); + }; + + // 刷新目录 + const refreshDirectories = async (): Promise => { + if (folderManagerRef.value) { + await folderManagerRef.value.refreshDirectories(); + } + }; + + // 清空最近文件列表 + const clearRecentFiles = (): void => { + const storeInstance = fileStore; + storeInstance.recentFiles = []; + void refreshDirectories(); + }; + + // 从最近文件中移除 + const removeFromRecent = (filePath: string): void => { + fileStore.removeRecentFile(filePath); + refreshDirectories(); + }; + + // 复制文件路径 + const copyFilePath = async (filePath: string): Promise => { + try { + await navigator.clipboard.writeText(filePath); + hideContextMenu(); + } catch (error) { + console.error('复制文件路径失败:', error); + } + }; + + // 在资源管理器中打开文件 + const openInExplorer = async (filePath: string): Promise => { + try { + // 从文件路径中提取目录路径 + const directoryPath = filePath.replace(/\\\\/g, '/').replace(/\/[^\\/]*$/, ''); + + // 使用Tauri opener插件打开文件夹 + await openPath(directoryPath); + hideContextMenu(); + } catch (error) { + console.error('打开资源管理器失败:', error); + // 备选方案:复制文件路径到剪贴板 + try { + await navigator.clipboard.writeText(filePath); + alert(`无法打开,已复制文件路径到剪贴板: ${filePath}`); + } catch (clipboardError) { + console.error('复制文件路径失败:', clipboardError); + } + } + }; + + // 显示右键菜单 + const showContextMenu = (event: MouseEvent, file: FileInfo | any): void => { + event.preventDefault(); + + // 如果已经有右键菜单显示,先关闭它 + if (contextMenu.value.visible) { + hideContextMenu(); + } + + // 将DirectoryNode转换为FileInfo格式 + const fileInfo: FileInfo = { + path: file.path, + name: file.name, + lastAccessed: file.lastModified || Date.now(), + size: file.size, + type: file.type, + }; + + contextMenu.value = { + visible: true, + x: event.clientX, + y: event.clientY, + file: fileInfo, + }; + + // 添加全局点击监听器,点击其他地方时关闭菜单 + setTimeout(() => { + document.addEventListener('click', handleGlobalClick, { once: true }); + }, 0); + }; + + // 处理全局点击事件 + const handleGlobalClick = (event: MouseEvent): void => { + if (!contextMenu.value.visible) return; + + // 检查点击是否在右键菜单内部 + const contextMenuElement = document.querySelector('.context-menu'); + if (contextMenuElement && !contextMenuElement.contains(event.target as Node)) { + hideContextMenu(); + } + }; + + // 隐藏右键菜单 + const hideContextMenu = (): void => { + contextMenu.value.visible = false; + // 移除全局点击监听器 + document.removeEventListener('click', handleGlobalClick); + }; + + // 格式化时间 + const formatTime = (timestamp: number): string => { + return formatTimestamp(timestamp); + }; + + // 防抖处理文件操作 + const debouncedOpenFile = debounce(openFile, 300); + + return { + sortedRecentFiles, + currentFilePath, + lastOpenedFile, + recentFilesExpanded, + directoryManagerExpanded, + contextMenu, + toggleDirectoryManager, + toggleRecentFiles, + toggleSidebar, + createNewFile, + openExistingFile, + openDirectory, + openFile, + handleOpenFile, + refreshDirectories, + clearRecentFiles, + removeFromRecent, + copyFilePath, + openInExplorer, + showContextMenu, + hideContextMenu, + formatTime, + debouncedOpenFile, + }; +} diff --git a/packages/client/src/components/fileUtils.ts b/packages/client/src/components/fileUtils.ts new file mode 100644 index 000000000..ca3850689 --- /dev/null +++ b/packages/client/src/components/fileUtils.ts @@ -0,0 +1,329 @@ +import { readDir, readTextFile, writeTextFile } from '@tauri-apps/plugin-fs'; +import { open, save } from '@tauri-apps/plugin-dialog'; +import type { DirectoryNode, FileInfo, FileOperationResult, DirectoryStructureResult } from './types'; + +// 常量定义 +export const SUPPORTED_FILE_EXTENSIONS = ['md', 'markdown', 'text', 'txt']; +export const MAX_RECENT_FILES = 50; +export const MAX_DIRECTORY_DEPTH = 4; +export const DEFAULT_FILE_CONTENT = '# 新文档\n\n开始编写你的内容...'; + +// 检查路径是否存在 +export const checkPathExists = async (path: string): Promise => { + try { + await readDir(path); + return true; + } catch (error) { + return false; + } +}; + +// 检查文件扩展名是否支持 +export const isSupportedFile = (fileName: string): boolean => { + const fileExtension = fileName.split('.').pop()?.toLowerCase(); + return SUPPORTED_FILE_EXTENSIONS.includes(fileExtension || ''); +}; + +// 检查目录是否包含目标文件(递归检查) +export const checkDirectoryHasTargetFiles = async (dirPath: string): Promise => { + try { + const entries = await readDir(dirPath); + + // 检查当前目录是否有目标文件 + const hasFiles = entries.some((entry) => !entry.isDirectory && isSupportedFile(entry.name || '')); + + if (hasFiles) return true; + + // 递归检查子目录 + const subdirectories = entries.filter((entry) => entry.isDirectory); + for (const dir of subdirectories) { + const subDirPath = `${dirPath}/${dir.name}`; + const subHasFiles = await checkDirectoryHasTargetFiles(subDirPath); + if (subHasFiles) return true; + } + + return false; + } catch (error) { + return false; + } +}; + +// 递归加载目录结构 +export const loadDirectoryStructure = async (dirPath: string, depth: number = 0): Promise => { + if (depth > MAX_DIRECTORY_DEPTH) { + return { success: true, data: [] }; + } + + try { + const entries = await readDir(dirPath); + + const children: DirectoryNode[] = []; + + // 处理子目录 + const subdirectories = entries.filter((entry) => entry.isDirectory); + for (const dir of subdirectories) { + const subDirPath = `${dirPath}/${dir.name}`; + const hasTargetFiles = await checkDirectoryHasTargetFiles(subDirPath); + + if (hasTargetFiles) { + children.push({ + path: subDirPath, + name: dir.name || '', + type: 'directory', + expanded: false, + children: [], + }); + } + } + + // 处理文件 + const files = entries.filter((entry) => !entry.isDirectory && isSupportedFile(entry.name || '')); + + files.forEach((file) => { + children.push({ + path: `${dirPath}/${file.name}`, + name: file.name || '', + type: 'file', + }); + }); + + // 按类型和名称排序 + children.sort((a, b) => { + if (a.type === b.type) { + return a.name.localeCompare(b.name); + } + return a.type === 'directory' ? -1 : 1; + }); + + return { success: true, data: children }; + } catch (error) { + console.error('加载目录结构失败:', error); + return { + success: false, + error: `加载目录结构失败: ${error instanceof Error ? error.message : String(error)}`, + }; + } +}; + +// 创建新文件 +export const createNewFile = async (): Promise => { + try { + const selected = await save({ + filters: [ + { + name: 'Markdown', + extensions: SUPPORTED_FILE_EXTENSIONS, + }, + ], + }); + + if (!selected) { + return { success: false, error: '用户取消操作' }; + } + + const filePath = Array.isArray(selected) ? selected[0] : selected; + + // 创建空文件 + await writeTextFile(filePath, DEFAULT_FILE_CONTENT); + + return { success: true, data: filePath }; + } catch (error) { + console.error('创建新文件失败:', error); + return { + success: false, + error: `创建新文件失败: ${error instanceof Error ? error.message : String(error)}`, + }; + } +}; + +// 打开现有文件 +export const openExistingFile = async (): Promise => { + try { + const selected = await open({ + filters: [ + { + name: 'Markdown', + extensions: SUPPORTED_FILE_EXTENSIONS, + }, + ], + multiple: false, + }); + + if (!selected) { + return { success: false, error: '用户取消操作' }; + } + + const filePath = Array.isArray(selected) ? selected[0] : selected; + return { success: true, data: filePath }; + } catch (error) { + console.error('打开文件失败:', error); + return { + success: false, + error: `打开文件失败: ${error instanceof Error ? error.message : String(error)}`, + }; + } +}; + +// 打开目录 +export const openDirectoryDialog = async (): Promise => { + try { + const selected = await open({ + directory: true, + multiple: false, + }); + + if (!selected) { + return { success: false, error: '用户取消操作' }; + } + + const dirPath = Array.isArray(selected) ? selected[0] : selected; + return { success: true, data: dirPath }; + } catch (error) { + console.error('打开目录失败:', error); + return { + success: false, + error: `打开目录失败: ${error instanceof Error ? error.message : String(error)}`, + }; + } +}; + +// 读取文件内容 +export const readFileContent = async (filePath: string): Promise => { + try { + const content = await readTextFile(filePath); + return { success: true, data: content }; + } catch (error) { + console.error('读取文件失败:', error); + return { + success: false, + error: `读取文件失败: ${error instanceof Error ? error.message : String(error)}`, + }; + } +}; + +// 写入文件内容 +export const writeFileContent = async (filePath: string, content: string): Promise => { + try { + await writeTextFile(filePath, content); + return { success: true }; + } catch (error) { + console.error('写入文件失败:', error); + return { + success: false, + error: `写入文件失败: ${error instanceof Error ? error.message : String(error)}`, + }; + } +}; + +// 从文件路径中提取目录路径 +export const extractDirectoryPath = (filePath: string): string => { + const lastSlashIndex = filePath.lastIndexOf('/'); + return lastSlashIndex !== -1 ? filePath.substring(0, lastSlashIndex) : ''; +}; + +// 从文件路径中提取文件名 +export const extractFileName = (filePath: string): string => { + const lastSlashIndex = filePath.lastIndexOf('/'); + return lastSlashIndex !== -1 ? filePath.substring(lastSlashIndex + 1) : filePath; +}; + +// 格式化文件大小 +export const formatFileSize = (bytes: number): string => { + if (bytes === 0) return '0 B'; + + const k = 1024; + const sizes = ['B', 'KB', 'MB', 'GB']; + const i = Math.floor(Math.log(bytes) / Math.log(k)); + + return `${parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`; +}; + +/** + * 格式化时间戳为相对时间或绝对日期 + */ +export const formatTimestamp = (timestamp: number): string => { + const now = Date.now(); + const diff = now - timestamp; + + // 时间常量(毫秒) + const MINUTE = 60 * 1000; + const HOUR = 60 * MINUTE; + const DAY = 24 * HOUR; + const WEEK = 7 * DAY; + + if (diff < MINUTE) { + return '刚刚'; + } + + if (diff < HOUR) { + return `${Math.floor(diff / MINUTE)}分钟前`; + } + + if (diff < DAY) { + return `${Math.floor(diff / HOUR)}小时前`; + } + + if (diff < WEEK) { + return `${Math.floor(diff / DAY)}天前`; + } + + return new Date(timestamp).toLocaleDateString(); +}; + +// 验证文件路径 +export const validateFilePath = (filePath: string): boolean => { + if (!filePath) return false; + + // 基本路径验证 + const validPathRegex = /^[a-zA-Z0-9/._-]+$/; + if (!validPathRegex.test(filePath)) return false; + + // 检查文件扩展名 + return isSupportedFile(filePath); +}; + +// 获取文件信息 +export const getFileInfo = async (filePath: string): Promise => { + try { + const exists = await checkPathExists(filePath); + if (!exists) return null; + + return { + path: filePath, + name: extractFileName(filePath), + lastAccessed: Date.now(), + }; + } catch (error) { + console.error('获取文件信息失败:', error); + return null; + } +}; + +// 防抖函数 +export const debounce = any>( + func: T, + wait: number, +): ((...args: Parameters) => void) => { + let timeout: ReturnType; + + return (...args: Parameters) => { + clearTimeout(timeout); + timeout = setTimeout(() => func(...args), wait); + }; +}; + +// 节流函数 +export const throttle = any>( + func: T, + limit: number, +): ((...args: Parameters) => void) => { + let inThrottle: boolean; + + return (...args: Parameters) => { + if (!inThrottle) { + func(...args); + inThrottle = true; + setTimeout(() => (inThrottle = false), limit); + } + }; +}; diff --git a/packages/client/src/components/icons/AddIcon.vue b/packages/client/src/components/icons/AddIcon.vue new file mode 100644 index 000000000..6443b1f90 --- /dev/null +++ b/packages/client/src/components/icons/AddIcon.vue @@ -0,0 +1,15 @@ + + + diff --git a/packages/client/src/components/icons/ArrowIcon.vue b/packages/client/src/components/icons/ArrowIcon.vue new file mode 100644 index 000000000..5cd786600 --- /dev/null +++ b/packages/client/src/components/icons/ArrowIcon.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/client/src/components/icons/FileIcon.vue b/packages/client/src/components/icons/FileIcon.vue new file mode 100644 index 000000000..e02e45a70 --- /dev/null +++ b/packages/client/src/components/icons/FileIcon.vue @@ -0,0 +1,15 @@ + + + diff --git a/packages/client/src/components/icons/FolderIcon.vue b/packages/client/src/components/icons/FolderIcon.vue new file mode 100644 index 000000000..987df6ce1 --- /dev/null +++ b/packages/client/src/components/icons/FolderIcon.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/client/src/components/icons/IconLibrary.vue b/packages/client/src/components/icons/IconLibrary.vue new file mode 100644 index 000000000..23127e297 --- /dev/null +++ b/packages/client/src/components/icons/IconLibrary.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/packages/client/src/components/icons/RefreshIcon.vue b/packages/client/src/components/icons/RefreshIcon.vue new file mode 100644 index 000000000..abfa15fac --- /dev/null +++ b/packages/client/src/components/icons/RefreshIcon.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/client/src/components/icons/index.ts b/packages/client/src/components/icons/index.ts new file mode 100644 index 000000000..67781c9be --- /dev/null +++ b/packages/client/src/components/icons/index.ts @@ -0,0 +1,32 @@ +// 图标组件库索引文件 +export { default as FileIcon } from './FileIcon.vue'; +export { default as FolderIcon } from './FolderIcon.vue'; +export { default as ArrowIcon } from './ArrowIcon.vue'; +export { default as AddIcon } from './AddIcon.vue'; +export { default as RefreshIcon } from './RefreshIcon.vue'; + +// 图标类型定义 +export interface IconProps { + size?: number; + color?: string; + class?: string; +} + +// 图标尺寸常量 +export const ICON_SIZES = { + SMALL: 12, + MEDIUM: 16, + LARGE: 20, + XLARGE: 24, +} as const; + +// 图标颜色常量 +export const ICON_COLORS = { + DEFAULT: 'currentColor', + PRIMARY: '#007bff', + SECONDARY: '#6c757d', + SUCCESS: '#28a745', + DANGER: '#dc3545', + WARNING: '#ffc107', + INFO: '#17a2b8', +} as const; diff --git a/packages/client/src/components/types.ts b/packages/client/src/components/types.ts new file mode 100644 index 000000000..c91863d64 --- /dev/null +++ b/packages/client/src/components/types.ts @@ -0,0 +1,130 @@ +// 文件相关类型定义 +export interface FileInfo { + path: string; + name: string; + lastAccessed: number; + size?: number; + type?: string; +} + +// 目录节点类型定义 +export interface DirectoryNode { + path: string; + name: string; + type: 'file' | 'directory'; + expanded?: boolean; + children?: DirectoryNode[]; + lastModified?: number; + size?: number; +} + +// 文件管理器状态类型 +export interface FileManagerState { + sidebarCollapsed: boolean; + currentFilePath: string | null; + recentFiles: FileInfo[]; + lastOpenedFile: FileInfo | null; +} + +// 右键菜单状态类型 +export interface ContextMenuState { + visible: boolean; + x: number; + y: number; + file: FileInfo | null; +} + +// 目录展开状态类型 +export interface DirectoryExpansionState { + [path: string]: boolean; +} + +// 文件过滤器类型 +export interface FileFilter { + name: string; + extensions: string[]; +} + +// 文件操作结果类型 +export interface FileOperationResult { + success: boolean; + error?: string; + data?: any; +} + +// 文件读取选项类型 +export interface FileReadOptions { + encoding?: string; + signal?: AbortSignal; +} + +// 文件写入选项类型 +export interface FileWriteOptions { + encoding?: string; + mode?: number; + signal?: AbortSignal; +} + +// 目录操作选项类型 +export interface DirectoryOptions { + recursive?: boolean; + signal?: AbortSignal; +} + +// 文件对话框选项类型 +export interface DialogOptions { + title?: string; + defaultPath?: string; + filters?: FileFilter[]; + multiple?: boolean; + directory?: boolean; +} + +// 文件管理器事件类型 +export interface FileManagerEvents { + 'open-file': (filePath: string, fromDirectoryManager: boolean) => void; + 'create-file': (filePath: string) => void; + 'delete-file': (filePath: string) => void; + 'rename-file': (oldPath: string, newPath: string) => void; + 'toggle-sidebar': (collapsed: boolean) => void; +} + +// 目录管理器事件类型 +export interface DirectoryManagerEvents { + 'toggle-directory': (dirPath: string, node: DirectoryNode) => void; + 'open-file': (filePath: string) => void; + 'refresh-directories': () => void; +} + +// 文件存储接口类型 +export interface FileStore { + sidebarCollapsed: boolean; + currentFilePath: string | null; + recentFiles: FileInfo[]; + lastOpenedFile: FileInfo | null; + sortedRecentFiles: FileInfo[]; + + toggleSidebar(): void; + setCurrentFilePath(filePath: string): void; + addRecentFile(filePath: string): void; + removeRecentFile(filePath: string): void; +} + +// 工具函数返回类型 +export interface DirectoryStructureResult { + success: boolean; + error?: string; + data?: DirectoryNode[]; +} + +export interface FileOperationResult { + success: boolean; + error?: string; + data?: any; +} + +// 常量定义 +export const SUPPORTED_FILE_EXTENSIONS = ['md', 'markdown', 'text', 'txt']; +export const MAX_RECENT_FILES = 50; +export const MAX_DIRECTORY_DEPTH = 4; +export const DEFAULT_FILE_CONTENT = '# 新文档\n\n开始编写你的内容...'; diff --git a/packages/client/src/components/ui/ActionButtons.vue b/packages/client/src/components/ui/ActionButtons.vue new file mode 100644 index 000000000..bb55dfa7e --- /dev/null +++ b/packages/client/src/components/ui/ActionButtons.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/packages/client/src/components/ui/ContextMenu.vue b/packages/client/src/components/ui/ContextMenu.vue new file mode 100644 index 000000000..b943e250e --- /dev/null +++ b/packages/client/src/components/ui/ContextMenu.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/packages/client/src/components/ui/DirectorySection.vue b/packages/client/src/components/ui/DirectorySection.vue new file mode 100644 index 000000000..d881b49e5 --- /dev/null +++ b/packages/client/src/components/ui/DirectorySection.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/packages/client/src/components/ui/RecentFilesSection.vue b/packages/client/src/components/ui/RecentFilesSection.vue new file mode 100644 index 000000000..438333346 --- /dev/null +++ b/packages/client/src/components/ui/RecentFilesSection.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/packages/client/src/components/ui/SidebarHeader.vue b/packages/client/src/components/ui/SidebarHeader.vue new file mode 100644 index 000000000..85b74a92f --- /dev/null +++ b/packages/client/src/components/ui/SidebarHeader.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/packages/client/src/store/modal/file.ts b/packages/client/src/store/modal/file.ts index ac9a9f7ba..873bd2aa5 100644 --- a/packages/client/src/store/modal/file.ts +++ b/packages/client/src/store/modal/file.ts @@ -1,21 +1,131 @@ import { defineStore } from 'pinia'; -interface File { +interface RecentFile { + path: string; + name: string; + lastAccessed: number; +} + +interface FileState { currentFilePath: string | null; + recentFiles: RecentFile[]; + sidebarCollapsed: boolean; } +// 持久化存储键名 +const STORAGE_KEYS = { + FILE_STATE: 'cherry_markdown_file_state', + LAST_OPENED_FILE: 'cherry_markdown_last_opened_file', +}; + +// 从持久化存储加载数据 +const loadFromStorage = (): Partial => { + try { + const savedState = localStorage.getItem(STORAGE_KEYS.FILE_STATE); + if (savedState) { + return JSON.parse(savedState); + } + } catch (error) { + console.warn('加载文件状态失败:', error); + } + return {}; +}; + +// 保存数据到持久化存储 +const saveToStorage = (state: FileState) => { + try { + localStorage.setItem( + STORAGE_KEYS.FILE_STATE, + JSON.stringify({ + recentFiles: state.recentFiles, + sidebarCollapsed: state.sidebarCollapsed, + }), + ); + + // 单独保存最后打开的文件路径 + if (state.currentFilePath) { + localStorage.setItem(STORAGE_KEYS.LAST_OPENED_FILE, state.currentFilePath); + } + } catch (error) { + console.warn('保存文件状态失败:', error); + } +}; + export const useFileStore = defineStore('file', { - /** - * @params currentFilePath 当前的文件路径 - * - */ - state: (): File => ({ - currentFilePath: null, - }), + state: (): FileState => { + const savedState = loadFromStorage(); + const lastOpenedFile = localStorage.getItem(STORAGE_KEYS.LAST_OPENED_FILE); + + return { + currentFilePath: lastOpenedFile || savedState.currentFilePath || null, + recentFiles: savedState.recentFiles || [], + sidebarCollapsed: savedState.sidebarCollapsed || false, + }; + }, + + getters: { + sortedRecentFiles: (state) => { + return state.recentFiles + .slice() + .sort((a, b) => b.lastAccessed - a.lastAccessed) + .slice(0, 10); // 只显示最近10个文件 + }, + + // 获取最后打开的文件(按时间排序的第一个文件) + lastOpenedFile: (state) => { + if (state.recentFiles.length === 0) return null; + return state.recentFiles.slice().sort((a, b) => b.lastAccessed - a.lastAccessed)[0]; + }, + }, actions: { setCurrentFilePath(filePath: string | null) { this.currentFilePath = filePath; + this.saveState(); + }, + + addRecentFile(filePath: string) { + const fileName = filePath.split(/[\\/]/).pop() || filePath; + + // 检查是否已存在 + const existingIndex = this.recentFiles.findIndex((file) => file.path === filePath); + + if (existingIndex >= 0) { + // 更新访问时间 + this.recentFiles[existingIndex].lastAccessed = Date.now(); + } else { + // 添加新文件 + this.recentFiles.push({ + path: filePath, + name: fileName, + lastAccessed: Date.now(), + }); + } + + this.saveState(); + }, + + removeRecentFile(filePath: string) { + this.recentFiles = this.recentFiles.filter((file) => file.path !== filePath); + this.saveState(); + }, + + toggleSidebar() { + this.sidebarCollapsed = !this.sidebarCollapsed; + this.saveState(); + }, + + // 保存状态到持久化存储 + saveState() { + saveToStorage(this.$state); + }, + + // 清空所有文件记忆 + clearAllFileMemory() { + this.currentFilePath = null; + this.recentFiles = []; + localStorage.removeItem(STORAGE_KEYS.FILE_STATE); + localStorage.removeItem(STORAGE_KEYS.LAST_OPENED_FILE); }, }, }); diff --git a/packages/client/src/types/pinyin.d.ts b/packages/client/src/types/pinyin.d.ts new file mode 100644 index 000000000..a902a3050 --- /dev/null +++ b/packages/client/src/types/pinyin.d.ts @@ -0,0 +1,21 @@ +declare module 'pinyin' { + export interface PinyinOptions { + style?: number; + heteronym?: boolean; + segment?: boolean; + group?: boolean; + } + + export interface PinyinFunction { + (text: string, options?: PinyinOptions): string[][]; + STYLE_NORMAL: number; + STYLE_TONE: number; + STYLE_TONE2: number; + STYLE_TO3NE: number; + STYLE_INITIALS: number; + STYLE_FIRST_LETTER: number; + } + + export const pinyin: PinyinFunction; + export default pinyin; +} diff --git a/packages/client/vite.config.ts b/packages/client/vite.config.ts index a55076c31..1f8450e84 100644 --- a/packages/client/vite.config.ts +++ b/packages/client/vite.config.ts @@ -29,4 +29,9 @@ export default defineConfig(async () => ({ ignored: ["**/src-tauri/**"], }, }, + // 添加optimizeDeps配置来解决katex依赖优化问题 + optimizeDeps: { + include: ['katex', 'echarts'], + exclude: ['cherry-markdown'], + }, })); diff --git a/yarn.lock b/yarn.lock index 785857f1b..17a81dfa6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1586,6 +1586,21 @@ globby "^11.0.0" read-yaml-file "^1.1.0" +"@mapbox/node-pre-gyp@^1.0.4": + version "1.0.11" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" + integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== + dependencies: + detect-libc "^2.0.0" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.7" + nopt "^5.0.0" + npmlog "^5.0.1" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.11" + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" @@ -1846,6 +1861,11 @@ resolved "https://registry.npmjs.org/@tauri-apps/api/-/api-2.4.0.tgz#1b93976a129383ad914e979402431a63045c6329" integrity sha512-F1zXTsmwcCp+ocg6fbzD/YL0OHeSG1eynCag1UNlX2tD5+dlXy7eRbTu9cAcscPjcR7Nix7by2wiv/+VfWUieg== +"@tauri-apps/api@^2.8.0": + version "2.9.1" + resolved "https://registry.npmjs.org/@tauri-apps/api/-/api-2.9.1.tgz#e539bfa437e53864fd5e7ed0f28e8217fbc74de1" + integrity sha512-IGlhP6EivjXHepbBic618GOmiWe4URJiIeZFlB7x3czM0yDHHYviH1Xvoiv4FefdkQtn6v7TuwWCRfOGdnVUGw== + "@tauri-apps/cli-darwin-arm64@2.2.5": version "2.2.5" resolved "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.2.5.tgz#6a4265d99120c5464cd9df6deec5aad3f028bf67" @@ -1926,6 +1946,13 @@ dependencies: "@tauri-apps/api" "^2.0.0" +"@tauri-apps/plugin-global-shortcut@^2.3.1": + version "2.3.1" + resolved "https://registry.npmjs.org/@tauri-apps/plugin-global-shortcut/-/plugin-global-shortcut-2.3.1.tgz#c9c7a3db688eaaac2e1a9e22a37beb60004f2ed5" + integrity sha512-vr40W2N6G63dmBPaha1TsBQLLURXG538RQbH5vAm0G/ovVZyXJrmZR1HF1W+WneNloQvwn4dm8xzwpEXRW560g== + dependencies: + "@tauri-apps/api" "^2.8.0" + "@tauri-apps/plugin-opener@2.2.0": version "2.2.0" resolved "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.2.0.tgz#a9aa3272a440f2a011228acb3c46c0619506914d" @@ -2644,7 +2671,7 @@ abab@^2.0.5, abab@^2.0.6: resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -abbrev@^1.0.0: +abbrev@1, abbrev@^1.0.0: version "1.1.1" resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== @@ -2871,6 +2898,14 @@ arch@^2.2.0: resolved "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + are-we-there-yet@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" @@ -3721,7 +3756,7 @@ color-string@^1.6.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.3: +color-support@^1.1.2, color-support@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -3794,6 +3829,13 @@ commander@^9.3.0: resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== +commander@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz#50d1651868ae60eccff0a2d9f34595376bc6b041" + integrity sha512-71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA== + dependencies: + keypress "0.1.x" + commitlint@^19.6.1: version "19.8.0" resolved "https://registry.npmjs.org/commitlint/-/commitlint-19.8.0.tgz#032f9f1a1ca6393cca252a8a2b9250523aeb1ed2" @@ -3862,7 +3904,7 @@ concat-with-sourcemaps@^1.1.0: dependencies: source-map "^0.6.1" -console-control-strings@^1.1.0: +console-control-strings@^1.0.0, console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== @@ -4751,6 +4793,11 @@ detect-indent@^6.0.0: resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== +detect-libc@^2.0.0: + version "2.1.2" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== + detect-newline@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" @@ -4929,6 +4976,14 @@ eastasianwidth@^0.2.0: resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== +echarts@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/echarts/-/echarts-6.0.0.tgz#2935aa7751c282d1abbbf7d719d397199a15b9e7" + integrity sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ== + dependencies: + tslib "2.3.0" + zrender "6.0.0" + electron-to-chromium@^1.5.173: version "1.5.178" resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.178.tgz#6fc4d69eb5275bb13068931448fd822458901fbb" @@ -6002,6 +6057,21 @@ functions-have-names@^1.2.3: resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + gauge@^4.0.3: version "4.0.4" resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" @@ -7409,6 +7479,13 @@ juice@^8.0.0: slick "^1.12.2" web-resource-inliner "^6.0.1" +katex@^0.16.27: + version "0.16.27" + resolved "https://registry.npmjs.org/katex/-/katex-0.16.27.tgz#4ecf6f620e0ca1c1a5de722e85fcdcec49086a48" + integrity sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw== + dependencies: + commander "^8.3.0" + katex@^0.16.4: version "0.16.21" resolved "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz#8f63c659e931b210139691f2cc7bb35166b792a3" @@ -7416,6 +7493,11 @@ katex@^0.16.4: dependencies: commander "^8.3.0" +keypress@0.1.x: + version "0.1.0" + resolved "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz#4a3188d4291b66b4f65edb99f806aa9ae293592a" + integrity sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA== + keyv@^4.5.3: version "4.5.4" resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" @@ -7834,7 +7916,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.2: +make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -8283,6 +8365,11 @@ nice-try@^1.0.4: resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +node-addon-api@^3.0.2: + version "3.2.1" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + node-environment-flags@^1.0.5: version "1.0.6" resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz" @@ -8291,7 +8378,7 @@ node-environment-flags@^1.0.5: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch@^2.5.0, node-fetch@^2.6.0: +node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -8320,11 +8407,26 @@ node-releases@^2.0.19: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== +nodejieba@2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/nodejieba/-/nodejieba-2.5.2.tgz#fc929ee29f93c28c639696bac0319bac116a296a" + integrity sha512-ByskJvaBrQ2eV+5M0OeD80S5NKoGaHc9zi3Z/PTKl/95eac2YF8RmWduq9AknLpkQLrLAIcqurrtC6BzjpKwwg== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.4" + node-addon-api "^3.0.2" + non-layered-tidy-tree-layout@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw== +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + nopt@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" @@ -8391,6 +8493,16 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + npmlog@^6.0.0: version "6.0.2" resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" @@ -8418,7 +8530,7 @@ object-assign@^3.0.0: resolved "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" integrity sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ== -object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -8893,6 +9005,16 @@ pinia@^2.2.4: "@vue/devtools-api" "^6.6.3" vue-demi "^0.14.10" +pinyin@^2.11.2: + version "2.11.2" + resolved "https://registry.npmjs.org/pinyin/-/pinyin-2.11.2.tgz#0d8afa8d79332d6ecd2c59fffba011e69d7cfb2f" + integrity sha512-tAWDBcowj09j/vLUjty98nVqrbTVNhutf1VcyID4p0sxTFPzRyXw7n7Ic0HQwBdWFIWrrDP8bYiT64gaT6h3gA== + dependencies: + commander "~1.1.1" + object-assign "^4.0.1" + optionalDependencies: + nodejieba "2.5.2" + pirates@^4.0.6: version "4.0.6" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" @@ -10063,7 +10185,7 @@ siginfo@^2.0.0: resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -10888,6 +11010,11 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + tslib@^2.1.0, tslib@^2.2.0, tslib@^2.6.2: version "2.8.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" @@ -11647,7 +11774,7 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" -wide-align@^1.1.5: +wide-align@^1.1.2, wide-align@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== @@ -11859,3 +11986,10 @@ yocto-queue@^1.0.0: version "1.2.1" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz#36d7c4739f775b3cbc28e6136e21aa057adec418" integrity sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg== + +zrender@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/zrender/-/zrender-6.0.0.tgz#947077bc69cdea744134984927f132f3727f8079" + integrity sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg== + dependencies: + tslib "2.3.0" From 3c1382910e7e60868750a43dbc0e6e9fb5fbc9fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Sun, 14 Dec 2025 13:55:49 +0800 Subject: [PATCH 14/57] =?UTF-8?q?refactor(client):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E8=8F=9C=E5=8D=95=E5=92=8C=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E7=BB=93=E6=9E=84=EF=BC=8C=E4=BC=98=E5=8C=96=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=89=98=E7=9B=98=E5=8A=9F=E8=83=BD=20(#1566)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/src-tauri/src/implement/mod.rs | 1 - .../src-tauri/src/implement/system_tray.rs | 50 +++---- .../src-tauri/src/implement/windows_menu.rs | 133 +----------------- packages/client/src-tauri/src/main.rs | 1 - packages/client/src-tauri/src/utils/i18n.rs | 51 +------ packages/client/src-tauri/src/utils/mod.rs | 1 - 6 files changed, 25 insertions(+), 212 deletions(-) diff --git a/packages/client/src-tauri/src/implement/mod.rs b/packages/client/src-tauri/src/implement/mod.rs index 783d1e817..975147b19 100644 --- a/packages/client/src-tauri/src/implement/mod.rs +++ b/packages/client/src-tauri/src/implement/mod.rs @@ -1,2 +1 @@ -pub mod windows_menu; pub mod system_tray; \ No newline at end of file diff --git a/packages/client/src-tauri/src/implement/system_tray.rs b/packages/client/src-tauri/src/implement/system_tray.rs index 98ced8c85..1360168e7 100644 --- a/packages/client/src-tauri/src/implement/system_tray.rs +++ b/packages/client/src-tauri/src/implement/system_tray.rs @@ -1,33 +1,13 @@ use tauri::{ menu::{Menu, MenuItem}, - tray::TrayIconBuilder, - App, + tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}, + App, Manager, }; -use crate::utils::i18n::Language; - use crate::utils::base::restore_and_focus_window; pub fn system_tray_menu(app: &mut App) -> Result<(), tauri::Error> { - let lang_str = "en".to_string(); - let language = Language::new(); - - let quit = MenuItem::with_id( - app, - "quit", - language.quit.get_lang(&lang_str), - true, - None::<&str>, - )?; - - // todo - // let language = MenuItem::with_id( - // app, - // "language", - // language.language.get_lang(&lang_str), - // true, - // None::<&str>, - // )?; + let quit = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?; let system_menu = Menu::with_items(app, &[&quit])?; @@ -37,11 +17,27 @@ pub fn system_tray_menu(app: &mut App) -> Result<(), tauri::Error> { .icon(app.default_window_icon().unwrap().clone()) .build(app)?; - system_tray.on_menu_event(move |app_handle, event| match event.id.as_ref() { - "show_main_window" => { - println!("show_main_window"); - restore_and_focus_window(app_handle, "main"); + system_tray.on_tray_icon_event(|tray, event| { + if let TrayIconEvent::Click { + button: MouseButton::Left, + button_state: MouseButtonState::Up, + .. + } = event + { + if let Some(window) = tray.app_handle().get_webview_window("main") { + let is_minimized = window.is_minimized().unwrap_or(false); + let is_visible = window.is_visible().unwrap_or(true); + + if is_minimized || !is_visible { + restore_and_focus_window(&tray.app_handle(), "main"); + } else { + let _ = window.hide(); + } + } } + }); + + system_tray.on_menu_event(move |app_handle, event| match event.id.as_ref() { "quit" => { app_handle.exit(0); } diff --git a/packages/client/src-tauri/src/implement/windows_menu.rs b/packages/client/src-tauri/src/implement/windows_menu.rs index b8ecc0dee..80e2a952a 100644 --- a/packages/client/src-tauri/src/implement/windows_menu.rs +++ b/packages/client/src-tauri/src/implement/windows_menu.rs @@ -1,132 +1 @@ -use crate::utils::i18n::Language; -use tauri::{ - menu::{CheckMenuItemBuilder, MenuBuilder, MenuItemBuilder, SubmenuBuilder}, - App, Emitter, -}; - -/// 窗口菜单 -pub fn window_menu(app: &mut App) -> Result<(), tauri::Error> { - let handle = app.handle(); - let language = Language::new(); - let lang_str = "en".to_string(); - - let new_file_menu = MenuItemBuilder::with_id("new_file", language.new_file.get_lang(&lang_str)) - .build(handle)?; - let open_file_menu = - MenuItemBuilder::with_id("open_file", language.open_file.get_lang(&lang_str)) - .build(handle)?; - let save_menu = - MenuItemBuilder::with_id("save", language.save.get_lang(&lang_str)).build(handle)?; - let save_as_menu = - MenuItemBuilder::with_id("save_as", language.save_as.get_lang(&lang_str)).build(handle)?; - let quit_menu = - MenuItemBuilder::with_id("quit", language.quit.get_lang(&lang_str)).build(handle)?; - - let file_menu = SubmenuBuilder::with_id(handle, "file", language.file.get_lang(&lang_str)) - .items(&[ - &new_file_menu, - &open_file_menu, - &save_menu, - &save_as_menu, - &quit_menu, - ]) - .build()?; - - let language_sub_en = CheckMenuItemBuilder::with_id("en", "English") - .checked(&lang_str == "en") - .build(handle)?; - - let language_sub_zh = CheckMenuItemBuilder::with_id("zh", "中文") - .id("zh") - .checked(&lang_str == "zh") - .build(handle)?; - - let language_menu = SubmenuBuilder::with_id( - handle, - "language_menu", - language.language.get_lang(&lang_str), - ) - .items(&[&language_sub_en, &language_sub_zh]) - .build()?; - - let toggle_toolbar = - CheckMenuItemBuilder::with_id("toggle_toolbar", language.show_toolbar.get_lang(&lang_str)) - .id("toggle_toolbar") - .checked(false) - .build(handle)?; - - let setting_menu = - SubmenuBuilder::with_id(handle, "setting_menu", language.setting.get_lang(&lang_str)) - .item(&toggle_toolbar) - .build()?; - - // let menu = MenuBuilder::new(handle) - // .items(&[&file_menu]) - // // .items(&[&file_menu, &language_menu, &setting_menu]) - // .build()?; - - // app.set_menu(menu)?; - - app.on_menu_event( - move |app_handle: &tauri::AppHandle, event| match event.id().0.as_str() { - "en" | "zh" => { - let lang_str = event.id().0.as_str(); - file_menu - .set_text(language.new_file.get_lang(&lang_str)) - .expect("set file_menu text failed"); - new_file_menu - .set_text(language.new_file.get_lang(&lang_str)) - .expect("set new_file_menu text failed"); - open_file_menu - .set_text(language.open_file.get_lang(&lang_str)) - .expect("set open_file_menu text failed"); - save_menu - .set_text(language.save.get_lang(&lang_str)) - .expect("set save_menu text failed"); - save_as_menu - .set_text(language.save_as.get_lang(&lang_str)) - .expect("set save_as_menu text failed"); - quit_menu - .set_text(language.quit.get_lang(&lang_str)) - .expect("set quit_menu text failed"); - - language_menu - .set_text(language.language.get_lang(&lang_str)) - .expect("set language_menu text failed"); - language_sub_en - .set_checked(lang_str == "en") - .expect("set en checked failed"); - language_sub_zh - .set_checked(lang_str == "zh") - .expect("set zh checked failed"); - - toggle_toolbar - .set_text(language.show_toolbar.get_lang(&lang_str)) - .expect("set toggle_toolbar text failed"); - setting_menu - .set_text(language.setting.get_lang(&lang_str)) - .expect("set setting_menu text failed"); - } - "new_file" => { - let _ = app_handle.emit("new_file", ""); - } - "open_file" => { - let _ = app_handle.emit("open_file", ""); - } - "save" => { - let _ = app_handle.emit("save", ""); - } - "save_as" => { - let _ = app_handle.emit("save_as", ""); - } - "toggle_toolbar" => { - let _ = app_handle.emit("toggle_toolbar", ""); - } - "quit" => { - app_handle.exit(0); - } - _ => {} - }, - ); - Ok(()) -} +// Deprecated: window menu removed diff --git a/packages/client/src-tauri/src/main.rs b/packages/client/src-tauri/src/main.rs index 421c4715b..b00f1e444 100644 --- a/packages/client/src-tauri/src/main.rs +++ b/packages/client/src-tauri/src/main.rs @@ -19,7 +19,6 @@ fn main() { .plugin(tauri_plugin_dialog::init()) .plugin(tauri_plugin_global_shortcut::Builder::new().build()) .setup(|app| { - let _ = implement::windows_menu::window_menu(app); let _ = implement::system_tray::system_tray_menu(app); Ok(()) diff --git a/packages/client/src-tauri/src/utils/i18n.rs b/packages/client/src-tauri/src/utils/i18n.rs index 0be0ec9ea..9bf127446 100644 --- a/packages/client/src-tauri/src/utils/i18n.rs +++ b/packages/client/src-tauri/src/utils/i18n.rs @@ -1,50 +1 @@ -#[derive(Clone)] -pub struct BilingualMenuItem { - en: String, - zh: String, -} - -impl BilingualMenuItem { - fn new(en: &str, zh: &str) -> Self { - BilingualMenuItem { - en: en.to_string(), - zh: zh.to_string(), - } - } - - pub fn get_lang(&self, lang: &str) -> String { - match lang { - "zh" => self.zh.clone(), - _ => self.en.clone(), - } - } -} - -#[derive(Clone)] -pub struct Language { - pub file: BilingualMenuItem, - pub new_file: BilingualMenuItem, - pub open_file: BilingualMenuItem, - pub save: BilingualMenuItem, - pub save_as: BilingualMenuItem, - pub quit: BilingualMenuItem, - pub language: BilingualMenuItem, - pub setting: BilingualMenuItem, - pub show_toolbar: BilingualMenuItem, -} - -impl Language { - pub fn new() -> Self { - Language { - file: BilingualMenuItem::new("File", "文件"), - new_file: BilingualMenuItem::new("New File", "新建文件"), - open_file: BilingualMenuItem::new("Open File...", "打开文件..."), - save: BilingualMenuItem::new("Save", "保存"), - save_as: BilingualMenuItem::new("Save As...", "另存为..."), - quit: BilingualMenuItem::new("Quit", "退出"), - language: BilingualMenuItem::new("Language", "语言"), - setting: BilingualMenuItem::new("Setting", "设置"), - show_toolbar: BilingualMenuItem::new("Show Toolbar", "显示工具栏"), - } - } -} +// Removed: translation/i18n structures no longer used diff --git a/packages/client/src-tauri/src/utils/mod.rs b/packages/client/src-tauri/src/utils/mod.rs index 669271db0..6cf245d4d 100644 --- a/packages/client/src-tauri/src/utils/mod.rs +++ b/packages/client/src-tauri/src/utils/mod.rs @@ -1,2 +1 @@ pub mod base; -pub mod i18n; From c15f54f5c514c541f98e7f3fcd12d64b18c02788 Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Wed, 17 Dec 2025 14:42:38 +0800 Subject: [PATCH 15/57] =?UTF-8?q?style:=20=E5=A2=9E=E5=8A=A0=E4=B8=BB?= =?UTF-8?q?=E9=A2=98=E5=92=8C=E4=BB=A3=E7=A0=81=E5=9D=97=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E7=9A=84=E5=9B=BE=E6=A0=87=20(#1547)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * style: 增加主题和代码块主题的图标 * style: add changeset --------- Co-authored-by: 阿菜 Cai --- .changeset/shaky-impalas-sin.md | 5 +++++ examples/assets/scripts/index-demo.js | 3 +-- packages/cherry-markdown/src/sass/ch-icon.scss | 4 +++- .../src/sass/icons/uEA94-main-theme.svg | 13 +++++++++++++ .../src/sass/icons/uEA95-code-theme.svg | 1 + .../cherry-markdown/src/toolbars/hooks/CodeTheme.js | 4 ++-- .../cherry-markdown/src/toolbars/hooks/Theme.js | 2 +- 7 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 .changeset/shaky-impalas-sin.md create mode 100644 packages/cherry-markdown/src/sass/icons/uEA94-main-theme.svg create mode 100644 packages/cherry-markdown/src/sass/icons/uEA95-code-theme.svg diff --git a/.changeset/shaky-impalas-sin.md b/.changeset/shaky-impalas-sin.md new file mode 100644 index 000000000..e23336fa1 --- /dev/null +++ b/.changeset/shaky-impalas-sin.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +style: 增加主题和代码块主题的图标 diff --git a/examples/assets/scripts/index-demo.js b/examples/assets/scripts/index-demo.js index 9c9cf1d94..d895d4bee 100644 --- a/examples/assets/scripts/index-demo.js +++ b/examples/assets/scripts/index-demo.js @@ -404,7 +404,6 @@ const basicConfig = { 'proTable', // 'customMenuTable', 'togglePreview', - 'codeTheme', 'search', 'shortcutKey', { @@ -414,7 +413,7 @@ const basicConfig = { ], toolbarRight: ['fullScreen', '|', 'export', 'changeLocale', 'wordCount'], bubble: ['bold', 'italic', 'underline', 'strikethrough', 'sub', 'sup', 'quote', 'ruby', '|', 'size', 'color'], // array or false - sidebar: ['mobilePreview', 'copy', 'theme'], + sidebar: ['mobilePreview', 'copy', 'theme', 'codeTheme'], toc: { // updateLocationHash: false, // 要不要更新URL的hash defaultModel: 'full', // pure: 精简模式/缩略模式,只有一排小点; full: 完整模式,会展示所有标题 diff --git a/packages/cherry-markdown/src/sass/ch-icon.scss b/packages/cherry-markdown/src/sass/ch-icon.scss index 96b9b042f..85c1f6249 100644 --- a/packages/cherry-markdown/src/sass/ch-icon.scss +++ b/packages/cherry-markdown/src/sass/ch-icon.scss @@ -20,6 +20,7 @@ -moz-osx-font-smoothing: grayscale; } +.ch-icon-code-theme:before { content: "\EA95" } .ch-icon-list:before { content: "\EA03" } .ch-icon-check:before { content: "\EA04" } .ch-icon-square:before { content: "\EA09" } @@ -137,4 +138,5 @@ .ch-icon-insertPieChart:before { content: "\EA8F" } .ch-icon-insertScatterChart:before { content: "\EA90" } .ch-icon-insertSankeyChart:before { content: "\EA91" } -.ch-icon-menu:before { content: "\EA92" } \ No newline at end of file +.ch-icon-menu:before { content: "\EA92" } +.ch-icon-main-theme:before { content: "\EA94" } \ No newline at end of file diff --git a/packages/cherry-markdown/src/sass/icons/uEA94-main-theme.svg b/packages/cherry-markdown/src/sass/icons/uEA94-main-theme.svg new file mode 100644 index 000000000..74d3a0f0d --- /dev/null +++ b/packages/cherry-markdown/src/sass/icons/uEA94-main-theme.svg @@ -0,0 +1,13 @@ + + + diff --git a/packages/cherry-markdown/src/sass/icons/uEA95-code-theme.svg b/packages/cherry-markdown/src/sass/icons/uEA95-code-theme.svg new file mode 100644 index 000000000..57c0553db --- /dev/null +++ b/packages/cherry-markdown/src/sass/icons/uEA95-code-theme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cherry-markdown/src/toolbars/hooks/CodeTheme.js b/packages/cherry-markdown/src/toolbars/hooks/CodeTheme.js index 0a3f5bb9e..30fc18558 100644 --- a/packages/cherry-markdown/src/toolbars/hooks/CodeTheme.js +++ b/packages/cherry-markdown/src/toolbars/hooks/CodeTheme.js @@ -22,9 +22,9 @@ import { changeCodeTheme, getCodeThemeFromLocal } from '@/utils/config'; export default class CodeTheme extends MenuBase { constructor($cherry) { super($cherry); - this.setName('codeTheme'); + this.setName('codeTheme', 'code-theme'); this.updateMarkdown = false; - this.noIcon = true; + this.noIcon = false; this.subMenuConfig = [ { noIcon: false, name: 'autoWrap', iconName: 'br', onclick: this.bindSubClick.bind(this, 'wrap') }, { noIcon: true, name: '|', onclick: () => {} }, diff --git a/packages/cherry-markdown/src/toolbars/hooks/Theme.js b/packages/cherry-markdown/src/toolbars/hooks/Theme.js index 523b878e9..ef4601745 100644 --- a/packages/cherry-markdown/src/toolbars/hooks/Theme.js +++ b/packages/cherry-markdown/src/toolbars/hooks/Theme.js @@ -21,7 +21,7 @@ import { changeTheme } from '@/utils/config'; export default class Theme extends MenuBase { constructor($cherry) { super($cherry); - this.setName('theme', 'insertChart'); + this.setName('theme', 'main-theme'); this.subMenuConfig = []; const self = this; From 6291853eb0764a7e869dcfcf18da230ebac92f04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Wed, 17 Dec 2025 18:46:21 +0800 Subject: [PATCH 16/57] chore(client): upgrade pinyin@4.0.0 (#1569) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(client): upgrade pinyin@4.0.0 将会移除此依赖的中的 `nodejieba`;此依赖需要 c++ 和 Python@2.x 等环境。 * chore(client): 删除拼音类型定义文件 --- .../cherry-markdown/src/sass/ch-icon.scss | 4 +- packages/client/package.json | 2 +- packages/client/src/types/pinyin.d.ts | 21 ---- yarn.lock | 100 +++--------------- 4 files changed, 15 insertions(+), 112 deletions(-) delete mode 100644 packages/client/src/types/pinyin.d.ts diff --git a/packages/cherry-markdown/src/sass/ch-icon.scss b/packages/cherry-markdown/src/sass/ch-icon.scss index 85c1f6249..f09518b3b 100644 --- a/packages/cherry-markdown/src/sass/ch-icon.scss +++ b/packages/cherry-markdown/src/sass/ch-icon.scss @@ -20,7 +20,6 @@ -moz-osx-font-smoothing: grayscale; } -.ch-icon-code-theme:before { content: "\EA95" } .ch-icon-list:before { content: "\EA03" } .ch-icon-check:before { content: "\EA04" } .ch-icon-square:before { content: "\EA09" } @@ -139,4 +138,5 @@ .ch-icon-insertScatterChart:before { content: "\EA90" } .ch-icon-insertSankeyChart:before { content: "\EA91" } .ch-icon-menu:before { content: "\EA92" } -.ch-icon-main-theme:before { content: "\EA94" } \ No newline at end of file +.ch-icon-main-theme:before { content: "\EA94" } +.ch-icon-code-theme:before { content: "\EA95" } \ No newline at end of file diff --git a/packages/client/package.json b/packages/client/package.json index c1f890471..d33a64f58 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -19,7 +19,7 @@ "cherry-markdown": "*", "echarts": "^6.0.0", "katex": "^0.16.27", - "pinyin": "^2.11.2", + "pinyin": "^4.0.0", "pinia": "^2.2.4", "vue": "^3.5.13" }, diff --git a/packages/client/src/types/pinyin.d.ts b/packages/client/src/types/pinyin.d.ts deleted file mode 100644 index a902a3050..000000000 --- a/packages/client/src/types/pinyin.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -declare module 'pinyin' { - export interface PinyinOptions { - style?: number; - heteronym?: boolean; - segment?: boolean; - group?: boolean; - } - - export interface PinyinFunction { - (text: string, options?: PinyinOptions): string[][]; - STYLE_NORMAL: number; - STYLE_TONE: number; - STYLE_TONE2: number; - STYLE_TO3NE: number; - STYLE_INITIALS: number; - STYLE_FIRST_LETTER: number; - } - - export const pinyin: PinyinFunction; - export default pinyin; -} diff --git a/yarn.lock b/yarn.lock index 17a81dfa6..ca24e42a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1586,21 +1586,6 @@ globby "^11.0.0" read-yaml-file "^1.1.0" -"@mapbox/node-pre-gyp@^1.0.4": - version "1.0.11" - resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" - integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== - dependencies: - detect-libc "^2.0.0" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.7" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" @@ -2671,7 +2656,7 @@ abab@^2.0.5, abab@^2.0.6: resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -abbrev@1, abbrev@^1.0.0: +abbrev@^1.0.0: version "1.1.1" resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== @@ -2898,14 +2883,6 @@ arch@^2.2.0: resolved "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - are-we-there-yet@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" @@ -3756,7 +3733,7 @@ color-string@^1.6.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.2, color-support@^1.1.3: +color-support@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -3904,7 +3881,7 @@ concat-with-sourcemaps@^1.1.0: dependencies: source-map "^0.6.1" -console-control-strings@^1.0.0, console-control-strings@^1.1.0: +console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== @@ -4793,11 +4770,6 @@ detect-indent@^6.0.0: resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== -detect-libc@^2.0.0: - version "2.1.2" - resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" - integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== - detect-newline@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" @@ -6057,21 +6029,6 @@ functions-have-names@^1.2.3: resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - gauge@^4.0.3: version "4.0.4" resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" @@ -7916,7 +7873,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.2: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -8365,11 +8322,6 @@ nice-try@^1.0.4: resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-addon-api@^3.0.2: - version "3.2.1" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - node-environment-flags@^1.0.5: version "1.0.6" resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz" @@ -8378,7 +8330,7 @@ node-environment-flags@^1.0.5: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.7: +node-fetch@^2.5.0, node-fetch@^2.6.0: version "2.7.0" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -8407,26 +8359,11 @@ node-releases@^2.0.19: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== -nodejieba@2.5.2: - version "2.5.2" - resolved "https://registry.npmjs.org/nodejieba/-/nodejieba-2.5.2.tgz#fc929ee29f93c28c639696bac0319bac116a296a" - integrity sha512-ByskJvaBrQ2eV+5M0OeD80S5NKoGaHc9zi3Z/PTKl/95eac2YF8RmWduq9AknLpkQLrLAIcqurrtC6BzjpKwwg== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.4" - node-addon-api "^3.0.2" - non-layered-tidy-tree-layout@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw== -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - nopt@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" @@ -8493,16 +8430,6 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - npmlog@^6.0.0: version "6.0.2" resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" @@ -8530,7 +8457,7 @@ object-assign@^3.0.0: resolved "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" integrity sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ== -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -9005,15 +8932,12 @@ pinia@^2.2.4: "@vue/devtools-api" "^6.6.3" vue-demi "^0.14.10" -pinyin@^2.11.2: - version "2.11.2" - resolved "https://registry.npmjs.org/pinyin/-/pinyin-2.11.2.tgz#0d8afa8d79332d6ecd2c59fffba011e69d7cfb2f" - integrity sha512-tAWDBcowj09j/vLUjty98nVqrbTVNhutf1VcyID4p0sxTFPzRyXw7n7Ic0HQwBdWFIWrrDP8bYiT64gaT6h3gA== +pinyin@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/pinyin/-/pinyin-4.0.0.tgz#9c15fd9d45c08b6813221fc602f77759429bfa4f" + integrity sha512-vHpV5K+vpp6XUUpZNGRDuHoN+1xcmieM3EWlH4QjSX2kkpG/gVOwpqwV9EOJ9x9c9UERFKeLml5XVSukE/PLgQ== dependencies: commander "~1.1.1" - object-assign "^4.0.1" - optionalDependencies: - nodejieba "2.5.2" pirates@^4.0.6: version "4.0.6" @@ -10185,7 +10109,7 @@ siginfo@^2.0.0: resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -11774,7 +11698,7 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" -wide-align@^1.1.2, wide-align@^1.1.5: +wide-align@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== From b559a2aea06dd470e0fd5bacf24e40a25ecbcbb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Wed, 17 Dec 2025 19:24:48 +0800 Subject: [PATCH 17/57] =?UTF-8?q?chore:=20=E5=B0=86=20release=20build=20?= =?UTF-8?q?=E7=9A=84=20Node=20=E7=89=88=E6=9C=AC=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=BA=20`18.x`=20(#1559)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 将 release 版本统一设置为 18.x * chore: 将 preview build Node 版本更新为 18 * chore: 将 Node.js 版本配置移至 .node-version 文件 * chore: 降版本需要升级npm * chore: add changeset 统一设置 release 版本为 18.x * Update Node version for release build to 18.x * chore: 删除无用的变更集文件 --------- Co-authored-by: liweijie <674416404@qq.com> --- .changeset/loud-taxes-arrive.md | 5 ----- .changeset/rare-files-worry.md | 5 +++++ .github/workflows/github-pages.yml | 2 +- .github/workflows/pr_merge_cherry-markdown_npm-dev.yml | 6 ++++-- .github/workflows/pr_preview-build.yml | 2 +- .github/workflows/pr_preview-pkg.yml | 2 +- .github/workflows/release-cherry-markdown-build.yaml | 6 ++++-- .node-version | 1 + 8 files changed, 17 insertions(+), 12 deletions(-) delete mode 100644 .changeset/loud-taxes-arrive.md create mode 100644 .changeset/rare-files-worry.md create mode 100644 .node-version diff --git a/.changeset/loud-taxes-arrive.md b/.changeset/loud-taxes-arrive.md deleted file mode 100644 index 6df8b0ee9..000000000 --- a/.changeset/loud-taxes-arrive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@cherry-markdown/client': patch ---- - -feat: 优化客户端功能,增加图表、公式、拼音等功能的支持 diff --git a/.changeset/rare-files-worry.md b/.changeset/rare-files-worry.md new file mode 100644 index 000000000..15f2c1df5 --- /dev/null +++ b/.changeset/rare-files-worry.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +chore: 将 release build 的 Node 版本设置为 `18.x` diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml index 0356be1cc..168121fa7 100644 --- a/.github/workflows/github-pages.yml +++ b/.github/workflows/github-pages.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: lts/* + node-version-file: .node-version registry-url: https://registry.npmjs.org/ cache: yarn diff --git a/.github/workflows/pr_merge_cherry-markdown_npm-dev.yml b/.github/workflows/pr_merge_cherry-markdown_npm-dev.yml index ff06c2c22..001fb9f44 100644 --- a/.github/workflows/pr_merge_cherry-markdown_npm-dev.yml +++ b/.github/workflows/pr_merge_cherry-markdown_npm-dev.yml @@ -56,10 +56,10 @@ jobs: EOF - - name: Set up Node.js + - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: lts/* + node-version-file: .node-version registry-url: https://registry.npmjs.org/ cache: yarn @@ -67,6 +67,8 @@ jobs: working-directory: ./packages/cherry-markdown run: yarn install && yarn build + - run: npm install -g npm@latest + - name: npm publish working-directory: ./packages/cherry-markdown run: npm publish --tag latest diff --git a/.github/workflows/pr_preview-build.yml b/.github/workflows/pr_preview-build.yml index 463c58377..c9638d2f0 100644 --- a/.github/workflows/pr_preview-build.yml +++ b/.github/workflows/pr_preview-build.yml @@ -20,7 +20,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: lts/* + node-version-file: .node-version cache: 'yarn' - run: yarn install diff --git a/.github/workflows/pr_preview-pkg.yml b/.github/workflows/pr_preview-pkg.yml index c73da0a55..4101de64c 100644 --- a/.github/workflows/pr_preview-pkg.yml +++ b/.github/workflows/pr_preview-pkg.yml @@ -12,7 +12,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: lts/* + node-version-file: .node-version cache: 'yarn' - name: Install dependencies diff --git a/.github/workflows/release-cherry-markdown-build.yaml b/.github/workflows/release-cherry-markdown-build.yaml index 676ee8297..afaa8f5ec 100644 --- a/.github/workflows/release-cherry-markdown-build.yaml +++ b/.github/workflows/release-cherry-markdown-build.yaml @@ -12,10 +12,10 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Setup Node.js lts + - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: lts/* + node-version-file: .node-version registry-url: 'https://registry.npmjs.org' - name: Install dependencies @@ -23,6 +23,8 @@ jobs: yarn yarn build + - run: npm install -g npm@latest + - name: Publish cherry-markdown run: | cp README*.md packages/cherry-markdown/ diff --git a/.node-version b/.node-version new file mode 100644 index 000000000..25bf17fc5 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +18 \ No newline at end of file From f5e01e98be5bb73928c3377f3344b1b437b90128 Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Fri, 19 Dec 2025 10:43:44 +0800 Subject: [PATCH 18/57] =?UTF-8?q?fix:=20#1570=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E8=84=9A=E6=B3=A8=E5=88=97=E8=A1=A8=E9=87=8C?= =?UTF-8?q?=E7=9A=84=E6=A0=87=E5=8F=B7=E6=97=B6=E6=9C=89js=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98=20(#1573)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/hungry-socks-knock.md | 5 +++++ packages/cherry-markdown/src/toolbars/PreviewerBubble.js | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 .changeset/hungry-socks-knock.md diff --git a/.changeset/hungry-socks-knock.md b/.changeset/hungry-socks-knock.md new file mode 100644 index 000000000..983e33849 --- /dev/null +++ b/.changeset/hungry-socks-knock.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +fix: #1570 修复点击脚注列表里的标号时有js报错的问题 diff --git a/packages/cherry-markdown/src/toolbars/PreviewerBubble.js b/packages/cherry-markdown/src/toolbars/PreviewerBubble.js index a40976bb2..f1171d2ea 100644 --- a/packages/cherry-markdown/src/toolbars/PreviewerBubble.js +++ b/packages/cherry-markdown/src/toolbars/PreviewerBubble.js @@ -339,8 +339,11 @@ export default class PreviewerBubble { } // 如果点击的是脚注 if (target instanceof Element && target.nodeName === 'A' && /(footnote|footnote-ref)/.test(target.className)) { - // @ts-ignore - if (this.previewer.$cherry.options.engine?.syntax?.footnote?.refNumber?.clickRefNumberCallback) { + if ( + target.classList.contains('footnote') && + // @ts-ignore + this.previewer.$cherry.options.engine?.syntax?.footnote?.refNumber?.clickRefNumberCallback + ) { const refNum = target.getAttribute('data-index'); const refTitle = target.getAttribute('data-key'); const content = From a685fa766fa31fa1d75f3e1406843e2a3c84343d Mon Sep 17 00:00:00 2001 From: liweijie0812 <674416404@qq.com> Date: Mon, 22 Dec 2025 10:26:58 +0800 Subject: [PATCH 19/57] ci: fix publish npm (#1574) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 更新 pr_merge_cherry-markdown_npm-dev.yml * 更新 release-cherry-markdown-build.yaml --- .github/workflows/pr_merge_cherry-markdown_npm-dev.yml | 4 +++- .github/workflows/release-cherry-markdown-build.yaml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_merge_cherry-markdown_npm-dev.yml b/.github/workflows/pr_merge_cherry-markdown_npm-dev.yml index 001fb9f44..c3f06ebb5 100644 --- a/.github/workflows/pr_merge_cherry-markdown_npm-dev.yml +++ b/.github/workflows/pr_merge_cherry-markdown_npm-dev.yml @@ -67,7 +67,9 @@ jobs: working-directory: ./packages/cherry-markdown run: yarn install && yarn build - - run: npm install -g npm@latest + - uses: actions/setup-node@v4 + with: + node-version: 24 - name: npm publish working-directory: ./packages/cherry-markdown diff --git a/.github/workflows/release-cherry-markdown-build.yaml b/.github/workflows/release-cherry-markdown-build.yaml index afaa8f5ec..d774c0d88 100644 --- a/.github/workflows/release-cherry-markdown-build.yaml +++ b/.github/workflows/release-cherry-markdown-build.yaml @@ -23,7 +23,9 @@ jobs: yarn yarn build - - run: npm install -g npm@latest + - uses: actions/setup-node@v4 + with: + node-version: 24 - name: Publish cherry-markdown run: | From 68017a4eec2705c33b4fd28dc7433097f4f06cc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Sat, 27 Dec 2025 03:23:40 +0800 Subject: [PATCH 20/57] refactor(vscodePlugin): migrate build tool from `webpack` to `rspack` (#1579) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(vscodePlugin): migrate build tool from webpack to rspack * refactor(vscodePlugin): update rspack configuration and build scripts * chore: 统一管理 @types/node 依赖版本 * chore: 添加 skipLibCheck 配置以优化 TypeScript 编译性能 * refactor(i18n): improve localization strings for better clarity and consistency * refactor(vscodePlugin): enhance image upload options and styles, improve localization strings * refactor(vscodePlugin): 重构状态管理和事件处理,简化代码结构 * refactor(uploadFile): 优化上传文件处理逻辑,简化代码结构和错误处理 * refactor: 移除不必要的 TypeScript 依赖,优化依赖管理 * refactor(yarn): 移除不必要的 TypeScript 版本,优化依赖管理 --- .changeset/loud-carrots-attend.md | 7 + .changeset/short-pears-shake.md | 5 + examples/cherry-markdown-publish/package.json | 1 - package.json | 1 + packages/cherry-markdown/package.json | 1 - packages/cherry-markdown/tsconfig.json | 1 + packages/client/package.json | 1 - packages/vscodePlugin/.vscode/tasks.json | 21 +- packages/vscodePlugin/package.json | 27 +- packages/vscodePlugin/package.nls.json | 59 +- packages/vscodePlugin/package.nls.ru.json | 55 +- packages/vscodePlugin/package.nls.zh-cn.json | 37 +- packages/vscodePlugin/rspack.config.ts | 102 + packages/vscodePlugin/src/extension.ts | 298 ++- .../vscodePlugin/src/handler/uploadFile.ts | 118 +- packages/vscodePlugin/src/types/upload.ts | 16 +- packages/vscodePlugin/src/webview.ts | 11 +- packages/vscodePlugin/tsconfig.json | 22 +- .../vscodePlugin/vsc-extension-quickstart.md | 42 - .../web-resources/scripts/index.css | 7 +- .../web-resources/scripts/index.js | 127 +- packages/vscodePlugin/webpack.config.js | 75 - yarn.lock | 1674 +++++++++++++---- 23 files changed, 1791 insertions(+), 917 deletions(-) create mode 100644 .changeset/loud-carrots-attend.md create mode 100644 .changeset/short-pears-shake.md create mode 100644 packages/vscodePlugin/rspack.config.ts delete mode 100644 packages/vscodePlugin/vsc-extension-quickstart.md delete mode 100644 packages/vscodePlugin/webpack.config.js diff --git a/.changeset/loud-carrots-attend.md b/.changeset/loud-carrots-attend.md new file mode 100644 index 000000000..26062b450 --- /dev/null +++ b/.changeset/loud-carrots-attend.md @@ -0,0 +1,7 @@ +--- +'cherry-markdown': patch +'@cherry-markdown/client': patch +'cherry-markdown-vscode-plugin': patch +--- + +chore:`@types/node` 升级为 `@20.10.6` diff --git a/.changeset/short-pears-shake.md b/.changeset/short-pears-shake.md new file mode 100644 index 000000000..e22db439d --- /dev/null +++ b/.changeset/short-pears-shake.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown-vscode-plugin': minor +--- + +refactor(vscodePlugin): 将构建工具从 webpack 迁移到 rspack diff --git a/examples/cherry-markdown-publish/package.json b/examples/cherry-markdown-publish/package.json index 2498c0aa3..945baee6d 100644 --- a/examples/cherry-markdown-publish/package.json +++ b/examples/cherry-markdown-publish/package.json @@ -50,7 +50,6 @@ "@swc/core": "^1.3.102", "@types/jest": "^29.5.11", "@types/js-yaml": "^4.0.9", - "@types/node": "^20.10.6", "@types/supertest": "^2.0.16", "@typescript-eslint/eslint-plugin": "^6.17.0", "@typescript-eslint/parser": "^6.17.0", diff --git a/package.json b/package.json index 75355bab9..3dfb7c4c2 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@commitlint/config-conventional": "^19.6.0", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", + "@types/node": "^20.10.6", "commitlint": "^19.6.1", "eslint": "^8.57.1", "eslint-config-prettier": "^10.1.5", diff --git a/packages/cherry-markdown/package.json b/packages/cherry-markdown/package.json index 714a617bf..64cda042d 100644 --- a/packages/cherry-markdown/package.json +++ b/packages/cherry-markdown/package.json @@ -73,7 +73,6 @@ "@types/jsdom": "^16.2.13", "@types/lodash": "^4.14.170", "@types/mermaid": "^8.2.6", - "@types/node": "^17.0.42", "@types/virtual-dom": "^2.1.0", "async": "^3.2.4", "babel-plugin-prismjs": "^2.1.0", diff --git a/packages/cherry-markdown/tsconfig.json b/packages/cherry-markdown/tsconfig.json index a0e17e75d..091326f4b 100644 --- a/packages/cherry-markdown/tsconfig.json +++ b/packages/cherry-markdown/tsconfig.json @@ -12,6 +12,7 @@ // "outFile": "types/cherry-markdown.d.ts", "outDir": "dist/types", "target": "ES5", + "skipLibCheck": true, "paths": { "@/*": [ "src/*" diff --git a/packages/client/package.json b/packages/client/package.json index d33a64f58..a29af9a45 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -26,7 +26,6 @@ "devDependencies": { "@tauri-apps/cli": "2.2.5", "@vitejs/plugin-vue": "^5.2.1", - "typescript": "~5.6.2", "vite": "^6.0.3", "vue-tsc": "^2.1.10" } diff --git a/packages/vscodePlugin/.vscode/tasks.json b/packages/vscodePlugin/.vscode/tasks.json index 34f36a490..bb9d40196 100644 --- a/packages/vscodePlugin/.vscode/tasks.json +++ b/packages/vscodePlugin/.vscode/tasks.json @@ -7,10 +7,23 @@ "label": "yarn:watch", "type": "npm", "script": "watch", - "problemMatcher": [ - "$tsc-watch", - "$eslint-compact" - ], + "problemMatcher": { + "owner": "rspack", + "fileLocation": ["relative", "${workspaceFolder}"], + "pattern": { + "regexp": "^(.*):(\\d+):(\\d+):\\s+(error|warning):\\s+(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + }, + "background": { + "activeOnStart": true, + "beginsPattern": "^\\s*Compiling", + "endsPattern": "^\\s*(Successfully|Failed)" + } + }, "isBackground": true, "presentation": { "reveal": "never" diff --git a/packages/vscodePlugin/package.json b/packages/vscodePlugin/package.json index 9556b4e34..0336415a8 100644 --- a/packages/vscodePlugin/package.json +++ b/packages/vscodePlugin/package.json @@ -148,12 +148,14 @@ "type": "string", "enum": [ "%backfillImageProps.enum.isBorder%", + "%backfillImageProps.enum.isNotBorder%", "%backfillImageProps.enum.isShadow%", "%backfillImageProps.enum.isRadius%" ], "description": "Select multiple items", "enumDescriptions": [ "%backfillImageProps.enumDescriptions.isBorder%", + "%backfillImageProps.enumDescriptions.isNotBorder%", "%backfillImageProps.enumDescriptions.isShadow%", "%backfillImageProps.enumDescriptions.isRadius%" ] @@ -166,29 +168,20 @@ }, "scripts": { "build": "vsce package", - "vscode:prepublish": "npm run package", - "compile": "webpack", - "watch": "webpack --watch", - "package": "webpack --mode production --devtool hidden-source-map", - "test-compile": "tsc -p ./", - "test-watch": "tsc -watch -p ./", - "pretest": "npm run test-compile && npm run lint", + "vscode:prepublish": "yarn package", + "compile": "rspack build", + "watch": "rspack build --watch", + "package": "rspack build --mode production --devtool hidden-source-map", "lint": "cd ../.. && npx prettier --check packages/vscodePlugin/src/**/*.ts && npx eslint packages/vscodePlugin/src/**/*.ts", - "lint:fix": "cd ../.. && npx prettier --write packages/vscodePlugin/src/**/*.ts && npx eslint packages/vscodePlugin/src/**/*.ts --fix", - "test": "node ./out/test/runTest.js" + "lint:fix": "cd ../.. && npx prettier --write packages/vscodePlugin/src/**/*.ts && npx eslint packages/vscodePlugin/src/**/*.ts --fix" }, "devDependencies": { - "@babel/core": "^7.20.12", - "@babel/preset-env": "^7.20.2", + "@rspack/cli": "^1.5.3", + "@rspack/core": "^1.5.3", "@types/glob": "^7.1.3", - "@types/node": "14.x", "@types/vscode": "^1.58.0", - "babel-loader": "^9.1.2", "glob": "^7.1.7", - "mocha": "^8.4.0", - "ts-loader": "^9.2.2", - "webpack": "^5.38.1", - "webpack-cli": "^4.7.0" + "mocha": "^8.4.0" }, "dependencies": { "@types/mathjax": "0.0.37", diff --git a/packages/vscodePlugin/package.nls.json b/packages/vscodePlugin/package.nls.json index 3c5838de4..2030aa1d2 100644 --- a/packages/vscodePlugin/package.nls.json +++ b/packages/vscodePlugin/package.nls.json @@ -1,33 +1,36 @@ { - "description": "A markdown previewer powered by [cherry-markdown](https://github.com/Tencent/cherry-markdown)", - "commands.preview.title": "Preview In Cherry Markdown", - "usage.enum.active": "active", - "usage.enum.only-manual": "only-manual", - "usage.description": "cherry-markdown's triggering method values: [ active | only-manual ]", - "theme.enum.default": "default", - "theme.enum.dark": "dark", - "theme.enum.green": "green", - "theme.enum.red": "red", - "theme.description": "cherry-markdown's theme, available values: [ default | dark | green | red ]", + "description": "A Markdown previewer for VS Code, powered by [cherry-markdown](https://github.com/Tencent/cherry-markdown)", + "commands.preview.title": "Preview in Cherry Markdown", + "usage.enum.active": "Active", + "usage.enum.only-manual": "Manual only", + "usage.description": "Trigger mode for Cherry Markdown — options: [ Active | Manual only ]", + "theme.enum.default": "Default", + "theme.enum.dark": "Dark", + "theme.enum.green": "Green", + "theme.enum.red": "Red", + "theme.description": "Theme for Cherry Markdown — options: [ Default | Dark | Green | Red ]", "uploadType.enum.None": "None", "uploadType.enum.CustomUploader": "CustomUploader", "uploadType.enum.PicGoServer": "PicGoServer", - "uploadType.enumDescriptions.None": "dont use any uploader, use base64 to show image", - "uploadType.enumDescriptions.CustomUploader": "use custom uploader", - "uploadType.enumDescriptions.PicGoServer": "use picgo server", - "uploadType.description": "cherry-markdown's upload mode, available values: [ None | CustomUploader | PicGoServer ]", - "customUploader.enable.description": "enable custom uploader", - "customUploader.url.description": "custom uploader url", - "customUploader.headers.description": "custom uploader headers", - "customUploader.headers.key.description": "custom uploader headers key", - "customUploader.headers.value.description": "custom uploader headers value", - "customUploader.description": "cherry-markdown's custom uploader, you need config it if you want to upload images / video / audio to your own server", - "picGoServer.description": "cherry-markdown's picgo server, you need config it if you want to upload images / video / audio to picgo server,", - "backfillImageProps.enum.isBorder": "isBorder", - "backfillImageProps.enum.isNotBorder": "isNotBorder", - "backfillImageProps.enum.isRadius": "isRadius", - "backfillImageProps.enumDescriptions.isBorder": "Whether to add a border to the image", - "backfillImageProps.enumDescriptions.isShadow": "Whether to add a shadow to the image", - "backfillImageProps.enumDescriptions.isRadius": "Whether to add a rounded corner to the image", - "backfillImageProps.description": "cherry-markdown's backfill image props, you need config it if you want to backfill image props" + "uploadType.enumDescriptions.None": "Don't use an uploader; use base64 to display images", + "uploadType.enumDescriptions.CustomUploader": "Use a custom uploader", + "uploadType.enumDescriptions.PicGoServer": "Use a PicGo server", + "uploadType.description": "Upload mode for Cherry Markdown — options: [ None | CustomUploader | PicGoServer ]", + "customUploader.enable.description": "Enable custom uploader", + "customUploader.url.description": "Custom uploader URL", + "customUploader.headers": "Custom uploader HTTP headers", + "customUploader.headers.description": "Custom uploader HTTP headers", + "customUploader.headers.key.description": "Header name", + "customUploader.headers.value.description": "Header value", + "customUploader.description": "Configure a custom uploader to send images, videos, or audio to your own server.", + "picGoServer.description": "Configure a PicGo server to upload images, videos, or audio to PicGo.", + "backfillImageProps.enum.isBorder": "Border", + "backfillImageProps.enum.isNotBorder": "No border", + "backfillImageProps.enum.isShadow": "Shadow", + "backfillImageProps.enum.isRadius": "Rounded corners", + "backfillImageProps.enumDescriptions.isBorder": "Apply a border to the image", + "backfillImageProps.enumDescriptions.isNotBorder": "Do not apply a border to the image", + "backfillImageProps.enumDescriptions.isShadow": "Apply a shadow to the image", + "backfillImageProps.enumDescriptions.isRadius": "Apply rounded corners to the image", + "backfillImageProps.description": "Image backfill properties for Cherry Markdown — configure borders, shadows, or rounded corners for images." } diff --git a/packages/vscodePlugin/package.nls.ru.json b/packages/vscodePlugin/package.nls.ru.json index cc6494787..966612cde 100644 --- a/packages/vscodePlugin/package.nls.ru.json +++ b/packages/vscodePlugin/package.nls.ru.json @@ -1,33 +1,36 @@ { - "description": "Просмотрщик markdown, работающий на [cherry-markdown](https://github.com/Tencent/cherry-markdown)", + "description": "Просмотрщик Markdown для VS Code, основанный на [cherry-markdown](https://github.com/Tencent/cherry-markdown)", "commands.preview.title": "Просмотр в Cherry Markdown", - "usage.enum.active": "активный", - "usage.enum.only-manual": "только вручную", - "usage.description": "значения метода триггера cherry-markdown: [ активный | только вручную ]", - "theme.enum.default": "по умолчанию", - "theme.enum.dark": "темный", - "theme.enum.green": "зеленый", - "theme.enum.red": "красный", - "theme.description": "тема cherry-markdown, доступные значения: [ по умолчанию | темный | зеленый | красный ]", + "usage.enum.active": "Активный", + "usage.enum.only-manual": "Только вручную", + "usage.description": "Режим триггера Cherry Markdown — параметры: [ Активный | Только вручную ]", + "theme.enum.default": "По умолчанию", + "theme.enum.dark": "Тёмная", + "theme.enum.green": "Зелёная", + "theme.enum.red": "Красная", + "theme.description": "Тема Cherry Markdown — параметры: [ По умолчанию | Тёмная | Зелёная | Красная ]", "uploadType.enum.None": "Нет", "uploadType.enum.CustomUploader": "Пользовательский загрузчик", "uploadType.enum.PicGoServer": "PicGoServer", - "uploadType.enumDescriptions.None": "не использовать загрузчик, использовать base64 для отображения изображения", - "uploadType.enumDescriptions.CustomUploader": "использовать пользовательский загрузчик", - "uploadType.enumDescriptions.PicGoServer": "использовать сервер picgo", - "uploadType.description": "режим загрузки cherry-markdown, доступные значения: [ Нет | Пользовательский загрузчик | PicGoServer ]", - "customUploader.enable.description": "включить пользовательский загрузчик", + "uploadType.enumDescriptions.None": "Не использовать загрузчик; использовать base64 для отображения изображений", + "uploadType.enumDescriptions.CustomUploader": "Использовать пользовательский загрузчик", + "uploadType.enumDescriptions.PicGoServer": "Использовать сервер PicGo", + "uploadType.description": "Режим загрузки Cherry Markdown — параметры: [ Нет | Пользовательский загрузчик | PicGoServer ]", + "customUploader.enable.description": "Включить пользовательский загрузчик", "customUploader.url.description": "URL пользовательского загрузчика", - "customUploader.headers.description": "заголовки пользовательского загрузчика", - "customUploader.headers.key.description": "ключ заголовков пользовательского загрузчика", - "customUploader.headers.value.description": "значение заголовков пользовательского загрузчика", - "customUploader.description": "пользовательский загрузчик cherry-markdown, необходимо настроить его, если вы хотите загружать изображения / видео / аудио на свой сервер", - "picGoServer.description": "сервер picgo cherry-markdown, необходимо настроить его, если вы хотите загружать изображения / видео / аудио на сервер picgo", - "backfillImageProps.enum.isBorder": "с границей", - "backfillImageProps.enum.isNotBorder": "без границы", - "backfillImageProps.enum.isRadius": "с радиусом", - "backfillImageProps.enumDescriptions.isBorder": "Добавить ли границу к изображению", - "backfillImageProps.enumDescriptions.isShadow": "Добавить ли тень к изображению", - "backfillImageProps.enumDescriptions.isRadius": "Добавить ли закругленные углы к изображению", - "backfillImageProps.description": "свойства обратного заполнения изображения cherry-markdown, необходимо настроить их, если вы хотите заполнить свойства изображения" + "customUploader.headers": "HTTP-заголовки для пользовательского загрузчика", + "customUploader.headers.description": "HTTP-заголовки для пользовательского загрузчика", + "customUploader.headers.key.description": "Имя заголовка", + "customUploader.headers.value.description": "Значение заголовка", + "customUploader.description": "Настройте пользовательский загрузчик, чтобы отправлять изображения, видео или аудио на ваш сервер.", + "picGoServer.description": "Настройте сервер PicGo для загрузки изображений, видео или аудио на PicGo.", + "backfillImageProps.enum.isBorder": "Граница", + "backfillImageProps.enum.isNotBorder": "Без границы", + "backfillImageProps.enum.isShadow": "Тень", + "backfillImageProps.enum.isRadius": "Скруглённые углы", + "backfillImageProps.enumDescriptions.isBorder": "Добавить границу к изображению", + "backfillImageProps.enumDescriptions.isNotBorder": "Не добавлять границу к изображению", + "backfillImageProps.enumDescriptions.isShadow": "Добавить тень к изображению", + "backfillImageProps.enumDescriptions.isRadius": "Добавить скруглённые углы к изображению", + "backfillImageProps.description": "Параметры оформления изображений в Cherry Markdown — настройте границы, тени и скругления для изображений." } diff --git a/packages/vscodePlugin/package.nls.zh-cn.json b/packages/vscodePlugin/package.nls.zh-cn.json index 59b9790b5..bf498169d 100644 --- a/packages/vscodePlugin/package.nls.zh-cn.json +++ b/packages/vscodePlugin/package.nls.zh-cn.json @@ -1,33 +1,36 @@ { - "description": "由 [cherry-markdown](https://github.com/Tencent/cherry-markdown) 提供支持的 Markdown 预览器", + "description": "适用于 VS Code 的 Markdown 预览器,基于 [cherry-markdown](https://github.com/Tencent/cherry-markdown)", "commands.preview.title": "在 Cherry Markdown 中预览", "usage.enum.active": "激活", "usage.enum.only-manual": "仅手动", - "usage.description": "cherry-markdown 的触发方式值:[ 激活 | 仅手动 ]", + "usage.description": "cherry-markdown 的触发模式 — 可选项:[ 激活 | 仅手动 ]", "theme.enum.default": "默认", - "theme.enum.dark": "黑暗", + "theme.enum.dark": "深色", "theme.enum.green": "绿色", "theme.enum.red": "红色", - "theme.description": "cherry-markdown 的主题,可用值:[ 默认 | 黑暗 | 绿色 | 红色 ]", + "theme.description": "cherry-markdown 的主题 — 可选项:[ 默认 | 深色 | 绿色 | 红色 ]", "uploadType.enum.None": "无", "uploadType.enum.CustomUploader": "自定义上传器", "uploadType.enum.PicGoServer": "PicGo 服务器", - "uploadType.enumDescriptions.None": "不使用任何上传器,使用 base64 显示图像", + "uploadType.enumDescriptions.None": "不使用上传器,使用 base64 显示图像", "uploadType.enumDescriptions.CustomUploader": "使用自定义上传器", "uploadType.enumDescriptions.PicGoServer": "使用 PicGo 服务器", - "uploadType.description": "cherry-markdown 的上传模式,可用值:[ 无 | 自定义上传器 | PicGo 服务器 ]", + "uploadType.description": "cherry-markdown 的上传模式 — 可选项:[ 无 | 自定义上传器 | PicGo 服务器 ]", "customUploader.enable.description": "启用自定义上传器", "customUploader.url.description": "自定义上传器 URL", - "customUploader.headers.description": "自定义上传器头信息", - "customUploader.headers.key.description": "自定义上传器头信息键", - "customUploader.headers.value.description": "自定义上传器头信息值", - "customUploader.description": "cherry-markdown 的自定义上传器,如果你想将图像/视频/音频上传到自己的服务器,需要配置它", - "picGoServer.description": "cherry-markdown 的 PicGo 服务器,如果你想将图像/视频/音频上传到 PicGo 服务器,需要配置它", - "backfillImageProps.enum.isBorder": "有边框", + "customUploader.headers": "自定义上传器 HTTP 头", + "customUploader.headers.description": "用于自定义上传器的 HTTP 头", + "customUploader.headers.key.description": "头名称", + "customUploader.headers.value.description": "头的值", + "customUploader.description": "配置自定义上传器以将图像、视频或音频上传到你的服务器。", + "picGoServer.description": "配置 PicGo 服务器以将图像、视频或音频上传到 PicGo。", + "backfillImageProps.enum.isBorder": "边框", "backfillImageProps.enum.isNotBorder": "无边框", - "backfillImageProps.enum.isRadius": "有圆角", - "backfillImageProps.enumDescriptions.isBorder": "是否为图像添加边框", - "backfillImageProps.enumDescriptions.isShadow": "是否为图像添加阴影", - "backfillImageProps.enumDescriptions.isRadius": "是否为图像添加圆角", - "backfillImageProps.description": "cherry-markdown 的回填图像属性,如果你想回填图像属性,需要配置它" + "backfillImageProps.enum.isShadow": "阴影", + "backfillImageProps.enum.isRadius": "圆角", + "backfillImageProps.enumDescriptions.isBorder": "为图像添加边框", + "backfillImageProps.enumDescriptions.isNotBorder": "不为图像添加边框", + "backfillImageProps.enumDescriptions.isShadow": "为图像添加阴影", + "backfillImageProps.enumDescriptions.isRadius": "为图像添加圆角", + "backfillImageProps.description": "cherry-markdown 的图像修饰选项 — 可通过配置为图像添加边框、阴影或圆角。" } diff --git a/packages/vscodePlugin/rspack.config.ts b/packages/vscodePlugin/rspack.config.ts new file mode 100644 index 000000000..c36fc8d79 --- /dev/null +++ b/packages/vscodePlugin/rspack.config.ts @@ -0,0 +1,102 @@ +import { Configuration } from '@rspack/core'; +import * as path from 'path'; +import * as fs from 'fs'; + +// 构建前清理 dist 目录 +const distPath = path.resolve(__dirname, 'dist'); +if (fs.existsSync(distPath)) { + fs.rmSync(distPath, { recursive: true }); +} + +// VSCode 扩展配置 (Node.js 环境) +const extensionConfig: Configuration = { + target: 'node', + mode: 'none', + entry: { + extension: './src/extension.ts', + }, + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name].js', + libraryTarget: 'commonjs2', + clean: false, // 已手动清理 + }, + devtool: 'nosources-source-map', + externals: { + vscode: 'commonjs vscode', + }, + resolve: { + extensions: ['.ts', '.js'], + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + loader: 'builtin:swc-loader', + options: { + jsc: { + parser: { + syntax: 'typescript', + }, + target: 'es2020', + }, + }, + type: 'javascript/auto', + }, + ], + }, + optimization: { + minimize: isProduction, + splitChunks: { + chunks: 'all', + }, + }, + performance: { + hints: isProduction ? 'warning' : false, + }, +}; + +// Webview 配置 (浏览器环境) +const argv = process.argv.join(' '); +const isProduction = argv.includes('--mode production') || process.env.RSPACK_BUILD_MODE === 'production' || process.env.NODE_ENV === 'production'; +const webviewConfig: Configuration = { + target: 'web', + mode: isProduction ? 'production' : 'development', + entry: { + index: './web-resources/scripts/index.js', + }, + output: { + // 输出到 web-resources/dist 以便 webview 直接加载 + path: path.resolve(__dirname, 'web-resources', 'dist'), + filename: '[name].js', + libraryTarget: 'umd', + clean: false, + }, + devtool: isProduction ? 'hidden-source-map' : 'source-map', + resolve: { + extensions: ['.ts', '.js'], + }, + module: { + rules: [ + { + test: /\.m?js$/, + exclude: /node_modules/, + loader: 'builtin:swc-loader', + options: { + jsc: { + parser: { + syntax: 'ecmascript', + }, + }, + env: { + targets: '> 0.25%, not dead', + }, + }, + type: 'javascript/auto', + }, + ], + }, +}; + +export default [extensionConfig, webviewConfig]; diff --git a/packages/vscodePlugin/src/extension.ts b/packages/vscodePlugin/src/extension.ts index ce53a5201..a6ff435fb 100644 --- a/packages/vscodePlugin/src/extension.ts +++ b/packages/vscodePlugin/src/extension.ts @@ -3,62 +3,57 @@ import * as path from 'path'; import { getWebviewContent } from './webview'; import { uploadFileHandler } from './handler/uploadFile'; -let cherryPanel: vscode.WebviewPanel; // 保存预览窗口的webview实例 -let isCherryPanelInit: boolean = false; -let extensionPath: string = ''; -let targetDocument: vscode.TextEditor; -let disableScrollTrigger: boolean = false; // true:滚动时不往webview发送滚动事件,反之发送 -let disableEditTrigger: boolean = false; // true:变更内容时不往webview发送内容变更事件,反之发送 -let cherryTheme: string | undefined = vscode.workspace.getConfiguration('cherryMarkdown').get('Theme'); // 缓存主题 -export function activate(context: vscode.ExtensionContext) { - extensionPath = context.extensionPath; - // 注册命令 - const disposable = vscode.commands.registerCommand('cherrymarkdown.preview', () => { - triggerEditorContentChange(true); - }); - - context.subscriptions.push(disposable); - - // 打开文件的时候触发 - vscode.workspace.onDidOpenTextDocument(() => { - triggerEditorContentChange(); - }); - - // 切换文件的时候更新预览区域内容 - vscode.window.onDidChangeActiveTextEditor((e) => { - const cherryUsage: 'active' | 'only-manual' | undefined = vscode.workspace - .getConfiguration('cherryMarkdown') - .get('Usage'); +// 状态管理器 +// 更简化的状态对象 +const state = { + panel: undefined as vscode.WebviewPanel | undefined, + targetEditor: undefined as vscode.TextEditor | undefined, + webviewMsgDisposable: undefined as vscode.Disposable | undefined, + extPath: '', + scrollTimeout: undefined as ReturnType | undefined, + editTimeout: undefined as ReturnType | undefined, + disableScroll: false, + disableEdit: false, + isPanelInit: false, + theme: vscode.workspace.getConfiguration('cherryMarkdown').get('theme') as string | undefined, + reset() { + if (this.scrollTimeout) clearTimeout(this.scrollTimeout); + if (this.editTimeout) clearTimeout(this.editTimeout); + this.webviewMsgDisposable?.dispose(); + this.panel = undefined; + this.targetEditor = undefined; + this.webviewMsgDisposable = undefined; + this.scrollTimeout = undefined; + this.editTimeout = undefined; + this.disableScroll = false; + this.disableEdit = false; + this.isPanelInit = false; + this.theme = vscode.workspace.getConfiguration('cherryMarkdown').get('theme') as string | undefined; + }, +}; - if (e?.document && cherryUsage === 'active') { - triggerEditorContentChange(); - // 如果打开的不是md文件,则让cherry强制进入预览模式 - if (e.document.languageId !== 'markdown' && targetDocument) { - cherryPanel.webview.postMessage({ cmd: 'disable-edit', data: {} }); - } else { - cherryPanel.webview.postMessage({ cmd: 'enable-edit', data: {} }); +export function activate(context: vscode.ExtensionContext) { + state.extPath = context.extensionPath; + context.subscriptions.push( + vscode.commands.registerCommand('cherrymarkdown.preview', () => triggerEditorContentChange(true)), + ); + context.subscriptions.push(vscode.workspace.onDidOpenTextDocument(() => triggerEditorContentChange())); + context.subscriptions.push(vscode.window.onDidChangeActiveTextEditor((e) => handleActiveEditorChange(e))); + context.subscriptions.push( + vscode.workspace.onDidChangeTextDocument((e) => { + if (state.isPanelInit && e?.document && !state.disableEdit) { + triggerEditorContentChange(); } - } - }); - - // 当修改文档内容的时候更新预览区域内容,如果已经关闭预览了,则不需要重新打开预览 - vscode.workspace.onDidChangeTextDocument((e) => { - if (isCherryPanelInit && e?.document && !disableEditTrigger) { - triggerEditorContentChange(); - } - }); - - // 滚动的时候让预览区域同步滚动 - vscode.window.onDidChangeTextEditorVisibleRanges((e) => { - if (!isCherryPanelInit) { - return true; - } - disableScrollTrigger || - cherryPanel.webview.postMessage({ - cmd: 'editor-scroll', - data: e.visibleRanges[0].start.line, - }); - }); + }), + ); + context.subscriptions.push( + vscode.window.onDidChangeTextEditorVisibleRanges((e) => { + if (!state.isPanelInit || !state.panel) return; + if (!state.disableScroll) { + state.panel.webview.postMessage({ cmd: 'editor-scroll', data: e.visibleRanges[0].start.line }); + } + }), + ); } // this method is called when your extension is deactivated @@ -69,139 +64,136 @@ export function deactivate() {} * @returns */ const getMarkdownFileInfo = () => { - let currentEditor = vscode.window.activeTextEditor; - // const currentLine = currentEditor?.visibleRanges[0].start.line; - let currentDoc = currentEditor?.document; - let currentText = ''; - let currentTitle = ''; - if (currentDoc?.languageId !== 'markdown' && targetDocument.document.languageId === 'markdown') { - currentEditor = targetDocument; - currentDoc = targetDocument.document; + let editor = vscode.window.activeTextEditor; + let doc = editor?.document; + let text = ''; + let title = ''; + if (doc?.languageId !== 'markdown' && state.targetEditor?.document?.languageId === 'markdown') { + editor = state.targetEditor; + doc = state.targetEditor?.document; } - if (currentDoc?.languageId === 'markdown') { - if (currentEditor) { - targetDocument = currentEditor; - } - currentText = currentDoc?.getText() || ''; - currentTitle = path.basename(currentDoc?.fileName) || ''; + if (doc?.languageId === 'markdown' && editor) { + state.targetEditor = editor; + text = doc.getText() || ''; + title = path.basename(doc.fileName) || ''; } - - currentTitle = currentTitle - ? `${vscode.l10n.t('Preview')} ${currentTitle} ${vscode.l10n.t('By')} Cherry Markdown` + title = title + ? `${vscode.l10n.t('Preview')} ${title} ${vscode.l10n.t('By')} Cherry Markdown` : `${vscode.l10n.t('UnSupported')} ${vscode.l10n.t('By')} Cherry Markdown`; - const theme = cherryTheme ? cherryTheme : vscode.workspace.getConfiguration('cherryMarkdown').get('Theme'); - const mdInfo = { text: currentText, theme }; - return { mdInfo, currentTitle }; + const theme = state.theme ?? vscode.workspace.getConfiguration('cherryMarkdown').get('theme'); + return { mdInfo: { text, theme }, currentTitle: title }; }; /** * 初始化cherry预览窗口 */ const initCherryPanel = () => { + if (state.isPanelInit && state.panel) { + state.panel.reveal(vscode.ViewColumn.Two); + return; + } const { mdInfo, currentTitle } = getMarkdownFileInfo(); const workspaceFolder = vscode.workspace.workspaceFolders?.[0].uri.fsPath ?? ''; - cherryPanel = vscode.window.createWebviewPanel('cherrymarkdown.preview', currentTitle, vscode.ViewColumn.Two, { + state.panel = vscode.window.createWebviewPanel('cherrymarkdown.preview', currentTitle, vscode.ViewColumn.Two, { enableScripts: true, retainContextWhenHidden: true, localResourceRoots: [ - vscode.Uri.file(path.join(extensionPath, 'web-resources')), - vscode.Uri.file(path.join(extensionPath, 'dist')), + vscode.Uri.file(path.join(state.extPath, 'web-resources')), + vscode.Uri.file(path.join(state.extPath, 'web-resources', 'dist')), vscode.Uri.file(workspaceFolder), ], }); - console.log('vscode.env.language', vscode.env.language); - cherryPanel.webview.html = getWebviewContent( - { ...mdInfo, vscodeLanguage: vscode.env.language }, - cherryPanel, - extensionPath, - ); - cherryPanel.iconPath = vscode.Uri.file(path.join(extensionPath, 'favicon.ico')); - isCherryPanelInit = true; - + try { + state.panel.webview.html = getWebviewContent( + { ...mdInfo, vscodeLanguage: vscode.env.language }, + state.panel, + state.extPath, + ); + } catch (err) { + vscode.window.showErrorMessage('Failed to initialize Cherry Markdown webview.'); + console.error(err); + } + state.panel.iconPath = vscode.Uri.file(path.join(state.extPath, 'favicon.ico')); + state.isPanelInit = true; + state.panel.onDidDispose(() => state.reset()); initCherryPanelEvent(); }; -let scrollTimeOut: ReturnType | undefined; -let editTimeOut: ReturnType | undefined; const initCherryPanelEvent = () => { - cherryPanel?.webview?.onDidReceiveMessage(async (e) => { + if (!state.panel) return; + state.webviewMsgDisposable?.dispose(); + state.webviewMsgDisposable = state.panel.webview.onDidReceiveMessage(async (e) => { const { type, data } = e; switch (type) { - // 滚动的时候同步滚动 - case 'preview-scroll': - disableScrollTrigger = true; - // eslint-disable-next-line no-case-declarations + case 'preview-scroll': { + state.disableScroll = true; + if (!state.targetEditor) return; const pos = new vscode.Position(data, 0); - // eslint-disable-next-line no-case-declarations const range = new vscode.Range(pos, pos); - targetDocument.revealRange(range, vscode.TextEditorRevealType.AtTop); - scrollTimeOut && clearTimeout(scrollTimeOut); - scrollTimeOut = setTimeout(() => { - disableScrollTrigger = false; + state.targetEditor.revealRange(range, vscode.TextEditorRevealType.AtTop); + if (state.scrollTimeout) clearTimeout(state.scrollTimeout); + state.scrollTimeout = setTimeout(() => { + state.disableScroll = false; }, 500); return; - // 变更主题的时候同时更新配置 - case 'change-theme': - cherryTheme = data; + } + case 'change-theme': { + state.theme = data; vscode.workspace.getConfiguration('cherryMarkdown').update('theme', data, true); break; - // 内容变更的时候同时更新对应的文档内容 - case 'cherry-change': - disableEditTrigger = true; - targetDocument.edit((editBuilder) => { - const endNum = targetDocument.document.lineCount + 1; + } + case 'cherry-change': { + if (!state.targetEditor) break; + state.disableEdit = true; + state.targetEditor.edit((editBuilder) => { + const endNum = state.targetEditor!.document.lineCount + 1; const end = new vscode.Position(endNum, 0); editBuilder.replace(new vscode.Range(new vscode.Position(0, 0), end), data.markdown); }); - editTimeOut && clearTimeout(editTimeOut); - editTimeOut = setTimeout(() => { - disableEditTrigger = false; + if (state.editTimeout) clearTimeout(state.editTimeout); + state.editTimeout = setTimeout(() => { + state.disableEdit = false; }, 500); break; + } case 'tips': vscode.window.showInformationMessage(data, 'OK'); break; case 'cherry-load-img': - // vscode.window.showInformationMessage('暂不支持展示图片,如需要,请前往 https://github.com/Tencent/cherry-markdown 反馈', 'OK'); - // loadOneImg(data); + // 可扩展图片加载逻辑 break; - case 'upload-file': - uploadFileHandler(data).then((res) => { - if (res.url !== '') { - cherryPanel.webview.postMessage({ - cmd: 'upload-file-callback', - data: res, - }); + case 'upload-file': { + try { + const res = await uploadFileHandler(data); + if (res.url) { + state.panel?.webview.postMessage({ cmd: 'upload-file-callback', data: res }); } else { vscode.window.showInformationMessage('上传不成功'); } - }); + } catch (err) { + vscode.window.showErrorMessage('上传失败'); + console.error(err); + } break; + } case 'open-url': { if (data === 'href-invalid') { vscode.window.showErrorMessage('link is not valid, please check it.'); return; } - // http/https协议的链接,直接打开 if (/^(http|https):\/\//.test(data)) { vscode.env.openExternal(vscode.Uri.parse(data)); return; } - // 本地绝对路径,打开文件(绝对路径需要解码) const decodedData = decodeURIComponent(data); if (path.isAbsolute(decodedData)) { const decodedDataPath = vscode.Uri.file(decodedData); - vscode.commands.executeCommand('vscode.open', decodedDataPath, { - preview: true, - }); - return; - } - // 以#开头的锚点不处理 - if (data.startsWith('#')) { + vscode.commands.executeCommand('vscode.open', decodedDataPath, { preview: true }); return; } - // 本地相对路径,打开文件 - const uri = vscode.Uri.file(path.join(targetDocument.document.uri.fsPath, '..', data)); + if (data.startsWith('#')) return; + if (!state.targetEditor) return; + const uri = vscode.Uri.file(path.join(state.targetEditor.document.uri.fsPath, '..', data)); vscode.commands.executeCommand('vscode.open', uri, { preview: true }); break; } @@ -210,19 +202,12 @@ const initCherryPanelEvent = () => { vscode.window.showErrorMessage('导出错误,请重新尝试'); return; } - const uri = await vscode.window.showSaveDialog({ - filters: { - Images: ['png'], - }, + filters: { Images: ['png'] }, saveLabel: '保存截图', }); - - // 如果用户选择了保存路径 if (uri) { - // 去掉 Base64 前缀 const base64Data = data.replace(/^data:image\/png;base64,/, ''); - // 将 Base64 数据转换为 Buffer const buffer = Buffer.from(base64Data, 'base64'); await vscode.workspace.fs.writeFile(uri, buffer); vscode.window.showInformationMessage('Image saved successfully!'); @@ -233,27 +218,34 @@ const initCherryPanelEvent = () => { } } }); - cherryPanel?.onDidDispose(() => { - isCherryPanelInit = false; - }); +}; + +// handle active editor change +const handleActiveEditorChange = (e: vscode.TextEditor | undefined) => { + const cherryUsage = vscode.workspace.getConfiguration('cherryMarkdown').get<'active' | 'only-manual'>('Usage'); + if (!e?.document || cherryUsage !== 'active') return; + triggerEditorContentChange(); + if (e.document.languageId !== 'markdown') { + state.panel?.webview.postMessage({ cmd: 'disable-edit', data: {} }); + } else { + state.panel?.webview.postMessage({ cmd: 'enable-edit', data: {} }); + } }; /** * 向预览区发送vscode编辑区内容变更的消息 */ -const triggerEditorContentChange = (focus: boolean = false) => { - if (isCherryPanelInit) { +const triggerEditorContentChange = (focus = false) => { + if (state.isPanelInit && state.panel) { const { mdInfo, currentTitle } = getMarkdownFileInfo(); - cherryPanel.title = currentTitle; - cherryPanel.webview.postMessage({ cmd: 'editor-change', data: mdInfo }); - } else { - if (vscode.window.activeTextEditor?.document?.languageId === 'markdown') { - const cherryUsage: 'active' | 'only-manual' | undefined = vscode.workspace - .getConfiguration('cherryMarkdown') - .get('Usage'); - if (cherryUsage === 'active' || focus) { - initCherryPanel(); - } + state.panel.title = currentTitle; + state.panel.webview.postMessage({ cmd: 'editor-change', data: mdInfo }); + return; + } + if (vscode.window.activeTextEditor?.document?.languageId === 'markdown') { + const cherryUsage = vscode.workspace.getConfiguration('cherryMarkdown').get<'active' | 'only-manual'>('Usage'); + if (cherryUsage === 'active' || focus) { + initCherryPanel(); } } }; diff --git a/packages/vscodePlugin/src/handler/uploadFile.ts b/packages/vscodePlugin/src/handler/uploadFile.ts index 0815f8cb8..90a870ae8 100644 --- a/packages/vscodePlugin/src/handler/uploadFile.ts +++ b/packages/vscodePlugin/src/handler/uploadFile.ts @@ -1,82 +1,101 @@ import * as vscode from 'vscode'; -import { - UploadType, - // eslint-disable-next-line no-unused-vars - // CustomUploader, - BackfillImageProps, - BackfillImage, -} from '../types'; +import { UploadType, CustomUploader, BackfillImageProps, BackfillImage } from '../types'; import axios, { AxiosResponse } from 'axios'; - export interface FileInfo { name: string; type: string; path: string; size: number; } - export interface UploadFileHandlerRes extends BackfillImage { name: string; url: string; poster?: string; } - -export const uploadFileHandler = async (fileInfo: FileInfo) => { +export const uploadFileHandler = async (fileInfo: FileInfo): Promise => { const { name = '', type = '', path = '' } = fileInfo; - - const UploadType = vscode.workspace.getConfiguration('cherryMarkdown').get('UploadType'); - + const uploadType = vscode.workspace.getConfiguration('cherryMarkdown').get('UploadType'); const res: UploadFileHandlerRes = { name, url: '' }; - - const BackfillImageProps = vscode.workspace + const backfillImageProps = vscode.workspace .getConfiguration('cherryMarkdown') .get('BackfillImageProps', []); - // eslint-disable-next-line no-param-reassign - BackfillImageProps.reduce((prev, curr) => ((prev[curr] = true), prev), res); - - switch (UploadType) { - case 'CustomUploader': - // const CustomUploader = vscode.workspace - // .getConfiguration('cherryMarkdown') - // .get('CustomUploader'); + if (Array.isArray(backfillImageProps)) { + backfillImageProps.forEach((prop) => { + (res as any)[prop] = true; + }); + } - // if (CustomUploader?.enable !== true) { - // vscode.window.showInformationMessage('请完善自定义上传配置'); - // throw new Error('请完善自定义上传配置'); - // } - // if (/^(http|https):\/\//.test(CustomUploader.url) == false) { - // vscode.window.showInformationMessage('自定义上传地址格式不正确'); - // throw new Error('自定义上传地址格式不正确'); - // } - // const file = await vscode.workspace.fs.readFile(vscode.Uri.file(path)); - // // 将file上传到自定义的地址 - // // 这里涉及到一些上传服务需要签名校验,并且响应体格式不一致,这里要再讨论 - // const customUpload = await axios.post(CustomUploader.url, file); - vscode.window.showInformationMessage('自定义上传暂未开发'); - throw new Error('自定义上传暂未开发'); + switch (uploadType) { + case 'CustomUploader': { + const customUploader = vscode.workspace.getConfiguration('cherryMarkdown').get('CustomUploader'); + if (!customUploader || customUploader.enable !== true) { + vscode.window.showInformationMessage('请完善自定义上传配置'); + throw new Error('请完善自定义上传配置'); + } + if (!/^(http|https):\/\//.test(customUploader.url)) { + vscode.window.showInformationMessage('自定义上传地址格式不正确'); + throw new Error('自定义上传地址格式不正确'); + } + const file = await vscode.workspace.fs.readFile(vscode.Uri.file(path)); + const userHeaders = + customUploader.headers && typeof customUploader.headers === 'object' ? customUploader.headers : {}; + const headers: Record = { ...userHeaders }; + if (!headers['Content-Type'] && !headers['content-type']) { + headers['Content-Type'] = 'application/octet-stream'; + } + if (!headers['X-File-Name'] && !headers['x-file-name']) { + headers['X-File-Name'] = name; + } + try { + const customUpload = await axios.post(customUploader.url, file, { headers, responseType: 'json' }); + const { data } = customUpload; + if (!data) { + throw new Error('Empty response from uploader'); + } + if (typeof data === 'string') { + res.url = data; + } else if (data.url) { + res.url = data.url; + } else if (data.result && Array.isArray(data.result) && data.result[0]) { + const [firstResult] = data.result; + res.url = firstResult; + } else if (data.data && typeof data.data === 'string') { + res.url = data.data; + } else if (data.data && data.data.url) { + res.url = data.data.url; + } else { + const firstUrl = Object.values(data).find((v) => typeof v === 'string' && /^(http|data:image)/.test(v)); + if (typeof firstUrl === 'string') { + res.url = firstUrl; + } + } + if (!res.url) { + throw new Error('无法从上传响应中解析出 URL'); + } + } catch (err: any) { + vscode.window.showErrorMessage(`自定义上传失败:${err?.message || err}`); + throw err; + } break; - case 'PicGoServer': - // eslint-disable-next-line no-case-declarations - const PicGoServer = vscode.workspace + } + case 'PicGoServer': { + const picGoServer = vscode.workspace .getConfiguration('cherryMarkdown') .get('PicGoServer', 'http://127.0.0.1:36677/upload'); - // 请求PicGo服务 - // eslint-disable-next-line no-case-declarations - const upload = await axios.post, { list: string[] }>( - PicGoServer, + const upload = await axios.post>( + picGoServer, { list: [path] }, { headers: { 'Content-Type': 'application/json' } }, ); if (upload.data?.success !== true) { throw new Error('上传失败'); - } else { - res.url = upload.data?.result?.[0] ?? ''; } + res.url = upload.data?.result?.[0] ?? ''; break; - default: + } + default: { if (type.startsWith('image')) { - // 读取图片转为base64 const file = await vscode.workspace.fs.readFile(vscode.Uri.file(path)); const base64 = Buffer.from(file).toString('base64'); res.url = `data:${type};base64,${base64}`; @@ -85,6 +104,7 @@ export const uploadFileHandler = async (fileInfo: FileInfo) => { throw new Error('未指定上传服务时暂时只支持图片'); } break; + } } return res; }; diff --git a/packages/vscodePlugin/src/types/upload.ts b/packages/vscodePlugin/src/types/upload.ts index 043d3305b..9237d3d47 100644 --- a/packages/vscodePlugin/src/types/upload.ts +++ b/packages/vscodePlugin/src/types/upload.ts @@ -1,15 +1,15 @@ // 上传方式 export type UploadType = 'None' | 'CustomUploader' | 'PicGoServer'; -// // 自定义请求 -// export interface CustomUploader { -// enable: boolean; -// url: string; -// headers: HeadersInit; -// } +// 自定义上传配置 +export interface CustomUploader { + enable: boolean; + url: string; + headers?: Record; +} -// 回填图片附加参数 -export type BackfillImageProps = Array<'isBorder' | 'isShadow' | 'isRadius'>; +// 回填图片附加参数(增加 isNotBorder 支持“无边框”选项) +export type BackfillImageProps = Array<'isBorder' | 'isNotBorder' | 'isShadow' | 'isRadius'>; // 返回类型 // export type BackfillImage = Partial>; diff --git a/packages/vscodePlugin/src/webview.ts b/packages/vscodePlugin/src/webview.ts index df849ca57..9ef8e5ea8 100644 --- a/packages/vscodePlugin/src/webview.ts +++ b/packages/vscodePlugin/src/webview.ts @@ -30,7 +30,9 @@ export function getWebviewContent(mdInfo: object, currentPanel: vscode.WebviewPa 'scripts/pinyin/pinyin_dist.js': currentPanel.webview.asWebviewUri( vscode.Uri.file(path.join(extensionPath, 'web-resources/scripts/pinyin/pinyin_dist.js')), ), - 'scripts/index.js': currentPanel.webview.asWebviewUri(vscode.Uri.file(path.join(extensionPath, 'dist/index.js'))), + 'scripts/index.js': currentPanel.webview.asWebviewUri( + vscode.Uri.file(path.join(extensionPath, 'web-resources', 'dist', 'index.js')), + ), 'scripts/index.css': currentPanel.webview.asWebviewUri( vscode.Uri.file(path.join(extensionPath, 'web-resources/scripts/index.css')), ), @@ -56,10 +58,9 @@ content="default-src 'none'; img-src ${currentPanel.webview.cspSource} https: ht }; style-src ${currentPanel.webview.cspSource}; font-src ${currentPanel.webview.cspSource};" /> Cherry Editor - Markdown Editor - - - - + + + diff --git a/packages/vscodePlugin/tsconfig.json b/packages/vscodePlugin/tsconfig.json index 0593fcfae..1ce6ef8b5 100644 --- a/packages/vscodePlugin/tsconfig.json +++ b/packages/vscodePlugin/tsconfig.json @@ -1,24 +1,26 @@ { "compilerOptions": { "module": "commonjs", - "target": "es6", + "target": "es2020", "outDir": "out", "lib": [ - "es6", + "es2020", "DOM" ], "sourceMap": true, - "rootDir": "src", - "strict": true /* enable all strict type-checking options */ - /* Additional Checks */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ + "rootDir": ".", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "moduleResolution": "node" }, "include": [ - "src/**/*.ts" + "src/**/*.ts", + "rspack.config.ts" ], "exclude": [ - "node_modules" + "node_modules", + "dist" ] } \ No newline at end of file diff --git a/packages/vscodePlugin/vsc-extension-quickstart.md b/packages/vscodePlugin/vsc-extension-quickstart.md deleted file mode 100644 index b510bff34..000000000 --- a/packages/vscodePlugin/vsc-extension-quickstart.md +++ /dev/null @@ -1,42 +0,0 @@ -# Welcome to your VS Code Extension - -## What's in the folder - -* This folder contains all of the files necessary for your extension. -* `package.json` - this is the manifest file in which you declare your extension and command. - * The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. -* `src/extension.ts` - this is the main file where you will provide the implementation of your command. - * The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. - * We pass the function containing the implementation of the command as the second parameter to `registerCommand`. - -## Get up and running straight away - -* Press `F5` to open a new window with your extension loaded. -* Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`. -* Set breakpoints in your code inside `src/extension.ts` to debug your extension. -* Find output from your extension in the debug console. - -## Make changes - -* You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`. -* You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. - - -## Explore the API - -* You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`. - -## Run tests - -* Open the debug viewlet (`Ctrl+Shift+D` or `Cmd+Shift+D` on Mac) and from the launch configuration dropdown pick `Extension Tests`. -* Press `F5` to run the tests in a new window with your extension loaded. -* See the output of the test result in the debug console. -* Make changes to `src/test/suite/extension.test.ts` or create new test files inside the `test/suite` folder. - * The provided test runner will only consider files matching the name pattern `**.test.ts`. - * You can create folders inside the `test` folder to structure your tests any way you want. - -## Go further - - * Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension). - * [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VSCode extension marketplace. - * Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration). diff --git a/packages/vscodePlugin/web-resources/scripts/index.css b/packages/vscodePlugin/web-resources/scripts/index.css index 139107c75..4efcf591f 100644 --- a/packages/vscodePlugin/web-resources/scripts/index.css +++ b/packages/vscodePlugin/web-resources/scripts/index.css @@ -109,4 +109,9 @@ .cherry-color-item__0c343d { background-color: #0c343d;} .cherry-color-item__073763 { background-color: #073763;} .cherry-color-item__20124d { background-color: #20124d;} -.cherry-color-item__4c1130 { background-color: #4c1130;} \ No newline at end of file +.cherry-color-item__4c1130 { background-color: #4c1130;} +/* Image backfill styles applied by VSCode extension */ +.ch-image-border { border: 1px solid rgba(0,0,0,0.12); } +.ch-image-no-border { border: none !important; } +.ch-image-shadow { box-shadow: 0 2px 6px rgba(0,0,0,0.12); } +.ch-image-radius { border-radius: 6px; } \ No newline at end of file diff --git a/packages/vscodePlugin/web-resources/scripts/index.js b/packages/vscodePlugin/web-resources/scripts/index.js index 919a31913..7bd720b40 100644 --- a/packages/vscodePlugin/web-resources/scripts/index.js +++ b/packages/vscodePlugin/web-resources/scripts/index.js @@ -1,5 +1,5 @@ -import 'mathjax/es5/tex-svg.js'; -import { toPng } from 'html-to-image'; +// Heavy modules are loaded on demand to reduce initial bundle size +// MathJax and html-to-image are dynamically imported when needed // import md5 from 'md5'; @@ -13,7 +13,7 @@ const customMenuChangeModule = Cherry.createMenuHook('编辑', { if (window.isDisableEdit) { vscode.postMessage({ type: 'tips', - data: 'can\'t edit presently 当前文档已失焦点,编辑后无法保存', + data: "can't edit presently 当前文档已失焦点,编辑后无法保存", }); return selection; } @@ -42,30 +42,27 @@ const customMenuFont = Cherry.createMenuHook('字体样式', { const customMenuExport = Cherry.createMenuHook('保存', { iconName: 'export', subMenuConfig: [ - { noIcon: true, name: '保存为 PNG', onclick: () => { - const cherrymarkdown = document.querySelector('.cherry-previewer'); - if (!cherrymarkdown) { - vscode.postMessage({ - type: 'export-png', - data: 'export-fail', - }); - } - toPng(cherrymarkdown) - .then((dataUrl) => { - console.log(dataUrl); - vscode.postMessage({ - type: 'export-png', - data: dataUrl, - }); - }) - .catch((error) => { + { + noIcon: true, + name: '保存为 PNG', + onclick: async () => { + const cherrymarkdown = document.querySelector('.cherry-previewer'); + if (!cherrymarkdown) { + vscode.postMessage({ type: 'export-png', data: 'export-fail' }); + return; + } + try { + const mod = await import(/* webpackChunkName: "html-to-image" */ 'html-to-image'); + const toPng = mod.toPng || (mod.default && mod.default.toPng); + if (!toPng) throw new Error('html-to-image unavailable'); + const dataUrl = await toPng(cherrymarkdown); + vscode.postMessage({ type: 'export-png', data: dataUrl }); + } catch (error) { console.error('toPng error:', error); - vscode.postMessage({ - type: 'export-png', - data: 'export-fail', - }); - }); - } }, + vscode.postMessage({ type: 'export-png', data: 'export-fail' }); + } + }, + }, ], }); @@ -88,7 +85,6 @@ const customMenuExport = Cherry.createMenuHook('保存', { // ], // }); - /** 处理 a 链接跳转问题 */ const onClickLink = (e, target) => { // 这里不能直接使用 target.href,因为本地相对文件地址会被vscode转成`webview://`协议 @@ -165,14 +161,7 @@ const basicConfig = { toolbar: [ 'bold', { - customMenuFont: [ - 'italic', - 'strikethrough', - 'underline', - 'sub', - 'sup', - 'ruby', - ], + customMenuFont: ['italic', 'strikethrough', 'underline', 'sub', 'sup', 'ruby'], }, 'size', 'color', @@ -203,26 +192,8 @@ const basicConfig = { // 'graph', 'togglePreview', ], - bubble: [ - 'bold', - 'italic', - 'underline', - 'strikethrough', - 'sub', - 'sup', - 'quote', - 'ruby', - '|', - 'size', - 'color', - ], // array or false - sidebar: [ - 'customMenuChangeModule', - 'mobilePreview', - 'copy', - 'theme', - 'customMenuExport', - ], + bubble: ['bold', 'italic', 'underline', 'strikethrough', 'sub', 'sup', 'quote', 'ruby', '|', 'size', 'color'], // array or false + sidebar: ['customMenuChangeModule', 'mobilePreview', 'copy', 'theme', 'customMenuExport'], customMenu: { customMenuChangeModule, customMenuFont, @@ -311,7 +282,7 @@ const basicConfig = { case 'A': onClickLink(e, target); break; - }; + } }, }, }; @@ -350,6 +321,8 @@ const mdInfo = JSON.parse(document.getElementById('markdown-info').value); const locale = languageIdentifiers[mdInfo.vscodeLanguage] || 'zh_CN'; const config = Object.assign({}, basicConfig, { value: mdInfo.text, locale }); +// 异步加载 MathJax(如果需要),以便拆分包体积但不阻塞初始化 +import(/* webpackChunkName: "mathjax" */ 'mathjax/es5/tex-svg.js').catch(() => {}); // eslint-disable-next-line new-cap, no-undef const cherry = new Cherry(config); // eslint-disable-next-line no-undef @@ -389,10 +362,7 @@ cherry.previewer.getDom().addEventListener('scroll', () => { postScrollMessage(0); return true; } - if ( - domContainer.scrollTop + domContainer.offsetHeight - > domContainer.scrollHeight - ) { + if (domContainer.scrollTop + domContainer.offsetHeight > domContainer.scrollHeight) { postScrollMessage(-1); return true; } @@ -418,11 +388,7 @@ cherry.previewer.getDom().addEventListener('scroll', () => { // 获取观察点处最近的markdown元素 let mdElement = targetElement.closest('[data-sign]'); // 由于新增脚注,内部容器也有可能存在data-sign,所以需要循环往父级找 - while ( - mdElement - && mdElement.parentElement - && mdElement.parentElement !== domContainer - ) { + while (mdElement && mdElement.parentElement && mdElement.parentElement !== domContainer) { mdElement = mdElement.parentElement.closest('[data-sign]'); } if (!mdElement) { @@ -503,7 +469,30 @@ window.addEventListener('message', (e) => { break; case 'upload-file-callback': { const { url, ...rest } = data; + // 调用 Cherry 编辑器的回调以完成回填 window.uploadFileCallback(url, rest); + // 根据回填参数应用图片样式(isNotBorder / isBorder / isShadow / isRadius) + try { + const previewDom = cherry.previewer.getDom(); + const imgs = previewDom.querySelectorAll(`img[src="${url}"]`); + imgs.forEach((img) => { + // 清理之前的样式类 + img.classList.remove('ch-image-border', 'ch-image-no-border', 'ch-image-shadow', 'ch-image-radius'); + if (rest.isNotBorder) { + img.classList.add('ch-image-no-border'); + } else if (rest.isBorder) { + img.classList.add('ch-image-border'); + } + if (rest.isShadow) { + img.classList.add('ch-image-shadow'); + } + if (rest.isRadius) { + img.classList.add('ch-image-radius'); + } + }); + } catch (e) { + // 忽略前端样式应用中的错误 + } break; } } @@ -521,9 +510,7 @@ function elementsFromPoint(x, y) { return document.elementsFromPoint(x, y); } - if ( - typeof (/** @type {any}*/ (document).msElementsFromPoint) === 'function' - ) { + if (typeof (/** @type {any}*/ (document).msElementsFromPoint) === 'function') { const nodeList = /** @type {any}*/ (document).msElementsFromPoint(x, y); return nodeList !== null ? Array.from(nodeList) : nodeList; } @@ -532,9 +519,7 @@ function elementsFromPoint(x, y) { /** @type {HTMLElement} */ let ele; do { - const currentElement = /** @type {HTMLElement} */ ( - document.elementFromPoint(x, y) - ); + const currentElement = /** @type {HTMLElement} */ (document.elementFromPoint(x, y)); if (ele !== currentElement) { ele = currentElement; elements.push(ele); diff --git a/packages/vscodePlugin/webpack.config.js b/packages/vscodePlugin/webpack.config.js deleted file mode 100644 index 6be8c865f..000000000 --- a/packages/vscodePlugin/webpack.config.js +++ /dev/null @@ -1,75 +0,0 @@ -// @ts-check - -'use strict'; - -const path = require('path'); - -/** @type {import('webpack').Configuration}*/ -const extensionConfig = { - target: 'node', // vscode extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ - mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production') - entry: { - extension: './src/extension.ts', - }, // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ - output: { - // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/ - path: path.resolve(__dirname, 'dist'), - filename: '[name].js', - libraryTarget: 'commonjs2', - }, - devtool: 'nosources-source-map', - externals: { - vscode: 'commonjs vscode', // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/ - // modules added here also need to be added in the .vsceignore file - }, - resolve: { - // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader - extensions: ['.ts', '.js'], - }, - module: { - rules: [ - { - test: /\.ts$/, - exclude: /node_modules/, - use: [ - { - loader: 'ts-loader', - }, - ], - }, - ], - }, -}; - -const webviewConfig = { - target: 'web', - mode: 'none', - entry: { - index: './web-resources/scripts/index.js', - }, - output: { - path: path.resolve(__dirname, 'dist'), - filename: '[name].js', - libraryTarget: 'umd', - }, - devtool: 'nosources-source-map', - resolve: { - extensions: ['.ts', '.js'], - }, - module: { - rules: [ - { - test: /\.m?js$/, - exclude: /node_modules/, - use: { - loader: 'babel-loader', - options: { - presets: ['@babel/preset-env'], - }, - }, - }, - ], - }, -}; - -module.exports = [extensionConfig, webviewConfig]; diff --git a/yarn.lock b/yarn.lock index ca24e42a2..0119aecb7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,7 +31,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== -"@babel/core@^7.20.12", "@babel/core@^7.7.2": +"@babel/core@^7.7.2": version "7.26.10" resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9" integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== @@ -772,7 +772,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/preset-env@^7.20.2", "@babel/preset-env@^7.7.1": +"@babel/preset-env@^7.7.1": version "7.26.9" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz#2ec64e903d0efe743699f77a10bdf7955c2123c3" integrity sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ== @@ -1298,11 +1298,33 @@ enabled "2.0.x" kuler "^2.0.0" -"@discoveryjs/json-ext@^0.5.0": +"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.7": version "0.5.7" resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@emnapi/core@^1.5.0": + version "1.7.1" + resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz#3a79a02dbc84f45884a1806ebb98e5746bdfaac4" + integrity sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg== + dependencies: + "@emnapi/wasi-threads" "1.1.0" + tslib "^2.4.0" + +"@emnapi/runtime@^1.5.0": + version "1.7.1" + resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz#a73784e23f5d57287369c808197288b52276b791" + integrity sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf" + integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== + dependencies: + tslib "^2.4.0" + "@esbuild/aix-ppc64@0.25.1": version "0.25.1" resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz#c33cf6bbee34975626b01b80451cbb72b4c6c91d" @@ -1564,6 +1586,56 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jsonjoy.com/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" + integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== + +"@jsonjoy.com/buffers@^1.0.0", "@jsonjoy.com/buffers@^1.2.0": + version "1.2.1" + resolved "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" + integrity sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA== + +"@jsonjoy.com/codegen@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" + integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== + +"@jsonjoy.com/json-pack@^1.11.0": + version "1.21.0" + resolved "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" + integrity sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg== + dependencies: + "@jsonjoy.com/base64" "^1.1.2" + "@jsonjoy.com/buffers" "^1.2.0" + "@jsonjoy.com/codegen" "^1.0.0" + "@jsonjoy.com/json-pointer" "^1.0.2" + "@jsonjoy.com/util" "^1.9.0" + hyperdyperid "^1.2.0" + thingies "^2.5.0" + tree-dump "^1.1.0" + +"@jsonjoy.com/json-pointer@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" + integrity sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg== + dependencies: + "@jsonjoy.com/codegen" "^1.0.0" + "@jsonjoy.com/util" "^1.9.0" + +"@jsonjoy.com/util@^1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" + integrity sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ== + dependencies: + "@jsonjoy.com/buffers" "^1.0.0" + "@jsonjoy.com/codegen" "^1.0.0" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + "@manypkg/find-root@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f" @@ -1586,6 +1658,58 @@ globby "^11.0.0" read-yaml-file "^1.1.0" +"@module-federation/error-codes@0.21.6": + version "0.21.6" + resolved "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.21.6.tgz#d0c9fa71f9469b2150165ef4461dfd5be0e7f79b" + integrity sha512-MLJUCQ05KnoVl8xd6xs9a5g2/8U+eWmVxg7xiBMeR0+7OjdWUbHwcwgVFatRIwSZvFgKHfWEiI7wsU1q1XbTRQ== + +"@module-federation/runtime-core@0.21.6": + version "0.21.6" + resolved "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.21.6.tgz#2bcd24db2192179c96ce49772b09d72820ab9ea3" + integrity sha512-5Hd1Y5qp5lU/aTiK66lidMlM/4ji2gr3EXAtJdreJzkY+bKcI5+21GRcliZ4RAkICmvdxQU5PHPL71XmNc7Lsw== + dependencies: + "@module-federation/error-codes" "0.21.6" + "@module-federation/sdk" "0.21.6" + +"@module-federation/runtime-tools@0.21.6": + version "0.21.6" + resolved "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.21.6.tgz#40cbcc16af4c597169834a2d8b71a9d31779ab0c" + integrity sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q== + dependencies: + "@module-federation/runtime" "0.21.6" + "@module-federation/webpack-bundler-runtime" "0.21.6" + +"@module-federation/runtime@0.21.6": + version "0.21.6" + resolved "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.21.6.tgz#8d4a29a792ed4a94e5a811fe097d314a6f9dcab7" + integrity sha512-+caXwaQqwTNh+CQqyb4mZmXq7iEemRDrTZQGD+zyeH454JAYnJ3s/3oDFizdH6245pk+NiqDyOOkHzzFQorKhQ== + dependencies: + "@module-federation/error-codes" "0.21.6" + "@module-federation/runtime-core" "0.21.6" + "@module-federation/sdk" "0.21.6" + +"@module-federation/sdk@0.21.6": + version "0.21.6" + resolved "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.21.6.tgz#8aac1159ff37f418ed72bc79afccbbfb025f847a" + integrity sha512-x6hARETb8iqHVhEsQBysuWpznNZViUh84qV2yE7AD+g7uIzHKiYdoWqj10posbo5XKf/147qgWDzKZoKoEP2dw== + +"@module-federation/webpack-bundler-runtime@0.21.6": + version "0.21.6" + resolved "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.21.6.tgz#6831eaf147356fe5b096d24c7a902c323e810bb9" + integrity sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ== + dependencies: + "@module-federation/runtime" "0.21.6" + "@module-federation/sdk" "0.21.6" + +"@napi-rs/wasm-runtime@1.0.7": + version "1.0.7" + resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz#dcfea99a75f06209a235f3d941e3460a51e9b14c" + integrity sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw== + dependencies: + "@emnapi/core" "^1.5.0" + "@emnapi/runtime" "^1.5.0" + "@tybys/wasm-util" "^0.10.1" + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" @@ -1635,6 +1759,11 @@ resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz#eb5014dfd0b03e7f3ba2eeeff506eed89b028058" integrity sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg== +"@polka/url@^1.0.0-next.24": + version "1.0.0-next.29" + resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz#5a40109a1ab5f84d6fd8fc928b19f367cbe7e7b1" + integrity sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww== + "@rollup/plugin-alias@5.1.1": version "5.1.1" resolved "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.1.1.tgz#53601d88cda8b1577aa130b4a6e452283605bf26" @@ -1831,6 +1960,109 @@ resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.3.tgz#3f55b6e8fe809a7d29959d6bc686cce1804581f0" integrity sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA== +"@rspack/binding-darwin-arm64@1.6.8": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.6.8.tgz#52987c0cbc487a240bdc6b1a31838372daddee2b" + integrity sha512-e8CTQtzaeGnf+BIzR7wRMUwKfIg0jd/sxMRc1Vd0bCMHBhSN9EsGoMuJJaKeRrSmy2nwMCNWHIG+TvT1CEKg+A== + +"@rspack/binding-darwin-x64@1.6.8": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.6.8.tgz#13c801ce8210d11b7b0bc4ac7bf036ec32862935" + integrity sha512-ku1XpTEPt6Za11zhpFWhfwrTQogcgi9RJrOUVC4FESiPO9aKyd4hJ+JiPgLY0MZOqsptK6vEAgOip+uDVXrCpg== + +"@rspack/binding-linux-arm64-gnu@1.6.8": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.6.8.tgz#d70321ac5bbd5bc101de9a2da01c6fb984601565" + integrity sha512-fvZX6xZPvBT8qipSpvkKMX5M7yd2BSpZNCZXcefw6gA3uC7LI3gu+er0LrDXY1PtPzVuHTyDx+abwWpagV3PiQ== + +"@rspack/binding-linux-arm64-musl@1.6.8": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.6.8.tgz#4f9196b6233649ce43e6485a5d2714ef38dfc603" + integrity sha512-++XMKcMNrt59HcFBLnRaJcn70k3X0GwkAegZBVpel8xYIAgvoXT5+L8P1ExId/yTFxqedaz8DbcxQnNmMozviw== + +"@rspack/binding-linux-x64-gnu@1.6.8": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.6.8.tgz#b78e7f62b4157b31e181fe89d319a601782a802b" + integrity sha512-tv3BWkTE1TndfX+DsE1rSTg8fBevCxujNZ3MlfZ22Wfy9x1FMXTJlWG8VIOXmaaJ1wUHzv8S7cE2YUUJ2LuiCg== + +"@rspack/binding-linux-x64-musl@1.6.8": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.6.8.tgz#c578f730d8a9fab866e4a15920457ef9d7fd5f58" + integrity sha512-DCGgZ5/in1O3FjHWqXnDsncRy+48cMhfuUAAUyl0yDj1NpsZu9pP+xfGLvGcQTiYrVl7IH9Aojf1eShP/77WGA== + +"@rspack/binding-wasm32-wasi@1.6.8": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.6.8.tgz#76d23589ec31ad6bab6784da89f7cc42c7df0275" + integrity sha512-VUwdhl/lI4m6o1OGCZ9JwtMjTV/yLY5VZTQdEPKb40JMTlmZ5MBlr5xk7ByaXXYHr6I+qnqEm73iMKQvg6iknw== + dependencies: + "@napi-rs/wasm-runtime" "1.0.7" + +"@rspack/binding-win32-arm64-msvc@1.6.8": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.6.8.tgz#b42cba4ab7588ce72f0c13c968d3d62e8a61ab46" + integrity sha512-23YX7zlOZlub+nPGDBUzktb4D5D6ETUAluKjXEeHIZ9m7fSlEYBnGL66YE+3t1DHXGd0OqsdwlvrNGcyo6EXDQ== + +"@rspack/binding-win32-ia32-msvc@1.6.8": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.6.8.tgz#293a23448c6a11f25a9abbb989613059c7da3ec4" + integrity sha512-cFgRE3APxrY4AEdooVk2LtipwNNT/9mrnjdC5lVbsIsz+SxvGbZR231bxDJEqP15+RJOaD07FO1sIjINFqXMEg== + +"@rspack/binding-win32-x64-msvc@1.6.8": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.6.8.tgz#f5fd3f01b6694ee08cbc382c3bd42d6490ab9446" + integrity sha512-cIuhVsZYd3o3Neo1JSAhJYw6BDvlxaBoqvgwRkG1rs0ExFmEmgYyG7ip9pFKnKNWph/tmW3rDYypmEfjs1is7g== + +"@rspack/binding@1.6.8": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/binding/-/binding-1.6.8.tgz#c2cd2c31a4313ab10ad8ed871a5b9be0444046f3" + integrity sha512-lUeL4mbwGo+nqRKqFDCm9vH2jv9FNMVt1X8jqayWRcOCPlj/2UVMEFgqjR7Pp2vlvnTKq//31KbDBJmDZq31RQ== + optionalDependencies: + "@rspack/binding-darwin-arm64" "1.6.8" + "@rspack/binding-darwin-x64" "1.6.8" + "@rspack/binding-linux-arm64-gnu" "1.6.8" + "@rspack/binding-linux-arm64-musl" "1.6.8" + "@rspack/binding-linux-x64-gnu" "1.6.8" + "@rspack/binding-linux-x64-musl" "1.6.8" + "@rspack/binding-wasm32-wasi" "1.6.8" + "@rspack/binding-win32-arm64-msvc" "1.6.8" + "@rspack/binding-win32-ia32-msvc" "1.6.8" + "@rspack/binding-win32-x64-msvc" "1.6.8" + +"@rspack/cli@^1.5.3": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/cli/-/cli-1.6.8.tgz#ef644e718156c6764e835919b1a35123ce6157f5" + integrity sha512-pFMYsov8Av7bNWEU9l0HCTk2A5vOPaaZBkZSkCs68U07tkMOQ58IvUiC5Uy1B780bqE2jBt/b6yA41uNmXScZg== + dependencies: + "@discoveryjs/json-ext" "^0.5.7" + "@rspack/dev-server" "~1.1.4" + exit-hook "^4.0.0" + webpack-bundle-analyzer "4.10.2" + +"@rspack/core@^1.5.3": + version "1.6.8" + resolved "https://registry.npmjs.org/@rspack/core/-/core-1.6.8.tgz#b1f945a1a167f74394304ea93723616428d66095" + integrity sha512-FolcIAH5FW4J2FET+qwjd1kNeFbCkd0VLuIHO0thyolEjaPSxw5qxG67DA7BZGm6PVcoiSgPLks1DL6eZ8c+fA== + dependencies: + "@module-federation/runtime-tools" "0.21.6" + "@rspack/binding" "1.6.8" + "@rspack/lite-tapable" "1.1.0" + +"@rspack/dev-server@~1.1.4": + version "1.1.4" + resolved "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.1.4.tgz#f31096a9ff65cb29444e5cc86c03754aa6361b8f" + integrity sha512-kGHYX2jYf3ZiHwVl0aUEPBOBEIG1aWleCDCAi+Jg32KUu3qr/zDUpCEd0wPuHfLEgk0X0xAEYCS6JMO7nBStNQ== + dependencies: + chokidar "^3.6.0" + http-proxy-middleware "^2.0.9" + p-retry "^6.2.0" + webpack-dev-server "5.2.2" + ws "^8.18.0" + +"@rspack/lite-tapable@1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz#3cfdafeed01078e116bd4f191b684c8b484de425" + integrity sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw== + "@rtsao/scc@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" @@ -1955,6 +2187,28 @@ resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@tybys/wasm-util@^0.10.1": + version "0.10.1" + resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" + integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== + dependencies: + tslib "^2.4.0" + +"@types/body-parser@*": + version "1.19.6" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.13": + version "3.5.13" + resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + "@types/codemirror@^0.0.108": version "0.0.108" resolved "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz" @@ -1962,6 +2216,21 @@ dependencies: "@types/tern" "*" +"@types/connect-history-api-fallback@^1.5.4": + version "1.5.4" + resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + "@types/conventional-commits-parser@^5.0.0": version "5.0.0" resolved "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz" @@ -1976,26 +2245,49 @@ dependencies: "@types/zrender" "*" -"@types/eslint-scope@^3.7.7": - version "3.7.7" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== +"@types/estree@*", "@types/estree@1.0.8", "@types/estree@^1.0.0": + version "1.0.8" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz#74f47555b3d804b54cb7030e6f9aa0c7485cfc5b" + integrity sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA== dependencies: - "@types/eslint" "*" - "@types/estree" "*" + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" -"@types/eslint@*": - version "9.6.1" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" - integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== +"@types/express-serve-static-core@^4.17.21", "@types/express-serve-static-core@^4.17.33": + version "4.19.7" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz#f1d306dcc03b1aafbfb6b4fe684cce8a31cffc10" + integrity sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg== dependencies: - "@types/estree" "*" - "@types/json-schema" "*" + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" -"@types/estree@*", "@types/estree@1.0.8", "@types/estree@^1.0.0", "@types/estree@^1.0.6": - version "1.0.8" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== +"@types/express@*": + version "5.0.6" + resolved "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz#2d724b2c990dcb8c8444063f3580a903f6d500cc" + integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/serve-static" "^2" + +"@types/express@^4.17.21": + version "4.17.25" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz#070c8c73a6fee6936d65c195dbbfb7da5026649b" + integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "^1" "@types/glob@^7.1.3", "@types/glob@^7.2.0": version "7.2.0" @@ -2005,6 +2297,18 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/http-errors@*": + version "2.0.5" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz#5b749ab2b16ba113423feb1a64a95dcd30398472" + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== + +"@types/http-proxy@^1.17.8": + version "1.17.17" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz#d9e2c4571fe3507343cb210cd41790375e59a533" + integrity sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw== + dependencies: + "@types/node" "*" + "@types/jsdom@^16.2.13": version "16.2.15" resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.15.tgz" @@ -2014,7 +2318,7 @@ "@types/parse5" "^6.0.3" "@types/tough-cookie" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2039,6 +2343,11 @@ resolved "https://registry.npmjs.org/@types/mermaid/-/mermaid-8.2.9.tgz#1844505dcffcd47703e94628a6200583d35c2c76" integrity sha512-f1i8fNoVFVJXedk+R7GcEk4KoOWzWAU3CzFqlVw1qWKktfsataBERezCz1pOdKy8Ec02ZdPQXGM7NU2lPHABYQ== +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + "@types/minimatch@*": version "5.1.2" resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" @@ -2049,21 +2358,30 @@ resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz" integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== -"@types/node@*", "@types/node@^17.0.42": +"@types/node-forge@^1.3.0": + version "1.3.14" + resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz#006c2616ccd65550560c2757d8472eb6d3ecea0b" + integrity sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw== + dependencies: + "@types/node" "*" + +"@types/node@*": version "17.0.45" resolved "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz" integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== -"@types/node@14.x": - version "14.18.63" - resolved "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" - integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== - "@types/node@^12.7.1": version "12.20.55" resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== +"@types/node@^20.10.6": + version "20.19.27" + resolved "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz#d51333f77953a5e4e71d3b5aefa83ec5297fbb80" + integrity sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug== + dependencies: + undici-types "~6.21.0" + "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz" @@ -2074,16 +2392,77 @@ resolved "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz" integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== +"@types/qs@*": + version "6.14.0" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5" + integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + "@types/resolve@1.20.2": version "1.20.2" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz" integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== +"@types/retry@0.12.2": + version "0.12.2" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== + "@types/semver@^7.5.0": version "7.7.0" resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== +"@types/send@*": + version "1.2.1" + resolved "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz#6a784e45543c18c774c049bff6d3dbaf045c9c74" + integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== + dependencies: + "@types/node" "*" + +"@types/send@<1": + version "0.17.6" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25" + integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.4": + version "1.9.4" + resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@^1", "@types/serve-static@^1.15.5": + version "1.15.10" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee" + integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "<1" + +"@types/serve-static@^2": + version "2.2.0" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz#d4a447503ead0d1671132d1ab6bd58b805d8de6a" + integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.36": + version "0.3.36" + resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + "@types/tern@*": version "0.23.9" resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz" @@ -2116,6 +2495,13 @@ resolved "https://registry.npmjs.org/@types/vscode/-/vscode-1.98.0.tgz#5b6fa5bd99ba15313567d3847fb1177832fee08c" integrity sha512-+KuiWhpbKBaG2egF+51KjbGWatTH5BbmWQjSLMDCssb4xF8FJnW4nGH4nuAdOOfMbpD0QlHtI+C3tPq+DoKElg== +"@types/ws@^8.5.10": + version "8.18.1" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" + integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== + dependencies: + "@types/node" "*" + "@types/zrender@*": version "4.0.6" resolved "https://registry.npmjs.org/@types/zrender/-/zrender-4.0.6.tgz" @@ -2490,154 +2876,6 @@ resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f" integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ== -"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" - integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== - dependencies: - "@webassemblyjs/helper-numbers" "1.13.2" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - -"@webassemblyjs/floating-point-hex-parser@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" - integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== - -"@webassemblyjs/helper-api-error@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" - integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== - -"@webassemblyjs/helper-buffer@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" - integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== - -"@webassemblyjs/helper-numbers@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" - integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.13.2" - "@webassemblyjs/helper-api-error" "1.13.2" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" - integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== - -"@webassemblyjs/helper-wasm-section@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" - integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/wasm-gen" "1.14.1" - -"@webassemblyjs/ieee754@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" - integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" - integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" - integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== - -"@webassemblyjs/wasm-edit@^1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" - integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/helper-wasm-section" "1.14.1" - "@webassemblyjs/wasm-gen" "1.14.1" - "@webassemblyjs/wasm-opt" "1.14.1" - "@webassemblyjs/wasm-parser" "1.14.1" - "@webassemblyjs/wast-printer" "1.14.1" - -"@webassemblyjs/wasm-gen@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" - integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/ieee754" "1.13.2" - "@webassemblyjs/leb128" "1.13.2" - "@webassemblyjs/utf8" "1.13.2" - -"@webassemblyjs/wasm-opt@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" - integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/wasm-gen" "1.14.1" - "@webassemblyjs/wasm-parser" "1.14.1" - -"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" - integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-api-error" "1.13.2" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/ieee754" "1.13.2" - "@webassemblyjs/leb128" "1.13.2" - "@webassemblyjs/utf8" "1.13.2" - -"@webassemblyjs/wast-printer@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" - integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" - integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== - -"@webpack-cli/info@^1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" - integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== - dependencies: - envinfo "^7.7.3" - -"@webpack-cli/serve@^1.7.0": - version "1.7.0" - resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" - integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - "@zeit/schemas@2.36.0": version "2.36.0" resolved "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.36.0.tgz" @@ -2661,7 +2899,7 @@ abbrev@^1.0.0: resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.5: +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -2687,6 +2925,13 @@ acorn-walk@^7.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +acorn-walk@^8.0.0: + version "8.3.4" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + acorn@8.11.3: version "8.11.3" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" @@ -2697,7 +2942,7 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.14.0, acorn@^8.15.0, acorn@^8.5.0, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.0.4, acorn@^8.11.0, acorn@^8.15.0, acorn@^8.5.0, acorn@^8.8.2, acorn@^8.9.0: version "8.15.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== @@ -2816,6 +3061,11 @@ ansi-gray@^0.1.1: dependencies: ansi-wrap "0.1.0" +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -2936,6 +3186,11 @@ array-each@^1.0.1: resolved "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz" integrity sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA== +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + array-ify@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" @@ -3134,14 +3389,6 @@ b4a@^1.6.4: resolved "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz#a99587d4ebbfbd5a6e3b21bdb5d5fa385767abe4" integrity sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg== -babel-loader@^9.1.2: - version "9.2.1" - resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz#04c7835db16c246dd19ba0914418f3937797587b" - integrity sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA== - dependencies: - find-cache-dir "^4.0.0" - schema-utils "^4.0.0" - babel-plugin-polyfill-corejs2@^0.4.10: version "0.4.11" resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz" @@ -3208,6 +3455,11 @@ base64-js@^1.3.1: resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + beeper@^1.0.0: version "1.1.1" resolved "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" @@ -3246,6 +3498,32 @@ bluebird@^3.1.1: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +body-parser@~1.20.3: + version "1.20.4" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz#f8e20f4d06ca8a50a71ed329c15dccad1cdc547f" + integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA== + dependencies: + bytes "~3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "~1.2.0" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + on-finished "~2.4.1" + qs "~6.14.0" + raw-body "~2.5.3" + type-is "~1.6.18" + unpipe "~1.0.0" + +bonjour-service@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" + integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + boolbase@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" @@ -3339,11 +3617,23 @@ bufferstreams@^3.0.0: dependencies: readable-stream "^3.4.0" +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + bytes@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== +bytes@3.1.2, bytes@~3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + cac@^6.7.14: version "6.7.14" resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" @@ -3558,7 +3848,7 @@ chokidar@3.5.1: optionalDependencies: fsevents "~2.3.1" -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -3578,11 +3868,6 @@ chownr@^2.0.0: resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -chrome-trace-event@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" - integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== - ci-info@^3.7.0: version "3.9.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" @@ -3751,7 +4036,7 @@ colord@^2.9.1: resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -colorette@^2.0.14, colorette@^2.0.16: +colorette@^2.0.10, colorette@^2.0.16: version "2.0.20" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -3776,7 +4061,7 @@ commander@12.0.0: resolved "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz" integrity sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA== -commander@7, commander@^7.0.0, commander@^7.2.0: +commander@7, commander@^7.2.0: version "7.2.0" resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -3821,11 +4106,6 @@ commitlint@^19.6.1: "@commitlint/cli" "^19.8.0" "@commitlint/types" "^19.8.0" -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" @@ -3839,7 +4119,7 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -compressible@~2.0.16: +compressible@~2.0.16, compressible@~2.0.18: version "2.0.18" resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== @@ -3859,6 +4139,19 @@ compression@1.7.4: safe-buffer "5.1.2" vary "~1.1.2" +compression@^1.7.4: + version "1.8.1" + resolved "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79" + integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== + dependencies: + bytes "3.1.2" + compressible "~2.0.18" + debug "2.6.9" + negotiator "~0.6.4" + on-headers "~1.1.0" + safe-buffer "5.2.1" + vary "~1.1.2" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" @@ -3881,6 +4174,11 @@ concat-with-sourcemaps@^1.1.0: dependencies: source-map "^0.6.1" +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" @@ -3898,6 +4196,18 @@ content-disposition@0.5.2: resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz" integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== +content-disposition@~0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + conventional-changelog-angular@^5.0.12: version "5.0.13" resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz" @@ -4090,6 +4400,16 @@ convert-source-map@^2.0.0: resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +cookie-signature@~1.0.6: + version "1.0.7" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" + integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== + +cookie@~0.7.1: + version "0.7.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + copy-props@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz#01d249198b8c2e4d8a5e87b90c9630f52c99a9c9" @@ -4654,6 +4974,11 @@ de-indent@^1.0.2: resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== +debounce@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + debug@2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" @@ -4725,6 +5050,19 @@ deepmerge@^4.2.2: resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== +default-browser-id@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz#f7a7ccb8f5104bf8e0f71ba3b1ccfa5eafdb21e8" + integrity sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q== + +default-browser@^5.2.1: + version "5.4.0" + resolved "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz#b55cf335bb0b465dd7c961a02cd24246aa434287" + integrity sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg== + dependencies: + bundle-name "^4.1.0" + default-browser-id "^5.0.0" + define-data-property@^1.0.1, define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" @@ -4734,6 +5072,11 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: es-errors "^1.3.0" gopd "^1.0.1" +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + define-properties@^1.1.3, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" @@ -4760,6 +5103,21 @@ delegates@^1.0.0: resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== +depd@2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +destroy@1.2.0, destroy@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + detect-file@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz" @@ -4775,6 +5133,11 @@ detect-newline@^3.1.0: resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + diff@5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" @@ -4787,6 +5150,13 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" @@ -4935,6 +5305,11 @@ duplexer2@^0.1.2: dependencies: readable-stream "^2.0.2" +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + each-props@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz#a88fb17634a4828307610ec68269fba2f7280cd8" @@ -4956,6 +5331,11 @@ echarts@^6.0.0: tslib "2.3.0" zrender "6.0.0" +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + electron-to-chromium@^1.5.173: version "1.5.178" resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.178.tgz#6fc4d69eb5275bb13068931448fd822458901fbb" @@ -4981,6 +5361,11 @@ enabled@2.0.x: resolved "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz" integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + encoding@^0.1.13: version "0.1.13" resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" @@ -4995,14 +5380,6 @@ end-of-stream@^1.4.4: dependencies: once "^1.4.0" -enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.1: - version "5.18.1" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" - integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - enquirer@^2.3.5, enquirer@^2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" @@ -5031,11 +5408,6 @@ env-paths@^2.2.0, env-paths@^2.2.1: resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -envinfo@^7.7.3: - version "7.14.0" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae" - integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg== - err-code@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" @@ -5165,7 +5537,7 @@ es-iterator-helpers@^1.2.1: iterator.prototype "^1.1.4" safe-array-concat "^1.1.3" -es-module-lexer@^1.2.1, es-module-lexer@^1.7.0: +es-module-lexer@^1.7.0: version "1.7.0" resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== @@ -5244,6 +5616,11 @@ escape-goat@^3.0.0: resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-3.0.0.tgz" integrity sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw== +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" @@ -5612,6 +5989,11 @@ esutils@^2.0.2: resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + ev-store@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/ev-store/-/ev-store-7.0.0.tgz" @@ -5619,16 +6001,11 @@ ev-store@^7.0.0: dependencies: individual "^3.0.0" -eventemitter3@^4.0.4: +eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - execa@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" @@ -5644,6 +6021,11 @@ execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +exit-hook@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz#c1e16ebd03d3166f837b1502dac755bb5c460d58" + integrity sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ== + expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz" @@ -5661,6 +6043,43 @@ exponential-backoff@^3.1.1: resolved "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz" integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== +express@^4.21.2: + version "4.22.1" + resolved "https://registry.npmjs.org/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069" + integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "~1.20.3" + content-disposition "~0.5.4" + content-type "~1.0.4" + cookie "~0.7.1" + cookie-signature "~1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.3.1" + fresh "~0.5.2" + http-errors "~2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "~2.4.1" + parseurl "~1.3.3" + path-to-regexp "~0.1.12" + proxy-addr "~2.0.7" + qs "~6.14.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "~0.19.0" + serve-static "~1.16.2" + setprototypeof "1.2.0" + statuses "~2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" @@ -5746,7 +6165,7 @@ fast-uri@^3.0.1: resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== -fastest-levenshtein@^1.0.12, fastest-levenshtein@^1.0.7: +fastest-levenshtein@^1.0.7: version "1.0.16" resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== @@ -5758,6 +6177,13 @@ fastq@^1.13.0, fastq@^1.6.0: dependencies: reusify "^1.0.4" +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + fdir@^6.2.0, fdir@^6.4.4: version "6.5.0" resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" @@ -5794,6 +6220,19 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" +finalhandler@~1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz#1ebc2228fc7673aac4a472c310cc05b77d852b88" + integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "~2.4.1" + parseurl "~1.3.3" + statuses "~2.0.2" + unpipe "~1.0.0" + find-cache-dir@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" @@ -5812,14 +6251,6 @@ find-cache-dir@^3.3.2: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-cache-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" - integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== - dependencies: - common-path-prefix "^3.0.0" - pkg-dir "^7.0.0" - find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" @@ -5850,14 +6281,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - find-up@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz#e8dec1455f74f78d888ad65bf7ca13dd2b4e66fb" @@ -5917,6 +6340,11 @@ fn.name@1.x.x: resolved "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== +follow-redirects@^1.0.0: + version "1.15.11" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + follow-redirects@^1.15.6: version "1.15.9" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" @@ -5950,6 +6378,16 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@~0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + fs-extra@^10.0.0: version "10.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" @@ -6191,10 +6629,10 @@ glob-stream@^8.0.3: normalize-path "^3.0.0" streamx "^2.12.5" -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob-to-regex.js@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" + integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== glob-watcher@^6.0.0: version "6.0.0" @@ -6325,7 +6763,7 @@ gopd@^1.0.1, gopd@^1.2.0: resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.8: +graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.6, graceful-fs@^4.2.8: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -6495,6 +6933,18 @@ gulplog@^2.2.0: dependencies: glogg "^2.2.0" +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + handlebars@^4.7.7: version "4.7.8" resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz" @@ -6603,6 +7053,16 @@ hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + html-encoding-sniffer@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" @@ -6610,6 +7070,11 @@ html-encoding-sniffer@^3.0.0: dependencies: whatwg-encoding "^2.0.0" +html-escaper@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + html-to-image@^1.11.11: version "1.11.13" resolved "https://registry.npmjs.org/html-to-image/-/html-to-image-1.11.13.tgz#adbc989c993b7aaf90b629c0cacf833db84d5f43" @@ -6658,6 +7123,37 @@ http-cache-semantics@^4.1.0: resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~2.0.0, http-errors@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" + integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== + dependencies: + depd "~2.0.0" + inherits "~2.0.4" + setprototypeof "~1.2.0" + statuses "~2.0.2" + toidentifier "~1.0.1" + +http-parser-js@>=0.5.1: + version "0.5.10" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" + integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== + http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" @@ -6667,6 +7163,26 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" +http-proxy-middleware@^2.0.9: + version "2.0.9" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef" + integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" @@ -6697,6 +7213,11 @@ husky@~9.1.7: resolved "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== +hyperdyperid@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" + integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== + iconv-lite@0.6, iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" @@ -6704,7 +7225,7 @@ iconv-lite@0.6, iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -iconv-lite@^0.4.24: +iconv-lite@^0.4.24, iconv-lite@~0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -6763,14 +7284,6 @@ import-from@^3.0.0: dependencies: resolve-from "^5.0.0" -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - import-meta-resolve@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz" @@ -6804,11 +7317,16 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + ini@4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz" @@ -6833,11 +7351,6 @@ internal-slot@^1.1.0: resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - interpret@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" @@ -6851,6 +7364,16 @@ ip-address@^9.0.5: jsbn "1.1.0" sprintf-js "^1.1.3" +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz#71dce70e1398122208996d1c22f2ba46a24b1abc" + integrity sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg== + is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz" @@ -6950,6 +7473,11 @@ is-docker@^2.0.0: resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" @@ -7001,6 +7529,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" @@ -7026,6 +7561,11 @@ is-negative-zero@^2.0.3: resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz" integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== +is-network-error@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz#2ce62cbca444abd506f8a900f39d20b898d37512" + integrity sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw== + is-number-object@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" @@ -7064,6 +7604,11 @@ is-plain-obj@^2.1.0: resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" @@ -7216,6 +7761,13 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + dependencies: + is-inside-container "^1.0.0" + isarray@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -7258,15 +7810,6 @@ iterator.prototype@^1.1.4: has-symbols "^1.1.0" set-function-name "^2.0.2" -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jiti@^2.4.1: version "2.4.2" resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560" @@ -7357,7 +7900,7 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -7482,6 +8025,14 @@ last-run@^2.0.0: resolved "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz#f82dcfbfce6e63d041bd83d64c82e34cdba6572e" integrity sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ== +launch-editor@^2.6.1: + version "2.12.0" + resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz#cc740f4e0263a6b62ead2485f9896e545321f817" + integrity sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg== + dependencies: + picocolors "^1.1.1" + shell-quote "^1.8.3" + layout-base@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz" @@ -7577,11 +8128,6 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - loader-utils@^3.2.0: version "3.3.1" resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" @@ -7617,7 +8163,7 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -locate-path@^7.1.0, locate-path@^7.2.0: +locate-path@^7.2.0: version "7.2.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== @@ -7946,6 +8492,23 @@ mdn-data@2.0.14: resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^4.43.1: + version "4.51.1" + resolved "https://registry.npmjs.org/memfs/-/memfs-4.51.1.tgz#25945de4a90d1573945105e187daa9385e1bca73" + integrity sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ== + dependencies: + "@jsonjoy.com/json-pack" "^1.11.0" + "@jsonjoy.com/util" "^1.9.0" + glob-to-regex.js "^1.0.1" + thingies "^2.5.0" + tree-dump "^1.0.3" + tslib "^2.0.0" + memorystream@^0.3.1: version "0.3.1" resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" @@ -7978,6 +8541,11 @@ meow@^8.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" @@ -8010,12 +8578,17 @@ mermaid@9.4.3: uuid "^9.0.0" web-worker "^1.2.0" +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + microbuffer@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz" integrity sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA== -micromatch@^4.0.0, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -8028,6 +8601,11 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== +mime-db@^1.54.0: + version "1.54.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + mime-db@~1.33.0: version "1.33.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz" @@ -8040,13 +8618,25 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" +mime-types@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz#39002d4182575d5af036ffa118100f2524b2e2ab" + integrity sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A== + dependencies: + mime-db "^1.54.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + mime@^2.4.6: version "2.6.0" resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" @@ -8069,6 +8659,11 @@ min-indent@^1.0.0: resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + minimatch@3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -8228,6 +8823,11 @@ mri@^1.2.0: resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== +mrmime@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz#bc3e87f7987853a54c9850eeb1f1078cd44adddc" + integrity sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ== + ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -8248,6 +8848,14 @@ muggle-string@^0.4.1: resolved "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz#3b366bd43b32f809dc20659534dd30e7c8a0d328" integrity sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ== +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + multipipe@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" @@ -8307,6 +8915,11 @@ negotiator@0.6.3, negotiator@^0.6.3: resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +negotiator@~0.6.4: + version "0.6.4" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" @@ -8337,6 +8950,11 @@ node-fetch@^2.5.0, node-fetch@^2.6.0: dependencies: whatwg-url "^5.0.0" +node-forge@^1: + version "1.3.3" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz#0ad80f6333b3a0045e827ac20b7f735f93716751" + integrity sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg== + node-gyp@^9.0.0: version "9.4.1" resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" @@ -8553,11 +9171,28 @@ object.values@^1.1.6, object.values@^1.2.1: define-properties "^1.2.1" es-object-atoms "^1.0.0" +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@^2.4.1, on-finished@~2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + on-headers@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== +on-headers@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz#59da4f91c45f5f989c6e4bcedc5a3b0aed70ff65" + integrity sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A== + once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" @@ -8579,11 +9214,26 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +open@^10.0.3: + version "10.2.0" + resolved "https://registry.npmjs.org/open/-/open-10.2.0.tgz#b9d855be007620e80b6fb05fac98141fe62db73c" + integrity sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA== + dependencies: + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + wsl-utils "^0.1.0" + openai@^5.9.0: version "5.9.0" resolved "https://registry.npmjs.org/openai/-/openai-5.9.0.tgz#fe6109d3dca5be6dd742f7ac54d810a0086d1d37" integrity sha512-cmLC0pfqLLhBGxE4aZPyRPjydgYCncppV2ClQkKmW79hNjCvmzkfhz8rN5/YVDmjVQlFV+UsF1JIuNjNgeagyQ== +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + optionator@^0.9.1, optionator@^0.9.3: version "0.9.4" resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -8710,6 +9360,15 @@ p-queue@^6.6.2: eventemitter3 "^4.0.4" p-timeout "^3.2.0" +p-retry@^6.2.0: + version "6.2.1" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz#81828f8dc61c6ef5a800585491572cc9892703af" + integrity sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ== + dependencies: + "@types/retry" "0.12.2" + is-network-error "^1.0.0" + retry "^0.13.1" + p-timeout@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" @@ -8795,6 +9454,11 @@ parse5@6.0.1, parse5@^6.0.1: resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + path-browserify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" @@ -8857,6 +9521,11 @@ path-to-regexp@3.3.0: resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz#f7f31d32e8518c2660862b644414b6d5c63a611b" integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== +path-to-regexp@~0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== + path-type@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" @@ -8951,20 +9620,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.1.0, pkg-dir@^4.2.0: +pkg-dir@^4.1.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - dependencies: - find-up "^6.3.0" - plexer@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/plexer/-/plexer-2.0.0.tgz" @@ -9334,6 +9996,14 @@ prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -9354,6 +10024,13 @@ q@^1.5.1: resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== +qs@~6.14.0: + version "6.14.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" + integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== + dependencies: + side-channel "^1.1.0" + quansync@^0.2.7: version "0.2.10" resolved "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz#32053cf166fa36511aae95fc49796116f2dc20e1" @@ -9386,6 +10063,21 @@ range-parser@1.2.0: resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@~2.5.3: + version "2.5.3" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" + integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== + dependencies: + bytes "~3.1.2" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + unpipe "~1.0.0" + rc@^1.0.1, rc@^1.1.6: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" @@ -9493,13 +10185,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -rechoir@^0.7.0: - version "0.7.1" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" - integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== - dependencies: - resolve "^1.9.0" - rechoir@^0.8.0: version "0.8.0" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" @@ -9658,13 +10343,6 @@ requires-port@^1.0.0: resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz" @@ -9695,7 +10373,7 @@ resolve-pkg-maps@^1.0.0: resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4, resolve@^1.9.0: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4: version "1.22.10" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== @@ -9726,6 +10404,11 @@ retry@^0.12.0: resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" @@ -9823,6 +10506,11 @@ rollup@4.52.3, rollup@^4.34.9: "@rollup/rollup-win32-x64-msvc" "4.52.3" fsevents "~2.3.2" +run-applescript@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz#2e9e54c4664ec3106c5b5630e249d3d6595c4911" + integrity sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" @@ -9858,7 +10546,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -9916,7 +10604,7 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -schema-utils@^4.0.0, schema-utils@^4.3.0: +schema-utils@^4.0.0: version "4.3.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz#3b669f04f71ff2dfb5aba7ce2d5a9d79b35622c0" integrity sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g== @@ -9926,6 +10614,29 @@ schema-utils@^4.0.0, schema-utils@^4.3.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +schema-utils@^4.2.0: + version "4.3.3" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz#5b1850912fa31df90716963d45d9121fdfc09f46" + integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + semver-greatest-satisfied-range@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz#4b62942a7a1ccbdb252e5329677c003bac546fe7" @@ -9948,6 +10659,25 @@ semver@^7.1.1, semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semve resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== +send@~0.19.0, send@~0.19.1: + version "0.19.2" + resolved "https://registry.npmjs.org/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29" + integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "~0.5.2" + http-errors "~2.0.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.4.1" + range-parser "~1.2.1" + statuses "~2.0.2" + serialize-javascript@5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" @@ -9955,7 +10685,7 @@ serialize-javascript@5.0.1: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: +serialize-javascript@^6.0.1: version "6.0.2" resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== @@ -9975,6 +10705,29 @@ serve-handler@6.1.6: path-to-regexp "3.3.0" range-parser "1.2.0" +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@~1.16.2: + version "1.16.3" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9" + integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "~0.19.1" + serve@^14.2.0: version "14.2.4" resolved "https://registry.npmjs.org/serve/-/serve-14.2.4.tgz#ba4c425c3c965f496703762e808f34b913f42fb0" @@ -10028,6 +10781,16 @@ set-proto@^1.0.0: es-errors "^1.3.0" es-object-atoms "^1.0.0" +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0, setprototypeof@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" @@ -10064,6 +10827,11 @@ shell-quote@^1.6.1: resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== +shell-quote@^1.8.3: + version "1.8.3" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" + integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== + side-channel-list@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" @@ -10126,6 +10894,15 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +sirv@^2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" + integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== + dependencies: + "@polka/url" "^1.0.0-next.24" + mrmime "^2.0.0" + totalist "^3.0.0" + slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" @@ -10172,6 +10949,15 @@ smob@^1.0.0: resolved "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz" integrity sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig== +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + socks-proxy-agent@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" @@ -10207,11 +10993,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - sparkles@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz" @@ -10256,6 +11037,29 @@ spdx-license-ids@^3.0.0: resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz" integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + split2@^3.0.0: version "3.2.2" resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" @@ -10327,6 +11131,16 @@ standard-version@^9.3.2: stringify-package "^1.0.1" yargs "^16.0.0" +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@~2.0.1, statuses@~2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + std-env@^3.9.0: version "3.9.0" resolved "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1" @@ -10591,7 +11405,7 @@ stylis@^4.1.2: resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz#7c7b97191cb4f195f03ecab7d52f7902ed378320" integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== -supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.1: +supports-color@8.1.1, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -10708,11 +11522,6 @@ table@^6.0.9: string-width "^4.2.3" strip-ansi "^6.0.1" -tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - tar@^6.1.11, tar@^6.1.2: version "6.2.1" resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" @@ -10737,18 +11546,7 @@ term-size@^2.1.0: resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== -terser-webpack-plugin@^5.3.11: - version "5.3.14" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" - integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.25" - jest-worker "^27.4.5" - schema-utils "^4.3.0" - serialize-javascript "^6.0.2" - terser "^5.31.1" - -terser@^5.17.4, terser@^5.31.1: +terser@^5.17.4: version "5.39.0" resolved "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz#0e82033ed57b3ddf1f96708d123cca717d86ca3a" integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw== @@ -10792,6 +11590,11 @@ text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +thingies@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz#5f7b882c933b85989f8466b528a6247a6881e04f" + integrity sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw== + through2@^2.0.0: version "2.0.5" resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" @@ -10812,6 +11615,11 @@ through@2, "through@>=2.2.7 <3", through@^2.3.8: resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + time-stamp@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz" @@ -10871,6 +11679,16 @@ to-through@^3.0.0: dependencies: streamx "^2.12.5" +toidentifier@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + tough-cookie@^4.0.0: version "4.1.4" resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz" @@ -10893,6 +11711,11 @@ tr46@~0.0.3: resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +tree-dump@^1.0.3, tree-dump@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" + integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA== + trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" @@ -10913,17 +11736,6 @@ ts-dedent@^2.2.0: resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== -ts-loader@^9.2.2: - version "9.5.2" - resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz#1f3d7f4bb709b487aaa260e8f19b301635d08020" - integrity sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - source-map "^0.7.4" - tsconfig-paths@^3.15.0: version "3.15.0" resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz" @@ -10939,7 +11751,7 @@ tslib@2.3.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== -tslib@^2.1.0, tslib@^2.2.0, tslib@^2.6.2: +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.4.0, tslib@^2.6.2: version "2.8.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -11018,6 +11830,14 @@ type-fest@^2.13.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + typed-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" @@ -11087,11 +11907,6 @@ typescript@5.7.3: resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== -typescript@~5.6.2: - version "5.6.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" - integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== - uglify-js@^3.1.4: version "3.18.0" resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz" @@ -11127,6 +11942,11 @@ undertaker@^2.0.0: last-run "^2.0.0" undertaker-registry "^2.0.0" +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" @@ -11184,6 +12004,11 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + update-browserslist-db@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" @@ -11220,6 +12045,11 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + utrie@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz" @@ -11227,6 +12057,11 @@ utrie@^1.0.2: dependencies: base64-arraybuffer "^1.0.2" +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + uuid@^9.0.0: version "9.0.1" resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" @@ -11484,13 +12319,12 @@ w3c-xmlserializer@^3.0.0: dependencies: xml-name-validator "^4.0.0" -watchpack@^2.4.1: - version "2.4.2" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" - integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" + minimalistic-assert "^1.0.0" web-resource-inliner@^6.0.1: version "6.0.1" @@ -11519,66 +12353,83 @@ webidl-conversions@^7.0.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -webpack-cli@^4.7.0: - version "4.10.0" - resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" - integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.2.0" - "@webpack-cli/info" "^1.5.0" - "@webpack-cli/serve" "^1.7.0" - colorette "^2.0.14" - commander "^7.0.0" - cross-spawn "^7.0.3" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" - webpack-merge "^5.7.3" +webpack-bundle-analyzer@4.10.2: + version "4.10.2" + resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" + integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== + dependencies: + "@discoveryjs/json-ext" "0.5.7" + acorn "^8.0.4" + acorn-walk "^8.0.0" + commander "^7.2.0" + debounce "^1.2.1" + escape-string-regexp "^4.0.0" + gzip-size "^6.0.0" + html-escaper "^2.0.2" + opener "^1.5.2" + picocolors "^1.0.0" + sirv "^2.0.3" + ws "^7.3.1" + +webpack-dev-middleware@^7.4.2: + version "7.4.5" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz#d4e8720aa29cb03bc158084a94edb4594e3b7ac0" + integrity sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA== + dependencies: + colorette "^2.0.10" + memfs "^4.43.1" + mime-types "^3.0.1" + on-finished "^2.4.1" + range-parser "^1.2.1" + schema-utils "^4.0.0" -webpack-merge@^5.7.3: - version "5.10.0" - resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== +webpack-dev-server@5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz#96a143d50c58fef0c79107e61df911728d7ceb39" + integrity sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg== + dependencies: + "@types/bonjour" "^3.5.13" + "@types/connect-history-api-fallback" "^1.5.4" + "@types/express" "^4.17.21" + "@types/express-serve-static-core" "^4.17.21" + "@types/serve-index" "^1.9.4" + "@types/serve-static" "^1.15.5" + "@types/sockjs" "^0.3.36" + "@types/ws" "^8.5.10" + ansi-html-community "^0.0.8" + bonjour-service "^1.2.1" + chokidar "^3.6.0" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + express "^4.21.2" + graceful-fs "^4.2.6" + http-proxy-middleware "^2.0.9" + ipaddr.js "^2.1.0" + launch-editor "^2.6.1" + open "^10.0.3" + p-retry "^6.2.0" + schema-utils "^4.2.0" + selfsigned "^2.4.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^7.4.2" + ws "^8.18.0" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5.38.1: - version "5.98.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz#44ae19a8f2ba97537978246072fb89d10d1fbd17" - integrity sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA== - dependencies: - "@types/eslint-scope" "^3.7.7" - "@types/estree" "^1.0.6" - "@webassemblyjs/ast" "^1.14.1" - "@webassemblyjs/wasm-edit" "^1.14.1" - "@webassemblyjs/wasm-parser" "^1.14.1" - acorn "^8.14.0" - browserslist "^4.24.0" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.1" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^4.3.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.11" - watchpack "^2.4.1" - webpack-sources "^3.2.3" + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== whatwg-encoding@^2.0.0: version "2.0.0" @@ -11712,11 +12563,6 @@ widest-line@^4.0.1: dependencies: string-width "^5.0.1" -wildcard@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - winston-transport@^4.7.0: version "4.7.0" resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz" @@ -11790,11 +12636,23 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +ws@^7.3.1: + version "7.5.10" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + ws@^8.18.0, ws@^8.2.3: version "8.18.1" resolved "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz#ea131d3784e1dfdff91adb0a4a116b127515e3cb" integrity sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w== +wsl-utils@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz#8783d4df671d4d50365be2ee4c71917a0557baab" + integrity sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw== + dependencies: + is-wsl "^3.1.0" + x-is-array@0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/x-is-array/-/x-is-array-0.1.0.tgz" From 755dd8cd8cca0cc748384f51c64f9ce6ebcc9cb4 Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Mon, 29 Dec 2025 18:33:29 +0800 Subject: [PATCH 21/57] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=8B=96?= =?UTF-8?q?=E6=8B=BD=E9=A2=84=E8=A7=88=E5=8C=BA=E5=AE=BD=E5=BA=A6=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BD=BF=E5=85=B6=E6=9B=B4=E7=A8=B3?= =?UTF-8?q?=E5=AE=9A=20(#1580)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/rich-facts-stay.md | 5 ++ packages/cherry-markdown/src/Cherry.js | 30 ++-------- packages/cherry-markdown/src/Previewer.js | 59 ++++++++++--------- .../cherry-markdown/src/toolbars/Toolbar.js | 26 ++++++-- .../src/toolbars/hooks/Settings.js | 2 +- .../src/toolbars/hooks/TogglePreview.js | 2 +- 6 files changed, 64 insertions(+), 60 deletions(-) create mode 100644 .changeset/rich-facts-stay.md diff --git a/.changeset/rich-facts-stay.md b/.changeset/rich-facts-stay.md new file mode 100644 index 000000000..7adeec14a --- /dev/null +++ b/.changeset/rich-facts-stay.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +fix: 优化拖拽预览区宽度的逻辑,使其更稳定 diff --git a/packages/cherry-markdown/src/Cherry.js b/packages/cherry-markdown/src/Cherry.js index f0326e478..4961b740f 100644 --- a/packages/cherry-markdown/src/Cherry.js +++ b/packages/cherry-markdown/src/Cherry.js @@ -376,40 +376,20 @@ export default class Cherry extends CherryStatic { * 一般纯预览模式和纯编辑模式适合在屏幕较小的终端使用,比如手机移动端 */ switchModel(model = 'edit&preview', showToolbar = true) { + let isShowToolbar = showToolbar; switch (model) { case 'edit&preview': - if (this.previewer) { - this.previewer.editOnly(); - this.previewer.recoverPreviewer(); - } - if (this.toolbar && showToolbar) { - this.toolbar.showToolbar(); - } - if (showToolbar) { - this.wrapperDom.classList.remove('cherry--no-toolbar'); - } else { - this.wrapperDom.classList.add('cherry--no-toolbar'); - } + this.previewer.editAndPreview(); break; case 'editOnly': - if (!this.previewer.isPreviewerHidden()) { - this.previewer.editOnly(); - } - if (this.toolbar && showToolbar) { - this.toolbar.showToolbar(); - } - if (showToolbar) { - this.wrapperDom.classList.remove('cherry--no-toolbar'); - } else { - this.wrapperDom.classList.add('cherry--no-toolbar'); - } + this.previewer.editOnly(); break; case 'previewOnly': this.previewer.previewOnly(); - this.toolbar && this.toolbar.previewOnly(); - this.wrapperDom.classList.add('cherry--no-toolbar'); + isShowToolbar = false; break; } + this.toolbar && this.toolbar.showOrHideToolbar(isShowToolbar); } /** diff --git a/packages/cherry-markdown/src/Previewer.js b/packages/cherry-markdown/src/Previewer.js index c53a65c11..1f300623a 100644 --- a/packages/cherry-markdown/src/Previewer.js +++ b/packages/cherry-markdown/src/Previewer.js @@ -244,7 +244,7 @@ export default class Previewer { this.editor.options.editorDom.style.width = $editorPercentage; this.options.previewerDom.style.width = $previewerPercentage; - this.syncVirtualLayoutFromReal(); + setTimeout(() => this.syncVirtualLayoutFromReal(), 0); } syncVirtualLayoutFromReal() { @@ -356,6 +356,7 @@ export default class Previewer { const editorLeft = this.editor.options.editorDom.getBoundingClientRect().left; const editorRight = mouseUpEvent.clientX; const layout = this.calculateRealLayout(editorRight - editorLeft); + this.options.previewerCache.layout = layout; this.setRealLayout(layout.editorPercentage, layout.previewerPercentage); // 去掉蒙层和虚拟拖动条 this.editor.options.editorDom.classList.remove('no-select'); @@ -743,20 +744,7 @@ export default class Previewer { } $dealEditAndPreviewOnly(isEditOnly = true) { - let fullEditorLayout = { - editorPercentage: '0%', - previewerPercentage: '100%', - }; - if (isEditOnly) { - fullEditorLayout = { - editorPercentage: '100%', - previewerPercentage: '0%', - }; - } - const editorWidth = this.editor.options.editorDom.getBoundingClientRect().width; - const layout = this.calculateRealLayout(editorWidth); - this.options.previewerCache.layout = layout; - this.setRealLayout(fullEditorLayout.editorPercentage, fullEditorLayout.previewerPercentage); + this.$removeModelClass(); this.options.virtualDragLineDom.classList.add('cherry-drag--hidden'); const { previewerDom } = this.options; const { editorDom } = this.editor.options; @@ -785,6 +773,17 @@ export default class Previewer { .forEach((dom) => dom.remove()); } } + let fullEditorLayout = { + editorPercentage: '0%', + previewerPercentage: '100%', + }; + if (isEditOnly) { + fullEditorLayout = { + editorPercentage: '100%', + previewerPercentage: '0%', + }; + } + this.setRealLayout(fullEditorLayout.editorPercentage, fullEditorLayout.previewerPercentage); setTimeout(() => this.editor.editor.refresh(), 0); } @@ -799,8 +798,6 @@ export default class Previewer { } editOnly() { - const html = this.options.previewerCache.html ? this.options.previewerCache.html : this.getDomContainer().innerHTML; - this.doHtmlCache(html); this.$dealEditAndPreviewOnly(true); this.$cherry.$event.emit('previewerClose'); this.$cherry.$event.emit('editorOpen'); @@ -811,30 +808,39 @@ export default class Previewer { editorPercentage: '100%', previewerPercentage: '100%', }; - const editorWidth = this.editor.options.editorDom.getBoundingClientRect().width; - const layout = this.calculateRealLayout(editorWidth); - this.options.previewerCache.layout = layout; this.setRealLayout(fullEditorLayout.editorPercentage, fullEditorLayout.previewerPercentage); this.options.virtualDragLineDom.classList.add('cherry-drag--hidden'); this.$cherry.createFloatPreviewer(); } recoverFloatPreviewer() { - this.recoverPreviewer(true); + this.editAndPreview(); this.$cherry.clearFloatPreviewer(); } - recoverPreviewer(dealToolbar = false) { - this.options.previewerDom.classList.remove('cherry-previewer--hidden'); + /** + * @deprecated use editAndPreview instead + */ + recoverPreviewer() { + this.editAndPreview(); + } + + $removeModelClass() { + this.editor.options.editorDom.classList.remove('cherry-editor--hidden', 'cherry-editor--full'); + this.options.previewerDom.classList.remove('cherry-previewer--hidden', 'cherry-preview--full'); this.options.virtualDragLineDom.classList.remove('cherry-drag--hidden'); - this.editor.options.editorDom.classList.remove('cherry-editor--full'); + } + + // 切换成双栏模式 + editAndPreview() { + this.$removeModelClass(); // 恢复现场 const { layout } = this.options.previewerCache; - this.setRealLayout(layout.editorPercentage, layout.previewerPercentage); + const { editorPercentage = '50%', previewerPercentage = '50%' } = layout; + this.setRealLayout(editorPercentage, previewerPercentage); if (this.options.previewerCache.htmlChanged) { this.update(this.options.previewerCache.html); } - this.cleanHtmlCache(); this.$cherry.$event.emit('previewerOpen'); this.$cherry.$event.emit('editorOpen'); @@ -850,7 +856,6 @@ export default class Previewer { cleanHtmlCache() { this.options.previewerCache.html = ''; this.options.previewerCache.htmlChanged = false; - this.options.previewerCache.layout = {}; } afterUpdate() { diff --git a/packages/cherry-markdown/src/toolbars/Toolbar.js b/packages/cherry-markdown/src/toolbars/Toolbar.js index caa141e29..f010463ab 100644 --- a/packages/cherry-markdown/src/toolbars/Toolbar.js +++ b/packages/cherry-markdown/src/toolbars/Toolbar.js @@ -102,16 +102,30 @@ export default class Toolbar { this.$cherry.$event.on('cleanAllSubMenus', () => this.hideAllSubMenu()); } + /** + * @deprecated use showOrHideToolbar + */ previewOnly() { - this.options.dom.classList.add('preview-only'); - this.$cherry.wrapperDom.classList.add('cherry--no-toolbar'); - this.$cherry.$event.emit('toolbarHide'); + this.showOrHideToolbar(false); } + /** + * @deprecated use showOrHideToolbar + */ showToolbar() { - this.options.dom.classList.remove('preview-only'); - this.$cherry.wrapperDom.classList.remove('cherry--no-toolbar'); - this.$cherry.$event.emit('toolbarShow'); + this.showOrHideToolbar(true); + } + + showOrHideToolbar(isShow = true) { + if (isShow) { + this.options.dom.classList.remove('preview-only'); + this.$cherry.wrapperDom.classList.remove('cherry--no-toolbar'); + this.$cherry.$event.emit('toolbarShow'); + } else { + this.options.dom.classList.add('preview-only'); + this.$cherry.wrapperDom.classList.add('cherry--no-toolbar'); + this.$cherry.$event.emit('toolbarHide'); + } } isHasLevel2Menu(name) { diff --git a/packages/cherry-markdown/src/toolbars/hooks/Settings.js b/packages/cherry-markdown/src/toolbars/hooks/Settings.js index 61dc5cce5..30c21abd3 100644 --- a/packages/cherry-markdown/src/toolbars/hooks/Settings.js +++ b/packages/cherry-markdown/src/toolbars/hooks/Settings.js @@ -165,7 +165,7 @@ export default class Settings extends MenuBase { return; } if (this.editor.previewer.isPreviewerHidden()) { - this.editor.previewer.recoverPreviewer(true); + this.editor.previewer.editAndPreview(); } else { this.editor.previewer.editOnly(true); } diff --git a/packages/cherry-markdown/src/toolbars/hooks/TogglePreview.js b/packages/cherry-markdown/src/toolbars/hooks/TogglePreview.js index e7a2f2f4e..83223e9df 100644 --- a/packages/cherry-markdown/src/toolbars/hooks/TogglePreview.js +++ b/packages/cherry-markdown/src/toolbars/hooks/TogglePreview.js @@ -83,7 +83,7 @@ export default class TogglePreview extends MenuBase { return; } if (this.editor.previewer.isPreviewerHidden()) { - this.editor.previewer.recoverPreviewer(true); + this.editor.previewer.editAndPreview(); this.isHidden = false; } else { this.editor.previewer.editOnly(true); From d2d7d6b5a2e7a11205689e4ef36faa6aaa940a89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Wed, 31 Dec 2025 01:45:54 +0800 Subject: [PATCH 22/57] =?UTF-8?q?chore(vscodePlugin):=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E4=BD=BF=E7=94=A8=E7=9A=84=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=96=87=E4=BB=B6=20(#1582)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test-resources/images/demo-dog.png | Bin 10563 -> 0 bytes .../test-resources/images/feature_copy.gif | Bin 588540 -> 0 bytes .../test-resources/images/feature_font.png | Bin 36640 -> 0 bytes .../images/feature_image_size.png | Bin 121929 -> 0 bytes .../images/feature_table_chart.png | Bin 103475 -> 0 bytes .../vscodePlugin/test-resources/index.html | 41 - .../test-resources/logo/favicon.ico | Bin 3520 -> 0 bytes .../test-resources/markdown/demo.md | 792 ------------------ 8 files changed, 833 deletions(-) delete mode 100644 packages/vscodePlugin/test-resources/images/demo-dog.png delete mode 100644 packages/vscodePlugin/test-resources/images/feature_copy.gif delete mode 100644 packages/vscodePlugin/test-resources/images/feature_font.png delete mode 100644 packages/vscodePlugin/test-resources/images/feature_image_size.png delete mode 100644 packages/vscodePlugin/test-resources/images/feature_table_chart.png delete mode 100644 packages/vscodePlugin/test-resources/index.html delete mode 100644 packages/vscodePlugin/test-resources/logo/favicon.ico delete mode 100644 packages/vscodePlugin/test-resources/markdown/demo.md diff --git a/packages/vscodePlugin/test-resources/images/demo-dog.png b/packages/vscodePlugin/test-resources/images/demo-dog.png deleted file mode 100644 index 936be038cb26e380338a196c63bf347d12b8543e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10563 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 Dp<+{! diff --git a/packages/vscodePlugin/test-resources/images/feature_copy.gif b/packages/vscodePlugin/test-resources/images/feature_copy.gif deleted file mode 100644 index 7dd4b7616261202373f3a2456fef6407da13e1e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588540 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

sU|aTo3kg5I7!A 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 z

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®66%MGA2quG}D6`8?sXuU{V)=AsG@>YeHiw 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

U0zCKu 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 WTsQ~>C1*Eb{s;5_bN>IEwf_%@ld*~b diff --git a/packages/vscodePlugin/test-resources/images/feature_font.png b/packages/vscodePlugin/test-resources/images/feature_font.png deleted file mode 100644 index 2be8f4adbfff17810600ef4ebc46325b9b95877a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36640 zcmcG$XIPV46eb!)L_t7Biu8_j>0MAjkuDH=5km{TO9u;}fb`IdC_VIE!$GBkNG|~* zy%Q-(fDkf?=ggh?HP5}zbLacDNxrPz)?VdZ@8+Yv?lVeqMsffEK>1ul%>V$n)&~Gw zd4JH6Myb- z6o`!hW0n*L-rqX&&O2^dV7*G{mGIbot}vqhw+Yao{U-Kr(@yCB{}w}bGg23I``-?d z<2`Tv+qxh7e{2bsh*Pz>o(bId>I*e!2-Ny#pG?yELAv#cqa3y(FF7T}>OM6~ydyC3_8 z_L{AeYW0*vm4!{YS6LZ_KQT&cplS*|$L`)gUQ=sDXAP|{2YaN9hZY?T&>yeGW7$&L zJz5`AfkQpZqZt}m6kZP~AV(pzf+kwk6M9MSs5RZTTKwSBb4{V`d&eEc9Cczo`R?^4 zEwbR%`Oe@3MeMgOyX_;0_)(k7+GmpN0q6vt3;FZXW)>HJd|}4qKUH)kd|DtSYAHec zGeChIb z%QOdGl5Q#YN7Q?@5;GVBgnpfWhQKB$d+YVjP!hK`F$8iqKJp8#8P}zM#44 z=Sf*EVJ3sXF0I{n)X719yM;lr29}nb9>W>@GnB1Q4QHnwds6Z^ghqhFtg z`I*O6T-O>+6b`;}%+ETOCu$!MxVqdkr2dP^$^=J9*uAk~Y zi_URK*H-X9NX>2c&#V!dy@Hj|?EbLQ?16Z6_VR#lywimqJl#-x#<_%zJ1{7TAq^S$ z3`s@pPEoe#*p&DNRqoN+;>f6ycB841)AN`%yKDq&e9v7A|IvC^80_BuqBl5x2Aw#~ zUtL&NK35U3w=qU7=Uy_}y!wJ=4I*>tCIH$Gvud+^y5!a6I@eaYaA_s~I+-cT%1rKE z!rQRC4&_Zy=Gl_#sI19pNs^9pC-WQK)WFQ!~v$iH&lYoHdVq#?q^HvfQlxi0t5ZUq1aH2`Dd_j!YVIe4fL< zKi`yu+nGs8x5kBwA9u=mYo?2MJ7pV-Urb+>`1v*7DL>hZXx3E93A4(^uU;*)f*PAk zLGXTa-pBT}W+}X7tT6>3x%p#Kzj3YV%rZz&XZiVBY;{p!J#U`qTC|3>dpvX4EXUFM z%&`tiNB$&7wdb1Nvj%~_FE`uME}FC#^6)V1vLg*ASS3XSmVwDVVfAdqw@oEz3-;yY z1cdONd2YCD9CdhfVaTEw>y+@P-yP0h{kh6BP~*RNoo0u!^XRTzk(OiT`T4ED@So3) zzK>Fj;N(Lw7suxr+m-Z}XUu^oA2-(u#$>d#M*WD&*MAQ}7r#w!=O&VuVu-#S?kXTI z_>gYlk>%0RIEXyKxNbZBq*#Y4@#!Z6g%KaaF$c5Lq3VsJZefcI_QP+FXR<_ROI|As zc+DGP{iBOVP9|SwH@iZpmCr51&iu+wa6|0)ePIj9^vlg09vvpO#JXBxtERdI?1VdV zsna3b4*h+;{dK;OX@jZ%{=D#6bhFe%0=@9%NQdaRvfa6=@5|9Vp`^1jh!D8;@sy{w zYHj#v4v$qkGoOP0UMifNRr*Q_xqE-LFXPvPiE3o##(5Va6Jk6Csx^)W^W>sJAdehz zK4lX^m5KW+$D@@Cj}?B!NLSudsNDT%U{Gg5Cww-=7FQ+_>?^U{2t(*SI+Q&NS!ymG zPx=fn^YHK-otYqvr@!~;m>5j5R|ALWz*BI3J_U=*5M2+S z@tFgP(e#B@wos90{;~_&i{n^GRPgprA1Q@B9L?grsWXGMu?X$t>pUqB!7WmcV}@Dz zSvgh;CfKEJjQ^u02pDajWpduutY+NW84WlQmN~@+$c_?9^_?M6&0X-vwv~+vIks%C{IO1Gc!hg2{5`u(5bQH%XGz!|`9`|ZVz34( zLKzS~53Z^A$3+#!KNswZr`o|3Lf&kvK}+PBmyD-9W}V&&S2|B<{)0uf4P0c-cnaNx zI%}KwHk>C~c@3N$T_~4iI#=o|r`W~#nHQ<&Cy403Bz;G%h%UTIX-Ip%?K^s30+Egn zJufPIG{v8)m0q1X3cKhv`o6xgaT+YV4JL4VdUSeEmxu&N*YTV*WGuO8gQ8XG$HY)j_EHJ_v-4P4 z0%ObUwh`E>_2{U8%YKzD`(i>s%Cb&RszFiW%-$!=D7udQSDUL2NLwn``0U^$U7Jm8 z*G>vftxlr6FICL9+lufzM)6lhP0+qVIieS0tNZ`Jk;ftaLXe3z|0Jq?>J*8#d`|3C zwFh1QFKk|bd(49Ocl}}`qRHu(eeTg;J!K~4GMN}!v@OP>|E`z>?eRb-YcGGNK#fOK zRIjeiviPcCZmS|_FKESUycjs-joEe!%6ETPt|!=6d;zK`%Nmb(u+X5{8GcDkF}wpo zlZ$m$7}EG@evyvWbEs~9c|NO~;9>J-{P~}iYu!_zvK`7&s2=Qe7<6=*lc3|bGzeUR zC9s8@e!Ku34SCOUxUE%4=t|)FBqPX(Ypk7e;;Eh8;KC;0A`cV*i;CjDz&pS+;1-*m zK2XV&pTg?{amvws;|fb*Kj#_g65r{AU(y?EY9$6s5BCPS6CU8ezso33o81s1&(@kH z9!FM5pTg^C30_xOE4o?1sLnugWV)QWK6p3R>~hHXWuc*X<;&si(XJ)`Q8$?^UUa&R zB0Ia2CfzX`AHU{|<9F1~cksUjR1jKir`_GcRH@B~Y`62rtTWqN zsU5w9(E}3QlNsYH;WaOMl_ds3YPF+1U3Z)Id6^Y9N~sJKK4l#WQmP*WpWM9fJ8(wu z3_mxT*un%-OZYmuWvrCBh0hyF>jms{ipL{CmA5jeI*Sd!qj|5+4x;nzkJE%5NV^#W z109y%+6x*-E_x8$n~s#VxV3WS#rUPgxdaqgU)(xkE$84^%{=i^8=I;Va)Gq%D>J-} zGBtl(OkvOMLaN0w@tw3;y|FUPq2s8x3pYcEF}Ur1JEjv3{?2Utvn(3oEI!8#S=~G) z^k~Dwbza=*c4zOeQdZ11Yv>WMo))ceJGQSc-SW~f(3{SsbRSGRWA{`C0_O@iKB z%UiHb(?>&VG24ly(BSo1P`o&0w^W=)!wCGf*1I+-LEpIYyYVAg*pDHok&xE)-h$-p zU1o7-;PTf5Wj;RUnHNF1VVVa2S{p!ewZS(rBc+cw2uTR>DbFgbHop09yO84l9R4#N zk^Fs;9rQwun7t5mD^6YZ|9%T%*kB)A{_lWG-!>sMpq;?KQa(UXp~*-Hpu8?esQj;* z0laEpdPkjiRe))$xLd35{-!CnnFMLR0;wa)g`O#ooHG2K{f}7JTPncb22G-170Zek zF@j7ZdpYg0zd_@VK3ZQY08o$WiZby9c2;|(J_7|RKtC_431f0pmpL=pcYJP}45%>S;xN-yXC=hk4^ z9+@fZqp|owRqB|847Zc^GVO>^>7RfrYNC9!)NNs_ zY-wX~8YVfJ-^vQ}Y_9kGDEkI0uG?J_RT)`hTm( z-)bLu!7`t@`gd~;oNys$zGJrHuO{z24{Z77NMU!DPf_@q2J1#*-?G4gq*VBJ&4xa7 z5@;P-m@XN&5pi77Z$?`G&BN#P^Hu`c=bXa#Ad6|>>KrXU8;StxqAuP37`|U7NEzq>RI;fdInguVmDmucbGf|Y^vM1U*=5v zOu2ozIsbRdKAzNT?_mh^EfjM9E<*3K-2@aff)#&ghG$v@81 zYk=**o#&VEiU@&OFyCwG0(d!MW&r;vm;QEMWVUe`M>_5MN~^9hwjlmc%g+5KY;XVB zW*!e7Gac-0*~dlF^mmJm#Hc3jN&N{bTEEuXC&{F=UE)Qlv(huGI}Dnj=MG2Y@kip;c8h1I4tK$n#%c>E?^oof}P?MVX7ApZC6g z(Z&BpCbINuz21=Ga@NhGrMNoe(0PC(?Rx~9irsUHzMaV`aMtWIxR1~a$%XTw)=r$E za3wf-@R6`#3D9|q7Tlw`_ze1e?@dOhUKZ|@*kOc`toG9%zX-oL8foaSD@!|rfs+MZ znir#`vZpy$$Wz)z`>YiEGG2rY7wcv1p8{4)?2CbyEx*&fAy#xH8|UapcDfBRbH!gq zI7%MRzmo_qGWGl#P86*oRqv#EHYfsW$w7sjS&*qI{=RMoGb*&F-!wBo|E{Po*yA{p zEge&i7<@sHY23gOUc;l6J~X}#y%2mA^-3v9H-B;i%NV!4lMTuX>h=j${ijK05vTEw zPs?^2lr#RX{Y!MB%`rCXj=ESM&gWmHXW`|dy4975VyL!0ZUFZqDSLfUBhhw2znW}N z_0^?wTD-F+3)gO^I4f6{Cum`j^{!@%KmDI17K{e|^>dXaW|_#X$L5 zf$j#IjN^d8^1&mlE(AOB2#rlhBix*z8U_W-p17DR$VNvef~G zw{88bE4nK^J*iV^O!f_?@lvZSUtPB|3ep*IK+0wDzxn8P*fZP%ap9HLTkO{ibbIJzPv|K2CGDdUv?fD z0@Op99hs@p$gx8k^ zGLm^mn zjcPVcCk^kBFdc1D3*IQ*ARgSMU8envo+g8$&34!BJ7dTjpPyK^$7%^QHh|B@5d!DS1tk$}qz0trd#%$u(Gs9w z%AMq?ax*S=211s!VAYN>I-Lb14t&$eZiu!-4|R8E7-~FKAx3TNv@7HUh@iOhazfSS)7ul-MQe_QVi6QRuWuzmJRk?^0-rMS{kzfpiN@ zOW~?4TuXW~IQx*5Uloy|p)VaZ5tKm!m`ingi0m?=U8@`MDruAD(SVP{Sl6yvYX!BSCl0lhwb5;erfG{P#>Bk+t@ zH;qgVlC4$-D01+lhp?wp8KIgyHckYm7Z?e`SQ66Mjo zLKtR}EGa1Ib{bLTN^gnjK;s$=cx)^QzxZ$x{2swal$Fd=?kO}bNsm8aAcos7ej(@! zidQ8X?-IUK5nun&4iXpW)6~>lOS(BaNX8asZ~&9{bJpsDIS&3qasGVYyz%aN3uJwJ z(frZLE2LUFzt_;9>c%Fo6qoR(zjb;MRdf;o%jmf_uH~Dx3GN67>*D zmF#)R*948D8(+U7hw|x!k{x+Fg<{h#c+Jd2{}%uaU41@Fu0g#<Y21WSi-jTe}BoS*;L^Y(ZG`pUpeOY1FB+ z#7CZ|hlD?HKrzP#;)Z^q_XQ#Q3jY0z%}b^t0dsZs+1i2Yl!3o%`PP4CSEb80PAIc8 ziEq7XT@&3LaKR(p0{zY{E;oTthmi(~-pMMfb~{{@vK=9}<@heviA>N@CyZ%{J3&PL zd@1C3AF~FTaqRyE6@h>f4q*wfO#Iilu$L8TL5H-`TwL2^7D>K4B9k@)@~OM+>z(x4=Vot6HBpPd>mN z=Wd?O74L3NH7#=5Ty7+Pf~$v_@p+#-hL|)KRRfKU(?B#~yPJBZe{IM8S5?fhldmhp zx6;?6DA5!xI@O4f)rYP4vA*@yQCRAdqi=O;pDs70#Lje?u**!P%&KzXRQGxw{oUPk z9xWYNH0CXwh&N+BlRv9tI_9xb&GfAa95QaL{B0|@spqJXZ(Wj3ab5C5 z2QsOzsIQD~C@^$Xd+Y(tYC2EX07y@fFBr3*5}G%0PRTSfx|S5|Arrm#fCE}0T=nW^HjXmU?U zPCm(*rq?dvzpMq_e!TJ$jRu z8}HW_pKHLlQU4NipmbSQAm4a|y6-U*O+ZF5i*lM-Qf@gF1)TkL%8DhQMC6(v7P|6k zc0(dbXMzIAQ5|_4EAiwf&T&S8UWC4=EjHIY>Y5a~bjxI(tpGzZn;Jr^(g^WvrUodspVPs&%XHc4y4PKqU+2e`+qenlE=55-Y8mAG^1# zv!4A)5goxvIKcSuxu}9$c=*eSbeF!LR{RW7lbc;_+%w11@~}pWc-LiVT07+mv~eo% zIvyGOAgu3p#$TJHP3xTRfj7A{3JLs+h{vMtFX}x%2led|V8rLv)>RGeQ{q#q12_2m z9!(q3JwpGeuk$i|Q65c0L)q`nbS6VMmf^%Yhy50iWI~?7P@dZm# zy#um7O^l&l@8E1;=tKyU%B_Q#e=`(^pl(qXPm)8 z&QKQ-@P;|m3FL>mo2Y#ro$SKC$w#@Ga%V** zJY7~6G}pS6H@W(FaoZb&vf)tZ>-f}mHfF~v{Mmx?z&VNu*F8&$`zg&~)2<5dx2V?D zJ#+$<*zT4pusvMP%N3~-yDVrg@`Gyby|Q`kdu}(TJG!~!oqj8n{|^rJX|t(G=Po`v z=ONLbsI+|uZXEm#Km9^8H|++uLm_tyd*0|2g>?ocz1FDR7|GHY$qGE`=|HailCB(# z6hD`k!TK^SN?Wb1tp$`+oPVor^V`jcLZ%ULVMspxC8x+}_@eHk$Ba_iU6FU*2FD3o z!3+)p`2}zX5_Z^d2wxh$Fjw`IrdXsI-;pkJcJZ z{Ij9g*)~LQ&dCHA+kWl{QY_XX{jr+7;e02CP&DT{f)BWnQV)G!%}c_E9!1J++jr_9 zC)~>CSFXyF9`xFpJWnA(rw1Z%1Z#N;7KKLlDX-3kAeIX8tD~Dl7oA9biHjKy#S*ON zG}Fkpd(BjM7xQZ%&EU9C!8?I+_0MF?TAV(DVQlWSTHN`Ul8>;!LWip6KGT}`JUAN4 zbA%Ik-t8?&7&0J{`DP`vR^)dou(0xl(S!Ea$mhGXf{mI_Or|TWplJ>ArRs#^EtUJl z#1nplSQQQQ+QARB*W(@CXTSwB)}gHg<6L6)^0UCW7n_d}nOTiz?a4u)d3iL55Yf2c4#h(w$+ZsN^U2!1%Pg*@QWARpD-S&JGQ4__F~-PH*iP<24@I-D@OT^ zV6lY=mOCawXk^dE#BLT`G~SZ;KIg9TZ`tOYwh^}`9qynQqJ`0*7t@3KoiU`DYRIEa+_~3o32DW5T=&b-jFK!>+thW>xUL|BvTfPt) z8*atR7A~fzD_aF3e`@R%8JpIh!N)s@beS2bx${~B1EU|Dnn5@l8*0;1zF}iHwo`fN zP(pzW+iI`E@;b-Zmm*lM zITCj@xlGfDPylsz`|RFqKO~)bG{}?;f$$IxdaVJg%pKph&8o%r_2zZKVV_^DCPbs? zI@;pnGvOourAnl<`-P(Kd_Hh4mFfid!qR|~3)x~LayAs`Z9YRY;)V#r*DGSab*&{6 z;?4FZHv^^NmImdHO6}m~fd=!+I``c9BaLo1gCU9QC4&zs`||=$tOtHpjqg)I8*+oy z@^W%{pfM|O{O2gnuRnz#^0YZUx`4k?k(JQ{=6XCd+&*M%O!SxE?xdI?hIC>_(5lD# zHz`h=t=iY9?sausxI=P>43-P;M(}hVy7c+sRku35Uy?tgpHH_LP508%BfnwwrJ!H} zQ3ccfsa&nc^GV469Hv;UCrUG~6LuyQh>i@;geN=_w>jwaDfE@Ss1d;OSbgWqHOSFD zX^bi`af8mx3XM073Q9#r&9tuy~_2S&yw3;6bx44d+lxoUR)@s zmjDdP)9JInEM_73XCW8ohkFf|Y5RBXOd&J4Dy62LOQU{S|7NQP63vx$k= z=s(pU?4myH4@)@*Qo8~|_VT$dpv$T4VoJ5UARS&leIq<|@V=!%YthalYC$2-N87k1 z1P>5(#xapPRdfB48?kkFmb`pG&}Gg81@aisd#9{?5mhxu|a=h}$8 z53eF^jpvd)f|`fgt;&#Vg@a+h%0Zpo(AA&hSy3Lq)5vox5^jsa*Li2{3E^DLc#@uT zZSnxN*w_ey3uXV*(`jzsKPU$4186)fc{$7$11?>GGEz|etO&)~7`#icP+zUBgFOZ6 z%~fc+wdJoq&k9Vs@@!@*)zHbjgEQ zhcZeuBegEruh>=TcW2PXn88~@ZPYvA!R~^n0}u2`s2ya~s@&l&NN1uv=HmNL@42^P zuT`X&r$8F7i!L!GAAsdM`P2IXE`!LXQ2#r`B1~a*3*(VRc-hxYhKRv6q!{mG+eEk< zMgPL3xVRwq#LMAxNphLWx^i!mXT;Kk@*Xc~rf06(A zGVfx=+k$EKs(7&}p#)o)o49N$i8p6sjsv4IE`c8Tn;x-qW*0@&Dm|^1y0oCX`X~18 z{FEICbN-)?D(l*e*dc9NJyzyfJGMX6``mHREiP(D1f_@^FPA}wo*z$yD;{3t{n1nRiN)I; zUT!T?LGe7nKl<(7K&-lBUv350H&ird&?cTO)tgn-Md93SNHaU-$H{~KmWwo~#bnl~ zs~*(96~i5sZAy7-+Ut4MR+yVus<)p3G|0LI>4Q8PqHW%cper@Sg5QZj@fls@WsGLc z;AiF0x0^fm>V9|IXL~ywnoPI64U7GwMf&`nxFQDlt~KPCALrKRnqHxVqoAF8TU)mc z`RhDv3BUvUa9Pmsd2AkSDp(~g8|ZvhBKN$WKzZ^pE1Agf>0I2e45<+z(+l-B_o7nS zs3GrLu%{p1w}-r1!V(w{+5*ux0qd@dwL|Z1jjwb{wU4tVk3A-^5ZOc3Dwru6z-U&$2o z)GT^kZZOyITukc+MDu070Kq@H+xV!_MB77j$X=Ui={_U^7VMR31cb+;b)28OKI_<` zJEJkY47t#zykIn_pYTlMx=}dVbJ+QZ2dY3kpU2F7z&~B5_F6>43I)0nC}f4!G^M8z zAZY)%&M*WtXstw79y4qs=0Nf7!p8sI6EUy!YC5iKB;qD#o)vrk$2MSnp8J48+SmUG zq)qQsXcrLTOAWmj(V&8?V+B&Xss{o;p6GmyTOSg!iF>ot2mi|VN1`w5OQB<1VszN5 zZ)>Na;1%}8RGk}`%TeHTOrzx#Lnr}&0T_rD4-()_aV)OjTa72=)ioOxhq~$yyZDaV zyArD0aG|YbG)hE!S>+1*y>NkzqiQ4YRdMl$1Pj)1@3rdX@7?9gDT$h^?|ZR;C-qr> z+AZz#$%@dU6dq?8o0md(&1OKNZb!K2;8Ar4Q$RZosdafy1ndg+BZK1QtP<{}ks^@y zq6lUnbBLdr#-<3Iwuv?v-JgTyMP2cM0NAZEx>ioFii=Sgi-!`|{8JBYJby`qHYu6S zw0#L+1eV_z`o|3*uGQkH-DSUHqSFk=+<&2&NX1TRrbC>dKF<%9__E&-!)-dGcnYv2 z{uSd+n7}}U_G;az8u>;1Hg>!$pMGtN@G2l8rd(gPIOnSPu0L)06QQ)7hfgHfCsL{V z_HqL&MsE`;;M+o<-#+RA5w=amiI%F*sO8dDJNw#g1;Nv!r?1d@w>*|Jnqw1&AhS^y zT_RQ@#Lz-lp(r-41HJPBPGC zp~hscKJNL}mwgTK7KAuAF4(DodA=B^o=120 z{N$jT^JLANJ(DijFy8jfJ+~!JN~S%Nf>rR=;hK-(#SE63nUhE#{Fs2ZGOjjrdE3(N z4qJLJ;6JJzW=3SYwJM&rSzI(DO}bcZHSUt)FHTU+P60*AdPT|;U*#Jxh}VA}3v2(P zy|^61q+Yivh#$ogAq$O91mrwT-%wc9jRNq7^F658qAL&R>g?Adz$SQFXY|&WO$kaGT7++M1Ii-XSy8a*Fhvq!W_|m z5G6By;YC2Lwp`Ghy(<~81j(8@f%d)b%#`?Num7;+W5@`jNerr5 z?BRhdwZtyH1bm@wF)wQES#Y3(o?KKLiKeG%g3BzBNl&p;v7SHrB^OQ+d^XpN7S$wr z##yW8zLUq&n$NOiB7WxNhwThF1Vgj7I$)jJ`gg&adE|L%(SvuG^UNV;ng}KWG;@q7 zu`QLVG!Ufz4vYuO7Aq?+u}ztbrR^`lKA4FN3=Sp>O>m82TQ_jey8juKy)3w`0&H^2 z#$aqagJ|&z1Ph>9WE4*dt>`+r({@GUTIG$2Uyp;In=Q|FDa}Y-{KDoq1r)!@S}y`m z6cPBKgTMn*+NVS)LhlhquXVL}ckQF24Uw2iOwqKmjfHV=^EXknRRn&e#OIPZLfA}F zyk6kFJ<4U&e}V+3JUO6uThCa*5%dU9XicDp05lxksKIVe$lYR=Rwq;Ji5OZ4DJHqj zNour{T3KWhv&*GSfBDK?fwL>ORk-C_`aShMQ&3uN53Hro}W-BkZiW`>FHTF{yYh}%9iqH7Mfp14Ir3 z+M8K0p1?tl9v0m?IfeMY8lMJl~U-SLbbda{`Rj{uXKf0fc_0xDwYV+DQl_WNz< zU8kYxN?sxG!ImfzChY+_KdOshYkLAn3w8lhj32sN`#hst{*<||!QK)ZRs;*!r!Pnk!? z%f0G%qQWzYR)Vi3f4A&z?CKyNSas^ZqYO?gFg!WQF#aIEk6%g-*S<^#0Sz7)M;fH` zlKt{kdj6%1nS#z4XxL5*4cjDamkQ5d*#6al%rP6ZZo4VECpb|QFCx|UaZeCth3574 z1dMAMmlJfqtZ?dOIyDPe;GM7iAhjcm7pWUQpdCEHi`%pcX}tM3HHvcnLnr3`;z(;_ zZr(}VQZemgQ6(AOOX*W_8c*igj*pq;bDhY@4F(gci`WaJ(^$nnvnj>$BNb7BeYnfM zUn)8zvirdsYS~r0z6y&}1Gd2U?a^OhRdi(qGueiGS^2frc^8wQjfEXh z2?rgL;Q9q7=#xX|vR7EG-@J51NtTW6yCL{U1tYh-PtgZQjMO^8=XNV-`3@!P>4EvmcEtPqKW)sMi(1{RCqpX!C znWczXeg$nUs|U)!>!V{fO)j+~tIL4KoR4Gr?bR(cDdv~NEbQC7DPTMbUdi@+Deu+B zmzEK?AhS^|l##i>fdO)#5(CX%xxWRWvp@+v&_HH3SJ5kN)B(9-^=ANFqlG$>_V^=QG0oc1@NU-a~<}l-C=VHgI zg@2JF;_lq*gaGJ}VmhuQ0eP&uEyT;9>cI6c5zB}gn)ci*fUtz|7qZ1=?}Cw&zqUYQ znMm{J_SDHwqO`;wF2ezWvvpTxlExn|)d+3ALl!pdFGTznMm|QY$Cf;Ax*kSzK-K!| z9~gy=%<4SWJ3J})5juVhbAefEHPCcy5OP`ZsQh7;G^O~)`7M|jlLI0MKn%f(?e%abPidaeC+GM&KjIt>dxaw2v-r z0lKXQ-<$RP^BgU1N(qnen$*|8}yItjI*C-fv&Z^siI7N9(O$|uzD#*jey#iu>c znyD3SNX)Fyp3Z>tD#f_91>K=o<)B1xxJ0me#?Xu>B4^%GzO$|Yf}j_5vb;XuPeHy1=>9T*ZUa<&r zfRkOI%syDg0|gzZZyp_3=ew`D-OHj>s>C|YCI&hYKsgh^>k%H6#?*aiLyW!iE5%{o zrxFnF%9gOB94mj-t+Jf4s({ut^|CRC%oe?qDt-P5L~4a>adc4MjE?0i9a>!bT1HIW ztjY1UazO&*oH%AFVq%GHU3B+Zf|^vfp!20%(&X6WeVr_^%9sV8jgXZeAHDXK?fP%~ zT#m>fel+5}`dA!)#>T{~%y-#-kJ<>qqW8V_ZJON|ThOtzNNR#*ix6-^Ng`5J4@qBC z_XR{uuduS;#UZZ35-Wlm1)#C5ds$013z!dfjoZBDavNxm8EwsCNGie#I$A8pj9x+( z`fl&85Pi|~ZI@Ha(c?B1@AUKHk68k(TTe?TgfUCoovy}{!}YA7s=?5I9iDh$Nkar1} zo7bLc9$4a6xfc)=+)69@=GNnXsjH=|+SCtA;O+^lvSJ5c&0i<)Ei={x&IvYs+1#hu zD4KF;j&2zp*sVi8!J;%qxyBD8hE@Lkr3zaYkSm(sK@oyp}? z8LPHA+{!X}hl5@9Kd!IJwXYlZGQ)GM{yd3OfITz~lAIOt;Wg%F$mXV4P!|tYI| zq|=RAt(6?ER~o%jUsSpP+6`C<5RQ<9r0fu)70n)t+GRBDqHdfIp2K*|y@Qs^9kFz{ zk3=JFlAcu`iQ3o!FK!-Pe(=DTA_zKpa`Nq}mrW)c{1Js4(2DW;r(F)pC$3rHMVm6~ zkaZ7)B8C?{3v%u6LyG;ZN62o1=wMsPR3?%45g(qMxmNZ6_EHzOVALEvw9Ws-MLE=) z!@6STmd7O{wZ{({0ilvWO!o$TT@+UlNgl`pj=nsJL7%`14@I}a*4ZYnpo)zN7Qyw7 zRa34ME0*{2@`V)tafhe03$)RCE|@&`toAvks{{&6&t;M>FGIboV*D|A zGJUsBWxaH4ZrRrl-@mW*(2;t!Dvb*LOHXiR7**$7|DrNGw!%sP#KIPwda})ZC84?i zF^dlo%w}R13=P}+-MY`4SwCm7PbbdYP=8el4~{!=Vjur~B6g)&LY<~e?Z0ypCHWvr z$lG4OOGv`4u2p+RpWlF5l;(>Z(0NXeZ^)5`qR4sjv5q*cQ)GU+j?=9hLk-IF^V{ns zZt+Nd%E}0x<|H}sv%aG%U#HSXtQ(Cd=b3)#Sa0P9G2Y&rE1&(QD@ZDEUx}E`0{~NT zuLlt?cjslBPadWR^)uKYs=E)w^6&|V)@BR`rjb{0wY;=DUV<*`&nZt%T41yys#1@R z57Bb<=#Q=j%P$9J9u8i!Ft(AZG&(*|-Y(n_cN`gj(XIgt?uiViU!YfZwb1b=+xeoA z9{!27;uZ(w@|Ux$lsf$zlRkSp7ukiMHsyo^Y%64LNOaEqIG#t}deL*8oBBVGxU*VL z6+c0(iei>1VR&2hO-fg3@UC0Mi7Ue^#`S)=6_&>Z+SFNtrQNyk+RY3Lx_cst-TM^w zb<#^Rke5~7h9cEJF_s5o-Nx%vkLB0k*yMGsn{UtK<@91tszSi|x?uFwuEW?> z3q;*}T^-U_s{ieQbVXTcHy;h1)D{OQr}!z|i0)oPzkY(@fu!jxGn0w;HjJ8?iPaa* z2_~Cl7*4@mn`w^lI`DhtmM5cK6(yN6g@P6>pBEZ5Xoe}%iYSN3g1d2puP7h9QTw0P zm`T1-bYrkKYPlFqdR?=d)+`<>)!S-b)Oj?tE!ooPp<421#3a!ETlYhtX?$qcTUHyk zKIaTJt*;?2;m3@bJ%FnuiuHGkHybmx!^H~k|EsG2p=VO**RyA4pFrz&N`Lbny{MdK zc=ykssL9!FLCdWT)4(Z}pt$;P?fp{D)2s08O}OB`Rw`Bu%N(3GAlwq-`D|=ra2}vG zHX-%Ztf6t}(}BIqv%Gh`Y&Wui;yup2T`IhpF?C|&pnbb1Vuhst%>z~N7}DO)MD-~{ zSe-ZSP+%qjYFWBYnLaH~@qkK$9cwyZS= ze#-~rAWP5sa3p!g`nLyGixUN#=I_uW>+mF&LeHO8yg$4 z|MEV1k{h$lWPweIloCjy`tL5t)cfi|@Uri=oV9j@gw=Nj8+PfYJ`(Ygx!-k{#wLD= z11`b+41(;zwlybC`VaEWLYo@!8EaYzx`;uYs_ZqmE~o<=6p#JK@-R~UYoT7r^*2)v zH_a=@VMoQf6v81A3*WA^;Q#}Oi%RXE9$OS&27}_&70*<^KlkPK>zHxJ$6{4( zX=>^Ah?G@Uw0xdpxJ!paMZV2Gg#byj!kJHS&yu5e9TIKIh$s2DL99>dqSyideCc9P zV$;d9Ne!A?Si!3AbXNcG{*X3UCG_*@^&O>rhRsXWii9Ou41Kc)@)Z3Vi>dDaYI2q? zS|@OMEin8?bND1O;dV@uE9Np%d5DKV986xvUuEA=JeBxKi=-e0fL{{$r5hdAok9Gp zA7^s&UDL%%s*?uLF}##cRjGCGhO9mJBr?}219>Y0=(l1SHqg(?9RbSVgJiO+<&`H* zVk0HN!LFGgmkyw*e@JH~p0SmGk354e*IL$et>>R!jMuRu`s#LKhWA5*w*(;c@Bak= z75#Itl59kM<$jFkEfw?UK?GB9^Qr80_LM>kSz`%NnJHBj(%bPIKyQP;6h8pq?i){1 z6-C0X+BL8sLTF~f{NfdU<{+^+cnf;;(H~P}q}!nqZ1VWgr6^Naj0?v9Q-b6sLez$K zhJZ)P_veh-v?^8M6q-(qFK|bz=PhWD*G4oxu;pl*)%mW&vFN9bEPta$LecG#a7l$| zuvNrI@;Mz*Oj~la{q15G7W!kuSCL`OKa;-k(F73}C;ZU6 zBA@4Lw02VU-H_QUq=xnyeb?CT-G4V&D|z^XjMD_hUgu_V(HDRXPV&jWXVxj_wMx8r z2Qd1@R&RHrJ~P-D9;&g?J2OtB!t=#jh|(zo^|+uv(NKM7DhA1LoEAjVRG)AMJjRa3 z`61S`)q1UO!^0Ri79Z-^{o}RNH|@26Y3g5ejP-S2U3{94u(3fuQeNbRq`434?gMTo z!S~S@2p*AiYw6|;3U@^4Qi_(QR%f%!f@tI4Yc8AuB1tQY+4cijy>)z|3sFpKix$yC zr|Ng&o1J1TCp|R#+x1!;-Yy`Ty_iY-er>3LGcvd!hRe>?n&nSaH_A>3^(P3bvtIa^m418kQPv3EbTDONl$z}$H@gX_dn7HupQ5PTc z_PWi}DUW5$*rs#mb@?X8jUYA?8;V_24F#(UH+n|O6waH66-8eUBrwoen@tN11(Biq z*&msI2a4q5&CwmGO)G_FSEiCaa@yhTP)6n*Y%l)_MHs>fm2-KK8-_m5Vj1H+pCRrM z;O?u%piB>uhBV{0(j#OU3sr>5b0~9tv_#jl*2&1IM~pD1ep{;<_F`}-(vR}1uk^ZY65cmBUW?S;N&90i>x9PsFTB!KwW&X(5?C^3(0E} ztClAfm^K(%ei~^U(0dH&pYR!MYHX@)ish}C$nRv;BKcwZO{r)#^sv0{7ojRaD5DfO z?TaHLFX+aF_R>BTVYm#7UYD*83nj+p*$8=`vInA)tRco@q;^>idB&}N2{N}7YHa6F z=7CE)g-%XRU%L}S+rC7Z_|Sj6XyT}ahcqt)yHgiD&Epr}0eUbn2rx5YV4JX~OXYke z{2!C@@}n%w{iIPlM~32!JDPng0yz`#r8bzWMahnEXxOJ6c|A+vS}eHBlV zRGEUmt6>|4G%9|HWf+Ig3C`_7d}wR^cIg5Swrjl)i{7n&PFosplB-8R8eNQsc=F)m zi+M`HYiEvp8VM3XTG3pCUF=B*)vgp_m)090f2u4cTw5kfUvOR->*S0y!K51BN8h$BU9L-sls#!RPhe5> zGlWhzeA!!tchGvApU*>k-u@51-a4$w_kABnQBWjQ1f&H-rKCHRlvHB$knZl-h6NH5 z(k;>qn84@~5Jn@68jUmqMvfS;@AUop9LMjkAAj)Ij^}yq`?;Pg&g;C+8#=|U{vj^~ z7y^iqUb2A*(3Trsi5jPiy0gg!N#QfJ^KsOxlbm-3&vIR7R6+RCq<-6U`w&GKGv_fH z`Qz^#P_Y@K&Dnc`6TYtS(2+jo=E*D>C3uJlorNu;(U3CNCVqf}_X!{L7v5;hFFP2} zE@E@yoNg?SK&e10UK$u}g0zq7v0M>PneNYwy(m8*8{d}GuNT?R+lYlNWsrawTsEC6 zWCzQ*Qq&(}+ox%>l`d3hRPAV%)7eG4PbZG@Lhpylm1%~)?E1@;142|M>uclTD- z5YYVSSTz5eqd=qf*f2GQTbv1c%MhN8(QiX?oQFQ)9r?KP;9+q$D)K*N>(#Dx;xcfZ z1o(S}BFA{`D3*;@Z5;a4%G?;KU8Dy-9JjZVvMpXzgSN??dn7l6bbg*0gezrvot?wE zu3XFdi~KOQg_bIf7SQplme@mNYY-R zXG?g_u4df_+pwAA72ZD1q99##`-rVn^_D0(vhMwZ4$IS`6P|c}VAHQb6L+pTZ|PZ0h*1kS$xb89Axa zDL1DQdwk&?tI_0lw$`wLWgP@rurQxwqUN_GY573q;;z%rsI$}AMV%-1%pf{XbV78) z7JO31pmjMRCp(5-*ueGvxVHJfq`UZ(A{jcQ^Isa&Au(K3OtPBi2Nbf{)(f4HRTyXCNjc3|qy} zNGR~a=(4dq_l8Mu7{C!GQ_Z5m)A8MQVWH%{W^hf--o=HEGu@?NUX9-lgCiV&jSbo@ za#8u7j{*$ua~aN_yPc68FfKZI##1BZCpCXV&BVZt*#g5TymS_abN*alU|E#CCPO7Y zdYS9+?YOA*@?w(831vbc&hePmxnRSsO>T=V@~5QtGdve_n;kn0$dFxjx64M{q_enZ z$S=%XP2vn`*zm%mJ-jA&bx#jN4$Y?hB}}wsN;2x_+=ff^4-O7i_OPnIE+qaM*yy$? z@1Y&$$gG&JMMr{nJTGFt@t80<2Es>`#SM*$y+OE*YV78W@La}xicU^mN|hD4U12tQ zw|D-8o2gt1sdBCjRW=zsq^|kWA_?(OPMTj=B5oU3t`zO1;!GcBhq$_>%@NAQ4}}A{VGStpCNm@DbQAA3$58F z4R8k(_sYxb@w-$Axh(xnLI4tRA+LF+z$@|@Y9W8b`f(fz=+V=WVVCyb7C>?z`|PZO zxUs1SX2aaeYATu9mpF}}GXP6BtNf^Jx%E4daR6B4V z2(7hmWTRl9g-`NH*rt5`6)!bzFu|>zMS$Y$WUA{D#V2Rtwco;3I#Kp+#F)1xbO;{bD%M(8Ek3L>CKfJ&t=KN6 zaR*2grqrxYu(1W*b@H9U<#ou1D^&$$qBgyMbTmyju;=lUX97yb-?oq2=gK`eUath{ zppMbnbPX*!D9}=&0e6dek);%$(AzIX$ab1LUA$7Of?3zAh#AC_2m=HvHRXU*zSGTM zq=S4mu5-lkOB?S6N}f*_+K?R_UDTQ7&{`5zY28%vvfANoz2}Fz+gUNTeJe$) zW%5~1i?S#5)HUV~dR4veAJqRfk^%>$PIqi?LQ$KP=CoZn%56d0cpsHj01q79`^CW^RiJ$mchrSx4GkGa$i>n1pgL~a_19zzb3PdztNys}8) z6au3?|EfV7c3`8e9@49EjX2fr?A`8`o?O6_&g_@@ZavU#Mz+@@_X9(EaI2BMrc zE%(j%dEEsxm;>>9&udDU)n+52Se~wtf4Md^apiVaxIQIr0a>Egp_a_wS*i*?ajP~* z7S79gw!wg$tj&18Pdo@Q&CG|B;4k6ig6mxtIx)`p=4FuV8aNiSzp8*)#``Zhd+uBn zVd>HjQ{=zE6gzFrbp+P+`jz5fx4hH#g1tqC=k2Gi%}cwkyDVJ{8y_t^g7&xc;rlw@|{{K z@bn=J_dW||dB!Rjd~UL1@$|rt7R2XEqs|N+pDcIP!_@mW)0TsS_e&3O;bb|4dF?z>!Xe;3$>6>luujO>uI_Hh7X{czGdkgn{%-7 zvRw5^!zkSGt-+LzJb1lLKA=F$oLd zcU

nsdgr^HW?SSMLegbnDaKUm79HVSd)RFdkX%tVm*=>w@o0=c{~C*me-326UBN znq~9S!YAl4Mh89^#=XAEVsHb@K+Q-7x3;(Bxz2-m$N3qAE`k^@f4K2NqY-iaIEr=hX zq-&NMW_-MLI3j>72~VwQ(_V*XCjj~-W&K;`$ojWsd&{;O7f-a{dIq8cBTjtIH0r@| z518~F9efDWXg6mIXDs}e%h_UCH?J5~W?94%?~KP;Kr7*rEn%;<+2`Cx5Ve4Ocr^e{ zuF7~|L8v6GPuJj(y~F6EX|s^cx5JxG)G-Y;s2snGLtq?I8^c-TC*LWuGU=E!vGdoZ zh5EBr8N?iabqlh?Y#PL8TThThG&1C`2fPV4?qbaMm>>^atu=xZ^^PyoW6a<~8}25cW7<^YW2lK{u<;zLEkE>+sC<8>_(B{P z>+@uGiVtx0GFR#|rwFWq8(X*^@15>QJK7%QVSY;g`nc90aD67t9tPcFMTG|p9z-J< zXIFDj#+1n7Uq4CZ{_Rd)N}o!Fe!YJsF@)BlE2f%}EV}t&FR_aWx2% zpdIv4`X(fCtYz9LxYwvntZ7$Zkk9pLQ@cp58=3c4K~Rm%xi1e-0!>$k78mvfzrnuH z&YbXaSf3F3*7>L*A7^>5NLy^%^bzLx%j#)_X?fM@Ov%9!qP4X05cdj^-YQ*Xs)o6v zlf2G~)0`Lrn-uzh%)*#VrFRh}BCaNC)%vm53;=|sUoZK+778Nhps;&n$XQi{W?Khk z%iip-qR4l!-HT!wI<7IW8nC zSf3KytPmvbFQcn(MRiTFvi$Y*+RsFOyU^1A(^`qWu*`+_Ys&wKZIrt4HlpqiLD=AE zdz_tBo_mn{p^`G({X;YE=Z&-qJ^6xnb5ka{N zsg6Efv!l1DH|kz6dZhbzo~l^ZcrlPEOFNC{shQp*I#w2|8L6z*bm^epkYVTgKe5JM z{kP(A2=cEn$2^v1Bj?Nh#+yx3RkwYuKePT{Yu({r#@cV@V^XebSSj*S6ROFG`htf9 zpAawTgD{Ybgdmz5kr(%r?mobOi{|l@{}fmxFt=t)TR2&j4|eqos(gE z5Y7DjX>96aZv^Fm=p9?wA@^$A(-4F6&5j|%)m_Gll&w`v|2!|;AB4tIm6(O0(K-Cv%Omeb|&-+=PO{w+6lUaT=YHk6#pJWo=$#B1wRiJWQwz>P=&P7&R^rf!lGfJwMm}EN zfrEIs&{CSPPW=8MG#_sNokA`l1yirGds>ZN!kXthsHK^CYgJ}$OFFN(8B2RtX_{M$ z&rLd2j^fJ_oz;c!J_C8azB*ek&^?rgsW)LRmAWB$I_ds*kIw9?>Xtk<$50D*b${~z z*Aee=WM0WMrR$5#uS2sd@?hfWv!MBQI+e3`g_SfubW)}O6;*oq+S{Tfzkl#iFTGE( zM_`Gqw47hEFSAf@PQ0>N<3!0Zzj!9I3?R=4xj_#D%e5jNKZDJ3$H?S zr@>QM_)TY7Io1$4-50A5LqlE?{?&eaG($?1-@k3p&MM*`#T(4guyb|79M9LJq(b!y zv|#E-T9@eO=B}-QVw!NJOx`=;2PX#1U+H}(;kQyf8oE5`B5 zk_|;Yd<(Q`KP0L`>^<;$?-AH}Y|nn<(@PIlD9PPMDiBCkTQ36cZGqgO&Wa7>>qI~F z$*949=B1LYbnMdm?mHm3709r5ifoC=z%gBVu(X9KoS&f}zk|&|uCPgQ1dTIZT#h9e ze~uEuyy3M!s*dfyq{sH38T%oJ*S7nW$YLJ^;&R%(@n$Rih?(K635}JF#r2g~NbI&D z{)?}KOjXQetK8|YCSC0uQ-k$Ol;Q4hTcG?vn>}n8@*TnfIeT=Foyl||jyvrC+T{0d zv+_&32(tpj)R#-U;a8y(j}}Y4+4~vDn5Y>z%H{ixRqJj)*Su?wT?GQpJ6nTQ<3AbB zy!a4o{NdVVd#gj4zrb%M@Q~_>`w-&BEryA-w@NvXlf0h&w6`x=#n(6Nv$%s>Ezah2 zwkJiGK7~a*xuHHO1#EsPFWcJY5}64-^rZ00Y`j^QBPn%!(nBxSWi6+;YfGVLy-$XU zk(s4T2=aGrYymW-t!o9;tsE1sYpbXzpjT3Oba=T6#@3j^0XDmb@xFsnb}a$91-Uso zpmI*wnW;SUQT2DoIc7iMJQ?-$-#WRA7!NR#Z^Km?o~5pG#Qxy1HOW(2&&yTKS@gDG ze9P}F;5B!~E^Ii3=BD6#{_x@LPjD|)#hcVDj^C0Um?;1vGSG)Cx5JOl=)^u>SgQt2 zM%bG^a~R#3dy!5O6g1BeDw@Kw&H?!Wy@7neQ&kAuA^-v>5F|UUwe_hEeyWuf8l(Zs z!pa|#?P~rE%5laAwE!j}GRHb8xkdGv1MU7eiPJ#8YD2GOCAol0*M&B_=&}=HYh9Dx z|5Upvh(PK(-uPFzG*;H-}>{DJCSDFh#6XU3H4@Mv@oc8CMHvC6+yBo7z#r z0sjql3GG?O-zP{$2cI>xMfgy-om^=LXSn0d^6f1ZYA40RQgEzu&lu%vGyXVreOXY? z@X3rF{q~DF(jg9udJ$~S%wA;RYLc{?-!Db(rs3c>uY}(4+%RTcPA^zFb@TgCculi$ zBEm4u*M+VrNb>{7x^pwF%p|GBgA(qjmhyOq&jq90H6?UUXxdlmPZVcNuT`IDmOt6pQW2_m-2xynK^;}G^Vv05tar9wtx!cuCJMKXz@_Cls3)eGbnJ%!2!d0j)O}LSX{?YmSVN>zgBA;izI!FWX6$n#&}aoLK?k5#zkgq z7@w%IbVsu7xkf|RmSi$-IoRvunTEJ*tHtGSoTT31#MQ0f>$jfzzb@7MU2yFirJiW} z_F0iAXh*u$egWJp-q_c#A22RH)t>L2ntz+EB}_R;t9UW{_fHp$=)R&xz)p>!&Ce2x zukS1vGzI=*%0y~SndF24d*hbpP@`(hYGbXR+~7TTfXZq`nI4#N16N=fHwjMf|7cMe zGfDqE4QL~tG}Xzj^?J3eSok6vl9R_SJD3TYX)b+qEP;@DV9x3IURLi*nky+KQ(WV* zd(W8#|9;5TPGg

1V?2LRYqDO!-L}7^)8Bk4UaxbDV5#@!8g&`hz1eNywx?%nqV! zZZ|yl$3EnqV1U;gI#LS5hxx|)Ds`}dr0Rw2{T|pj4c}UISRX$>a4DmtSxAw={i5)s zb{FVBgyPP^O`1~B*RT)puVaBpZ+Bm@RqgzIM}oqm>~*J5!O@3~#5(Rv9E2CZs%EtP ze_Q~f3*_4}OZ-*Yjs>w~HRQU`qgukIWXdnj<%W|`4zXyKzgsvQDMVL>5j!b@2-bv1 z!Jc~|*+QNK99G9%xzkQV2F%~&UqVHG2wx7SH)%iFXh@5os8vU1Tc^3Ov$`8ua^uE( zX*Jtw+^Mi_5dXsv^WQ164%QjL=vG~h8vqbYWGW~NH| zuQwP~;_3E!$3nXF@UE$LnDsd^5VGC&gY6vA>~$sKt|f~g7!F{k-agQ0=vIkkT$uKB z=EAF#EKB_kU#pKULntBZo1VQD%WFjk+!G$EdOHPHEv=)@$NO?kQp2)P>*v4GdF{zt z9`!wA8hPOcPNJ#7Qzh9=beG~kP84j;!VZf7(i&gzB#-{bKhD`2;912Ib@$?({*I!KZD=DL?yL+tq6+j*#QQ_kU8 zY{K^49Yg*Z%a38yCvA_sd{pC+K`0oMAex(p-trwI`Ze&}q2oKjgDr3&riAY~4GUAK z9R*U958Ran@iLr5rUenl%Y6ebDDzF)*PfEuc5VOIatTBvk2xbU$51%>oe4CNx32*d+pIE<# zL5C`#{R6LM3OZLauZ89K!WWWSNrx=68TurMqkYPk3oT=Tiozlj#&b4dxHO_}S^bfZ z8oO`z+v&D{4{V#lj+y(}ujK-Ux}ahjr2aM8bjaY{73=Ls>fvJymDlr(s)Jik;z1NS zI4H=CV;C+Uex90LeZ|Ls#!O|sO9A^K_^UAJ?X>eiUqE()JRXS8&dPzv!j$kTRxSKH z(=`e2J`BatWm~Xa>PQ*HNc_14c}keIBwD#sE&(;+J-D2)S>M|wj12idFBhXLwwUIm+feJ;kty&8TI#Kaf{wwWOz(;m^jQJTu$D z9xHonhU?edBoE-Vq~NtdBedkCzqZt3U3;65Y-gt8qZ&`}xUiqvCVALs`jRx`&Rnf&X*x$bqmoqVYzX3xN zvq^>c>nRgr@h07K62?+D@lkY34@1rVvXOG&g&t*Y^AAfBUsYLcKUzS;B!hGHA1JfT z)HJKBz~oeE2cIQZ$N@R3mr^MULKLq=gA-5FI=C$*YAaOKO93YSssQC2{{uoLR<+3v zwy?*kr%CCpbQh!3SDc9ke_M5O*O+ukKIlLD@K6El4LHo&9*J^YOd;uSST}z({2c!! zngL{Ma&j3IDX%_EE-E@FhLhKwzMArcz}-&DB!vrhq^YVIN6hg7#_BV}Ej}f_xIyVs zz3Hn4Q-o<9W3N|x^d9Ln=3v6R{os+|6z2b6(ppZyVIb!|8Fe%X^i=8+i zD9ZNL_(NmeE&10PeNS0my@SyxUjDL@37)DK9UZz{Y!L4m(ja*pFvqMbU8!3tp1Nw4 zR^yXPE)o^Y*loQ1!uv7hTKoKGEBnNOV<>5hgzNN z*t4>7lwscUXA9&MB{qf31Piq>q1u%CZU%^cXl1~k&F8MmSw!O-TL^EH2%`KNxmX!J+SeQ@SQX(U2p5375G8{DxKf4O zyOMr^Z=8W3Nb%>scjo=7-3drS=m7m=8V&p2fRgwww9-|>+1ydf5f-ApSa1D@Ja?8W z3&Z%-d|rFuxv*-uLQMP_nt+Wfl-taoe}s+tDkYT_b0>4gmM5Ce)b*{2uyWqj0NDN0 z%OQF+SC;+u&Yzn`$b$R{T-x627dsGxHyohOaSgvuNu|M@r>vL3xGizo1?|m?Ceeeg zI#o_1SQ}H{*xkjDkU`5DQA!p^M1Pi`*TlJY9@bHM=6&U_Fq(I06rSG zEQ(2Sk45&`D#wFD*o)NK=C5KEcm9j#LVuKSpKF~LfKq;amnMB8RnH$b6CCyZN?Tflhor@kc^LssOX^Pn}=0zq? zD=L?VmI8ufl2nhG4(-D)9FLoXd`^!m6+6Fsr5QBpaM_1h~%f;LMZo0QH`u=J-%(BCz6ZxXqHWK%H9z!@;KN zY;I!E4uUUPJ0@I8R#3aKe4c)tM)th5rNyXmp-v@6^H?G-;o<*8${mo~MD|~2r~E6U z!A>oS-3*QPgVXgwS5dB?N9qQK<9@nzu291wo+@I2Lei&nn469L*^JB0gf2Q;JckD1 zv)xfQZdx)oHpRBeCXNlS%^3FO)kqzUExcBPo*0z_Vrev#-#8Sb!%k=P4Wr|?p2R*8 zo;4t@m|5LBIllT)jJP95J|A-W!w2G(7veeRg4%hw7PPYEw7Hj`6(&`5P1>ueCZ0*s ztla8} ze`nt@Pzqwo_EF1E?EhX}*YlMi#{`rrX&*>BpkbvrLuZ%XyA7mTkVQqR^qlG$s{0n7 zq-y)z<@s3s)KG%0k;mu z43=$m#HBTHb=7VOS=BqDH63NRORR<%SpGDip(lQ>vELG~igG>Z-PlkH8mNAF3hAQfs_OMmM8{B8v8o5ow(hTuA25`M!yVrsumG4@I*&>LEfCY}L(+3)R z>T`gcpKV54u?l-R!K!|>bbmjN8(qAzQGCBtPS}6YL|Gos>WJOZqiUXGkv+0cR?BNW zmO`48`d_}Ppq_;reo3H&`WUSepJaH)XaYi3^fsOZjIm;)-_f#c> z{VY8gnXNYY;UjPRgfshUv%7>`UEceOjrD9)r4yQlEl=A07@BXopFasy^Si|b*sJd# zV$lBy3pQ}_pl3`1-1M&!!Sly`6StY(=F|>-4JDBZ5qR}bU#8I>iuNT;yXqHAMJr7XQ9kB5 zy5xpB0`tH>Ie+h+wMSEgxH(8X@}HA7ooHQ?4LzHN!pKQq?su@1i!}uvWK|J_DlKq3 zvkkB9W(8kq%jD*)AL0Wb37XBmjpVqk-^D-F6-!rZ+G5Wbc9+%QthO%&DcY)NVmQ4o z!?Fz?C%CgbC5UX@!Pt-P2!EgFd6cjXB)>Lt+jqN`{LB9j23*d<|L*^b0ApP&M;1H< z?e7wY0>1qZ1RiL&{LmvU?H}NKRu^u-LhIgHY?)N6)>dWohYGqq--&sU-E)(^oCz69 zK(=oSh8uwIH_LDJRaV*SfC4f!`eD^>IP4}fCHM%F+i>!DHs^L-x7k5U{ktSOipu#A zs5T3%VPQJwxpSyp2S2p{g&gSZsnIMtK(IYE;dbUMOTfm`-sNVUR-$m5j6{j|=b|4! z@?-?i_MWgPmdVjop3z#JfA&+w4@8Cp8?9PGp#>Rc^rEyjwg10x8lVMb|&4f+|hm=o&|&iayY!Ebz=FjeVv$y2<}U4 zbMl2aA4wgx`g?I|=VXo$tLC#e59)<)bx(&9K0x?&_0Dga9~BBs$|REjz$8Zs3JSvD zwqN}3ht43^6Dfv{V+kp&JPYVcOYn&?jVVJ_7XyGk>h@)3lCN9g=+L07OjRp5$ISE$ z`4Knvx0_DLZWu{=+J>|QObcvNnd%=`!Tt9HHd*{@)o17?zc^j7v7@V|;}%fM{T^Ym z5!d;dCyJAdOZ1~S5B_MtjOy02g8c@3HEpNTl;;t}<91n6zKQcKF_j&HG%$P$;f2uy zoVd}mN3%84gYE^)|3!;42MlNR2goZopXp~P$&5uF3mX}x!&30*-JXx~z52Q}H|*sF zTwk*C2bfsYy_g5DW4y+xo*##R50hO19&6;g7g!w)CFpOta#-DYEhib`=xnPAdcU=h zBz|+-`(M(gpfU2wje${EZ2he+;@w1nZJ0r}XQMt4QZoQEcA$WcIq|yoVIDx&Qw@F7 zX8cuyNnLhxKefh)irg3*fYUoa%LjyR?sq$1(0E1l$87lV}-oC)$~=ln zrQA6vCe1RXcgQTwvGBX5L1Jt~Q-$~E!ck*xt=~oMzy&#k3WfC%HFoo=hCg+vOwwVo z1fV0l6Px@jAL*-!7yf4<)9e(5w~FG*q6rMf0-N-{;6Z@##qrXFYnf#dU;B}AlkJ7C zR*)OBfzh+Mmk8?#M(lWQYfwQNTe|uOe&+9vdt;2SMcbw5ylrKd87?k~6DG^+ho&uqnloTeUT}YKI)~r*@Zzv@} zEL~mpZn7T|#K)vB$paVh5o(`uB-U0p5?n*1XiF? zR-S6GrKop#zZ80*4=m`IOBn#ktx1*KthWC}-g-18qJTuF6tfSv=yV<>-TRF`datUf-SJR@FUD` zHb)s7`T65wZDTnrqR+KxWJ^2d$Kr|63k5PVvU~*$={82R#TSA=#a>fD>swg3&(YG- z+MTHpJ@Wl8{R*9`g(a5QTIc7NsXNu#8MQV3=9iu@ue0hocvCcY7zW$rtNa7k&j78reFtcVeUFtE05bstaT4qWkc6OP6+Y| zm)%)9rge0_I4|`X`NLj|kpD{bZ(mFdIXDe?IQol{`@hq7jgC8;Q-pEX_N;33+rHIc zwn!fvBy@|hS)53fqtD=%!;XbLUj&B&Cl9zAbSm5%vk*af;;~<8tVxxV>6$Y}D=AyL zmnGiOzWgtZ=kQb8`9-L)sXH{s@wA>!i=uPDt%G`q;d>-bW^$lS$1#5%+lCe5{hZD_KNaF z1P9aTWJsBggiWOJAdT3+E;pHc5&FJxrs-=g&O6^(O&CL5A`UBcRez2@^YX*AaINan4c>p`+~5W*(AQ|-^&*j0 zUVTGj3;0$mI26~ve;e2j7UZ4?oe29c)m0H;{%T|{ zs8X5*RpN8D)z{jqHL?@k`hi~NZTO!p|d02WJh7E9cALG2jQwtoO3*i4}lSxgctN^T~z7{dF#gY(W$A88Yv!*MXx(Sb^nk9*D;I4i+d8`42>BR;d%VAO9Ijo2T7C4(*pwR!{2~6;NEHqkx(kGl{4c`Ag$;d zqB!OMh&W|X&S8pu zCL_ssMIFaxXd}v$A&W_w*r~6SKWe#>w2;&ox;R+ev(`u{kDHuq;rcJh?C*haG=keX(!dWOQ8elxHvPR19r*%k6^AAl7kn`mI>q~H{$w_q`4;^ z^#u%HBTDZy548Pc3mtw{ntN5T>Rk||XcM?N^{L9r#YPgi3V4M|{Vi)401)jK)vw&# zj!&`$5|FM5vA~K=EST4mMRiON1*@~#>{zi7p($K~C{tXc_j(B}VL}SnE`}!95^~_t z`zy~Vto%Zng;(FYPR+49yS=(dJ(O&-YEj{Z;a9a9n$E##o{0S7AH7arArn;*Bl*sPPSARAV%h7+9huz| zvH9Svm>sJ#1TMqoPdRcmd4E#*W|xY${A5EP{ihLkas}tbZD|!I5+dWf3=Acps_z*~ zO%l-70gt{>E8{5>KAwH%P6B5=A*%>wy*dhH)$9ak1^Nh?sqcmqM#K0I4V#5v4MuxFOk&ll9yXy z^sVFO0ZlKn{`GV4)nrmi?^)+?<@;1356e~O7I`bNGnPvoy;%H-=(!(B%!Dk5Q_M zWrQedgt)A$Td3jA{#t;^Y7IXJZUvWO%JrJjd6-I|KWMmR!+Q0z z`R3Xau$mhDFeimj6rP04lGk}taUj*x9QB?Up_?y?Cd+btddXRlKUIjs2w7yDn|aJv zLXzJ*0Rca#5K9k?U{=xs_W|)8!Xa%weO3ndX;`=ppsdrm5iG;zbW!A+tSvFX55iF- z{gsHL#H)7ifJ2yXwj$}^@6H-n`5pPfPJM&*p-&UX#~KR>;`8Sjn%RryE&jUr-X)Yg_}W)X1urJQm-lW|M*b3b(LVF959t@o+aWk|B#ETnssCi$K%z2 zNE*^Lt{Iim9;O$|o6^FE0~0)ysiaqk`8qZ-ItmpSzwUbskS}{{jB)h6f^47#gebg3 zemQC{JUb>7Flt5G%mw~1>$2Bcog^n7(iGpao48iZA9oGkm8Q^Yeknz*>-gxqPse+L zLs1%%KH2t=u#r$yrYJrNY7CA!D`3;YSjSdYhtQxfYwuDgxiTv_!o|wMbD>lGSxge}a z!%=Oo!bpID)jlCy(twsZVJ_20a`0H=LKEIn42nzWs*r^RO?<}TEQ?@ZV6d5~-O0s~ z{sDj;KYN}P3!!y*MhX`WqY{Z}s0GYU%kOmH#(w_d`Q>O{DO@;Th{p5@Q=~Fa zjP5GAY$bj_%A zQZ>*ZSTYSUi!Nw1XAc_a%lwd?ke!jeOeodY#@3~F7#QblF2VmT`EX3j6qmJ zt|;b=E42`H$GhXP%XY37_^mBF*M+@4#ldOt@=#Gm&82Y8MS=0m(+)z%MpgX?&Gq0T z%E0>mStC1=G&FkDG9FoGnUJ)U_OJ$%;$8ddUbTy1TAGs(?A!L~<8yb(F0xt~$)Fh2 zi)^uVSma#hypxRu6WX}R-srpU9B4SCwbnFB6hkV+`xhW8yBJQkbI7`?$M@FYlSX4t zY)XfP*wRqk327yx4%!a1vGj$F_Bt)&IqDy1%2|-V(by*FDx%$ab3ATg09@Q}0$Qbf zriB+=4~`$;jko(sL=liK9c(Lg7KqUW4GSN$)cKik+Ld;d@fWM$k|d=G=k-z6y;6Fi zFBmL&3JGV}$xUi+%OjJv!+BhL)K_$jEA!9{*Cio)4>^Zi!|7aqB7Ns$8=B~wC=>>( zbGvirPIbs*qPWH~f;8poSITnamF|8RIBf|M5pc}M_~!geCcQ2#&kaYnRU>W!2o3OY zT%Dg`oUg8cVf~TnP$kX7V2U3X`n!%v$T#hHRmXX2dD)GlK$tJ#kV6*_s;DD|Cuu`F zixUsIJ8n(ANV}?cu~E1mYGzAnb>2mDyZdN=gKe1*V|pkE-SpYP*(^}PEd2W``^mkp z&?J=xO<0;(8NR)M&UD;j+FLVYYQcBdWpieI>f=lX>YfI_#PH-5p+GvZU!rcS3_I!C zdQmh>%}>OAm%CcxK`8?@b#&Sfaw4xUc`pZsj&@!Txb@{^vn>(srx+h z8*#y9F1!!oP?z_KmoNfN_r-qJ(Geg@O2>T<7w{MJn}9cRPcBjcY>pTK!U@!M*EMmb zjvQD*I3FOJc+S^Wp&UMEYb{~p?MPGrM;Mjr(ifKIt}1$CB7)7%uh0U+>7>xrtDAU^ z1?J1n;xv(JzVVaB8jy+38=@TEw26GbP8B%9}yu`&v$>xa&0fSP& z))-0HUB7F~(8L&oFJ$B{WBZyRH+x?^R8SEEj~#!H5-wX*o}B!tS~p2npl@F_@X?HH zMrLzT z%o4Y7nHo8Z<``%E{vPe0eM}2Dj zM)q>>gyW6TO2e)5SV9H75=p?tG>PuRUbKc8GsHNAiV>hnEjw`^v9*)ZXF}tzOhCz- z+*P$q4i9Mk;HCS`c2FN-*##d5=oSH+tvGKlXvJDH9HPZ`FS*Qt7ke_$mjaWeJ-@v& z6?wFdjmD_-Jg?wzh=U5)&8fing-wP4f>uB0+Gn=LQs~HK{>RqO+g-2KX-gj5QL6Pf z_#&A9SEu;oZwZ|`f{(EalW**-2*|Wd7xNTPvI6sTXeLdkDStq+#GT#lo&^;&Pxx0L z0UyNphtvhzXe^(6Y{G8wRMEzrZPFxffVAzTr$m~)2y?7F9qdV#SgpLvkUVrC0y{KG z9I9X6rt$syxx%B_5cyIo-o+pw`#X6>?rU(G1DJ zsQP1k<5mxY7B}r@Ug>a)gPWv}<}w%f-znsK4TR8r;^}=XrGMu{?*XB*bR}?g2z1yk z#slI|i+HxAcg18vP_n#AL9;KGQeSSqWXAc56d2b$G9{(@HYk)E{LVVH?u?Qw^}Z0| zhXy)+&qMt^LEkRajG#~SsOS@MmBQmk)nLE$w`H&JmA@fjx`Osy#>kw!3xYz4hV?+f zb!s;P8vpu{-Jc-oB7cek_{7t{#~1eet$@6MWud%;Q_Xx{nSnyCYX!%M2F_`+N`wNS zBgYg=SFIl6+XOL4Ykf_E1UM1VZw7+?p99UTBCmnI8trZf^JU%xBHbnQ498pUzUx+D zx{Ym+4MD;W<8Xv}7S6B~$~$(msdwA+3dpIbO8RXlQnn_1+4R}DbnkiWYaf-r*Nj8{ z{VDfQX{AS(N+@d%kx=i#iH7wNWUqz54*9MA_l`-k2G;Yw%ohST`yT5kbvjGV#fJX>KlwHN!KhPF9NU z-HKKVH+o2x?@micm(PfI13DWe6xbmlDR>Hg95ibte~CPq;b}fRZ+1{9L^n=Os#j+` zUEs>7b4hZBwF)uicUb{(1K-=VCdRGx8Xi9Tw~3(xxBoKcD>?n(J}5Hd(_ij3-OLFc z?;@n*_Q?1NP)P4*nxFXz*^`A-bw;=d!@(rV!Q1N>A63C=ueYYGgH8H7+sMQLB9-Y$jnt17MvDZ;c2|)b1VL|}vbV!G!Xvm_zurb1O}Cr@ zvV2|E>U|)DXRMY>u_s{7N9ak_EwN@aefHm1>rmP{e}&oo^y!na+ zR$AzG-w4MlA@-N6bC_paSR2M90X={L(iEzhG`0+0+ou8c18ga-X@j>8G~5#otu&xFO{7 zOWpSlQ^JD~>=kR<>@{FKmp~3%`nXmD|AR1ov$Cs`#03uj+}MRCOlcC}SOO$%(ym>% zcs%-ZA3r#2os)c5JYn)yH1oiOD6 zemAb>rD%4Ib6tGHXj(_O-^XkxoBs*4S{@z#e! z|M$-ME3VICi=esll6z&fd- zaLbp489Npqf4JrAeEE~ta^+8k+Dp9noVBEV-tynGUhP!*^lJY737*1rGNy`$%H3}# z&gDG#CuV)j+po(GE@qormCJDg?2ZO`V9hY+@XaZbX)}EI_13<+H^(#HU&OX=hLVe1`uUj%}HzfwII;_>b-_9oM=IVp{ z@4ue9+UIaR?{TQ<4obRa(Mye-mA5LL4$-MBe1-<#!oF}5(ZE#cJ$JK?m9(rMo$gLew`t4cENPxxQl zc2%P8!%OD18;+QC{ok^0-^n%8)O;>J`?~YdmC627PPRv}Yuet6*S%(1ed&1iw^Q5Pn(fy9 zxwOh~uh_?o%m26E|GE3ByLP12#RJ=NZwK4@fX!(z(|~pJ{k-67gpqOSGi_m| zW84;V=WBlt2nHECGaNGL|E!Kbg`s1qD|DRtHn1tMK=(uizC^cs3GKtPmgLqvMFfDl3_2`zN# zO$aRk1nH1~ltdB&_lx_exX;ghpL6cN_sKs#LcVXUSu^jv^Uf?Hv^1`R_H*rLU|;~< zP`h%6fnl#30|TSuJ|^IQ^gmfhFfi~j+_-XC`~I%Qk&S9@J=pe_P5!YvXV~_=4L-lv zP!jUz!H}Xpt@K6pvp0em&fcs$diV@WM(yd{1wq1Wv22y23$QVtrso8wQG%nOn}r}! z>J8^y04B04>ba+<ouwdtncD9lXcDc&vtj zN$mIkOjkZ=-0*xhlBYJ{p7Q_w*BKZc9(6!R@rOHK9(@0veo%{R)x&uxbvsQ%kZFO`GXCcOF3+`*3?EEh`b z6{ig*1RM{xd24A;|du-}FDTUi>RIGI#G%)X4Rs zqClt0i7z$dS^=ng6~}Hcs61f5u#UTe z8(Z}Ey_E<3#GJ6zwlSTt%{N(}R*`M7EmX0pd@X5_$`Eq`7`-)O`JoE`cr2F znh9|Q+PJma?XP*vy}ASi9hAFA5lcKOaQ0@Ad((}Lp4_OMnyF&5B>tuCH5vG*ODTjM z1a?GR$5B2N4k`>YUv)fRjU`hR8?b>FmwVtYv6=yHzS-iiVV$uH8EH&`rMz-oR$Gkw zAYn`+NW~lcnP5DH`qvD0gG+s;YrrLc1k;Vg;zR<6TLzDMWxU~=Rc7eP!KqWbnv-K# zIn5}MyKV9ZMU%k3fDs?fO3D$e3=^L!-Q%ezD@!eUkYs;{Fk)wze0e7vtW$O897>(5 zJ?Fh-Xv5ksMyvf@%u4LV|47#eMRT#8A8~J2C}Axg+L9iZ^tZ+uv>B4W) zTusduBs+vPBgq}CDN?nz61_eiTt+;(8AVD?Q@Pu@xS8kYKJms;wo>2Ro~Y#VHKUH0 z#nvr3J3pydT*8yC4^f(nZ3fqS*7sgDtKdg$A(rNBUK;Q1rg%QD-=kN(YxXP*V7 zhM^7Db5#8uj_6nOef^SutwZtT_7d?OtVaOR*_WZIyxk#R-k%EWM9zODPc&gi6N^f#d^H_p&@gfnMgXKVc zVS1SPY8Q#LIZ49{`KzAgJi?LN7ixbSEkKSgalZFa1rLc#jlRmwnv@~$^;H9A_ac31 zVY!i3wCZ{09_S`YVe{!GE|8X-aoVZFYJAtZ?2ha^}_<$`j>W5tvO@ z&rHOq5&G`<8(q*sK`!=40%zHDD9*1xjY~|)^>l%=00S5NocQMM1XKL%f#>z?H@9j4`HWR6L5C(ip* z?4-Z0$Mt3pAQhz>O2^@lw7l!M_xVzbeULt=lNlNZ$06E!=J4Y&r7oUwDOq<3&Ni|X z);n}qH^@qr=tB>G4BM*T57Uf$(>q(zAslUQxc&NF*Q~_9&<;Cn&D#*P;neyQ<-D^Y zcer?kao&|nD#jpZsTwSw9^;6vd`Wa~1%DnlJ^_RCZQotawdhdesGMeZ+9XQ_FHbbF z4!yI5O&f?CejB*3-0IUYgfHIeV|dPnqOrdXP2kcVzI6A|Uobnn?4_Yg{h(_!OBGcO z5KOAOFKm=sZ-$(elsn*TR0=_aqNU@pwj(0kljVegF2I`eirGobZh@6BBNOP@&FaV` z=tu;cURZ-^72J2$%4j_+ZQWte33Lo{Q4g-{6ra`GpP1Q0O_^=FwlIsG;p(2JnL&+K<* zkJ<8;xKcD4XE^YgH7i$D2sb{oO{G>}h}n|Ul)*I=^=>HdUz8zn{|*x$1hvR?udqkR;(nZ3jzM?&Sh-Ca$|UWx0|^!kfnRsek{g(vfu)V_G{a z%*z02;#@sME~n*^GgB*aR>1cwsg`EZMge6t3TrMnCR*6hV!cI~UL5&8vHgOo^2f-3 zA>U$$7!_IFq%QTeB28Jc=Dm|y&gRq;Nxd-N5zWRBm;MPm0G z({5#bL79u20@QhW_nfa|>0v!`5YM%tv6*sUeIO;8efjz@$c-EECgCq*lTedP#0M`b zqDM|{eWL@l-FQ$hU$tHoe_ss~NOkfMHLmanIj<`srUwGm-jD?cpo=pKKGX3T;JNGn z5*6{`bRakTO6pQSojtnkb%MLQ1)7&kx@u6m`f66}jUhk2#Tr#1%phM6mN@+gi3_K>c^bcd4ZiT{#9;vG3J~9Xn@pxlvbi?V<%(Y%z7dIp@3#Fqzx4dk) zC!cEGyCvbi)Xc&@Id4lrVX^>dltW;~=DZ6Owq|z!Hb4N#>@E*V4Mh*&T`QPfAqCwF zJomAIV*>IlR=2DTt3xa|q@#0ei9e6@h9ywGhkK3UV&RwC+yN;jr@UMa-&@ z+laLh2N#u;25?dlx~s{tAa5F|CNSf)hE*7PR=PF@g1Obq@<%-X3NpimRT% zJ-D5=jzOcgy`g4%ZkSPsx9*;;B;W5W(Oe4g8|kQ?Q{&#N*gyk->q8)qx1Z=3m^#9+~@V~NNAIc@cx(+YtqN-ey5-|C8n3ctzk>y`CjX7z$ zws7>8$_!Wj+Mc^VEx{DQb>XdzmKQe>%DX z?N$bBr-FxRr-GlUh#YkhdR9TCdC2wv>uQEZ%_F6M%1uE^GOmjaXM6Tmn{V*^H{FHi zTr*u5Vw==EY}?_`)i&h8G5OlI)3zNT`9<2XoAWOOCeZ2?{c8}VcQNf-R;`rk~ynn4as3}e1JmsF*`ZmS_Tp0Ne z%WK;dCt`=2Ld1lo4_QsU{&;|D6CZQ%Kdj}BMNKGrGj@us@Xsx-RRq0t>W7I&KRd;K z&HeU^XTkr;ic-rBb6Hn@x0SI6>=PdjTS2?`{?qebh%jm<2NKLT zSn@^pztO+{AHJ!}sHwDGGJ6t1$Qn8B_s<7^;zoxDCk0M@_vathwU@qhS|p%%F%J2e zLO6{kib zf73tK|8|(6{;b4eyz=6){0l+9_{Up%65w#W11l6D?ByfO-28<~5V-joAl0mHYT$nq zlCz?Ksz?9)W5;(O57V-Lt>&dOiXG3m1~T z>r24(zdZAS3!uvapI^;Xb18?OvU%-jfDH)w2SCPO%>#dZ(J{NR@5T#_zC;z=MR}pL z<3!Xd0Fm`z)`%FPN$i(regd9IS7HA_Bwjc$(vD7SRm*aYUk2af8+s6E{&>JRcgGWJ zE)@Zf6zP9Uu>kG$UI|jK?iSs#i+ZaEY%;RKC$GFUqx95>r6djNVxH{4`r!-TkUjh# z$j*nQBeD?nLhf7j77<)ocw?pU?j378Ch+~>63ylGhjcN?JKgJr(~g%i%oI+p9;2yL z?=aNYZ+Oq_wqqgm?*l%`FJf-392!${cIe%2x4K4aOr%+Uu6yGRc6Gn0RMsQ9cHoCG zkMRO4Ycc2KKSBE#$#hYMwW}-v)`9t{su6(nak_zLlg)>GqRe+*m~&45nEzikCKBq- zhOx(UoiQ^^3GN*yhVXq9QnUKqtd>{VrEvpiYNk&Oj^22&^=A9WPA^dae><#8vedtk z^wPw=Q+-=D4%WQmxT7u81^J1coLq(`q8`sVq}`oP#kRQ!D<~=7xxdt<9MQNna^PV3 zmNNMKQm~QBQ|l!5uk$m=4vPOm>`Do;3P;RKo?fYdXMKs2NWkIkxC!1R>;96lU4l+N z2hxo70=Z6z5;)@Xd~4iWL;w{TK}|yILxqv zZ(xL1rgEgx@Albl#IOKF)2*VtC}rzCHm=ePR@o!C#{AQYw|=oAE9*2gp4J-h(*sgu zy7d4#;3dh^)^Yi3wEhPtyM-$0S~zthRz-h-sZ2Uv1QIRs`9tfy;oY&I*xu5BW#rj4 zGaSTab!biJ0Dso*jN~AsDTLEorlfsk?*v14(jsd1262@==EWmd5>j zcUTBt*+f+X^7#`cR0so3cl+oxmh6=F1;4?53iemp4-^XWq<1oM7n=%RN}sNntW12q zdX5@F3;uy^z5r~=tiYgGEd262?#L+dhgc zL&LU6@yqdS1IkR$5&Vs`fY)i?gW}i~V9&uZv}3v-Gp*tt-Dj~#`s)1CZH~=`2CW67 zxkyl*T!GzdV;-gzL9e}2K{6v#=#=@e=kH$hFh!Z_&v!chp;_U~jgcewN%bC8HDb++g)|F)-tJM5Kr3#)KG3XZ6 zgE-edzdZH{-H{8VVT z^9y*;>k4Do2;UmQ(B{G`PgUFAP-fkUe#7TDFxPtl5OmSmZ*J)*s<6b#W%hGKFj_7W zWP6iPh(&8CSM=(Hp}j9oC|aoYmUo%#cWYblRO$B}cRKsvd}w=S;{8PJJuQuXgnlqG zfo)*DehiVeIVV9m_+NY{=(6~w@TB9hpu6E;lgl`vmRvqPfvmk)4j032axU23sv<=T&zF^dws4dd1zt^%K0oXe8G_erhQp_r9|Q zcZWB$wxAlp4swegp4~gX4q&M&KQ$&-N)^v-)$g3|;B)w#+ktTx*{@ZUMD8nLS4G0= zLZlB(xUb}2bf$S6$q(5YKlYtm)Bq(ePiOi{{`8+J!!w;7%{Q-!ue>7|7zBvNj@Y`3 zll6tuM*nPm!eMm{N(lTvjFT< zQ@4=I7ZY0A7T*+BT3X-B@!U?#!DIFnhK(mTNUx0SU>@DfjEvk9y1O%_-+kqG~1-7w@S&9t`n*q+3DQqR{pmZI>p9@=JQhnJ6X~fyCiy>`Ql(v?Clt#Zyn8 z)L?L`!`cYBId+U`ha0`GtFkwc-PaFUgS%xnOr3Ix6iO}p$=BxruEvuJNXOTaF(|#f zeUs0xpOEzw5w$Ib%DVB39%!=I=qKh1%O^yC=2&r`^f&cZiivhvY;EO^+kGUa?2+l0 z;e1@vM()IltY?+3WBwg+Pqm1JMs`!S2 zLFV8E-HCa*cA6WI@RVP^Z{0AOSJ%ofxA-4B4J?{fk%B@~D$wT@F7XhB0DA66wMxI<;ux{;3C@MZCHeAyi`lx(Wa0T-UbF5r;H*SMS25CsEmo#;Qa>N`*3rM(n-i8^?gR`n99zA z&UXw0p_QZVka)wyPLO-j;I(3+#YHFFyV~3lZ=W(}YAL~H#Mv)->eX~H0g0Q`Fmr;7 z43Ms_@;g7%>SJ~5Sg?2REt>yplm=+#-0%C7sw4iwN6nE;D`N=foopZRr{1iU;CIG; zS&*A?A#(im^UzixZ@AQYiYQ<7F;((HcVn4s zxVSqpo~KT3mn*$8B3V!6Jt{OtofH~aYHdxGkWKIqjumz8YF+pSe!*qYrC@^Z*YgAT zJ@S-@fE~)>?2Yh+`r`3)?gx}!&-v2ON9#G-@};TIg_}arMxm?@z%ngn?H~2uX`DxY zjX~RB-p+aQ3O20Axu}lSQN7Ph*L638ma^nak9F$iqQo24;cg2^kEd*?lTF7se8T1@ zL~KHrDuQ91N_5pvOaX9*y%G)BzYG9rd}4#M%)#T#NkI$F3a$4TMNbhy)Z&v#upZO2 z2RGZiLZF1`Nj;a2*6Ci^o&xfmnCQtS%i^c!vpn2ITH6W_K+BfYgtw9WlB>Ao0gXG8C3QHB$E< zXdCm97Bm};iir~y4ldK479hLaNkdUgt1J_`E)M*X#GKMaRgAsWpkdt{YkPJEx7dTA z{)2#qEb8hgmF{Tk3(_#FJ|#wmW6dMep6yrVckvY$9P{TB%GW>k>YR(zvby1b^#R5* zuRyE1q2i&+O*^wwnoLkm#Y1gEM~@N%;R`+dab^`4Uw{`oTAydRzwS+a^1*s4JK5j+ z=9zrsKl=_oj_z;sYoVUZHoI6|>K*W=dRFv1r4tjY1bnwb`*!PPsmi@asHw1>Dqc_v zFk^-De-Qg;&iaZX&whijD;WRVe0mV(Db4E^vc4ECDEu-}llO5uTl3x6Ju5+_8UD_W zx|l*CN0pHUaC0jM(iSkK>fOuK`Kv+xjy}39X#mN67Cy&4o;4NpHIGwa#yzB zmupTueL&o%tlD4l<=(EzcA5v+Pg>N6=jo&+w`!T^+ir|uhMOo=1hFu^d9iHf`Y(ec zbKge6+FUDl_!Iq~-;|i+8ky$@d#T+RA9X$--ly%|Etj2*pQm<3gy!`2hpfzB<=ogr zb_W+2Y0gZ34XL!6s0=Qv-0fznu@~AycJVv&atti8yGBp~+QXnP|af13B_C3@Xm;?rX z=q2nQCR4>`T`1f?;`&}X7$~s?!lF|Sj>=UDgEYLOcAhO)0<-d_uc<1%&1e3eZQ`?l6HwT?zMuH1hib9wm#5X9N)<`c^uDa1H) zeN*LBRXg@E$PT;G?0&CBWr{Xn&0mS~fUNp0qb65Bzt+j$E|ir#QfPRAstIQ_pkC=b z7~(%^tl=CWCbVS4-i+dHZgpX4aPP{{-*P?m(nOOZvuEA_F;PXwK(zRajV8+>lC}n~ zuYhfxF`^H_F;PCA9oi-e?uhq#W^x9fq=%c+s2^jO8HnU)vSa6f{9yBdmeup!(3xP? zbHfcSyg$v%z!>fLfX!zj$S}W74df=u4Z6jb1O~^!rES%%iL28#ldVUBgt>&Y2cM^g zPd&B{V)n@&u~o0u!ILySDrAhBLd(cz)oVX=+ha{y4TK^8*yr@&Uq2|NIEczsXlN z(1ySzxOT8gRBRZAiDI10`M91tgi|BbGdMqfwSE({IaVK%@xp6%l8gXN(HvFFe1Yf# zGO3Veic6Pgf5ooWr|qQ1Wt_ z14KDn;y=-|MU&`c$8w9|Gk6AJ??A|O6@U&?AEWvy5p1Z^EeGj#LX*cn$V3I`=Q(~0 zm&3q}BHIJYO)LP8=2Cs?gblIFHMc}n!UrEF41 zTgXM194HtnE$Cv#8Nc5ccNFmf)>d?hC9SQcD7vr`a@BmF4Ha5t3%D72q7FQ8=f~0k zLfD-g1eDnoRv-H8#ou9@O5eB_O*92mr6WgeLH$elf)^Sf1yA2XR^yBc&vy`nwR$yw z9LV3jDY~%lE$9U2a79uRKyKA2L80x^^FkLi&FZLUjVeg!^B=bnps(i;W6m39_*S| zWS@{8&|Ig8%}I2cV`s!D!AjpNd0-i8;@!n;J|B+ShQ+6QCTdsCgeDu=w7$w=D>2nF zT9UA>BFeqi*XYDxd=1Uh*k1L?_40hz{J+3Lf zU7={R;nbKw1CG|s&xH!n=kX}g>64sL?CVRTWjU^9_$M5H5+Qz5k1yFM9FNdlNM%_q zn$Xq=Sl72AKB}0o63#a`9&a8`lXf@;C*!fy2@!=uZ3{;^a=g;yWlnab#a+;;mV3rh zwa8RM_b==JpfCiDhM^l7P`cK6%zv@h_xN6hRCPJ{?BjPPV8$=KcG-EF4}t>dG$^H@ zgH=_2V;C4C0ZI_+KxomXl}6{)&zW~fy-CF@QJ{=UAN4apR%@L>+DzF-UMX7l)Zp!! zoJu$&NZj5jy?MDO zOi?Et>jtTj9|Y1B0TCnmvT0{9R5po6RB0u1g)|saDXh%-B(xw9$ZK$9aHcOgRkg6v z_qNxOJSH?(E5>vwqeAY5nG#nEKvkV&QzVX50jT9J*WAW_*%Tnqk?#aOrUNPrGyJ}6 zKJ|CewCZ=8sYRdTbM`h$$optpZF205V$8tjSyl?;5BFJ%4B`z%`=ULke!1&Un9D1(C9Jc2_%pG8;TzH~&IO<;sbChrh3WL!v_}tNwHW$N zzY7|d$^rJR8){|04+IJKqt-{Y`wEN4py;eV3EZAIu=>2IXwjLDBe8|i7 z_p;SxN$F~PT{w6!W)W#5t zgUAJJ0WuNG5{U0%lgapq8f`qRf@d~U8|QN(^1V%)72KIKOKgFjYB7HjcewY03-^S> z9;alm4Easz!pE+)fD*3JQLh45Q9J-{?wcy6p8Kp27;IDVZT@uH1gVbZAc{IO zC3v6H$>5?qfT%S{m;!3%*{X@(j65ZB>t__!Tc-Q)6A$uy)L**c7OfyHo{YkK z6tH!NHuC8*j*bBJ43Ny|l>(;VyrYUKqJdUn9pX1N?`~Fl=7o#W3n@CknYyV{zFl_u z6(H4S9@fXLX9L{Q7fMb@=EQ9HgjsBCyg5W}Na^LYHTGP~5B$Q#z9Ut&F!^#!IJ$@heKI)H7s5CA;{VMLc)g)b7vATTCv`~x< zk*?^?FSVr9L70AkcypVckG1-JIJpdaZpWAkGpPTw%lD0uow?@cd0m8Xr zqr#HI{UWoZ&*Ai6LNKU=E&@MgBfCsnPmaJ<>B8^l&z}JWTw}E0lo+;5`p-&-o4ULT z(HuN~ZG7Q#sng}Lf#T+pIbT9Yzv!n%tgO7DMRCS%$g&^%?y>>c}6!*{T>IOC8dhfuatQste1w8kISY-*Uzi~`CZt>^k_3sa(|a~X)CP^=plwXOD%pl z)hL5b0xLkFa4sDhG6o!#`jLSh&j#XurW$(*fI*?Msm&T*MEM16jI_?sFkgdIn`>Nt zpx_>aX}FQh3ojMpz>SCuQ4WXUa;<3Oqi3X*Jv)a+f`~wqmu~lvRf(12>nF6USg3MlrQJSNe-%#Bp z;(tL{SvDKG(?9q4#3))&$VLBUR3zkJ2Mq$jNp{1C_@~SeGcjd4fjb29mdeFij{;=} zpuB9*bFkM{J{MyyZSB?JsXpKS2VVhfyBk5R^~x}=P<)l9)UN2}xUL6Z@-TTP!aD)%UQWAu9kXmb*1h4Ns0EAZKYQ+H?QyCm9M){ zu2V%UT7%Jyh5X3M(QzSy7VHe$Tdu;sVl4LzQ!Lgtp24-Na0;>GBYS&4# zi#t4@o;JT#u@QS6s`j6h62tm+ZMmB1KD=-IJf$m%Kg#7kpHSDe5H^|c)y&r<)ddyy zJn3Ft0OL2_L?u62dD$}6Q6$+;i#(sf>@$WwB~~vXc>X5bkFLF=!YpK?T9W*hG)#^( z_pHhS)tfMXp2SPaafrzoL6JXI@J`Ogu}>RUMx}x_2aq2w=P}jin;mWjswn2r zH=F3)Wo~8LcEV)d=hn3mgSkuZPKJ!fL9XU0EmZlekD>yVxY~d`pgx6QLidubr>K6# z?u|v?B&Y>JW7VH2_*lF)5aJJ#v|WwS^P?d`lvvD;iu{-^@WZ(SZV+rHQ(2&V;vobQ z%SHy>{DU1o4|A9Jg5I3c7k(pXkr1d5`((y;Qda8W6_5omI-NFjymgLGG^}%~LlIJs zM=KnfoYEE$1vsKRcDjxR5jD^{CTB3yQ@y@b#+};Ua@TxxcNy0(#>VX%FMPt$$NO-| zd2d$-_woMKKXDyCJJ>gH`-onA|HrW)=ha=nVEQvI%skC)-LyomvWTg4yGlZ6=1ryD zX`;kXCA0aqt&48SL*1;K!%ToQ%lN57bGm(v-fEzj7(f-8pXg4`!+fL$N4{EVJU44@ z%aRWHCeUuzs>P;0ooe2wRN$PPB0efKcph3o>7E*XJo0vZ#dKxs{eURK6m8)v;=RKM z4#EM6>f6*+M*%O|Nyf}@hX)@!10)BCq8gl|XnjQjbZZ?`VhHsU;gZ?4nBZh8`HJ>A zN=>QktYmEtQ#GaguhE&Vwr2RzJwQL0zlKMax6LSakHDW8T2yl|(ze()5bx#@X$%UL zD&T4R^A8I|A8h&7H^ne+UaQSxZ625{>+U>&6MC)Z*gEJ@71kfN0ze{j_`1Q8 z5A|_Kheb`(7n@rZ z!z}J9`YjJ7C$p@$D{;l$O`w-}(MCXAf@AmEytf_+@XI&x%f}m$uLA|UQ>Z;=_0p-d z(c_8c@q6Fpe=Ono-#8XeJKF$Lp>)a#mq?>3QBLAL!FHEnW0gbzSx-EaCsopo$qGIFuj#(@_ECA^A&rXI4 z&~W;gCxRy)8|xnCYH$ED}w8YJG%2_t#srQ-1c?8Hd-Y7A|Gh)E&-|~ zAWTW%i*!dbPveirdb<VG-H+9b9hRUn{XHkRXeS1jhqivOV_k4&@=8T2l&t2CP0OK)#N- zcRve$!1(mB)<0TI_q@zSdHMa19Q2@jIGpSWS$luvl)LiaG~k?- z2!oBT^QB-wQ)q3w#t7}iyW4G0P6zp0!On>CoUNAGx9eUOYCIoM%2yhL{4Fez*_eQ? zc`Z}1YPMV%Tx{I)-77sHgJNF!uGN`uWdu;2b_cJKVANbDCCmjO7o$VEi+WUOVp`a` zLZkO8&(6+5&hO4%%#J@Vv@qZF&t{&;4@IBuYXtb6iLGGm55RBUJLRH(hjRksqJBns z6x`y-vG?V4O+F412&nwb71uQy++7|8U>5EPn+-+9aERKSZ@|Kqqr*->n{oWIN$u2C`S!n zDB7@UqaGHu*;cOQIcvhbPnznaYRscsHU#yQ1F=d;_U*^|vZi#3=&7oMQq4;E0HU6D z2y~55Nx^`99keKQ!E<=)VdSX}mjQV1g74XUjEOF5k`*@M^LWHr^PC#q=&QLRXHrv};esS|h=J&c)jX`TK>k53A)K4{FA7~D| zJMw19fIZP~WgZ5lg^jjhdG6?kF=7BH&nKP>?(|L5OSvBR<-@xm=Dm;?@GjrTF-_<8 zL~8A@bv4ZT-XHhmQ=F4V;kt}kGQpmxjngNC3?fHa2VvDQ)n0z3hkc4vjYl%$L=R5t zJZXgtKnBEg;00sI6E6T+b)`x%%DC)xH|ti_eKYZwQGg6}b*a~p+5_t+kCo-DV4BNK zM|{jgi9+&K8uHc#T1U{Rk8vFuZBQSv&WgqBq?11oWtKiC_nWq%5zh+HDC`Y8$xftA zjyE6dkY6a&U;M1M*J5MJvXFVh>1$?8JXd(9Y;1HA@6*W&zZ|ggAa{$|^F}}=YaP#F zdgNlt)!f?T;ogQ(!{{ZG<^4`mv>qym0^SU@G&-=`3KBpT$Ml#VjotHa*);yMXRdb%E(>z@*=cy+pQbIA#+q3RoigJ*Tn2)sOtdp`m z-6Ne@F=cV*4_b||%SwzrYlP)e=kF%H4D)u*1REuUK7ox?4_*iNHvLFQ_rw5h=w2v* z<#4=s2=pN$oYoxhy*LC)Ejz%0oC$1tLUQXFyIzMvNf}4tx!AU-)9$Xe@Jn%Ntu0Bh zOqqvCKm*VXY>1GZxvw!=SfphRA5RIb))PKp)zXs8tnGEiPChd9B~hz}>+7hGWGo<% zPX|1$v;BzVH%*e2>t5NEmmz>IPUgwjo-2EAkI z9%eyYLek(}+a+?65Wj_$^m7f^8j6s7(QE!3lT7D|Jk@$bP~(#P%V-xxww5C|8KF~k zH6<+sFenme)bWR-XtO~1be|)+x#hadMSf!C)9fu1V5-E$r#%c-%qn~_mw`n#>(PY#oXIuuF zwhgcA!3$Kb#kpdpXD0>S1s?Qy4M8Q-Js(}CQ6sNgY;;o!JoEKZ`qMPxD0fT~5V1vE|pHPk8~5mFLJk)#lj ztR6)-FL2lWi-!?vNE$(D0TyNpexfc_GP2i~)r6-Gx^|^=cRd#u4(b%|gd0T6n3vCf zK)OfmxJ;VP^F0YBdM`_e3Tp1uG7g3Uy5um>MZYV3_G#~nE}6BTZxFMjR2>L8gHrr6LRYC`30Lg} z-k!1pa(qz5Xw&_ohekL7*mR}*u^AK6N$Q~=3Eh)^5r~h=_Lil>_)zJ2c8m)j!`Nb9H2dctzCdU{n2`5s{f9^q3k{PlEVih7k6AV5Ay!I z;ld@1WS^LKZIx44LHS(ILeRN;k{Y14YZyuH4&h$HXLNN z=dKcHK#=tEyM|@^6XKTk|2&=`b6_|cxTN_XukyfEOT1O_dcy6^^130@qouyvhU5&L zlDOx8hFs!UecsVa#b1JW#<5$&yFTqQ_sTs@GH9h$tQ zx>V`_ca{3Ipd0Qt(wVzCU#PEy z$See$k$-fD`|J%NL zk4$W3w6N*bn+NW*Ca;f4Bp2aHTBq_&k`XZ`?;oHUovLw*am1F=E$M^5w zJ4=6c_L1wXc;q%}ty~2D@z_gb`mLe~V4nOxI4<#CDEe7loeFx^~- zckd9$zU8}15%PedXNr33UE@Q}&{ryzHA>WkOPW=kVFL~jXh-MVb42u33lfv!nCJ|1 z%Ue>6+>AI<w!W;#yOG=kBF2ns;g@a4)cfu6+`vw>k7m>CL3u!YQ& z$``q>j=rA`@csPq(l_R2eB|+nNY%_T-5WnB-nNj+&9m*dEHti?5)zF!LoXFnkCO92 z>Zgedal0cR{ToDJ1PmBFeoT=bzz5JVgNbuKsSbI*o7m^j+I0B zhneWjj6fzPfZ{S}*7uDa54YZyfDQpoYVSViEX;fxs;+-1^>3zZ=J(!&C-$q%UdxS! zOaOVz3s?%N-N0`f*urqBtu222!S9xD&-ekt$uw_Q%gyWatUd6{lP;`{E11#@W?sm9 z*{B)76vM3GA-2{~L60KptvsUlg3{N&Lz{ClAiz(TK4Qa4;NC9$JXa~q)z%`P{I|>< z0x{Si5dqxQE{{W9zvBz4k+HXE3Vd{Qi3F)3CKM02G~a3B|1@PyC#IP zJVCv8V%3#}Q0;Ms8Vq~*1Dzu)AoT#c)okwPF&xU=dhGaT$eH5V%LG-MGn%>dx5jcKN6c{vNkF5*?~w3>_sR|jhni3;3=%`$EZgQ z7hr{fP&+QPee>XKM(>7sGDgF9OvETHS_!o(WoY}6vZlBV^MR3EDp;t#ue(zAxp@J9 zA?q2^KskTFmSXTxd<_<;RMF{6n-b|t8-t+aQz`;r)&2hK{qjAuo<)BWdMd%=;t$#i zG)U+-3cmdfzM`P#yU`UKE!exZEox1FjNcVsNTg4hPr7=oD#|p!ay;5Ho!O7N?wly6 zo_PyVRe23o6H&euk+}0B!6g{uBd!T)?#G~cPeViwHnWr$U^>nDyie3i=hI2Ge9jy* z#grKdO4!zp`IZ7E-@_Bc%JUisym0RbVwR9u*Pu>J2gw2Zu=Sc2R=h3S7f6nScqLEo>6PqE8z`psL zqxnj<-8-)`z6avph*!ktg-SJRE@9_o=jKx$Qd15CZ|ARn#q`kcv$1^Kn^a-|*RA~JR)Gam;hD~T!{8;m<)89kPA_+U;Z99*-`@L z?)*CA=gAyX6}-lAobaP<=ugKg{Cl1Bs{QqzQZNTcm|;J)hQ;z&Vn1X$xsm*f4hD2* zQNWeChl$H~Rj=C)S|j|id|2Je#EfSnIsF#lwtt`}v^wOHT_u8&MS4MZlClj;Atl&~ z8@mvpwZj_hsr~yN3B_7w^{@>&KjPS&_Z1-{an8luALl*a4cs^aZ$u^p2$K+jYzbaN z-uD-TAxWs?+;{XAv)(?os=x<(E%!P!WujY!|ms@1i z^YgZ(77Ai2|Le-6;doh@sPK;K8R@YAkEuO)VcS9DTB-zUOZERS_8(A9ZO{8StQSR* zB7!t&(v{wOQ4vvTDumv93m6cPE-FYzM0&FzNbezZl+c@s5Fi1h1cXqeg%1B6@4brm z{e8acT`R7Yg~>Vl%-%Ee%rhl9pH&TsdMrSX?^M#JOxqF9ZT{-Z6(2xCZP)SYQg?4J z%M_0aYkK)z{^XtwySf!*a(S!#_*+(E*@28~DwH59q_|hXqsJ%wcn%5M=oOSfH2JB~ zS9)lRCu)od36I+*YZjd30wGP%st>-BYXkZ>F0TuOq`MrZE_z(kKnqIUDU#4|Fba=v ztMPy5L9^T95`#}26#{Af8pp#SDBluK;9=@SLj5s=L~K$1G;&D|*Xj+e%CBHr_*{aMST8t+Y(WRED~_5obgRhNBAlrA=b z54Pxs#p@D(g;=<+G&GUr7<=E7oINv}*5tHv>K7st2MVngDidj8Z&;P=ZaC$B!T&nz zk@*_Ng-YZ`oekF04Qy>KDLZAHLqJ4=Sk@7w!&_p7J?(s;;Cuni9-D9>Q zR*DqL&n|X4MK{KDIn>wrboWsQt9y&(A4cHBPeagQ5?!7{`bkLuwOYPqW)KJ{FD|lYA+E9yKADPnbx^F~%V&Ubu^SM_E;;$z$!& ztbe$C@0bx;vWCQpc=#|M#_+E);&ssA1!gGyt;NN?)CGyl zmyRIP3NV2H)H#r^JDv=`1u5cg+W6}(>BY-T1@B)Kp8J#{JgA#AnA&RM3X?^9G6sy8 zqZ%^T3tqdb+?-o~HkxoFGj;C8M-8Q+f^(B2_>qn6z5p}H%FH^CVVfQFq>xe0T2Agm z6RT=TF+zTmM&w zH*8BUb1z(yI-S!a?upJtRtkF01hV{!LazA!e3yMkV_w*^*)F7l-4Cf<=6_5~P{&UT^SACP49}h#Z1bY}?L@B_ zlCN_jH{|#(A9E-AnAI0|O;*Xd;PkljP%`C6_2TDmJ!dB|DA_`i?K;5!ejkVTyn9qe ze^4Ft+M&2M&63ja3=j1C!?)C&yYa6iOwl&>au|=DVvX8;^Dk!EqqaPIm1w>B)Jgew zs0%KVrI2;PmAI#6(b`gSv|hJPG}aX?|9~6hxtV#6Eitr$wHR2 z2n9?=cMXgR?n6b98e|da;ooZF5j7O&fU;3d z{_T~QT4f&Dtd9N;7=(pG3E(gz&A(nfSytO~FxT?yx9*S_NYHEYTj@VEyrM}^b(^<8 zn26MQBpOvJOI&#{i@NxUM9{+rosji9Y(qf``2YpY-b{GcRUTAgk}+!AFUe@{NQooc zSa|j*XQgeZN7aBXaQ=4a#&>?Jmo~!s>EQL1gN3+4 zdoAkS%MNA^<0Br`iw~;u#iRNaYoQ~GXs?DR;lNNq67#$I@AN-S)__b7o>l?Qr7nY8 zN}ybsT8?0Rsq3QE*v=P;1Ol_n(Z5*#kPmG%)Jv=^pZIw8W8DRPBP;pD7@9xQp*=qV zx`xv$naIT%%-~*iRKuI%Uz*W$pOMgE`L;YLiLqcCbXa;oE`BFY-p6}gJ3W#cU@kMN z^aBjBq*m5qtdND225`BIp3(as?Ufb9qDYVY`)U&&E$f;?@;5@eU_<*;&wt1F%@%~j ztQURrrwSLbS?q+gPA|RX|=3}<0N7}02?1y z=`u*&b$z!<;j#qvCU9;Oq+6aE)OsdIjiBC+eo?6rN zb}S8yzn=RTameQ@W}reb4MN6)v9&2+mPL_IJ3mSdPX~9(wRcb5b*6-W_Ry0_b9?=w zaz3C+f!t!WbEsn%jftt!AMU!}>9`6 zPuS!UrW-_GDL-f6$o&Kq)yY;V4$_-PLDxmv|Cv?z<)B-n1>28QhY%`z{~c^Zu|7lb z;0WFWi>0?FO!c8~Gb@LtsU49f;jMb~|0bN}Wauanca)Wmt`1x-N&eT(G->0!%3c-E zIUR8~glheWo`A|*wIyM{IDntG`ue|k06-tTX}>NMF3jrr$MSww{{KBkX%0mc;R*Y4 zbjn}TG}walx`tK>|08)yLYcX_+fVaSnk;(q-&%nGcaKs>^`oZX3p+;$X~N$AyzoDS zR#{SA+(~~8vm-KCC)DCNVMXc2529xi{I?P5oh+;?X$|V0VX#6Y7B+lwd zKz8O4YKa)k1`%vHH7tb=aXq>wvYex>Fscw~1EKeY`^hA-MkZD14fJ0LHkNLL7M?3x zAW-pkXMb?_l@G&!ISDL(_bD~w5fTSv$UlIgR&rarNmEHjsAs}{k);M@1S4o(Pp{mq zc9|E?eb`sXJ#ZUE5sVO6H197;F6)P?omcY+WmMD8i5ft^WBb`GA$H2R@DaiX#BlS9 z4i167yUE^jf6)I~fYo-9#Z$LY?~?rED*ri8SJsGqSSM+TFoyBf+{X&3pL=>pV|A}# zF6Hi2nQ|>5l`$j`Y95MBjQn{D-v5j*`>qF0@6du?Y6WTP9~#|soqSyqDR2@o5R^^A z3;m%F>i%gCxEov(=>`~khjQznmyrUxQwf8wFX4g_h2)nPb=MrnIfGG^yfA9MXSuQ( zh-V@^FTyfzCY_Z#a^-q)pbw3vJ65AxzwtET|7$D=T?S%VB_wLl=SHU$a}XBx>0n|| zw=?FhM98JV4Rt67vhd7}bZEg=!Qk$#_I&j1(A2M5b*LeQKSK~QFl+?#0aMIWyr6e< z_sz|d$k&CD8{gvd+^F-^L2%#_?6@XZCQC1|h6gpI>I0zg&@PAl;%xa$4AD+_!;v0- zdNQIXjFa4>@V2FLpUh#06u%;oGc;|gar@5GBV8Y~m#qHq$H3nEkgYp~8m*+3OYi8k_%6A2$R0i%K6o;AJ8lCcsdjt! zW}MlOg^sS4auJPj``8+E+qe$*k^BMSt$oLpfDz!_C}3>rf(W7?yH0v)w)Xe&N2RRGG1kpt*eIOxRxQ!Cwcah z3aOu_P`I!oH4cs|XnT&}zv`>nTrxcUbpKAJu>g+0PZ0HVa3?@)0C~ZMhrd~{%e#nX z5>G8X@{#2Cgdf5aey<2>paAVqE*nasl8qA!?{D2|^i4hJ(LYfA?32pg-}r7rHgouM z>R#Yp>K3}HS1ABLTXlF*W@2A+*(srI`*+t7;cE1>L<$tJeaiA1`pG}6Bv;JN$_3fJ z9;w_>b+c$2+!C4Z1(n8 zIK!z)kLYBx^{YT-~b`ba*M5F^K2$1OzL;gUbTo4HPSs5O6|AT|4SRWJ{DT^iu@(cM`4z)!mSNdkM{ z3Tvcdb~#>6o+@k1;5I{TeKyJ~t6X#+G}`Ju5JqjBugVoKWW>}2qU^P!BsrN&o+2c6 zJ`F3~+Hdt;|6@A$7bs!D#b!OrU#}gTkD1XCLKg0#t6G=S69QNVfw>+u+1RZsi3*#z z9|ecic?*8$`Rh;Tbn(NLzH69-1Bv2IA)nM8nDlGPs;%PJiJb3z@We03tTyodg4!Cccqwo-76G# zHY|-Ya(?;C)BED3j)VK;avvzG^3F)JAtfwa?_B~-DWiwv=y`Z*<2G~jk?VrDuU><- zKNr9L1xG4ckQwp#$g+X0R3O@Cp4{2(tu-qw3@<#R3OX;zyl&baZaQ_bxmb)sy4IDA z*L+fRG;(moj&>Hi>Y+|mEv`Jp+oS&ha<2$Aa<3d1H0mRG{ASEvO-OJbwf>)=MEfA~ z;K4ea+v{(W-igZQHDY{ zeIf@%&4?NA-^=*T zp#2oVCke3NZ}S%f1Gc0P-ySP0{5qfnp>Yu09JcCM40aJ_5wX0B5Ao1Wg zj*hms0Yr)f;e=-0@_p6uqZb4l{ap)u@qbN0RT7fE&lb9WB(naAjwb<3t=5m5kC0&6 zqgL9QliQ*AeX`B(fJ0;HeTToCS^v+6EBN1$LYE4KZ|oC0{$EG$=V^HY8d3hKLA`W} z9sMEk%x_i$OyY1MjDYZe_Q%}`NB2q~$Qt~=hm$@sN`#Ru-pn^*$bQ&2rg5;{iuu+`k~^)B|%pbH50>&7QWg|FD0L!AIUm-?G@Ma zdzdo%+VfPWEBIGDp>3tlv~Sku$OoC5YfL?{(b2t;H)_7b-`F{L z)pxTz4J$LwVA8XxX!re;8L#j$qTerJX`-8$4_2qVkQBt`$NqS6#~tSsq@oKWJ@WCN zUwvnLEKDw0iV1NJiD)`T_Q$K~8`(uzwSo40szln}lgvG2^w5VRA5kYIx@oMRL7Oml ziof~D-@!HXiJv2G8gmN%dA(y~FH^uWq+}K}C=yDJt{l7<7Wj3uemC|nXB%|>cm(tN z;F3?;D3(H*|9eq&ZmY2!#b5r+;+x74(7O%A{L)_E#w< z>FrZW+hNS5PmcV55-qr0iM#-R|5^QzBYy|iC;{t?1yA?q^^VhDk^swaaT`iy;Hoc1HuicJt6%Q_ubfZCFk{Zi{r93t>i>r%m#oL`f4f0B_1Awl^@-RcB-U0V z*LCpz>e+x*YB|eOM?UgX(iYx^`q``{WJmrEHo+VSg&jQI?=$uHF5Phi%fL*RNXh7b z{OeEoH&qD#do%T}u$xL-_x=#|PdQVt$RRj9|9es4vdi5B}&q;yxauqNC*rRv9@S zAuQ}e{M^gJTh%x;LbOT3ejRnuQa#e*7%}Zn#YhzL`mf~w-p(xknW*#gkEQ78g^1d3 zTXT_Fi#2UH)S-ALwf4ZbL%<13OqF=oU?8?Y{dg78{_&_DT-gTOp5WRo-A6A*|0w7x z!oOCi&)PlcCyHf<0nkvO&pTQ5T{Syi?1S+=)pDk|1af9WV{^V%@JJl zjhwi(>)0EryCg)zWcU3qEN_HuQ3rxYviNn-$abH;k{2vHDu3ZSir~~>8O3_VTFJmR z-XW%ZIQ&=45M}DsKECLwl%HoWt^;gRSOhZoPbGU4bPrrQy_=B&bK24v=<iS! z(uoV=J5H1$+^ygm5&ztuS%hderkk{Qfu4WnWK7N0X1MWSV7*-VqjZ#}q7tgZ5z>6IMYcM8cDl7U3(|wfZjK#>HNAE2-e1TT~{{ zNxxvJZp+wUHMys({EmNB*S1<>$BTEv*p2zal1X)$G^gLv6RrhIxAR(%S!VF1Pg3|- za*Rb`@Zi8*I#Ct4BX!{U^v{v>JI8=aOLhj9*sMi?D&1@i(hvF zJxUa|=rR)9HKKpi&%NKs}R}~QDt!px}^bP(b z%ukY;2R&01;G{67=z?)>d{(+3aU*~^qSGkCo-5++&~c zo5uaBTAyl59dGwpCRcpmA7Tna$7|Gjc&H`RFq8~qGx+kW9J5`oaGx6V7(|`#V8%U$ zrqj_>X#_#b15?}PYocMyw5%_cje)iJ$Dx^Lg9qwuB_|7z6Yd3D-g)dVA){|mypnxJ zMzM6o#qF%7rtxQusXLZkb2~{2!z)#;dj=d-(Bf_8+i0A|z38QDDkh)ORj32iFz9VlDsA!!LYe09ax63`L zadLt-fL|Tt)}73wFK7SU`5`sUArT^(Cts2L_J-olUm}`FnmFG5Yae?~sdZI&;NS%X zkWFd5k-42$d+sXsyi$e7Ds6@vQZ5HBD)PprUk)Et*DIXeFl~fpn!xgQD;0MQ3N+Im zur>;fz@t57Ceh41amlz2btPI)*76E}w-ML2{>8WF;HI?qi$%V8n!KM%8hnin-uYHF zr6;Qa?`M&V=I({pYqH7>%87Vd(Z57+TS;*2R>sV|lq)lbbkepXJ%aO73vms7afsa* z@yy)X>Bj@MJJV}I-+K?Bc$vk_aaN9)SOh-JPG(O?((<Mb+n6E%XW)3FMk-TK3gr2HBQAP87>tb;&ZV&rbF*~9!xU3tw>E`jZ+I4%+*(pIZp_d{@70W!u1_tuT>Luw3JDpmsqhWA zDK8dMc%pq?ip&1TaCwl!^PT{QYPn5}V7}7Z$Cb4Kd~R!8MLnHRyUCHMZqbYHYpvaP zjLoyPGkS$+eOXGZ{eEc^Z3IA+1p>5AUx}QAg#(DMeT?;JK36NNP}WoDzl+cFJ6zId zd6>qWa&E`qTMwCaV`U0?^mC&a6qeNsHGLMYBPZ(45H}Hds}VMR zLE^yayj2qj8_3Awg6`ci)@wJI7^KQM5VKW&@%8py)r%pIbKiUtKpkRaxeJxKoSxOG z<6vl~=v$joIOWB1hGO_ZMOt*(en3r|^+NIL7lGzO%zTVka7k^Wi_{7Q5_%^L*NRdU z8lvgE;0{%`PpecoNZQIA^&CF%xQU4r`Qo;xZmdKbFnnN#R`fN#IT?~e4|n@&G;)KwyHO?X#LACQZAG2%dZj;f$ycl)kE-tl(ufL>ZZaxA02_1{F zG-n712=zO=aMTy~EYvngPbxgV9)?KmJ6)W>){8vc_A=8zq zd8?(2>@sUJDQUH}+-CLl+)C9#2|{CraZ)CxG(DX*KG;bZEB9L)nHUG2aT$Wz-iiDv zvOSN})jEn7CK7G$)-0RQ15F)udHN8UMkeIWM&lAIlVVFoB)|gi{m9b1Y#TWKCBX=;^b6yeXJ* zcZG}z4jab1yW}V5#<50RSiN7#rl*kBo{0Zy-GPOC_Af~D#~P~~td87ls4fPwQi?5i z&Fzq>b#mLK_Apqx!yf46uAw<{FP^SQc}7su%0~K`1IM_;Pr0QX=PVMsC$2mg8_BzS z&9aPCRI1C9j0$!8mYKAp97MF{i|)y{LPDblh`+uR^~DuSnzF(2+G?@b_^CF78255Z zs8J-@vdE3saP?^9q6ke{W=G0pSYP~rue?mn>12e)Hk!7vOUb?Hdqq3+GRB#js%k43 z(E<-tm=t@%_^*dLMtlZ%7_6(-K{g0}l9-8UjlwmY{8KLHYx6W(`>XU0F?3)iu1CwG zx*PnzCD-`5oAECr-Z;Y1^xs7q%Zu2%TnjpS+veYtZLYj$bALvq-CEQ(zp9RT{w%|( zUFa<5>I9D6y)M2H&Xn-B>kIa%D?b*7!<-lSBHVM}tZ)jozhE0E+m;;H5|7A5EKubw zo$q9LgQAJ@OtH{wax~E$f?szwOn{b~xNd?U>Fg?!^!YMidRle_yFMEK&fu}`lq0SK z-3EpVH;UtzcHUS`!}-3RVq|3GtBuJ;G1yftda??j!<|fK0|z~P(x6^m+(kU5{oRoG zSGMEqR8l`M!x?>Tip6S(`5E zuHmgRn=}Tye~u8n060INTj>JAgn-ZH6nS*a7;#L8VfPC;jW;SDQoa5fDUZhIu2)wn z)kx9$vn-J?^1adK!MVFZyCJOy6Icjnv|(?{Bj27}N?8aj6Eun*#Ku%XuwR+Mm(4Aw zm#8a4Fq;od0v?$0yMiN0SG>&MmC#YfJZ^!se9;RT`RH|u5DxIC1?9#gJm)7VZrR!7 z#I?*RXHoT?Q60^GT%`Oa+Xk_lBx-y$mBo%Lqp+FoHQUu8HktmKJvUi=DU}FK%ni4i z{eDrV%X4<6Bk*c9y({oR-~DpjsN&YX*lw18iHJCKQ!J?7e__ZWve3D*%_&)-?fuQY zeOYZ0=;SQ2YcX@NTnM_~SCh%u9Kh-FL#Fbzy0KXNies|-iIUiS6){+Ov=ApO)c`T; z3XL#de482NwA1sTGgwrW--w^?;N1l+#KP<_7Un(- z^byF7pt3i;G)26v1$AW5vn0wKrc1f%acRXK5zs`g-R4@Ke!YMXfAMkMT-2fBP z)fBV8e8T5KqK(XWZyP<9R=6Q%Z-mX-UEgu;`s9i5*vYJ9KIo!(z9ea~Z2QWSWcUiJ zMt8bMX&VB2qOIfH=KuzRU#RRkc=%m5lOZ$l4!XjbQH?Reba7yRU7B$d6i^5$Z=T{T zimhi(u5<`-x*Ep#vL%|bw+A^O8<_@GGY;g%>gtM6RpIu^m`WEK@RZb+zbFIYOMtZ) zVtC0M{e+qR5-ZXEZ2`RN8D*Lr9@pHI*@5|rHm$av+~=+jD+CW87-^W6=Z9ML!6&x&j0#nAj02`@Alr%c64ls;CJ)B#CcUdC z^-UD3`Cg!0ifqFt@6;EN#;9HrH16;8(y;3O86wLQVwxCJpJ;xAn%gcKC*ROy6v=yV z8Qa$iO;^Ml!L(MUYxGe_08Qr~Flx(drK&zs1Ho7KGa0Se z!E^4dU!y7Q4G;)&;wsiFf~GFzERVt+4vpGQofvvg{%bBk(ID>3O|)jY`pGi1X(PX! z?vmmXVnk$TKt;1L9bXG|9azMdf1?j>m5F0uL`T$|^gkEoB=)SbPm;xjEJ6)Kc6naS zc+ERGt#Lq8V}TzyW12kgHoA6XdTo+?#v$Ekvf8`g3~o@`?nk?41M;6> z;Ad3e1FUUutZ8Hk^9^%zANtc_e1pMUnVP``+U$)1?vUOgnvO%3o73OQd%BHis>iFv zB(*OJ0fpZ*WA4ZSrdDaGh#}Xv7b>xhPIX!x%jbx@x?9r&*`8I9@cv;yQ$`;4!aJ99 z?M*-T;ob**Q$>`^liTL;)k5QUM6d@xGW3@ozH!OO^j+>J-|pBiP4o2UG?f=+k+iK(QE()e70Ew=e6tM*zA+C!@~k`suE?4=yptcFpEUca!A=zt;1}qe ztywfUi~UyaaW}VSAq8{|RkLT-Ulygpx3Id&>kVn%Z2zPhpAkLV2rDipK(*yiEM z>)oLY|B^UOB_I&^_@zYu4U_)kpbk6pq>oO9UH4#l+83Pgi(@<~A0e5(ySOJ|d)P{d zce4$|yD$3YpyJDR|32|){dX3kHd0KtryG|eqNeM=ALthaNS}*`$J`(n+h2XsH;C=> zb$s(hw=4fEKhy#k67A))m6P2$2P|wJgMlg=`CBZMS3bMdlpa)CWm;RLtA9DrP^+ari+^CKS{G= zB9bCV`R7X!*r=o*$=}4(o0`@|g>N616tKaGck(zFbk6%)If&1wl$##<*jbBON?73! zO(F65thuSV&(F$hCl-(1joVy$->EdN8+X_s6dS>MbDHjySue->aCdy^zF(&6H*LYK*qVhYjdaeaYH2~-MNfyKVN1ts@6wI*0CPt*{QHrez zrNKeN*5>S-fE7A-7H21ud%;$+d6h@#D3F_E1=XHeb{a~ne~r5p7e z+TGX1Am_v_wt3QtZxz1?8TQLcwy0gX&+a;ADB66z?eTQeX3>&)K7Sh4Dm61 z(_$s3pDq)T%gd_@nGBc?X;*jH%Zq|+$JC~1v*EsWEZ57v*fe48SY>oteWxG+j6C~* zwJ8|a9aA9U zv$7NJw}IE09E(BrgljkAc=q?+`TMm200WXhKdIu6xBAC#Dc6P4{i`28*;aL0017%T zob5f^N(5-emt^aFmA0_M=g0wvNUd5$QG<#q1=Ga9G3~g+I=+PTm_ZFmXyMrNOAa@k z%kIx&Sv^saTmIX|EurH)j^rRJYzEL^7{LoYoJ?si*xh~-mL^O`+i9?(I*F$%E|A{A zsd_Knl|*?GV4l7o*yI0|=~$W^SN}##A@b}vJv|*!L&cI za`H7Yj1a~!PK_m01*JeO)$P+$qM+;0PQWiwi4g2b9IxAa^i3Bi|rKX*o=#xrVz zvP#}QGox4(v?%3rQn7cIpeveXLxM|`s>&A=@?jOxt2U37` z`v?yO3T=>pd^PPt@o(>i)IdLs@`dU`+*^gTHAIzIuW@{V(>n^5I7LMtP;a>eF zMlN$0ozn4jz;66tngCR)%|zHtQNTJ%_N! zHrA~+(wQbCL5z7+z0x`1NLu3TXN0ts({2CqkciLg#*u%!!rz469dHOr#4gD(osuJv z-nNi#e7`FntkGAGpKc)n`vfJK8C<*BQL{G;fp9ndGvHNh>M^Rwo?r@P7oHqY(XRNZ1BaN%Sns) zIxfJScWqSpq0Cw%MVn8t%d5-b_9ziOe`%a@e-7!C6`5L5+2~+xFZ;Q@oOa zRB}ywTQ5iV;Mu6e_R?tS_i|6IMnx)`cA=X#f>c#<83BH$w!16s z9-vq()tmwO)B53G^%skd3z4nXCnSx2y_&26>`X6M`L<^+56u6Kj;4#2PJ_{2%_kcm0>DOzv20yl7tPE$?xX!h(44h4*No>bh{Z`O*0KDW# z^-dPu9*)~!sL_L9pKT&n9~83HvgD^mj&bx!OqV(;v*b!nKm6)v5>VliQI*e7BV=F} zTRg^+DhrU@7p_n{Xm`lK_}vWOmpzp~tpIIi5S1E+qim+z#tr{Y^)D(>SM=$}bx!g8 z2BmW4%zU0Sx$ad3`Zem|i$+;>4_Kk-WJavLmceL&5>ubzJkH>(4ea&Nye=@=^nwIh zrUAl$P!(s}Io!FglQM0J7viMo8ZzT(w@CXWj8=54sI6rT7 zNHpR>bv^+RmJ}dh!d1m?NpvmXwAEGPFuo((4v6`uz??Pe)dY~b7e!4QbM&S;#WgjF zccCmcdTwJ_N9j`4ht3)^CeMCWbk%4%ZQyTOsQ4EDv^t!>mYXWwb6d^VaTTi|vE2ra z;m1M=?{C8)&WbORa$k&kIuI|J0rU(xi^2l8p~s>&%?KXX+{_tSqKPhG-%LD3wcQ;h zA@**SQ7FF?^ipGAoU)Vw4iB(JAaKdgHsxIUaiS=?pEK=kMbPpYf{z71s%jO7V76TQ zbVEi?h*aVdd$|hq{45m5@i5zD^j^8qBsUedqV#QXO(tK+u6Hq&3~tMu`@UCg${Wus zvFVUgO3~XyB!4;;^GEUcNkALo6Xg%We*nDbmf9>X&qqT*6yr;@R$YQT~kD&5LjC#Det2Zrn&h?-~woO7r!5{Oe=^0mAJ%5q+&D3 zzih{~1fXJ;h>{R%HJfN(+Q4Oy0D8@yStIfyH5wIle_(c?msxX~5Ce_YT2*fyWWS2K zcP{_2SKpM!cF%|FW91w#8tZdyIg4#44?Yjhl)F`8#?i*{fi;D;8DYEX7<-$!07pGe zq0Iawb#o|+fPTJq`DVONol6bGUtw25@XRD5oM^dS1(t0TiXEiJZxLJtrLB1#RTbC$ zzF3K8vW)g8-qM81P)VsB5TnqmlXaKV)4S0DqOgtZ5O_J{89wI`QX;u>bia?-v#Q{G zl4rGvY9Bv3dTL}5=VM#MoEY8kAX>|FcPM7)xB2^N2l)xcpe0JmkJ^>s7e&o&Xu6!| z=s-AQ=y3tth~R!vo8cH5KKM2s7-hZ}dcfjw;rLcp0fpC-oo7$Hs0<7n+G}uHX(?PK zIKOkOHq){F>{7H1U_!>cJUE4nQ7_A7X$@xyL^};YLXQ4LORcuvH8C#z{uSh|HFdm< z6kOn(99EUvB1>$sq8YQ@}(duIadZRC$It^Kw9f`V{G2tMM5{w zO$G8`XZl$NwB27zYPtf)9w)Fn$C#?krF0M49t|MYCIRRarY-XH5?pnsZ%SY5KH!MP zJZw0}8>qw3T4ZZ@=Gp37qkd9^9clW(K>rrGA!}8xr2Lo2C3ZB!`~4>(3{9@Bh z9Gly9(`~o2+vaU=&v-ne^5%7Eufn(48qUm;3!nUHDq5}j?xIfHg z8sUg62V%#T&iAGp)NJ=57wwBR2~`Ekxw4}ab%kw0zHnFI{5Lk{)F}? z1?nKg!3i@%G_W6*)Y@_u+%`_XSvCD z2Kr2-$?M13HWpXzTo`u1F3FV5e1Uw~zznW?m-}~VY2zoYCokN(;8Wym_D0I8aftAE(?ztb+?K{*5`{RNSwRcjT#)SR090W+-0#sAPaa{&ntRQYMCBh z*_NZnpS@9+W9F9wO5D16iKgNZwM^e-vuv*j`mmSD=nuQ~J4+?!89W}MPS?Gj;we3x zv!v7F$tt%|!XqAIT624l$!+JQ;xb&jgqv!Z%&^CA1Lr<(Pn0~WMIecc-P01B&~%aM z&>S&=axp3(Ohy>2%zN!yW<-2#sbnR1%o}}8 z);Eo{E;_>PRTJ!QUdO+PwDoO3LT!@Z*#d*z-#|B^_GzyQDWH!l^Dk#fzXjjK=nxkp z9=uJfe~|p3!;-Q8&cXs*JXPkQbMY3ulU^aq_;jeqp9bg(3*dLQ+NYjCe;g<3Z@JQV z&xv+ZZz7MO7zCmTK31j&bMTa8-fgAjXzXy-wmL=)gp-RL9^2zYx1J$;A`&&L>L!cy zS)wkiHv3wN^{iGc7j%%gYkbHbu5r;VHcBW$Ev5|D9_E7dZyNpay|q)+pJ$h9c2^r7 z&J?op6?yf0)LY3jXaNr(qGl{-;}&CALVP`|<631OjGUz9FW_y3M$1I6XQy*lCzGHB z!c%dOvF!aW$Jr*TDs84J9O*IUP?KF`U+*f^mdxwScRVb}2ZLBK4W)_vQ+X!=;x?(% zZhQrI&t3K--knzskSj_$JGazmxzHZ3sFa<`x@5MjA z^ftZ?L3(6YP_z_(uYqM|e(m!*L6ARLBH?Kp#WZAwJD>NYQ6Vm?x^p=fAvbV6TWM?t zMh0-We{_Yji+hX9NKRA3-5cBK&v)NQ=$LxSM}F&h-tLWlj$lxiwi=buT+ku}5WipM z#sFPexEe3q6lNmV-JT*9s>XC(LsV6 z!?imLXftN@>7twq+-tfgmrm|Fu5Q#z0F1>8f@8INWSi-PH2B4)rXfxjwXdG)HqK&h zL~5$nXF65U9YLH$nG6dWIOk56+g}BPoac?W)zUoS2hX*twzUPNxLjTpn}|55S#X3Y zUmL=sZ4YH_9#mFJjJj)P7dp82;&uHa4%>YAiYkI4F8t?Er=6xs9JkriB+%9%S!K|R zM|;s!H`bQ2r$F}p0L8x;gO?+#Nc6?*~F zf8HP>^v;IrWG1TSkrS|TjdEC8Y5BGvI?>f$GrgegyRU!1l1I!S_Tg7ycD;9tjDq>? znIM8sbZ*ahTs?kJ78u+}x()qlX|!7ja=6KFd+=dYgsUVoIb}t4{tA`U+X9v+V`;qz z0Yl~ePyQdNsuC{=42`ouohv&!XN=FKf!y(v(of;;pI6M4{#%;+0qpkn{zq34pg_YG z$L^vO{M~fbbsFZ^z>ZhQ)|Z8kG&WXp_qCFLR>$Nxl5<+a=d7J{LA2V+80i&8R7BmgWcsq3o;`5fCj%%#Qw;;}@1lGC3Zl?7{* zM6mBM1BnSvVxGzyWrFf7-mrY^C2Ot`cg=-D2ZzI-b7^-WA} zk9&gY9l4+0-@peD{HtcmqzA=bn(Y(m&yg?m|6p&f91;SR7>2ZSgc8y+(MQupNz?t# zXaeI(LqI3kED<4DfwE3a@z}X8Lgg5>6eQ}tKR~Ahn6o$CaGfRQ0yni@=IeZ$_tOJ* zqXFM*ZZ>#%IcMJ*^W=|ZWGU>@Xv5j=Sf^WVr|vr5*m0aGWKo`3{McGdclZY&|A$*@ zdQ2axSM+i^D~?u&nC|Gy%z@(3F`QTeJvCg@ERFW zvsnFi1g@hi7}%ddC`4?ataV(`38l!l`EkG0St%jOAtlhyjGuL!A=x2`A%7wgq6ACB zuVo&rFoWW3VJEP1BB^7xMn5(XV-kmEaaH8g%Y5S7 z!vV~W*b6<^ycB+u$xPhf4i?7oSRxoK~=-g2Wj!8EeS8M zM8~wkJ@yYS5|#s^v9l|XDQ0j2x4GLP)Cnb3rKxnSE8w*orAl5H+0D%DBIHLG0lop5 z34&8GispPXi3g+#p~8zm`%9Ub#?uwfR##0~hdFVgZW0b`k{}2Y0PS+al;W;nti_08 z$AcYg@M)w&J4XB(T(z|zHcO`ea_XW&wwxqpt{h5g-5vM%a^yI&1=L*P07!S2uKG`S%P^PU(`s6VGK%pppUr%)vr0JLdVbsS>?u{4`?&oIB z6`!uoV%t<0eOa5c6xv-5^YF2uX(~UTa|_3Zs++5w5y_6cOx7(4LR5>JnDy;9%~Wc- z&&l)aU}@9)wvTN$An(iu;jne5uO4|f2O_nrSWI$6+IzlwlzAzyl(pI3g7V$puNn13 zEDO9M7!>gLrvY zsQbt?LHkIn2GwT@JB>h19dJg3vQ4bi4Ipb8?+-QM-^Dz0Bxr5s69XH5Bs*Oqh~i}` z(4VUyO@8c@sZVkZY0u5>7qB?DYldM)Sqi%MLhu`0E*Tgx4<8ssyi5nKK-~jvZ~4iJ z*D}r_H7+b4J1nv?T*{B%T{1+dfPiIARqErQxSS{cZh5#2E-MyobLzYVB2pQJs1 z=Ee(|;pfSqC@#wgECtGtt-DGSU;O&=BN}}(Pc5UgYdr53-?n~g{k&v{8t(Hn013DQ zxSyD$E-jt>S!e$c2fH(~buf6_daby>TW@thj9p;E`meQ_n|p%W^!Dnzn~Dtr#j|;l zS>dtDIa?7!g1T80OHf5&6CiHVc0NAmwd;^rsEh9V_&Akl(#5F+i7=jbLab{e`kd4# z7T1$mf{U`X;vPN>eV#_c36cS__@Zy{)vtYzBz8C2W#Oe_@^j@O{dO|D9_Pd29aLlV zt48KCtmc$tk|eEfeXB6`jXv*ic2^xmM?KZ?@Ru`O?*c5m?T$^zz6CLHXIE2&n)J@I zEtAtk#^_F8sMP{J=$#3o1lp%3ysmBVugj<*q@zaWq8zAuI-UuRV9Lwi&7; z+5K8lLWlHbcB1K1#ni?E0caqr}(4QUmY{G6X@*>6O^J@j`4vI^Pe>{{NY z8szK{Q``6TdloF9D2RZ7C{^i2id3Z|O{In|9f3eVK)R@)bm`JT1r$h-goMyh z>7ht32_RhvMOqL-;Jd+wZ~nh;hRMV@$-Q@Z${r z?gDJ%Ri{c=Czd-#zE)HE{I2hwN37RuxN#a}p~X?Rmi;}+cS{CqaX(Ui@>f?10_ZmJ z7H`T}1BQ^y9msjCWxIeEH=HJJa=^!Ln+0y)V51+&B5e<|lpvyG8)S zp?`ij(@}00s0gcgbpnWN+(pQ43n?t!Q$x!fl_MWkX#Fii+S+F}@s1OpUU!zKlh&@I z4qvB95C3pt@bVZ7hOzSgs=sQ7&L<-`v-Ea6+hhm&6F{eURL}CbzMUqSq=s|6-m+t4 zG@g9bETd>dAdKl@&HEwM{Ntx1)97N2?H&9;{V5DmJ(tS1r&~13CW=IRt`&wcFtJhyCN@>n~-`8o&I(gd^BvEZq8p&_{tNRdW#R-$%X80s5 zOb))!QJm))z9zj6IKXKDRNLu8##Z?&Dw~%I5H}tp>EfYt+MPsl_#abgb={GYM#5Dl z(B4d0yHYMLs8UpXsEx;P%?hf}7v*6-~i;9@SYYXqg4SJBrZ_tDGOL zx4Fj-DMx9wBBRLtP<1z+1Dn(hiqJ#3c;k;P(p(z-cF+NM(F0N9xn@2jP3dzR%>6y9 zBI;YFs=XC1-!?ZmVRR9@dX?gKV7>(@7WT4ecy(C-fp~9w7BGiv61R5-aWo0v)V*X~ zRw<0c;&KIFj=1a++2CcK+9MC+&mxjMc)^Mr8}o%@r{&hB5A@{qbOQ5YyXocHOR`1Y zQyKY4e7(yFvvUo!w%`j2)Z&oZ0N2`r!U}tMHa&`36%#{Kb5b|ENzUawV#s#Ek=wEK zu;S<8cl?TAo4NVn-So!@9++PEhR4^3CdJ?Z-<`sd4CJ|oqY{I6KHpx_!oLpN<0lvgnL7aLa$!#@ScxCUjbi7X_}LV1li(%IwC}4q++sx*K=Q< zss2wCRGO@ZFGKn|r4k*1>6kOnxl*xwiN^3~R(~$z>*dk2DfX-L9zLXGIZR*1U8DTN zau93%n)j7gGd8Xl`$i_MkbyF#qW+xD@1(CAVrw!+CIld-7CU5AhOL=L+}D3pLDLQH zndY4-$h#PD@qJ}Y*5)IwL26B{OT|P0$yuaXBGtpc)|js4EvGiU z6v-13!UB&cdpXTp;VB2K{oJ*6qVuaA0Xw}*}TLY6+TO5eORhVuOheXy0 z!W-8or<2D6#jWQwPq>sJA6_wvzG#nKCJZDsxua_97=jx2p+R!&PzQLAkfWGG8b&}2 zX`lVJt##Pdh-OoMIXntS>@X`yN%h{S4jUW@8cA-ZUe=17LM(pv)qf82c`GnGb{1m@ zUJfK-MvVf=r1(-Kzo9-=&D?5%>57|K4bWmxoYxe%MKF?kXx7UK5%duf2IYZSw*8IT zr#v~AxV`$xpk_+j9juD?yUu@i2^l3jD=5@)&oX)+`AALE_N0EJ`!hvR#R8sEQ_Ewt zm~LJGC&hYSPeB_mtGYg)LP+#Ym31#zELMht0#3uUa|1qEp8|Qm6&S;@rjhivD^|MP zkrziKt{F(3-t)^A;2Bwjq^9^yP!pBB_hhAKQO83cBKo87i(o353im|u_r3P zSbS32#NuxCpry3T@7$Hl=au|oOb*zjsn*#`6^N&GC+@4{*XUg;XhR6L*XiB-zUPH% z$k2XQ2+GDr_f1m^7Kht?tO0w>Y9Pc0mK2EYZW;^ixMe5zJ6^PZPM9wcw`jh=djU(LZYhgHI?;6Z`_M5K!{Y=4Ng)*c+Z z8b%5{jTasGI8=UKq(4%Os*Qp?5}YvJc)f{X+J=)VhEl^W1O{GY-t|wt$!KwkoZP60 z#K4MDqN6jk2!RDQ*+m}>ps~i+$wXyzSGT-f+i*cBbwEe@e9|3n3u5QVC8^QQM*1U@ zZGSMOgb;EMQc{Ti@QFg9_in&;RvF3(*_(t7YT6eKCD$bAg?&dHquqLVV*)I9S3-Ab z9x{A>Gxyap{V|%ZxfsuCf_^g3h1t^sQIC2n7KC}On612B25=`fRAd4f1wYs*n{2N_c6F zs@6Hv>%Lqt?UZT&B)`T!)QB~k_jo24a7B3NvlrDmV}(@6TH_~A_E7x`SnDE9lnZlT zoKxG!V&VE13_$p;NduVh5Y0g1V;FklSa+)cFUv?S-HXdZP6KnhHZR?Szm-n_#LORc zx1ZHFfUt?%`Cdo80`!8vasaHHwZTuFjZsCx?R_>TdO15ju^zndBGNMo!_M>-2R}J&k zPnus~uxxGQe#Rs-st2Pls~CPI?DKuULfv zCw7==_mpc}d|v{Rz(>JKFVIIhmV|Cz{**x3Ddh8t?;-i)KYw|;q5s0jK|iAY5pNNN zkNgRm&0IXM$`rtgYOr}ZoNM=LSA?Cm>}`FY<|xqMki^U~^PrV}DW-kR!6F;CP>1n1^UCK>qb2Xf{I+i!kG^^1sfNi%PaNm}Lz*Z8A)F9FW6ZFX|~JTicWW64Qee=5UJWo8Juy<@zY3o7MqLuPqO^Mnz%OzyAtNn3Tz zHq9eUNCT`cg%`?qqIoN_bg{gRUX^y8nSlWuYPemcqNuS;8ZfhXzeOu&1}5O?ZvuhC z4;2QA;7n`u-`MAVpKAteWol=?!*rE_LCLwiDH3>mQHTY+=Bk#y`?g>}e?j}lKChTt z6PW=($crCU(ykPUqoy$5jx;9vn@a?es#sI&tF6!VTy2t}O(ss@==b5OFdzn{d_zm^ zILf-@Jo)UusuF;j1o|{EsoPE;CaKkbu9-|iGsX0_uel*I|HYS;TZ9qU9(UH0K6}QR zuHIk+wug)U?JO`1u#QBLh_Sp^S=<0EMa^_6!oz}@3|Mew0zTq}w#=KIGie#DR*_=X zrw&+N=s4iD(Tq=-qJxQ0U8uBW-UB8EVL^&B&S^j zNyr*eGYJU=Q1R*cUWP=-W^J^a6vF36l^${l&?Mu(uA8Yc>NcLEX#GPbZOD_MXKD;D zIk-|7=z!}CUZ68cpfnK@@}Z(qoTwRx7xL+KCoh$@=0KnaAsh9Q95F50UT^ayf zccIg3gES;{u@*4%l(_^p(^pRKVX$}YqiX<+U&@`;O?XyAi+|Msq|Lj-+J3bBDaV6y%i`<$7H=SRG!iScz=2yU z6g`1Vy(5s%hHv|N(qFi$n&~dnp zIxSuNmE?=*F95p4Q=pERp4m6MTYa%0*MV{kx?91#o87{ zpu&pUq<0wF8J^X!3^9)?v*mvKF{iO>Ya4GcQdp<5O$2jjeV?Sm!tPtuEEkz;FrL7X zqQPYF+h)L5{6D{z3C5DPZY zC4HJ$^NoV{eZojv{7R}VDJ&xvv`qN4Bsy<9TK-8K1|?63eaVZT3|Fb?%CACpk-wWc z$YrPZ0NU`e_kGH%AHLPnh(9V#kl4))ny0auQYaNC{%{Scpx(^40eVIfxz7QT_S9l-g*pE+G)ZZ%h zqm74NkjnJjT46EtN5c}=DjLzkVBlHFxz-PHAdn>@GveYem}fr(0Nf_fsK@Bk;na8m z*lkSRormWG_WEM|my(R+vR1Z-M~!x80r=HrbRHqi<=_WsrnL~UD|8guHckS=>TH@J=dJ*!mZ+QjjiRT#hWEW;S8?Q3F zYniKLu^X<`>@LZ4)}EBPxzNcfLY~U|f1iNpgi`g>m**m1j#IRL_{Yj^rQwpWpibL= zdrG2j+w>YhRnE~x7N5j@kFek{KRT(uenf(}IO0_AveRF7YrQAy?Bt#Lmm=f)rMe%` zb7L!+p?oQTq%z^pg5PR2g475k{QK0(=P8>t^1C(i^IF7YInc!bEFCginWZa6qWxo3 z?YEvg9Aw&V8oVKezfsPK&Z^=dgi4cmmj{NbdQh+n@YCJ6W9O&|`yC(XG!PH+^4VYPL zj&hrGOk*zOXKV&`Af>p*Tc&0mY(~}FxXW%WA6e34p;%*Gu0pCZLAnY+Fha?H^MVCx zE#x2>|NTqAR0l%OKTm;{i`v{)+6j~Y>Cd9o-1`im;tEj0ngx}>SCwAWJ;h#EA6T81 z_I2e~lQFcf>5S=?YNofjqqs*+6_Euk9K$z%qR!$g)mW* zl1Nl}!|6*>LCORX! zXR89eP5@W&C>PS@DmLRq>gu#7lyMOWimXXr>ptM%tBoNp2uP0opN91PLUtJCWKV}A z=?R3vLG-|w8k82()ju{O`{BcY>pr^M1zLdtP~~)TU9^hyLd<&-#7A7vRg}?;isExMcc~(~gIkKazPCzow-JOfkZPg{`BW z5m<;NHg%TNs*b?KNk_(O3RTxbR_h*eea4~_< zdNX82Sv}Jo=|&&8?Frm>+2xd|hYKUTD_8T?7JITfmWs7gc0N$k#gzdXEtG=iMEh3H zt%_(Hyz_IfNnoIC{2k3$o&grGo9JxsL&0o=`rRSw#>7wv2s5V}ZhaNz^qe#kB$dThJjim{q~ z!lyuzQw0H$wfZxHFRubu#;t#mp!{pMC0m^d7`3w_IQ7x>yrepfQ35Ij9efvCUN|xv zuYIy6E0GU3TuU-h-O~~Wv+8nHij;ZvgKWm4zsh8wD5Xf_G3S2IMG(18Nkp{DkwOE0 zeYl?vzuZ^3ic@5v891A|;+U@k{VdkQEgj&g{3gHx8`#iGsP)Xjp{finPuDIEMo=w@5;v3&BR#v-xEp5rE*+jrl z?$f-WM4OBo%5R9iA>Zz8U^jB6a|fNLaI26n9LeDQV5?PVn&y5pd4t)K_bRkGqcswjQF)%rO|a^WkMv`YSi#8gz@)xR2_|Q=$o*L0SC8I#O3XOaRZVboARB3l0ZX3!8&K9p3?zfmOIO z?hGG$eeiSOJ^89EvGsky4qAo&tygvVg^|U;{He6D-Fc_eqNkm)AhL$gsMucAX3f}? z8%D7N;~V2Pzx@hz$iF7be&hQuE`ZP_z>k4L*ZoAFl1t8ik8?M3wZST%sYesHX+25ow z1SZIpt^zZs>ZtOSA5+msS&kFu!e=_TZ+_K7^ghsg2)LVRitaOYumF4nQ;#y=K zIoz12-Ni>6E~bqo3{wYwUI_;eUS%nkYuMdoU;D@_Pl0fUb#=DvS=mN1u>btw{TA2= zRu4(;ng0xkkdQHODIgCxTg-V8pK}}sEwpX17sqtuoEXPW@8r(5&dc5_m-7A~0&@Sb z*f6!0*$(%g69L8Pnin&CvlSi|q@2+BBlX0U0@%x6TO_OWlpNWuANZrVXURvi*-yvg z)B*I1q(1So5r`eg8t@PBf|V~Bj;Ytzu)eXTlvTm+^?eZ6+n2-pl=KM5>lc(4rM4Xr zjcrk#TJ)Um z+lHH)!zMJe*|LLEvyBW>oIa71UU6PESVmAih(>dy?PZhIRNkwLRaPMAw_ zw8gV}{+H@ZZI9a%&?7^o()u0SG=t$bLDfl>50GsswxJIfUwkkRP~q^yE4avZpDRlj_6T1SY`ZWcs9Mc*%Ck`n-n`W=x3luA z*xU1|?#(US>8m~tKN#{w9(ze$ngf^BaW#YDi^iN~6)s`4b4loJY0=845z^f-Y-TWT ztrqApI_(Yz*jsbe8nat}?61k++FDnC%hd47h4GCHC9r#*8LDT`n9i{x;Hr$BLovkT$=&io23>0mekg&e$iJwA1_9M(qv*s zSloCs>?=iB+g?uI@Z}y&v7So27gEk-T?;NN4$R0RsdG~<$)6b%cGSvWu%DQ*tqm2i zBTcdd&&zqB)VN^0rX$wax4mHZ$+3*+lYCD{7GwGMm=f)qbXhSa}2~F)c#l&E@(T)gcZ3 zEV}#K{hmHd%MUR*RA%CE;f`a2b#(oyT{H0BP?yCp&^tF53G~j@aDY>zumy^){!{9> z-Mj~02p=)=%RU*2VN7kzUJT>Q&F;82R_P4ff9)O)qPKa%uyIxpHiK>?$4fK&=>qQl zwrrERug(2usCYVX?uuCfLo<{gZgPO1EtJZOA9mNlyW=nH62Aqr;*y%ql#k zC;ArSEz0(WqGJ8hQNkt@cACPtxVP^(kXeeIDeY(8DvLnU7|Ytl2d}=sg3!j^ne|%O zr7<^md2id%ylx|ex1ik2@h`R?MIl&v&t%q7+TWz*V9-5FcTSjS?)%tWgDLTbSsKGo zKxXen+kz~LQTLpatOorh$l`K#fA^fVQ%0sA2(LJ6>unN?&XFvENo>|XXE^9#HK`Bh z#-Yssg)Qv*vsb*-Bbx&6WpmR{-Y7FArLza(^oINNDDM6dhdZPTqcp$ z5xk`v2qvb@?*gE~mDd%tQ_;RM!j71QD}sr+V3W4MVC(jWHa3)4xC!Qv_2;hBi}5D* z+ckw|j(!1^#b4{(g`OmXCH^6Zb&MiuW3{sNFbPX`c zxJ&-oMvcQD)Eoiln3kfQLY1EGWQp0gH5?lVp=KJx0<+c)V&M%0f1)^02mp);NVx5txqD((%_Py~CZp4|3lBKJ zu}IJR9Hv=fMuleyAa+V89p+F^N{k(i=JEloq80 zt6voRsd{IKN#_n!%?fjxE~cxUZC&lWCVF2Q;WK+Q3_}l>Wj&x|4U|aY1tC3cCK*0< z4ParKo(=_T1O&qa3Al>eKGmPl?6dcUao7$K9g9w12F*(2@9l#FKX)oi10d)}1zP$J zz0CA?0z^C%Q6W=fmuLp$Rc@9lpcSP;hrP}1Ltz)OoRk^6UNPq0^h zFe*2i(5s@9?{YfqJ~k;ja_}~5PetW6-I;fR*u{hf@ZJvUX=4c|q-VDR_=5f$u;7x} zV&@kg!wKJszQimZx#V-PXtT}?{%>tOWw^+>muW67Y1-El(I$qNRZ0Vldj{K<=xl2o zphXNzPVWzJ9&4$euI;M!z?f?otv+M^nMeYZ1whTn@M~|wwgf6eWr&rY*Bj`)O@_sB z+Jh5bvjmL|F8T!J+b32_rl5yFNaG;1%TQD4q%}}=Q}*u4rJG<8c1~{b3?@Se2mcbn z$l`M>DJg_w>4|PY+l;&s&x&bD{%VOLMa9RCB&YmIq`RolQFy<#l3jDCiTML_RzbrLtdnXJ__geBS zyLY9HcXu0DWugODJ|-2!Tw^qw`MT=au|KZ%is)hMSae`r#nYttfC6GDD$O(cOdl!o z(u4l3yS@H$f)>67*POy`2F+WM?wmQ3Y@m5RG*7l4hRAYZT_~*{Hm?mZSTDcZyD+)l zLZ7}n%U0sj(Aqk<-UJ8;_AhRJKoxVA_ZT_Un!J*xONDkiQjNHaHNu_~us9DY1x++t zAN&gn!z!_d@Q9R-HnTpreeY|ZOOuo!g%>O4*>nLNwlp(D&D0`vX*mw9HH1wp@v|`x zSI1F-a5Nvc0D8@{SVZ|ym1h1z7OVeE%;`T5_SG)?9L)fcze~)_O>JW4`Rz|P{|#eG zg+FY$s|vI0?Ye552JcTUSab&E%V0bEuVIwoVfx@>t?zBGWB9@_K3xIk2gU35Q@3e5 zAod^FVR#Uj?Rf%vS=}_GM-BbJ*qkn`=Iz2iMh%(lno*_eO8G^Uc80ie z&%)Acq;-rAwqL5_?CU)L;y```(p61FS{{sq<_r$YnW#Gv$0?OYI*%LL8(SMTqUvAU z9hN4d7ZJh^Ew@}OF4RWDohvD$ZyMIh#Lg3B5kbn0T|-Ta$x%6=^KY@sPKHFYumvHJ z7xnFNuWIVWbgyRd7H&SUtGS=#lnFFYHq0=ONz)o0bp@Jt2Fyk29u&`YFC=u>Osr-R z2*V!$Lhq0K#xjrbrE?fwqm2s0_yRps=5YyMy5aW*=w2GPJN&F8{vu7;7O~pTc#5#R zT^eLA-R>37h{Y{YelcJz)#4w=5-BKY%Df|`te7r%^tZ2X(8x(X`yFCiX3J1TDo<=b zdipe}w)4GQ;W^5d)_aNay3=nyraX*ZdMd~UQS3%=8k>Mh)+X#H<{=+QGGSOypviXX z2K3!a&-+t^Ubpc*f~)KD+ktpA^j%yJY8L4s4}kjAxJQ4=!@-iVElKFz!D!$cW^$sI~RT~*y7#+Q0wSQ@1A-gsAw-C{~ep)ix$gm`WN z7PZ7T6lp(_x}DTQlb-<{6Py#*HF(Cb1nY!WlH}MGhpZ2Wnba`p@T*jn*vS6Yt@{y- zZBc0^)a!3e>qu9=_;)>@vVRp?XQo!poTf0XZaNVc1mB=#O*WI|)@!R^EHUe>WXXTZ zqA@bJ=HHWc??O!A1g7Sbb)pfC#;+w5tZr#}mlF&=4;3tx5`pNysz`w`rk~<~h_pv&+XOW6)u`EdB!%SZ4PE8DRMbkrNU|4gfm+d-(U?P?3*<*sl}X zz2rV@3xWJO0)T8a^4;*yq9HZ=)z9CtHu=p9K%nY>9%9hG+tqpMtkvQF8gm)|Du13{ z@lm&fl6vxQv+duF%&BN`sa-x=K-OiPgaIdFB}{E|oZfPkD1X~}6tlU&s-2Qe3LO{hT^5%rN?MPfM=1s9-^6@rW zPbNm9>@~Fxdsy0~yIt6-;XrNgYEa>D9HbIZ^PB z&K|>ai6hj5H5>x&&d)5D&oraPIz%MBItY3X1l2i9ulhM^+btj3Hh$x}Fd2PndHmp+ zK!6(LB?v}XJ6$L8Kd$Q^s&n?1ku(ENfaD3)iK^`5&i0Q8@?U7#AS~C@`kuYF@r1jW z&^!RmARuBU+3=^Js^=9Y{NW-X}C>M%K`hNLO< z)5k7G>gLN7XDJ8I7YVjMYNv(fJoN0%;MdVI^RdOcYdR;jglkB&4yAPB+OxE;-$J|t zgj;$jwNw@&8Y4+)%fCu#bqjz4%*ZI2sR9TSKf=^suXZ87H8ip*-q`328Qqwmn9fN| zsAxMAW>Ao7dx;5MZa(cYEUy!eD&y`x-@mwk>+s689c=3_)wHGu z6Kl5_*3D;)r6`kM4Cszf1Dlj~GQN^!CzwrFPB!>mmh<;H7-_Vz0lo*FrMxsJiu-ZD zKrMUEUQ2mj)<0N8NGRHA=_My@PZ@hY1!(sP#|WGqJeQUM@8RVI(rKbyi#*iZ(VNSK z7t@dGyk1k@P8aW(WlR*8H~Dus2_2Z0N*t0)b=P9dz(4u?paFBWQq|NKkkF7f_98r- zN=z=}*T_Cb#Mfsnb{NspzY#y+i0dK&i%om~Q+xEcy?`B(vHp~ck`NGvTsb`XJ(Dr5 z{*=xSbqa2eYlgc+Y3F2ZY$XRB`wQ2cLA)kdqP?1)?wAN@q7>n&S)qjy5$PXkdOmR@ z2zhEL5M{w=b$zvU4(z?AQNDQJKu zvErz&Q)SdKOo^!^!?QEQq9;J7`>*v0$dv+IP9}Q4UP`~8bL_nk#S80Zvcv-%up^#C zR*_h+rO0MS=y4XL&84nz-s7+gCWT)5H%f1*i)(~iqsWfncibfn4Ts8f(0v%v1?iXu z0Nu+7{3x|=^14#tM+}OQz|=?x35J*k#iDoYML-lkALRGm z`QuQt&lj6c(ak^ob@G~#lv(o1Fy3As3IpT|NY;gn!spOKLm%))^7ZDbX{I@Fua**ILraq zrx=>N&mO#b{$`8{S#$W;82#T7>2u+F27vPmB7gn-{|-v0DZWX9-`?iN{ainF9~rMi zROMtmR{;hXV!9UlL#8tol76kX{F{8o^UJ~qx6b`w^5F$8orI%0zvjn7s!NS$tbu>o z-m_#LJN3Uf$8~%5%k6t3=+;krK~oxo-3d1o)COD6$0zaczE8N_rVYZPSWyZ0pE%r^X%aWvDcBNmK55D} zLN*277C*qZF_jm>Ssoauo+(|-G0@JLmr$A5+$l2UYa-A3!8#3|2cQnIL(8r7fY`G>-HKW*|om^NuLAD+BwdZlvk zu@M5i=MdOpGc;P>4d4hEk!7VT*bY_q31j6F~fAM#!wVnjDUb;@6$f~FP z6((A~V)!bduIRTK8z|mmfN;>q)wtbLH?J6sk8%DsT}yowKIzY4e~ZqiF{WWL7(>VY zV9&?!lDzb}Rv2Y$`Ua1PX+g8DA@Ax`gIXX&@J8N|-&sWpw&s(E*eF{`x} zm6WaJD>?cR-)$iF&2dh&wtKF6D*Ts?QAJT*`cD zF_*=pTmj$GSIF{<^n%2kX%r0-8l8)L$MZRDUQK@B(ftWAjTyZLZ@6HTJ7ZW{Q@d6M z|92O3vLv;^pU2Jq3M`g;=&w{gfeb%ly_ZE)k@;>p3%dyq#PNjkwTVa*UhrOk&ZP+L zP&m;l-LvqJ_iTvTt{Y!M&?w!qPay~?A#f!nz*WEAT%wGlGs{9mgS*x{L(pObl=SR0 z#cHiihzLGA91Gv+Q?a-ROu{hASUzdG)+fgfZ7oce91mQ%t*&>(>AKp;?o@8p(xi-B zKDW_Cqr33co#EXfwMGF>heAFxb`Ct~txBuiiT3$&m$IQmq{@2U^ZW5FCdIWUjzAIb zWT8qf5!Tk=pdHG@7URrvvjvapcI^?Q7dr&MGERTj>K7dRV@#`oHB6~nZ5O_3`HS1i z6&f5!bFI{Nha>ak-9#7)7@c5ld4d`Na(7Ql>Z#HO$D zx|f*7vK#Wicjwds(Sk2FW#=&(=Y61K^RLXc7?ROQY5#WMOs7<*u`1)cur!@Mu}eEbYhmgV2wDx zu0aSM8gWY`z-j2XDZf*Tn?sV8xu=v!w*kU^*>tYOB|-*~01qGUvsXa4!ZM2$40Bg1 z^4Ysco_o&a++_l*N}HXWqGgpU7pI6EG0O#}oM5eg#MRYE-R?G)pH{$6Ew{y9hYj<6 zFkyZB^aT`!K&E@a-krcvg*i9e*9xt$n9<*wx7&^;3@6Pt>SDl&xeJ+27HM8hF0iP} zG-d76r6a;qo+NX&^YsUd%h`T_5k~$xu=YkK6&3tjN>PCB);mUch2dhvGZ~+?TROXT z@q&Bh@8-dDY1P@EH0dt=XtiagXz$!Ag&mdFgu&-}V^lBk(Oh1j0laOVK7 zI1A?J&CY-k_(OI3>Lt)Z7WRyW1nkMKR7@wvpA&p0{On`c`=apoMVr`@adgGH_ARJ4 zMo!H#&|7T=j79qD*n~tA=qEn!^tZ2N!_vMV&FP;>;LI~o!{{-BRf|tl-Zq~of$@LKt`r2*(nP`sy>&MND)GwP(wgfGl zvYDP!J8kiffw4eg{d1z)%*7Z{@L0{TD2B)BJakEwIPGG)HNJZzFo^G(28*iz%2BX`p+CT@EF)$r|Jfmr9U$)Ma?+D3)bqkjZ&)_5 z$8@&hIKlVDVP~ON51~$N(b|V;$7>@rq$z9K4@F~*3K6Fm7mk%2fnp3z4AL2yF%ynf zgl43>A2SD7Q5HJv65W^V*N@NZycn0#$N5t0`mi>8j@U&=kY=bGbYytemocLu)#BBE zPJpPp;RGx;=;UGfKT|H-g7JngovttFM8PV7kelgm7a>?Hf4(^fQ}SI8QnM2RKBhqKav&=6WEbLZcp zjdzj#+eleen4Z!mRzIu=ql7Pij_b0PHeQHumx<}@+TjG>HcJ|`YezM^_5Fk7)I_{_ zllaP|`HR7mJM`IeugamCxReTdXzMUvIUu}Bl_KhA5T1Z)D*Pyc>}0fMQU@1nEGt&; zMIG|OE?mBDtMtHBoF>`gAAHdn%D=X&7t{d7(|_Xha{X_bsbvw>IpxvM9V&P1ldlDS zI;j&FDEWeNI(#VJz;@xa&a>6mq~NckrNyQ+%ZkK#V2R=;ZBzW%fa#S5Y(U>{*%024 zreo_Cl8H|Of?Fm6EOjo84ZSYLtYY&I0oz-ZjQiE1=G<(yT(|n>5g%@at$OR4DkrEQ z5Co_k%BniwvgNKUki=_effID*$FwVEf&$Akg!QgNsTapQW|K6}FINt1bI}^%B_CWD z3FwpRPY;{YO>4E=8}n+NNmmICXNV~Y9QE`FuuwB~LG#++`Nuf_RH zs&+ZJYO&rF28(f@y`@8rW|?M^r_Lkl;ev?M6m~J7_KJ~JO^&@9?iV`X^=XzuS)aYv znLG1pmkK+S;A;vTm4XISEfKLY5aBpdGJ8C!0959?xGIf@*@Ka~~*(=zPClR9RH_T#(TpFFVIJ~wSitfUztMBQ5zR-eGc;v+gp?zFDw_O_8mn7Kn)hV(!Nu2(PGQ1(a)z+tZzG?}!H%%oW#L?x1ky+j19B|DVOV?^T6(tY zZr9^-;&XPk)hx{m-|OdWhecHsc{n^RZnX+nPP(iU=QlANSV}BPDd))@gLg}SK7Gm! zZ@IENtjz(g6lQ+9w)#E2&0?Y=B}WC^prD_8VM&r*Ldy$vx$V9c$_t!|*7T1pJCm(N zgED|6jh~#fF>q5caK2R=d9BZRI24{CZl{K$Xf|HY2{bq6i(9@MF5d9V8CXMh%G z18ju;PKj=$0g>|-Q{k=zU&-%G;Wh^a#mxoHM!C{BbZYf>oN^{e+oxf!dBNKc0II1k z9-n%G4=DHZ7~%u;Z}qBTpi6#!<)&u^i_{pRUQWk}t$FQ+-5x~^ORTQSyju z-LQmv#F#^yYcyg(;vi8g&zNCDffc1>Z-bJ8lq#l9mDP<5+j5t#K~C6`Uqn6sj6C!D z>TcU4LQEp8@RjH&t+=A8ae1L%H7X@Vx?oT<<)6<^^YFpg*gjc1d=rhuF8>h+B8|iy zJN<8s5XiP!d=6m;osr_w6R4eCF9wnDyI?pu8*WPL!2!M~A>lbp46!%*4Lbq-;N-6C z$tOP=RLGwP-vk=aABVuXwBfnxrtL2>fGit7n>@wN%cZ!Prjww&nNJ!W zy^)l0(sr#}O*@&#{hjIA5mrOxqVNIHKB@uEPdP0U`aXr8)pqZ=gDP{KTYVdg)y_mQ z1Xu3e<=7+GfOehB?Fl7)YkO8u!5Cm3?P}0%ZH<5CTQ1U&j|rjXSQ?y=NE+PiLHhWg z)_GqK)##o>Jj3o5ucm&}iY+g>0Z@HDEts)e;RlR;=3BcoFPkKyJ?uK)wtk%fz06)Uk&ngQ&!noM^3poTJ)CF7$%DmUY$j>tz-#oMmF~qnef^#`@M2b(hMYt zbS~T@mN!iX*y@-TzRZ2G=O&XdXM(YF9Z@u713eH)s2%+ZI9yJj@sDw5OZVWF&IC;L z1wEx?@M&K58GAZ(#kDn7!RJ_5XR+CQiwvZGSH7# z$kb$U8BGwn=wGxpQFOiR6Hkm&4;xwvgge?c(v%6v_H?LM<-0)DapEBkSfHX$Tft@0 zGhbL!=BSpZqZJm_a^zx?3+xLFDc@CQEL)Y;bnG9`j|aQ*>n@RTzR8l#^syOv;zit2Bgc*suy0Da(AJ*#0Uo%6)N^rdoaOcrf)URYZS#NHXl^s;HYJk@``X`$w(wOO<5({lNKLX!xhu{wS^ZF z`^?2&VfJ4x&sB}TPvEG#QAy5}bIlC?i)3}5Z51#J7Uf3n!*5GLKI!76$lyce`>-z_2Z|Y*QYTWXMODO3H~F$~O@8 zq)$I?+Zg@u#MEpXe+y!!-u<@nk`^#8fox@Wv8B#5=$#BXSw?8C0iMg0lE=NHusMcs z%zc(e=UV0F5Mv6mqG)vl7?VJrgeS??IXk1CHB~mThJ}du5=DRskeDn}WB&rJ**|s2 z{Nj6Ed*Ps1YaGL0w1_TpWx3fQ(v4Z=7d9==_*Ll*1ibgWG_~Gr7DJCpnx-QH{WilSga5l~7{q*v+KK%`nIp-XQ80cp}Mq9RBU0)$>H zAdr9r2%!ZFErd`65<@7`M7s12ZwE!u|MPqAe`7ct83V#OXYX~^UTdzo=Gu|H(1xBf z3Rc}UK9T&-008ztQnHPF?Gq<+yi+zoV!b5?4U!V!fz_$2COK^*Gig3e)3+9eyGlzO zb8t9cU+;Q8<{+y4C|AurcE5%`uO0sxVon1Y#oXWvdsg_#*1h|_Z=ELZF362HnmQAg z6M>aM2ML300tpsT-GwBHZF9DQros*t*g{@+M}9(vIATCRVqprW16x-Z(lfQ+reUxiC z)Fso8r)qmm1+4lXA`GqsuZ)bN%iJ=#i}=D24kWH*u_p^}xBJ&iG1V5iBL+nD>!vB`ed)3TpU~0o}WDV_N<9jSm^JE;@Tw%8bYrEv+?YPdel68ZHZuD4g;uY?g>CE(squM$THi zZ;3GA)d@MAjA@Wy*BWW)Rm`_B&Tkb_k@hnW5TG43FGeP_BPcpLRI$6lq67PlvuoqB zLbQUs4gBVKrb3J(F6k6BTpjl*&;7RNAqg#uZ9G1qjJy3lKDAhj*XcKhX0&ZKcPi4w*Y7a$YhST0p_RlrzN?#8V-&>CH*O(V-GKI>#&YBpuEhm2+{#?0W|&b> ze}PU!zV8)v9fXMXWY&#a^Kn`>_rzY+0`PILEEqti@uNDOjoJwPwU&Y8GLKrgK0ptp zwMER_4If{=G6j${_}?q&s^nKQT29E`*_z$kC@w<66zm0y%LV1+cOLXcsGGShyat`~ z+B@^cA1()TC40N6P-@K$*F5oe&ZJO!3DV?Bg5m`BAimpCfH`7xE{stm? zY;(0VZo4V0&8vLfiao+cAzNlU($Qq3-m;mEn^iM?FB9y7`>XHxXK*h3qzl*hGk99m z^FtgrjEi_9<9fC)h3!B+Lv@McScb&N6afc~ zgo?PhI_gCuK{9SmUA&5sW5jPH48^7~%4-7=n&|*?@3x;JM&fy##NavzS(3e8bPbsp z+V|2_8(~8-i}zgi(|CwpFke|9MktI^wZv6~x`q3L_=(8GINsi3uKdbrzj1O%M{wq{ zRp2&HvR=1&-*8un@kc#z*SD7IuO*YsB5LLj{^$DKMW8CnQm@=815tj(81vnmnV24D z(&)KJ>EkBpDH|L~<+-l)$rt#S@TAaw=YuLx;HnTx+dSu`x_ME^L1+&ceUW>w67JUl z6`z_bGZtEI$?|TqNYIKMX2rx$W zsgDXcZ*2(&DRM|PpnE7Pnmy(_7z`mqUPPoZAx9nK>Q%=hEC>zuP*cu~Wcg0j)GX5m!?7OKS)ScogW zPg^Kxfb<$;VGMKs7e0{Ls=UM~yis4C|0+sL>Wo6KQ>-dlgE*EV>N*J>Fl z4vWFLrD*lyyo0zaYk`zE3`4lcRFJ!jaIv;>nXy!aH7FuO^E-3r{T=|GMhg>7#T<;ZH z%nQK2rct5n8aM^Ll+Tayet+MCt(}&1Z}-}^SkrGF8{S#aBtpTKpWr5*@g2LN0br1U+UTpKl+cZ{n{bu`D338tmOuE<6wM|O z8Si$v;m!`Z@@l)=ck@4Gyz3qp^^BG2L%o>Fa-TSE9vk_xw-U>3M&Rgu(>4&rCdUwO zPeJhUkKH;^0^mAq|-jT^4`Z^ z##1PgZ;*Ylh?_8lX#@Q#?$8(zggyb?Oej-H>zb(rqYEHhj=+A8DSn_i8=-zx>f5uknv&&+b3PYdw(%sm`-)x!L8 z&Z8swfn)wE5%nL9VszvgR7h@>w!%60LM>MtK3LbiY6d*Vd3eEx@lI9{_nQWc$2%CVMyaSS($yd+u~-Yv+>cnRz** z@u4Xq9`n^@@V=jnSxn9RUIqj{{-Oq{->F5@%5S~5WeHp+PyT`tKm0 zi6GN=cl#z;OrpV|P1a1lxEW#0y4QR*?y8&7;}Bh+Mk!+)n&W6HA^>Q`l)RXVyHRC6 z?(0$RI9EU`^oP}kjsqTu|!ow5aP#&{Z9 zFi>${Wqd=zlesQ+grEk^N_3S{S z!z7X6{e<2K!5A5exFy%8#hDet)O_!gvw8n3{>-u=0{~QJ@Rm%Vu2I~Cowdq_r)ohA zpMQtmF!QnH5^Kpxd|vjE;uB%9DH;eK%UlB=5HJZJFD}uTKomt^LEOVR-A+_S&dOOi zDCeZ;L{bs=rXHduog2OQ6%}_mo@d4%D_XQn>6G_;!RZJc!c%p;rh09)CtO`1{G>Zc ze#q$s+}6mje*Tzr@5UUoA0dAvEv;t9?~n(I?B9Ud!vTL+-dZ!YMVh5fwbixB#~U*c z-O8OV;A<)LGQ$a6F|NfH0>M|tp}FilZaT>aES50nvb%X!4P@1i&F#;irL<#|li`-) zCKq5i`3wP6>CajX*+ddV1&5L>jLeY^f7%uz${og22dB^}}bOp$kc1(8RZQb(N?fzxPD@2kEr*`#0G@ z;j@2QpMahlx_YZ?srj+zm$kx@{z>}z-BZ)={Q+D|^v&nFCMKdSVm|iXyiR-I>j=Vg z3cfvUv{*MHBS+hOm2!2>_PJwa&OiO`Ig@Ihv@^F?uS{tiWPNj!A;v;un%A@6X%m{J zX9iah?9lbQoZVD?aRMYeMB65N?BD&SsdW95KD46=a_sBWze!Td%g4m418JI|KM=n! zfC$1rdY5p3{Pw45{^e}{dLY&kH7u9UX23>hyM!={$X+Jf#vreCW?#4hQs?>`)$Tbn z1FkBvo)l9JBlIhCRvJE4;EG#$KZlkPJ}HnO zp7DJ+9Jsw?YD<7Ejm@1tBzE_+2dt@Lbp$k#?6+Ewt5k%%jNr?uF$ zG&4vm9AK^_M-;PBQkQ3zrjlK89fjh)UvL;lgC6|3n95~p)7n~UWx5|~y!KHgQJm$QbvG5>I% ziu3Y~#;9zI@v?*aO!&OohBSTeop~DW7$V|v2or#B_waetKe_r};s9>4xg#r_yLB&( zS4R6MC`T89uutn)i*n&ngJF=@bUIzMMNG7C!)StlfhI%elQ~)raQC`$I`0z^OEDMi zhZDO=%QQft1M^XYf)Q_-kGYaexj7GD2Fsv+GaZg%&79hor@H2~MLhkSPYIH{g%9sD zE!)XUVlm7j+1nQGC~O0=QE*ZplFxcP{?cpVT3O2YKq@==UGQkdVZ3Ab zuBnGLgej6%a!1)~&c-Y4kxm`YeZn>lnxEPE$q?g%$CawLu>E&|Vd>+aLb&F+e)K}Y zpZxt|1s^(T zsy0aulpd*%-(8r$_i=?&g#u3>YndTMZ<6I6tC`t9u34!3-*3>r_9xgVmuZ8VXOjJ8 zaPBmu^6))0Bs}4f)b74xm#ZV3e)2E>b3Nd%=2oxf%c?R09(EkHX@<>T29gP7%# zVlGeO4GmDDLI7eLe){vQ5o_`6WQqHvmRzz(5tyE<3xWjCDSiZKBK54X?f&{Q@vNiX zxNfyF^=^%`#<;-%;arSIx@u7w%{v12)FR+F7-2p#7s|olF&QDYo_aWa)?DfnCD!g^ z|Cy2c59r;J=*E*}AR@2eLYo7T-kO+{4MhB-9i0U*IT~(3i0ruvM2w?SSpFGE3mB6h z_Y;0f@A!3~>Qb_dmC^GTUgKqvD{a;2m6|REIb1V>`51=#L3Qawl>E~9Gi+o)6HU)d3%w+?x4WasTF`~{<7sV+Cso2VSi7aS8gIblKK8!aO)fR< zZTJLgCoGA1{W$Z@GPa4ckYE@3s>nfF-0oM>0T+Pn3rY0qbJlQRnd%Q8M6~;^G?zub zO1ue;Ied3%O%_C>pZpc%3XAR0QZ=Q6BRL{Y8$v`w-F;;KFBi>B4kzD2Xj9!}to)?8(qEOUCra|k=Kv&AA{=#;3zV65MQT3YTxVFiDkJ#zKs#WqxE zWVpC;qOHf|N@0M%^SV=}|9J62gBXrN(3zix4W_-*<4TP&BNT2^o4-_Ur9#;=MlW+> zV*hB&;(C_Xx@~&GP56L@WNdCx5q$_uc=9buBHRe7-CJR9O<3g-E z_0ON>f=PE;8DjKA%)5(863Z3Cx+OJUlX`?(nW$NB*h#LOxe9pTHFH?w{M<_wgXlCK zr|z;3$B1>VW@)ouKAzoPVmuC#`e$BJ>n6sh0EZ_}gkf}S{R)~B}VS*fCvLWLr>pqlbFCVb;EMar9)o8hS3@cx1Cd{PXA1ed{wwUhZJ6M2dCU+(glCMav4| z>qT=aBjmM}X-0p%HmUp}%r8G#i*rP-utWf9l+7SG(&5lecB80vOo9PwHTpWsQ%SP^ z^|GvWY&SeK6{C(=D9)pNR-HB027*qBFzV!&XXH$oH%!*nYPcis))zJ)_~$~-tRg!7 zfv-99B#?u0H-{apJ$`=f5hRDLTNmW-y;YQ!y+PT1uXu;n-n2u&SPrN%j?@S4w65_$ z;8etZi)oELNy(16 zg=Q}(`Q05XwT>zOShP!Zn|qd!!B~x8)3GN;jyustx$+h3*Sq(~5Z{%d_A6(Mth(Pi6$M59%3_? zAY9sQ=9CGouu=WuaYjTcrigE{2o;!=Re6c=t)%r4W?rmrw zkq$74HD{b^ghTT%xee2y`})L7=L5jZ3$Po$7ypa^!R^oz;dsX32cQ#ZBadTZ+f}V! z_o^fQYS8i!(W2OuA(N@EfOBQ$*HXEN|e`*qM6HxN}k{4y&<4@k6Gy4;gylsYpgzZjRsoguPrCPsU?NWd}fXtsV3ksKI@I3U>~e^1$Ok9 zTZk5K!a!8%Q!K{F2Xj%UW-(jZ^zAx=+1m-Bsm?4=uDyOpA^(n;*HVL)6Qn@83s0{5 z$}JHyFc^5Ld0Ao6nF_pXbjyj|^K859J=>F!;>804lTzUmAaniMI5N5TFciz6^E0#k z*WUpYAK$4Ljox7y{T5}tQNYoK6g|FvRy=}Xew=6l7n0Vi5Z$hwe~0ZOV+g+!&{0F` zohylKjCZo(0)TJ=my@fcMKm_vH4EmkwlXu?TrkHRRC-P@a(XOVmSbB>gNj#Uu&Uv; zB4ZIJSBfQ(y^Sl+Rq_+yfG7C)xlVK=11*(DlB;gUSWHZ3`;gJTSa~CU-F(v)(|+7B z6|%EV9M(Z{u5gX<-*Jl-kotRD`%uikw3|U2LE%H+0NPCFFs4K*Ucy~0xBdBm{w%#1Ut_+@Rd`bqP>=~cdg_p45OV<-jpD7ADCs$^iRXQi zt+EPXE14OiMMtXuo&<4#JhV5?A{2G1<@~EJp&2Rh@tIuR(YX4nrM$4`m0XNu=L{!&Bv#yQuEQZE0_&8H zGE|pr0N6HW*)Z_W5H~HgEoEd)+2b2%65jL0F%j=-Rs6nA&1O4mb1>^%|gFu@Q7ir zgRF5xQSKb^L#-K}Zfti@Hv61a;6Z;0!a4%6`Ihs5i@GM z+Hu}X4D8glrJeh(S+cc~`DXhIpPTpCJ{nK4fsFe%nfKxxp9(us7Qe|Ti}65Q_r_w zpoaTV8EdWB1PG`nGM)_`ia|3So?L)k2nAl_X+?WKA#@*ect)X?$XVd6YKxNT`Wwj$ z`z>q}91S#u<6=s$0kz)mvIG%jhlr})c8dzSwxCjn?2i7T7`w#7i zx#YQQA8(z!YlY7Z*gbdBXJI03E~D(KsPtG)&q;J<8&7NQ8I35|0_QmL3-Rscoupt_qZSaIKNrok^ zPcKk5c@7ze6>-~v{$$SScb>IQ<3KfxmP3^}J+zuLAn9VsYj}?2OuvT7rco87cad!o z>w0IN=Gq;ZNDX^l!jr(VM^mB=CsN|TL(I!gcD-pIAJH>ESUNToNcQv=_@(YyFL0+a z?&n}A;Pwk>V@tK$Egnvr?EGGlTYBO@c~pd_?AGBSUnGF>pLu2bdiV^6SLluqK%6`E z>>(FN8S-S?oZaG0oy949C{ERI=r~kLucAQKulOy39yL!~d!6&31+C@LiK&H`k`^q_ z_P9}z1D(Zn@M9qSzNf8K4~<)$s!H}A%|k~7w?7&@?|i2~+>Y6GZ?^`FpT>N*?SJ!Ub8;3IfGredK%AQYGpCh`_*ILo{JiCYr2%zxk6;APA?nYGSy1Jvh@2e z(fL|@2+_NGXoV6x1X03I-^B&#OL!8KRB6R;^(q3}>#|G6f?UYD3+H5*b^t_W2Un=jq+J z)hdooAG`QX6Z|{u?f;fGZW(Jv@Yxu*ya894h&0igJ`xwTR1H&-x%DaYQwvv;qpqf~ zijbYSO?Du^B#JQZ>t}2t{7Nf6Oo@614pKw~)^4RggBtFyx!tE@dDGNmzsoTB2i;CJ z^nB-8brcpanWZx3YpDVq?>tdENcC9hoKv9n;H8}0Qy=*O)D}bp_srj6?cTQ)RbZUn zchU*cu+@i+(IByCH)xNH?j|I*W@>V<@_-MMA%9k-&j?TVXwMQrJr)%c!j}ODFjt~_ znK&$5RvFLK56b`DY=6H0q6&!FbZkee`esb!Zz}vW<7wJ>5aa!lMD%!C7J<9_BA8joW7c@EaHQ=d)WWfYSb>o ztvLUxvt0$m;q{S|y=z<8YP{RO_ikTjdYz)rxES*1>&NX$t_?aoe1DU^_=RQrmCdI0 zr!`hUed}knbHZ1dBc_t!CmX;d^%yvJdR`qnd41Q(O|-NUOpn;;m_Pgwz>ge%u6K-A zYG6ML`Cmx-KI`HyIy%;^7k59n<>G^%R?)Sz$(28=$p5i5@W+GK_Lctg=b%!(E2vur za^n?a*LTz>)qSIHMg1}dXnAK%S>0-_<;z^5TZFSfuHtV*BM?6~x^wyXoy`b{vGFg^ z%ngKuG!O5ZS_lIy*FTlM8RdK8Yj%K$cJl=g^w@gw?h9Kl9xzW}H>->N!H9jMkOz{1 zqh2f6btd`EQ@L!jVgAZ((1yGNA(*GrrS6_Kx$I8gmir+le-hBGy;=508 zA^sfb5_l4F)@;ihkt$G;&>x-bTQghvQKa46J(`~PpQ;$tl^Qw5Q;C%ptx@_@)!{#TOMrX*vJ;^A=ZAMHMg6Vx)9N&)MIPSe=OTo|o!><0QY+8c{|BoVFG+M6sdS2s>J+wh5 zKYpL~!5{eD9tL+0V(!4(-E2sC-$KPlf#llUj(OIVLL}<}3$pj1jI5kr(F>!-2P$dY z1`7wz&IRu2t6BK|9&g-pKTVBn*RGz zmtE^v4*`>1HvZE0|KFSfZl3E2g4gKR+x?q~R){u$*zaz9a!M~<@sq#Z~^oT{c+udp(56Bv6>l%T}VKt$qQ~B(FbhkTPZLp@cq&z7XU8i{dn^9 zZ#rba$^0$1`?uRLF=+xMlRtQuT{^u72#H=9_!-LkvwbbYAJ40H*~fF;v~*~+uc=oX zYb`dkR8NA8B~jHq+gu7@^9S&m*C+b0Ycn2hn%%EvHA$&z$<1uBTRF0|0l;$oykD*y zY9Pke5U(cP*_0sv_Fi-fHTf|}#5|4_8N!+2o&_w^`F`4}fu6b#*qY&vQ2AR6mo}s9AM3vq=#N8S zwfqyf#6$mroxa+FSSMcSO%LvK6L#uz`G7EU2S1Par+7U)lc|Of*z?SK*RUkk4OCeA+?EaCbv>6LN6MjctS5CE;0^uXj@vQ zV*16+==C{n)tqul7{0so@vbVjSe9_HattM$Q-bUNnJsF53HgULFf?ykJ5l$-kI zbLn&M`N9DO=9e`9G){T&-mINJH)Fn^jiGP-^o5Y1Z@oC*OhKVSq^W{I;%yjlO_lL+ zCObOWzkQKu1|-w(3T`)cVAc+VFFWkOB=8|~;TO+~xdnaPoz|M~p}(gG(@rvQ8|=Gu zyb>tqYzFnT52<3bD=J*-{mnDKQAj)f#V^QClB8?=3;uNjFZnA-sSi}ccf~>~MYGA+{jk?lZNRX?l!ZCC!>$bo;wMv*-p$pXNR#!y^xlrcV!pS*748DDH2gN z?wi%vjfCJb7o` z{wT${<)lPh7WDr4(^6yIxO5ivxy;gAd9pS9vWW-dGb|e;CAkyjwB}1;hmmOu;sM$s z#_(B5*VY>8(iCmb?uh*?#Ye^nh`C{s8qoFl5|Je%M+9GhmFaJ26H zs0!kF%)qf(-?+8aXGY03jgUc)Dcys?n4Z7q<%?Q|-Md?+5}ieJ_6yw|ZkaFCV2Pd} zwe=RxQ9}(&^CV7s3q4Y=$3vU?RlrpMM1D!Xx19^FL6V7eBR1j}$lKTM!HhFQ&&`@*gnI*fYA4z2Ay zDURjdYJHGMe_SLsGg35MKKRyBv9Qo$ehVb}F^@GIR%BW-=c_fR=kzLI^q*RYP0~U1 zm_pk957B6RN+AxpL_G^+wX>dKK_8R$qWb8px5OhT+0Ndu7?zu#_xPoiS6o3R^fe!6 z&XHGz_GAnCmv!V(=L&Xuz7|zu>7JIQ;yj!#r$iZ|opk8B6Z1a%gjHta>Lp!@HD#Q z)8sOw~Jc00US$o|ZG{v#--98$*d%Fj!cOkv`_82bHVZl>g~I7T*~ZcO7THs=luONuB#agHbVcxZH zG9eoE78h0)!UzZPXYZHX##?YY=&+^RBu=x!Fa9(-K_R-Cl**)7-}lFywnm;Cnao>@ zR858=$nbs5`2IAX#$Zxby$U=#XNPKlepRZM;gr?mUi0N-9|tZcqAM!K z&aSQuWjQ`9R=8AKStv6pgEjs)gwJe~PZvO&+kB@wayc^ZC+q544CWu}e^J>$CrW%z zMb@diS6(c)vy6(S4YEpXBSpu>Yb6{;ggq4JWCoV&U6CGmCP1Z6t1 zvEBHb`E2Z3;^9o?o=kbF9lAI2h|)B!1*d1IoSE=J36??{1RAc5EG@`;@UgqgCT5W` z+@Sa~Sp5vz+dlBvJt#VzFQrDgmo##h)9#$4KI3aGygfQ7Lm7TGho4}-lvI|EF&AMV zPgROk2>wjs6xL~x`MOZAoN34}Z!|5y5&^-pGCsEUfmU8@R4BiBc@);cP|;L-An%++ zXGtfShsTb+kmoGCmwW_q4|Psq7RW(}*S2P*7MfC85m6X?3Vaf^mZ+UVZG3buNjUN% zX)GXAX)3Y55wu2E5W%q>8>e!bTLdb?HLla2mK22S+*?~2I^bxy;=7cbTbscq*U9-J z0-NNctB3P|&}IvN|JURPVvJ=+RjdZnR;`?konQh34-J$KW*scJFFZ>jHld6VJV30X zV3&>79mqhIY|bpzY^nX4V(BPa*0PaorSE6!mA#rr!R)tyw8uiE3cYn88OiV{Oi&73 z2n_l{+pfBpK|`Hz3=*e}>?oNmqd^Ji3H$WJ7)s%O=ksRrR9k&Lz6^WL9FpJqCFkx| zn`aE}b+?YxJ+HNK2^*7+!;bq@kL39@AC&L?k!cBbfd{y4Uv~VtH`5OZjBn9=to5#4 z+8_|@{AOd)`-8SYTRz14jpkOsIA$LI90twm2#eZW&(c znlKQ?$ljcsfo`2^!(}w`oB%PFLwBdkOrg<4uqvtu63%jcELcS!=auBsNLrk_%$pE4 z68o}tNUuU!gybnck961=>dsf{9x~k`@R}&$82-lpT!3Dh|Bq<}A$A51*brj^m%m1*^_cI*x z_Se(sje-R2nc@3kTo>VkVY7pxLlPw6V&7f|oKdK;G=qfJJ-y~(^D2mllfETZia`R3 zi^feZyPf^)VbdSe+cut=-MD|uE($9aVF2?YxE_ggYK!@S++oRb|TRbAY+bi(E-iU|{k821v-F6^8-pPPJ0=1|_9nk+=$V3+sU z)s7c4^(&HbK_mZk85naobqWoN8Nd1ID*i(;^?TOrkFQfO1}&2hYzY6jOP_bs(9x06 z^QXe%3?!V`j`j)pI>g0@NpN6nDyRlr_I1wnj7_ZhY>r~32+*4w<}RoIcnh#~w-Km0 zE`NN>lK0!|{ICC-d8z;>|D74`lOg;1eoK}#cK{!IM{kF^4M*Z{apPT}gDvq_topw_ z1|GlRfnOxRw*)DUsvlTme>;bm&H*##%n3Qdo--J*XLGH;t@tSo@U^c9Zok(3em@sz z!>RVskl;UJpzq9OAgX5=bACG^ra-CWI~lml^Hl=9<1cu`7kY5DRiOhN^dZ}~7~KXQ zFcbFQ5Z+SdZ4iUUT>s-syTPMv5V7CyR`&CLDtO?RKMX|lK=ndEW9=35+HW^nO@qAt z1Sk_8;5}4hH6aGS8DT$Y&--330gMz0wys~6tci_w0-2q}vN3I$&-2Z)K-J~X7-Eq- ze1|Ib;AU;r`O0H9*vWAEGj$Kn zZP`43Hz2thF&V@WEATp#nNq?w(b@n}9Y1_ynoE0MO!SlS_d~^MM5w;DmR~bt1D=?J~&ED7o z2P<^=O2>02+qb)fAe)*D8>YG1pirUQ;TwKztS|Y0M3ZY)rzC=?r^Ger@H5)b)J%3k z{nn)m*=8(s!2mhD^#eI1XYqJSqE>E$Uz2~LvFdT7l5HGb3%i2W7Q0N=Tb5eBD^Sx8Hr7eg6hlxjIsg{~F zXm5#x=E!KbZ8e69xUa!m>@(=Xb8ZIvLM7d}csw&)lif z@N||;v%#<{u4UN_?NPFYS1c#a!0aj}9GE@SewhVhl3Gi13q`dnAKVtU-Yj_Wu9}@v z3QAx)nBWr!`Fi7uiR^Y!lo_gfgfVEOmV%rEE7LdKi>uj2z1Bopt{2}sa_aCo)s`@e z!i-E`ox39=<|#L7_=V;!oN>*BS@=#%qNtUNzu|=tnmhiOf*fse{P?|v;Cs3N@*sN7 z9FEgg4({e%1xp_)GudDN1$h3lZNymDrD4l<%yK(X-GQ5e&JUurdc$Ip!>O< ztg>jc6xjEKrWU+&c~l=Ks}he`DXc+#Rq<-z@iG;53Vm^RhgHjd%_C_xDi>?+=f9tm zHZ8J@AGvBsrH)KpUDPr{R)o2 zjm?QCe^r+GEyyxC<+p1Jj!j5xkhofPxEOKJU+6r=x%s5T{enw-ZQFay{o;jz2|p85 zYe#C5i*zY)7NxcsJ7$dG!sI!jLbbVj$%_YnGm1Sxdcx<8&!*x2c>4pY75uJtJb2Y& zPu!JB2crg3 z`{oM;0G!bdm1n(Xs7uawVWw*Fy|=_@6I8GDJxbu?GTL7QV=IlphW56PY21|Mqeh;7 zTKc?_f5|)fNJ+Z-O~t(>lku_oa3oU+Z=o2>pw~Z(K7hWIuV$CSlW^1LXTE+ zcg4?zF=nQuUTo;@M)Oa<#Bpz4fFmPecK-N8sbApl65xOB3a(Ue07w#;m!NK8re+Nh zxg_%M$hBU}D6zU1nq`Tv6Hx62VaY8qx-2hq>X}?!3}X&DoXIA7NEozqtm~DcMsqA6 zR*6q4lV%v5#4Ot_o=lr;nYaW2J%}A471>yB$e8Tg?wcKqKX(uqxTg0mXQ0PSf8vwK zqhEeN^AGZ1gO{y%u>wr{wnPRS&g;v5;MCSc;?`CF$9YUEnU4{7{LRQ$xux^(n=vne z{=aV}^PcxF{Nz-b_Em4KHJ=jLwWQX&=I3(lT>#UYHzq<)$%D+ZQ=MBl18~HDiQ}Yo z(R7P=k2#L*s>$kI_?y+qc|SZZObcSgBQl~*W}wpbq%KCy5&Y*QZAF0 zlz8b=DCZJFFZ1g?_*;Td{c448ly8B}Yixgh(PBO#_TUyEiph9;StWdv3$SbHTJMs7 z9gd$f>l%*nJ(_s+BY(bUXl>$Y7fW}3(NOQ?V%aO{>HCd3l%lIxWXD+|Z|)b)kA4Mn zMHZ_m8c9TVdmFtc>K>_Z$?BD+AQX#3Dq)We-=7a-uxfx!Mk`*F#TK{Ao9z|>tt3Od)ODYZhzSf!BC(TlXEE2)zkikeM~Ddnd+8c2(`QH82m~+ zu55NG!C}{T+52oWVyY`7t#2fBA?a7$dz&!%n#X&8N!LPXLR>#AdohufIw<-}EZrnY zyANjOS5vQr%<>mK^2W3Z-NmLdgT4A;vQ0!QM)KFBE$byH zcyyO@G*;~IkDRAnHG#XW}YfN!ybTqTAdsF)a;ZV*UxIBgPnrV#kNy zvDR?Yf@?>DOP@`9lYw7(xI=$eXlC3=YcGcu=jt}z)~I+1J&f zNVj98-F9SPGJ(4JUwJ>p%|-emt*zWJF3({5$&}dBPSkLhY!ByncpeCHbI!Yn35g-j`RW1!_N?7YKSbfJ73 z#(H@}O#Eg9b}a9M%J`Wln{Dym84G|2)UkHN_)1J9nRpftxZ^bac}o^L^QxhZ-afhV zV%}Wc`}KTNAKhB!3L06v`lL5U{m>3P6Pe?+#=X1REP`Mp`zLfd`!DOi6IFXA#qNy! z8})>Ax4AM&kQDs{-dYlgW_#Z?x22X0;Xnfv~@ zr`YyGIt^~+m+z>Zz}$b%vKV(-(GKk#UoXnwM#ta|Z&8GM8sz5Nq)=OZL)jHWZ^2GG z*?nlU2|O~)$LT<4SUw(Ki7Gr4M18^x7d}zU$y&K}SavEcdE_+Bz1%~a%K~H>yn(C) zNtQ+V>`9?*^ESEc2@O}AXKY_WT-=RA`lU5uLPy(1o)!lXZ)Z223Y%ovxmgR#VJRPT|g>oLwN+qv*N*Q8j5=+yM|Fnf6se=Z<>w=(3%=-G~?B) zDz2?rka3upjy->9%TP}MBrU2Ka4>hu+MA_ic@qT&KR^x( zWKbE*yVe18rtf*C=UjFheT6Q3SP63lQ)p&&Is5u%-ovb5GLeJx2R_|PI0M)HB_Vrb z4k+hO&W~yzkOMCvZT>^J>}Nu5_ygxDy(>H%K<4&j1ULWXsg?l$j>2mAV11|=azpah z3aEf46D?>mQ;REo7K3vg{tF$bW?trmG49NAv=q;N4KGILPEnU+y8ePeCUVB*yryr!3LM?*a( z)4m}R3!Tu}>FOn9ABFyWB0s}P%r~c2Y(PA@ald0t#1=SzBj~5`dav}l@vPk)>N`g7 z2`QZmT;49}At@YJWF*QC^w&XOt0tJ5a?B7y;nUA8^)Uk1HP-w6ac zoU?947_;rANosoz^_Hx-5+MoyT!I9qlmmlxuh+McKsTW;1p0BUi@}U|-=Q73%(sgp&Y!*j`}IpX`AVWLtR7c28Z_#B|7%ih!FUH8NLSsyT?Fx zM(Cxk(bPB~zfYwfN$w~*_ml;^^E@1%oq&MI0MPw>M?wS9O38GdJG1Q?_A?d(ahm+Q zkDOKFupAnob=bX(856D#%+>DSy}XUqE<pc^UN zgrgH4nJ=|QeY9p%rz42#+#$DjEBdvVzVTB1y4Cjpdo`!26qKe8-?Bb3xk6L|=R&Z&*DVqYY8TI3%_*R>a{4dIF>yjl@0Mpv%&Jhu0R{2%V#JRIuv zjUPYfbgI)LCyJyfL|H?~-X>(tE?Zef_Qo!TqkXI~F&IV&*)tepudHJ*$vS3G82gOu z*}u=!sdPS{^SOS%@1Ni6>T=E1F!O#t@8`Lf*ZsO*ceKXE%Jn(WzWcX!8y>v#w)u(Q zv;sH2$7k2vqr>R+t?8=enq$U(pSL0d#Bny9oWqxPxBqtKg61CSl*=a$$^UhEU+!jEynnwq7}A^;kZQ*i$5T#3@?K^z^{k+TFGml57XooK{ug zzr0af?LG5MA3cvIb@@%ndbHmQc@|?~z)cQmOfiN|v<2+-;Q1+GdJfz5$apAreVE&~ z@9|@kgWJ(rMmie^CjFAFFgeE2dAXJ_I?ZsO;>x=lR--`I2ocCYUC?D$KbsKX zt$%YVnK`b@hW(U{We$9gJckUTy_viN!23;7-%6AAW?k9Zo6n(GumVrj0 zs5)3EZ?M;d?Z%q%TF%@%4=-8Ps~k1N--qYMfLQxz*Vt_K0?jVqWku0v$y;*ftQlc4 z!`~UX@0h`*#piMWk=Q`oliNFFJbt>waYjnqX4`qTsbb%l@yOv&#T9yf_O$Y05w~1o zHLMxTrU2rXK;BBii5&iLFPS-SzIEQsX%Q+LP%b)CK}5cicCGv5gd9os&xtlVHCxG> zqTtPcH_#OpV9uqek4#oHh=~_cm=Ci+Bjt~*yC=`kVCc`R-v_D&-vULG|3+heeF3D- z$M^5)&OfV&8g5H6KG^EMvDRAc3@hiiOx(F$2n(R_87e2y=8PR!KLCiUQ|g$(S*#HcHsIW==-NilBNfKxYR1(B?z{y7j(Ms z?3kc2J=k_f-?pRt%5OP?r&1tA)pstc3{*5APc=HaXUmBuEM~JTM|F6WdFU8gdKCx= z8W{EkI#;=2ZW-os<#g8XOG7F(F16Ra;)=KNyi$jkjkWdQ{2xL=t!-0tujPB5V_9Q7M-gsF9z-!Xsut$*3A|3xnC z%VymWs?NAnuIT2fVp)dcsgXB1+=>G-d!&5g?_Tr!$ueMaU!~t+Km6MeO1Wb6OF^I7 z^C+X_D6>6j$Ura~VGaFh60>wg3!T%gH9EbgK(vTEKf!+DMsUuI;4MJSN~+Fofl;k> z0&xOQcVrHoik%wH=(kb5>^I|Rbq<9~!kmXV4%a=HxT6&(F%Ty6Ef&9^{DoBxc`o3z z`jIDl~a9V2D)ErOvs z%ePN+gSJOhtlualh-@6Q1+*gy4m_Bvd3>2PtEr`(^Ma|7dOKZI;68MvYg1R$R5yz3 zW2jQ(#jeEGT#b<8wG`lix|p{mnMEz<&e={E>fXBnSWUUsJ@m1vpkA&9^~KmVa0xEc&x>(-O}tk?)aXbtXE6t3XLG=6@Jf7X}0R|l(P zAxSEZL}w9Xbc2yhh1sth~xLC1ryaR^|$^;zVA~oSK^mufF{#U-V6Gfe^dVh(Gi1b0(*5u$d;i zRZNi*0&G-ID3gq(h_yg5Bx*cq{`ToDujh`w5hJ7(P-sj`D#?n)8m3G?AJ|oD&iI>W=ETqW)-Qdli50&$sw>}>^c>4?SnazVG`J(HLP-_r@fYtO8Z%LR)g zJIll7A%nJbdcf$k1eB9y`7}%E@%X+Rn~(=%-KIS!FH)eW0?uGshgYE$T7$e zKlqd}s<=>%-tZPva=vw6w~ZpGrDd`*4vhVD}LcD)v2fFve~%CMh{w zqci#K682f2o!6m-to!1kGeT6BZ!H6H+Q5FS1V8xCrYFW34XtavM)ApAu$?LL;x%Q6 zvYB_=e^j!}LOB~-$jRQlny(}v!}2BQVqu(1?vs-HR=knX}THS{F0%z1#oh%OLT~R@KdQqsXkr)TgO+-q}k%9hZ|nxXBF9+PDzyI z+5Bn0mwi!-AiW`&Q*>Y4xftQGYjt_g@DsJKl;86VQL^-hZ<)Z_2ZD#!iS*CBo5DKC(UZS)z*3I zVP^QP%QqX}Vo%-)6$r}PuRSTO)JE^=P4DX;w{a3rlG6zii^EzbixwQcR;N;(jAg2n z;pQE>9PsxxKLMyIfXJ|*eE!Mq+3jc$czpy6Z^mtiy_P!+p>bI)Xi`drmq*?puCvjZ zy?4(IJv>}yUCiTlV-nxLJCz#6Eo*^vqyI7D526KYuQFTILw{PFeXOCugr$;Ug8?+ANEMoh-z>RNjoCJWuA42_*WPKe4SD;<1d+#0>nmVd!uz|os7<9)?_ zdC4MpTHaLho>8RVM5@{cCHkq~jFB2fc>ns_(GPPr{00(30$~0(V{N*_C{9Fcb-)I)Y!!vAo#{mVNrQq;A!Q-ks-Q6x!UC@S}AKm!!RQtZhw!cXM%CY*7( zd@&$tp5kn`kx19a_fjX_UwCKzDSBHq|5(IFneQ`)FNlL39C-dDbbCI=c=BIt_fpL- zsJ-wtBtfxg{~QPjHNB^&Hw?=hg;@%?&A6MenNIE>476PP^M8}M`-sLFdv`9lq}sfw zNs?Hy(LRuUtbp$~pMU^L(}&3X`F+T1f%QWn3bYr19RS)|g47AIj&bDrN8E7>%5BDJhX`)*cOl#4*;sU+(Ceqr*Gas>%rk3f(%u{UDR z_a$3um*W&y$`Kw(uz2DAQNWfoFI zh<^F{7(-r|$Y9IjamdKKb6HHme${ypp!yLmHU`GR5ZL`C=1f`@_8CjM8BRO0<#iXV z5mClbJz|R^?99fDaKh5X9KC0u$`zfn)_6Ik^3FwQn3o^5FfC8- zVX{K(`XhW}c6T@cK=m)}4hCwAH{ zvP$tnxP3GDXUq)~A371<%_ZkV5F`UF1}gew^m^$|%g5oUF!c&?)a3B{Xq}nxiD`m2 zQeT?-Oig>EP5fT5ZBR9nI-v0Dh}3S#uZjvq7m;m^GV+JyQfGcEDmW=%X7_fKn(kuE z7i^Z4Jncix72)03Q1}&&V(pScV_U&6;UxKUJk=(nY^82zt2H{r(_6nIhF`+5rN>8t z5b@u*+26y@9rb^&!5$eQXb>*bF;-$=(Yd&IcA5KSbLdqbc#gy}O(UR_(0MgQ z%bqZ4jh@4piMf#B7`Y4sG*%3%72w7dBU_Z9;331dknYmuZ7bpDA|Gl)yMG3t5lkmvmNxYzO(ui@;o+k07#?D}THicR4;Lx#z!IfRo_9?mr-yk|Lz-ON4` zIFWa+_GTBurrfQRFm1>gMctUF#!K^+WJj2JL}C_!$d%pP2*{^|jTD2oP*eX@{sOc2 z13<)^wm0mL?$yB}xf=~DsXGt*5!`i@O2nTAQP`Tsq<7B^NL8DcyknK&G_ko~M+3q24=YqF){}Cq4NE*7fkjo+imY#+Jjlt_Nk=8L|RMj5xzGXm^2FVRE20xowN z;l#R~-?)to;Fv;TmU`~6lWFby*q6V39}w;Vd=p><1>ydmJuN1OhcSy23AuhecSRJ9 z5QS;&PSjzkBJ;V~YZmK$I0b4Cb-*Siz|ZMKfyEGBK<2aihq7{oyBVUTuFO}G{m9ug z5ZE<=qy)2U`z(A7Bt!weNn*+aW--)8C(IhDT*19ulv&Xj8LrcPWjV;x;smlG{;e9N zTijJ@mwuu0DX64}I#ZNG>{09x=ECpN_z%U)oe-8Du8wuZY#D)APE#xv*0vniKlTLw zQU_nyK3Mp`i_aA+l65|QI8{QAEIAw6eEJE}!+aiB9E&4u#>r_krkVP+E~yZ1jaknu z@N$Z6dY|Xh=Ii?#<-NdQTI!BG|FD}+`NTh5#4b1k$yR%X|Ie1_tL5702EZDgB zQPV@4i|$yRE#>LSTc83bDXUsP-7e{+PaKXZ&$62GdtX4PMtBub<~H@c5P3Po>8h=) zga8lKlIy$UaT~-te7_>bira3_lU}Kh-u76rpDAm#v%~x7C(5FV&m_;@;J>Z~lPo~K zNK!xEUR`19BZ>jX@2zyK~{R;M}{F`~vIc3ap*2n3nQq?z)^Z@vjq@Drao9fY7U< zQb{|qhWvp5u#FYqik*YXA+b(Mcd|uGXF|{^p^W23;Jdv7lSndkZ1a(@AhbzFW5S1< z+uVZu`C{e?f)#@>vTb*(Ahh45b_Hllt3%vP6QgjocvTK&=f_`JtHDJK_#c4eKao}# z#W@BXMGN}Xi0?{8VJpzN%PfC37qbsBZ5mTlZiT$k-C}we>t;EMx0l|4xKurU)*)Wj)$s$j~k-)9s>;MOi6NCMS<2)Aq%2&-T zEtE_j&a#*OK9`gfTzM-?z&Ok(tkYt}*PsWDkXm`W(OwNwP3#6Si z;{q6u*i6CZ1I!P<0T57`E0~UklX}|N*0~c-PF9%j7vHFsKce4o=(}wjWRyt%i}J`> z1_NXb3^9hw#m|8LHNSa5_gYx>`bXWm65XL<)O9-9rPOPUgVPap6_7n zFFQIwwd`+LMayBe|JnAtW8hf&4A*t0ieG=A4}($%u#(A6dbWTgB;K|a4f{Y!Fg>u6 zHWlEv>^S(OW2)!#)$Yk6mt>~YTvDD+&y{3ojt1|Hyr~Sa!%!UzHeyyX2BRF+_L;j7 z%jN~=+JL^glj@0@KC75PuKm=(WkYI%Ry6=n(;pOY6}&e>+H|Ks4_a0`UH)L6dD(z5 zP+`;|E@wM||14PMUxQKGyC%Mrhri~H`62J7-J8YCM(}Ubq-2jPr+F_INzDh`fQjbq zwLF}~00G8216|Bc2vn9wRjvk5nDZ9Hab3>+h^}(d^3)E)6>6}eC|i? z-QQ!Nzh8XWCWMF9M#r>EYfyGWj#qP)ri`d`{7v)f63M3o)sDiuQ|@2lpD5lGe0Tr4 zf!07#A3Mx7kKQ4{ro=|;u!~hLCAkUSk%t#F50Jf$wD|Kyi2=1o2b*lra1>XXwzXV* zqePjBQkk0b6Q&=hPLn}Z{&FB6an_Ddjyw^9Zf9B^;rsUBUy?8cKDx?2LCoeAt?42M z86^(I+HSP{;Gj>kSWfcGcsqpQ5?$F4Det}8eSRZ&edW&SWv+cHMK&}3Jc3Sy4ymGZ z7{x8;L8%;LBy?a!Q_B->-}=kdp(O$0eNUYic>#}ql*wK%fWpbY+dG{JFYLXdq7kVrmL_C`!AM4Hu&}Zvf{_|#-#|WRs{)vTU3sp@xU#j$8h8&(%a!qkxIgTUaj1UFK!Yy=y{E6Z`u_Lz zSIt)3f6C8;@qj-@t{KWvGxzo|i?7>gX}G{8k5HqyITtji^ZLPaT>RcpLMkC}0jqwt zrsM;UQ;Bc7ga?!rSek*yx!PMD5G63B-C36tPN1mP<^wP*pYG$cli$p@0~pt-F54k* zM7S%me#76LKFH8`|H^#;KQG8KfDzC%@y!%{#ht;-C@|Xs=x)AL;V3nZR7qVDGDD1g zbmXTqO!(WKhv(&jETNTX_I>@KW5z8-9)|Qu>6l=#qj_K`rx7Rs$#7JZ&s6%gJEdYi zMejVkQVKIfoT;4l)!MX<7f9}X?cU59K4zQTIAXmr!c%xs`p1qwEBj@agTl^H*Zl|& zn-f0^&)<9sB0V+@JU;fuhHjuV>vEqjegq72vhqjLyeM+aWW$3 z(&vfiqCH`TBdZ{WEq%}Ka#_HRWMfs>ix^a73E4Y7sLawFb_z`?%WRf}+CW{0JH=-H ze{QFwxGU4_vfk1(-QaBNZpcvJ2c<#Vrp*nARfJJA^%>w@!BY7vlJf|vJz5urKwvp$ z4F`1|b63g;q0QbA;O&O`$&g>1ATAY`jFEbq(-{|*l5z>44uUwN;PKE6{U+zqva|Ku zGK7cXGpz@%NnQXcEpd51lVS(6SzCx(-?r6`n1l1C+5L%`>D%7>Lgi#YK#YnVf;Vs1 z#a-FwHa_3A(l$(^K1*hroWrP~DX$uks-RHVlhajS5Kai9F;ingLzBbFxizl*jGC8V zNqOhwFi0^C%WPlp?2C9Xmo5@K4sC62hY8-X@+c4pI)A8nLYMG|7OJLF>Zw3g`TE%X zu2{R`?E4#ejVT>RVzdLfIAX+zm6p{3#P&V?s*(L31k-CD0JuB4C^0;GUAFt9PyF6- zIJV*(S6<(%S+HCB4JG4hX&= z1N`Tljl-p_rg8oU&+4_9e%{U>oWZ8?wleV&#NG9)RGRXhDAYyIO|f)0Qp3Rr8Cn&3 zTG5pKaDMskm}-N`>`zth#nu=IZQhmauoik%0Ti6u=bc>q1fh%ZSZ>QP0)7&=zMhiJ zxPL_-OO=6FosvUK4mF}EbZ&ghO^Zpt%_v89I!w*;QG`WuW=a^qj8jaKoVbQ+l#kr-3+A5_kW6bzLQXzhzTQxpHv1zT`?Q6EvtS(m0*#P^iGFT&o3v8N-BKK0Xz}l#429^9b@0p$?e{OsI9HF zyUd4938569IjeCj$D|5Cerb^phaSS~Hab4OQ=^ncKANK?1)HC(slsJFgDqB}DO(1u zYPVX)4Wn}I`E~(y^X1^|tg(oG!!k$<0x34v!a{I0FA19;GaOOOftkAJ@&jPy06IGq zGH9u2bP)Dv#s$m;z`q@3=@mf`Y2j9-L!DWbo{`4*^Vj#>s5bBrzT?8?sGq{YjRHNZ zY9zGKXwC`Pv?k`o z98Bj64&q12A>@&F6y-wYU2vW+tRs3_%q*}gk&mFxZf8=M0B$`|GoTOu3%0R$j^caO4rza;qLDvYt3nHf0OU*lS@m#4?LIR6o1ER3 zMnmOm8J_MBL#uq)eBhm-Gj&XQ#H(fi{COi zZ8gZHW@={mX>#7FC+TH86%lDTITvxb-MvxJon3(~<4XSC8!(6C6rMCg;Oge&9YF(vFxJ`a?Vlb^ zEhoQ*HVc1&`(VD;#>^A==T9{(h9_TUKp>e5le;;xh|L?b1KA26Pw@a3$SBnaY?Olp zys*wNc&+>tTKK#k;+3>0h*kq^{BL4>O03GahISt2y+0#=9RUa&RD%-H1X>PD4=gFS z+m19l?pKKnf9341d`CP=`URbo6{bICX@sq6EfWy3oF|;jl+?+q^GvQlZ5&hY3oy#h zN*kBOx?H2!#8>x96XW6!7isaiUf+m!*Pr!XHsv7S;s}q6f)jqPB(Ns`&7gfw1QvX0 z<(HVv+v)uj^S@!8Z^6jT*IyW3(g=5Uk(W&}rMun7J$c*>G3Y&0m^naXu{SnUsvba= z7JM3E*mI(z6`i6V)2h?Wh=}w9`=5N+H%cAOB~}=U`%^FJSXTEUYAk8^OzG9Rn7q}! zBjqvZO3x_!*qhz^K@?$rq_FA$VRXT@upTMU^X6$A6-M0M_Z$y#O+01Jm}`CN{- z`8gXOklqD++`J%a`c9$2&61AFr4UqwQmvQot+Z<(wXRa6Bm1v3dS(*|gM+*&x6@r5 z9_6&jmz>eG@Jk55>Mc0W6u^HeanWAH7mK5`P@Np=lnMYm6rK}7p#H|h*@gX_mpMP0 z@!Z@;h#1KZ*SN)HY_@{r_oj~_+p#@%YaLRuEMkvy^^B8Y6(8{l2df!4 z#lv|ZOdtIay}kzOxD<=lUfAcd1W?97Fc>?=gHuwmR_N*K>wzmryo975B7E}`X?Oev zUsUqVOOlMvI`l=X3m-~TZQanh-jvjx~i()uA;h!JEh5E%ZTgA8`u&> ztrnVTQZF?5q5qct_0fEEf!D(2AcxC74Jp3v9f#vtL1*C=>&JsCSFd4tBMsjr3@7~Y zF5;9c1S9Da2(39vU`H-=HT5OdmAp5ca(=%%v*k)JKTQ)$nw$1Nt;FKC|u0MGM%E6}(xG441N=bs?3CjCRtsPys8*-M?Kw zSur=O>)OxNL`_2<#H^ZAbaI((7XcEx?yeYHx?8)8T2b+vUx%KKsHJX{$LLx9j_}NB zMQQy0@amwj6P=p9-Y*;-MYB!3Ayb5n{y&TG%T_#R5H1t*;D!<(Xd!PkV_^i_o$U7Y zY>OJ{4sTcp+6p13^2xFMush9XLR4H)9n5RfRzmQ_8Op5o$^@>QHY{2Ao#i{u1@0^G zuUTcSzPMd!lbO^Yj0`{ESv%N((d5`(A^%x%qb+^6gzld)L9o{n3HMWV0xMH2^x&U=s=0 z`0(5kVzZ*fapdY}T;iT7K)EwqL4g!Waukm4$&=RA4r+Mc)E@7H@Ae*xI?CX;E~7d2 z)V*xcF7n}(?K|JotZy6Ie)*I(WIhd&B25$T2zax;Z>fiWJDM38pUWa zVI$ryp7ji8R^}%C75#pl^S(W@XfW6lGNr!~ z#};1SSWhbBfIA@fiV}E4MRJbXlgr;1Q58)2uI1Ia7(c-Rovp=`mr50Rl@V#~(`q+f zk(Xpbnbtn{f18^Gx}?Aonr)8%UX8yO>3-{d|)3E4p*W_HeGo{Klo{oS4~xi<&)pHJ-@>ZirdaOG8Z0_$xD zEaficW)g7TeUaMy%>ADf z#d`-?!?=gPU(4AiUv2{EqWlC){GBuYQTFXG_Yb|`c7b5NOM3tdhWZZsG2MRUc47Oc zGVYKGeDjaL_Z+rV;RqPp9=R~oFaB%G-4}k!(92N6KH93zYf|G=GqbP0%e zz7~o5aeth?k2tL zqT+LZbXNwy0j!*F{L7=$oPYj9+1K-a@U5pf!C$umJx**b-`0XCAH#0E_XxQ{W2ZBZ zkmYkyqkYQNuz~bOD^QxTXMX6u{AQ_@L|K#$`B%~PN$$UKy$e6lRUcF2EGMckD7Ny!J$L2i}&mQ9^cmJ^0H$ z)9l_4idizEzcqh=Y-=V3hwFap>sM+Nz#F6*uU#%$&l3$M({t1kPXf1PA8Kt@taXYm zw)`04Fy!5sN0Mk%@jB!pgut=46g1gO@0_a_x!9peQ5))}rUBqsJ5G6fW*O%WcF_eH z>O1j^(!H#<|J?s>`}c>|0ai)&!C)0keuv8j57f}0`lhAI0!JQg=^~L)RwyJZX7)6e zvG@p*_4uJBObNkc;eE!D@sl8!>npQr#17K^iyzNe|2Uj+oB!*)()Q^J{aJAmYWT}! zkr5d-!BS0{)`Lk;F^X8|uE6|bho7hr=ewvW%Amq4Bih=tfvLAl`LjBp6TvRF07$T{ zHt9sJKpKnALVrUx=M0boD|eook|0P-oxjapaHMrvzi}}-D#ToI6i+t#j9G;z1Z-}; zUe6-~FMjN@h(>ZD-)b0HZGd6JS8K2tj4($& zm>aG#T=|F|EdUhK5T#@pq3c%VO^7YIKbz-Uhn^JzIc&ehdSPiDzmD=>>l`G* zWxtK11eVzQ->sDz1+HO!I7hkHBBn&Z@nHdt*lAY_aNl<~l#%hPAQtwOiZa6*gIqVE z##_-0iJD=)BI#z)p21?gbB4kT7AJY&NK@D;zlm&~rFO|-_eOL;QgZ*HCY7D>sarUa zr`$9qt=K%Xprv_#P?|9rc*Q?BI9-^u-ruT8@c`Hl{eFrTw}OKg&0BJw@CH zs5*}?uXMMq<8T4%qtCgF5v8KU#?KZYZ{?Ul&)16>wjbev#y1^bf}5`rrM|&jwSWi$ zh;PB@+>ei>%w>cdP_sWwD$png*gJ|Xjn<@sg6D7~CB$Uu6^y6HM+KcXKrk2V)0;D# z(uMnD0E0b>oZVKKCbhCYY7O`Asl6U+pCd6H7=v5W>GH6CPZzt}Biv>QOeK=rf;$f9 zFr854Y5Eak7iu`<2+7@RcsO5WID@>fg0UK8vupI`0ZmJS8pL@0D1emNP8600cv{@t z?55fA7@o?9%s7%m8(zCsK=nc4iaYiiMMS43-LRop#7S^4l&AFIwTP+8_yc|jLGVIe8OOSe_d&ghR|50 zdAn`JDey}UV2{=cK)udI5-bl|zF%hns^1=5d3YlCUbAXCg|&HYhG4Jklq?s6 zOA^hTZeW6=%*`l19m^I&7ZrYl;Wy|0*A26_kL<-kk}HznIU3WGMTP{+(1^msIbg(7 zi2+@9A!bzxB4(7VI>j|j%57OHL}5Zn0xA&15((F{-v6W9;s3+NkteapJYy~(h|#8$ zSeH-j6Pk;qR{OP0nC%Xmj489~&qtur|e}*dgfKijDT(2LeIis$@*QR!)yu8rq zOvLoaV0TN5wf`E0lh1Jcd`u(Ds1|?;Y`ZcLxCLfC{XPUj&q7QuQMuh_z{v zgbFChHrDa~q{qfM@?XQKLl;}6UA@0=V8)9tO--oKN}h`{<1EV`^}YOHS2fudJ6zX5 z=-!?D62ODQm>T?4q2w@T0^fJj7OcBjh@Jdqzwem89j@B=h+6~axB9|!?*AGSspOX( z`^E(T-^i%qKh_zd&*%=Jl?!-Qrw0hCs2ZherKifrjy~0-SkUZ-Ha)H4SO=2qhPv@} zN%|b){JlKTqq;34?e`mH(V>?V~HsJD2N!S>q5@l&@L0@wv(lHDn8!R)FyBO z&LRFIz6oyQh;xS%PIxJ))rG}vkJ}ko4Wo8QDfV?zy?tQSy*UXogk@z_9Ig7YVQh!` zd{06VPNDvHRutoU|NKTsXL$2tVB4)TdvD789I<~5z11jJ&Y7-sPacPx9h2m9l@nE? z@NsEsYPZ$#{WOkSx9yuL`Zy$7gM%~uNb4C}n{C%4m7&esZl?v-p`<0vDq7DB_a5q` zxDH0I)QqK6S`<^%y0pGAdI7}p{jo^VxsiO}dY0N8^TSEf!6Vq-1@98Ef)>1n8+$WcK&dQKLNBqx!9i|CZn3P zpf&LEywLO~4`xa>?h-w8=ev4muHS8nqu0!V`04fmNYHG{EVUS=oUEMt+5eHq$) z^L?k#FaPpPrvMZt0Avo_uEX&;OO>EyZ)N3jin(O0D1okwTE;im8J=0$Tw9N5pw|K} zM*UC#Wih_Gpt=XtvF6Bk9VlWgXFq|IW~J`Yg=*ZXryhGBRVV%N1GR)uxfCM^<_k6WzKvx#O{t9AAZR-dkIA0P2umh{t@6@eWi{_ z3bPAtjA(4{uK#6MGY7cqocEgbc z1lkM5zD;Mdb7}J`yy)Bh7%${T-q_1St$ROWhUH00ra*No_k9JzcVbqBqo9vFJgvFM z+maMVo)|iD6?qIZdOj~?~uSRI}ku1 z_+Qf2n@9NQw)+H|Bl+fR)y;><)h}jxOvJ@yWmysbS$Y3ToCvL0AL5s;+otGq^QH-~ zD+j7iOtC{B*F8*^V0%mryr#TD`xf&6L$>kn*8sQ=zCx^S-fMvFyYg71E4Cmg=Xkj@EYz{-wsi&@7^NstMbkgmOW4;l`GUipl@6N5K={ zo^*bB6kpb+?0k!RRJ9J%R_(ti1AS?zl$=OL?Xh|DQ(yi<$oB8O>lO45Wgy@G6$M3w z)(W#vtaW}Oj!b;gMoTP(DSpE;E);wRN2<#2yhNh@QyGYo6=l+NX-J`E{~h8?vcJ;y zE8D;C3o`XDtPpo-9F+%_e01~i|IGvc@x2R^n^&s>N`J&FuRr~Z5YksTmi@7*==Way@{N((`xq-*g=Pi8tu+A@z;{$q7c{yOaL=*59 z{|W`EnU4&eC8(?_Nv$&zuAJPk)!R0+;%})dMl)gSiy&A2?dnQkd%P3c{=MT}8{v0X zTz{~mf0XMPM)rZ$-QD2QL@vCrJILi_3OfzRFV3Eo84!^>5a z|03(99bR{djb-c>Pfdmr@xR>;xa177Ez?G@!;iIN#GBvTdaYI%YWrv##^?UObTbUy z+WV@>Y?gK3>($?0WH9fjiu3dcmfe>|Wrw@{Pmky{ zuzvGq;Nx%dfW!6?!b7=pfbx$`u^{=stT(IJhQjP6@`vpo_U-d_dtxBOcIZcy{okXr zjD%qL`iGHYn<*eJI7Y! zBu;Y9%(&X=o`LSlO4t2!20FcZ+|l0_>E;EF@rIcr&9`TKPC4x&T=15THrtQt>?X@ZE69U&!o1VCv z9}Ya8E4$}y($v3s&i2zsU1_rva;_DWgw;CAZ01_Dtf=bKOasjZWMpxi?tnPI%s^oW zzOVmG>EJnj&hluyzd2;kGpA)Bs`yrIe`#~L4|n7wp)+p{;+aQ((e^QB@5<*)>y%la zBNOL0<7bQPG8=l`5A{gdj4oPRF&&r|*MP_@k!;*&#JPEW_^2Zh@qVzkaU$eO)tS1k?R6FPGvJbUY;1E#0wWSrc}Z&mMcYq${#MPslm%fp=*ctu@e9XJ}LagHWGr z<9FUC;Awa${Y7rK{mvWJ^tTfH&}hHD9%N_`M3Z=JBqlsrzTrB|DC7lIMc6<;;02jI z$yoRle_htzaukF>ld<3qEl*u_jp1|?Tq80=QO9TdnfFVD>N~8pIZk&#h4Rw+ok~w? zH`Xtt?_ssKFbl%9!1sJ= zuXoDF(T1(DKC9ev{P5vvH^!^OU~l$psQCdpR3p^s|o(xq8tIv_9`Ri5?RG4g#z_hx6%W;Y2WysestoMU9oZZ!8(K4--^!0M&(}MRp@% zaCRGoF4rWWX?s33L>Dp1#*mceGv{Efy3WEroLaw|Wl5xJ9G6)#J?JEW3KbxErOL*@ zNKZpZpil#*ub9m-koqE@7`7*6+G?aaS{yrfm%q^cb!$+_b6jiVA=qX_x z^bC*~v^wP?GxlOKWbI}{jUUG-MR-RRrfd6!a9hlLau$%G`Ha zfXm@OCZd8GWOWoy&@438MBA>g!L%qHh^nO<#Yy|iNG#qtt!lH!%%EnEyAYhSG)J>? z^mi`^-Y$<9)Y+Nxlb&naU2OR6#6i`<^(O7p@~q|UbtOWd`YbTl1zxf4dBHj<_mP}S zFMf^3ifqcW8GGMTO1R=ZiC=2J#+(_sL}{ov%-tql=00o_y=0d1&iSoE$76F2tPYjt zR#($5t;%OtDz(|YXGwE?xSSQ9_{?VQSx5~WMK0B}x`w&kVRNkO7QwAf{uF<6Bz%=# z*C0y_i>!5klHiHz$ivI0JObS{FQU!`-VFf6bGc~g-d=vthG*mu+aJ4b@r)ym`Ysj` zmPUQoa3-HjGvl)X?c3AJ%<{&vW4ER%y)RT`=`_4J?Ua)=!6%C3sv-LvTs7MXz_J+=yhbmMyyV&S5e!BB>PXAuI7)|_W8GTrm1 z7Mm(!asngC+8}p}ruhjXNe|&4(6U%MCK*rD+?0<_J(;kVzrF;PwZ~Oon@4=wwsZ|G zS1s;8&(W#$Rfi398jm51>&Jt-oN^z^Kdp<6SXUkZqrdefd z`FXqBPz04S5@sQc~*bepDw?4hf;= zDAvqc9tz#BoYhMTghYsMsBMfT@Icbifd8^8!CF{Ogjr?K$`0oA49T(2U+4C8Bsq4o#92wN9^`y!g*tz5zxZZCqnl8hPFFO@|`@nT|9V(Vs7 z(#=RaV;dg%_!ly)WGk+N{C)FOVazn4Eblux^}I<=ZS-`vnZ*Qt`9)x?fXX>}oou11FYCEQ6)UDYde z){C96y4=Qx;gh<0CW0p=;YMHIw443(z6J?Va(K~-bAexYq(!vUKy07Yt79(hB^hHl zap)TIXe3S%vYt5WNk)d{k-3*W++8LMCp?nG+v@YeC7K)FJLJSfl})|EE52;cJQP{q z<2Kye5Tw^MnD!nP(JW4$#>v4V`FumGGut#8OOs}c#GxEb9?@mqdg3L^Hfzbd-@Dwg z(fdpa&*7*Yxe?0ewC>|=r9CNE=uFumNoza%UO}mKP5)d(U(L&w1*sUCPhe#Ut^K^J zb9pktx7;hXq+cappxMGTxr=^@F z>9eZD$-%~A+a@F@trX^s{0)oPlqRucsb4q;X6j&-TPesp^>QZoQ!<3JuNmOAcHdaSgH?mbq-y0&YWBsW|`TfE^J zDHwtz8NFM6Rwq&ss5d4{6S>t@TxF+;nQg+1NF*sr_dmLtJMB9%kc26*VEQ$OdVUxk zT2n+kBYE5^(^-*U(lUGsdlow}#Y2wtRCG-?YvffPh_5c+5S=hvwT$na!G?0LuMDE< z9>l%AFvFln2kyrmII`m(N%oO((H*dpP!yA61+lJG(FYqoHeBxB`(y+o+y^0?X^b|S zs+sRedHG~B5i+tV=hx;EpV)2VJeb!c8eOw=WVy=Zh^>HcQILI6NAne%&B_J7B5lh| zffO%ynS%=W7llHJ<_^Q!y9Deqr$kU{+7U!ssvPTky!eC!f(8|~R=?hhZh2AZpC9Pj zRsDV=;_PX;24@ZYqiLMoF!!Rkz=Q-%Oi*S*pN}tElNdnh;~0KX={ux+%9DlTonYX@ z;p^wBq1+y@9viLxJ;(_Y0db8*Ay&zb1IBNUSf-k!PlaLA^MegcS9}vp?1uEuUCr{g zUwy`M-8G;ui`?ukG}$66s8f^s^0kH=LrL~3{xcf~s?b#!0lPMqho;dGOv%0f#9krQ_*PzOcJQHp`pLIAS0 z8z$sbK^9$J{v#PN=w5fv#4IFl35wwF}>f7<)lD zbLQN0yYK6I@7Hy`->-Kg=0;uIgGw3UKk*?}Tx{>vOcM`lTsM&OAn{usdy@V2;SsR| zqknEwI}_EDd$2HD`)-#fAN9VbwJK*9g5zrU&7=LfoU>7v!_9Tmdh?%&y*i~i2T^EF zydX3Db}(5yuZ4{h{U=RjSURH3Gd$n}v9aDiRRWp%H7Pno^Hk0O!Wc$rLTtPQs+oa~ zo0*izuKzGt*`AyY2@SF+JU?l1Ib2U?y2~6pFWdd1*y6T1*JPpX`3|ENo;SEdkzrL% zCRu09jNH|)OkEY*jn*YWYXUe{$Ewd&ar-e&rtVxUqz!n zK5&t=5jzf5!|%Ok+wfiQs(!X|awP6-eBps>tJm}mGF;T9G10Z}>+~&6yEOJqtb7e9 z(FjOC>Zh^vR>d!g@5Wo4XD*e1wtSoSMqTff8uG|u6x8WL5eX@wXE$#zYIv3)DqmzT zk{`D8EmX)7jq_>kJ?aw`pr(mRC+usp?BcSQvp{ z;EI5KMZU|jjsJ^t<;5XN**jKO-(s;_@~%eHN#@6W_3x@46>^;8axfvh46_e?KY7lk ztOfbi1Gd*OnldLv7{z)(ud72*BH(l7Tuc?JJZL z<|RO%Izqji<}7ukM&FRPx_&;z_g+D^qtq+%WU<|6gL}cTduJ{g?%UmuMgN*B)iD;R3_LhW)O?)K8=*u;s z_8+|SHQiYrd1HRbx!z`0NVX;+p4Veo^H(lFsGe&nZcJ}QQTjmxbXmcXpZ61zw4x-E zgyCd54?2k8JU;jT!$G^R#a3IFz*C8HU5y8**{&&`4jt* z(R1c-^+MtMBWD$`HLV!&9*Ta^yso9Ae9y}4qV$ST)07HP#{4C$4vQAtobXX<3)#+K zOQAl;6&I1~&)zPh!lUGh9YjwTTiER8z41Mzz*5$K5H0JU_>6iJo-EL0<9~zxc zDk>gyJ(0Yqt7?`sctSy;pz)#8T_23fD-X(nkict*ESAUJZt3v*t}UITI4A(WmKVp? zOw51oEFmJXs8v|noBZQ97=%L<(SxGyu&0*$Ht8#gg9x!zaLrZ!XRc+f5YI|^Cm64fV3q|MH z3#34o(*gC7Zr;MWv3Oa^TZuS$kdwXJ{OHP7WjvEt60KRk`^8;3QYSC%P;3nCMr9w3 zW|ll<;{D@YcbUq$cB?nvY$3o9_0lfjiQ4{f%xvQjUUUSKz;@t{{8C{_`S3*m+ z8qqMc_3Q1Y7VqmmJEjU>zu}rmelB_N_G1|TB#abKz3dwIfKpV7&-_!b(v6+4mSXD9yjr{0+Yc8NJeCOp~+dl_i zp3s|Q?2T2EJ2u65`RDf~I&e?4bCtB3s;|k~aW!!D73RhqM@cgycZaq+0SH?D0O=B_ zGeKS}*(*0;`mRfa=YJjDR8-6Y6Cy{$zMOa|!I%O0$j^~UzpK+exj9ZRik`3uGSLCV z?h!iD0Uh&p1s}@t$7kYpU(oJ{8{S8QEE($W{Cdx4Mr31BLJA$Gq|yp4d5vnkhFt=N zYJ7(Gn+(hbm-feeD#&pM^-2o)?XkYTA5N}LD;=hz1l0#deJ;SxQ>hOkjP7;O50ZX! zw#;d29?fqX#8|!VXJVYvx9y#Hy!VuUXz7F3BA_m{?oi3r#TO8os!*OuSncE^d{^=k@ahlRR=UAKACxVlwHf5 zl=j*iu6MXYd^&u#&8c~;b#!>%AM~I7UDAM?wMek1gvZ6iaET3PhtDOyT!-0Aw5#8T z_x=Ft3v4V0X+~N;@RXA>SySN^@RqA82)(hoWg!5>AC=(^yMCCAZkFLKM&pfQH0{0* zYlR8LWuEDLfrF6C`q>$#-!u(jHdVG|ltE8=KTwkAr$a84KP%~fp7|-Efo8Y7|7#8; zOwkJ~S1Arh?R`JUJtLEtheW)#f`WKIJgP2s)&0Xsy(DJyK7boT^z6IZmx(<|2Z~*u z{FL#zo4eLa$IEfiN@dogxQrC5=L@Mh0Ce&Z)x&Q$-BF+(~k zUC6C@Us}T^+S8jqXz_YA%qx|Dlz&Fao*Hfr$~?B4GRn>bke^=R>BzT$Rhj(k!-@h~ zuY_Y(M-+_2gM|^H#$trrs8BpWkJ7YN8XT7j_L&nVeCnl#on!c`cm3aGLV@eRj(~Y7FnhbvYBzC zLNKSMKh*VCuy8hJyJ8xwm2NUOyo26z!_Eulzp)!8sNatMIrWl+X)1YU7(K5uJc09G zoV?N(tZ#5;F`b$kj+crII%5_h!rhot%az6@1XBbi$Oe1Cqpd7Szv#meI#P3C9R}(y z2XwM<^Hv%1n8%ETKCceL0Q|;4QXzLux*TDay@t_JyplNGHrSrs9D`aa#oeQ3fV`)S z>4u=pE92HRM0>2ZjEwu`ns+ZMF0X09(B4 z|CIpVi`{wt?~F;>9VzT{89bwfM*eQ`gsgvESpr&>ht6VfOkYNSN zb4SWeVJdWh7l8X!+svO;U!tQjt&^Ni%_-SRFUn4mNk3vIU$%k|vtjrl~6?>+K+%dh_SRM`_zybWt^k7Tqz5Dm_pmQEY#aX!)6XQ-W z$V(#$a;*5fS~_4>*VXE)y>xK#LUGD7)Pq6C*0IreHt64|*gtbn=plnE@CKD?atRJB z3F~y(#GUewp<9J{&Uw>QeYUDF_aeO$o`+!VaW zm^zMLlLBDZ)%Qd8$`otYVTOJ2?6a$=WQ2_VQg!4m2ASK;W0edjPyOgGYPvC-zBSU% z5Ul9t7w{nE@~;<4AbGwvK{YdXKIBy$0GGn;CWPxXmeao9Hv;vB8FbvP-qO#}+~V(E zhU>+Y<>*g_h<{op9`e&K1WH$?LC>1|$6_~-jv}+G8gs;KW6=~*@{3Ifb-AcT(hglN z_Kd8^QJZ9GGY!zJimXkl9}vcUxQbteluXsVvh~O~wpy;495_)2G!GQWH9z<^?&M;x zOQ>tuF9?hAT|)*drNy87cto4g!qcG{#BDWokYn7ojD|SBN(my2$ktOKR_{KWhCHH| zoKd&L`PxGP0g$Z#{9x{fBXqzod*aRq6RlDn0R608VNX4Tq66>>ZkFd(a~s^g7kjUL z(ooM1U0Nu~)}z4mdyz9Y&BR3uKi_eOab%A%N{Yc6Tse@Je7p1vq!-tev~uo zAh%7o!a;AJFi1{OM>HLGz{qXKv^~)GqQ>%4mpGAF@!%#!OMp3{|I{AhPS3Y#<^1ls zSyS|(5()ys^RbthWfWa-y z{{H#;cG6@}=JclmS|Z$r3cShNBX<~$)=xiwj1C7<7INrVMKC9Wx&yJ+q{oDiWUZ0z zNjxZAjgBiBxO|*1nFZ7hY7a|Mv_X_eD{^+c#o`4cJ`0ia+vRV_vd=}MnNO5Zk6KUK z14g8x3*-{WQ+X-{B{sAv_XEvuub!W8kmf3)yDR_^=+Sq;sJEbAGFhvC+{u~xCNaCa zC2V3V;LNb^5+nQR3iz{C2EOjCp?bhgk3?Y$5dH)8I{cjQBSe-{znJa$~mx*SBlbYPV?;Xtt(ymYA3u?=vK0spH>B;d{d_PV>^V*xH;nmgMZ^N59U#iaRE=^~;N7`fu#THG2I_T+p6`grih zjQelf!HF?yV!PWvMQ}t*uIDGu<$%_20DbmYiPmtsMOg-m*1&t-90AaC$)M4pEtdHf zSEi2G?2s1aN)Etjs0+IyB;h#+z&g-h0n|{$(To>!^IS=#)*nS6{7?VPZhsAdh9L(+ zZ#6%Ui+OwUZb7+Q&a`>WUQKZWj)F1JqP3e1{!p&~O85IZNG9L}R1mx~L;k2TI>bU^ zq87mPe#Z}OZP@RTN^Dms^^US^YCGc`Uyk4n>$V`YjhAtoJ^g)zcE+PUY!}zYgHb;p zla#AU_d_ysXCB+6+3NLJsASZ)UROQ&1J168$*A1H*Ld5QoX+C0);UQ&I6ynpMCc7S zVB4uz@-q&$(ULp+8$NSI@qk_~00eL399Pjvs8IF3C7;QJB=s zJODZo@`4D=sh7;^%2V#}c`pvWsL0o(PJ!kzb$`*~sYe#G=FreU$m*1_Rxh$r5{mZD zKSD3-^U|iiHAu$yH}I)1M&-9J_2!@Y$hdgeX7DFb(z3ey!t{++Z}RW#=Etlh(MDXs}9Il8%#_@f`C6J?Ld3>p#9A zJ{^bfH(vxj=!be44i{SeVdqMwpEg$PEnO+Ik^cyiW3|L3piOD*7d)3W0iH%Jh$L@}AVLirPnVnPJ%62 z(H3qXMmQuYq~<+*skzpwCuj5_%}$+8noc2r0w5F?e;ZQqrv_@hM&?KSU={1P5{-(= zikATM{uaaO2Y{;<%d_*&XLUd=Pgw)3v+Gy7U+ntw?vRS<*XIK-dM2GR$iwCqaaSpG z;$7WCeG4OcUSF1Y*xO_)uvl`P@HK$dR6TsnL@_1$9a-!|U})dY_wBsV z=nYR4g1N*EyJb%ggNlvC*(>k}gyjnpp9#mlgO(F_{gxtesiQ69(%CwBhFZ%R$IF~C z(d_RW4u!n9f*c(yi9r=7OoOHE<=9*8(^7zdiQSDziXdIXsCZ^Yp-o&a?DXdJnCIy%2i0_J+V)Fasg)lVIs7xcf?-aDedOis4-nZPkT57LTjmXB(Xb`(@avtj^>vN>< zoJ~Smsa%70ETu=V@^(IRX==|mGw~Qd`t?z3m$JZ7$nFr7;;{EB^5W1HrQ&4(MR5sV z-R}->n=GsR{N_U;u@JZ+H-c6LF|_;aWU1(3a-`QH?8|7+OptUe)`WlXt;=&_8=4kM zoYns<&@~$AT)OPjJC~9Sl6qK9S8Uok%p3d(x^zGp-?uz&tFo*#3#uZcm(%R1(iqyZ>q0s1i=nOXVJ9icw|5?vQFh&|D4*FLfk$-@IZuw!j%bdl@7 zuyyzeO6_~+6IY3=laI^JR^WERbaWos^)|Z-l1|}mw>BQlFS8Gpvyqg=)_J)xC5?p+ z9bH}?>6sWQhC^hV>dKqZ(#1Y61K+t#+VA^-Hd4gSpWBZWFTh2*30x|q`XE2%QX+Sf0}#8`4$ z@_@*45>uhzHdaLw0TUe0wN|_3R6}RVAolT!OJh*# z)gg|IC$0qPF`ET1TTyHYWS1pYRce8?97eG0YqQq2N8@` z*85^zCyYv3eWv;7E-oedmOb<#V0$!mpYrK6jwrmiUf>q6N01~d6Nub1duD_7 zS06YojVWW>Y`Jq{|CY-3J1iHHWpWJ5twti3pOUc^_G2#4J`e3dq@ej;hbCq|I7jj9 z)oHe5kuOJ>Js-Vh|?6P+it|L`2!wmB`NKJv9L+JO5BI%t6>it5)Ah-gTS( zu371$AW28fDB@Cepo9J1ZLVw`Rn_w}>BD7~JG=Q+bC>dZRHw-+{2nI~Xd}a6BW)!^ z3Ekw-GV7YnmfpU5HF^v7x*agAA&e{c3l5dqD4G=5EUPcTJ$lw>}i^+t$l9T|l-ELNyFn?(Ih8OR&L8lw6%l>nM#80_omveh=R-NZ949 zu5>Oe45;-LBpZ$A_>{DiSGuNQYJ6R!Z)xP8S!79&Cja;{q_vi1pCQ}gq%zGH}MyJGm9TZ&usbY#p+cCraP4StIQ}t6vhfOtg;U zr(ko`U{O6PTtk`AQh@woltv-QlGtF_PcEJcd9Kot=E8^Bu!Vn7@@QD6sSNE;Yjpcy z+8=y#=6!(&W>tfG5b;RS^mM+5_Y{_gXX`Jy0A_1k@}_IB9I^S%vo6FRPd^Qx+KJcw z#7j1lQN}+k5nVOhB^yL`d5Y!69n|iBEBc7)bO3p1M@l+}nShD89%JbYb2HFtLb0S_#NWe!!gdDA4h#d2g+@t_+^Nl;9kD2^GHndJ6lN}(f=7%sC$g9>@poiK8j z$%^VyePg=M*+s?>qT(V`{cc!~Op%+#FLM5rN%xnV1xXiGm>dL{bXLa{85qqI%oKn+ zb$Pepy>%5ge&mNWRSFix6x`qVn0MWeICP>$KJI&%u%m%d-#EaaxNI`S+b`D|-mqT( z#b}t+y=fDlmD=TtcUdkNfXFUgZXV%f*1RT;fT@vf;Hltk<{Ms?A$=I5mG6FtzUGozQcUee#6x;^LA2BMfr9L8`BGQ${*7?@!O zeaH{_uSeB*d|0jSN5l{$=p7n_lbW#-ps$a4C-E_hNP>XJSq zRgHmHy`--akG-D{GqhbF;py+rzex46G>J51KKWFBZE{Ly4`a*)?|-k~vUUl){=$Cn zBtZm6?0<;a{~;^rr&EY&g6k3fz$#n$Fqd``TMBFb6;zBuRKoK4x^ zO&za}@Ih<(_F3Wr34BdmUXNwrx&2A(3Ts9){ee>O#M_D+n;9p68tD70OL!bba1ysC zl_`x}Zr7VHIN8)z3VpU%>M=LH;%C99V1$-$Rdb6FJXPM&%x);t7mldTPH~+m^DxO| z&9S5=+smBXIroX2sj!fg)NoFJ|6s(D-Ps7Y**s`-DPmU0>=!#L?noZSxa9R)`27d1 zmF@}Jaf@qgMdz*dFg=x1{*tX#3_a|@9ErQ>D)x1mZfX{nm>3W3cXnnVS1yj`T#dr zMtQ>DHn0E4AMclY3I8#NgFiyYwy7^UDAsGsr@3b5$eT$yz0k*vlKjL{-UadAJDQj9 z3Ka&s197Ty>?T&-ifX#&Z7d08JA%Fp@D$U6%=j+h2crH`!&Sj@D63{Ay$PDuU&$BN z6~_Al(9*7_{n!cHXLDj3c;Vo&RTwN!Hlf_faRGj56v{ULhU6mAcLuxNH8n*1Y<&}O z1J2WNf)xh4q6k8-f=-{EYnf}lzfiJ3L80>%ab_K&!f_8gPMK%>E=FE0VgT>@bd{R{n8pq)}aL|GfHJP>>UDB@;T*Bcf z0tfY6y{&G)_z$#gQU*u>VXEIhWVgfW_IKpjLkuKfm$~U2OkGiKW%7S$+|?I^pwUio zO1K+%9(1Ih8$eCx>v5H!tfhQnp#ly~+QakE{7AVZyj(K(phk`BxsgCsb^8F+bz*Xx zDp4XQ+coJR?%T3y@-A32c{F=vHp%C~x&<_j1Qz?-71mVwVDBeUrJ+wq(N)E zv=zLiv*ekDV4tYewzDNZm@){SYr&>X?5k z>ZH3TYfZ|6$ISR}Sm4d`xzr+PfHxBdJ$m+pBVUhS z36={$5Xy^1F~laq*LjXXHtcbX{L?v(K_iy8(2&O=lN2J}$ZU)OewAsG}lGt%=r`*0kX|NQrO3W{l!5pg87X=<4!lcN_ zz2eg+TRs1I?Og)6M;sliR&F!Z^y#g+ySq^O_6aLrEBOO)OWXJ0ey^Nb17^AA?{eGn zs*ve1Z!-gf!U9mOTAvzTJMcMZ^259>JB#-W+QETsykn$J6_JgcJr^|f(k>^(W&Aq) zHDul1@N}9f1u2+>dGEN)elvZSIjl+sO(wr9LY z_U#ujd9W&iQjsQcfXIN;L2pYvCs=-L6)c3FNa2_6_%jwm+%E> z3fA3FAVRroUXn=JN}4{G(`mOdWqV>s8%rYr&EBF{pD8(vGcESjwj&Qi~aI)mk&i>2&oqtp;8 zpCOKrysZGPd%-quo_v%?UewB9mrc-&n(}mkbh@v=k|F?JR=6;CPqC&7X+ly%YSxh6 z8%8(bd?OiN?~Ve7J3cc*Al_oH`@+!__Bp{dJ}D8I>X~7?r}tH2Z+$_z+6q4R2Hsc3 z1I-TW!&A$PcEdDZk3K+Or|yQb3X}NrQl56J1!rOjaH|MMKh|J`2mi>7qa3AZo>Ndnl7Dm zBl^z~7lnKKzPlT2D$D7cZ-2Qx&g*fUVK52tbs3ih(UM2Q*bTi>i8ZkYt2?&ehD4i% zRX3~fC2Y7`1KeHxDkDrv7P22y12Dva#{q>3Kf_>UJlu>^Ha4bvVi1%zFv>m4U8quU z3Ho?SN-CL=1CRX9ti^P?^$EJ+VE|L$m+zueuR%}4zI*WLuS@hm+mVL@M5KZLwP+1M zF&~#@KHl9QzTs{_=acPs4YKMyK3X*lF@&p1aX=%?Bf=)CQ5(5Q{asLsr>Sh-&ISLq zS@Dz9&wuf_26KA^W2zs%dre@J=+x_V^laU4zs?pQTUEae+Lh{VDYY9@0cY6vFm{y7jx3rhtvczPMN3Ep1uO%8e~{6|1G2>2=noG-{csc!DF1F{)@-Q zUYrrxPcYSA=a3_y-t>#sc%=KuyqE!QHpgi4>=aCZW@ zJ5)-G+s4uGRQDNKhKQanzIJhhK~F}x1(UDv`JIru`QB2xsM5zMqnozUb?FC>B|biv z{m8?pQva(S|KqymrsKYw`JZ?hr#1xW{9{)vdd9TnMP1xFv44nf!$Iy2M!BU6={&Fq z|16}`ur16dK`JLB59qq|b72Rvw#xoyy>v-``}2d__dy*t-u=r=43+BUgTAM0M&gI~ z;?H2K=NRRdE~K>I2`OnM^^t#QIirkjW}@rT4<4JDo^Udi5NA-S!+?6?_OfLU!(EZ3dgBfsmv4J<;1 zW5r)|3fy6E?x!8{e>wg%$YEkUh9Q1G*ZYWrvLNAbXv5(Jk8ywQZ~dnE?(NKwrRWWz z3;i)aLl?E71vL!gQHWm}aN4{Vx>M$P8Fpv>ox;Cd_*anrJ~8@No&O)PNDID6S9)Qb TWP|!m;Gdd`#%07MWB>mFo?8tt diff --git a/packages/vscodePlugin/test-resources/images/feature_table_chart.png b/packages/vscodePlugin/test-resources/images/feature_table_chart.png deleted file mode 100644 index 7ff7ff800c9821cdce2b1b450532c3cd2e471ec0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103475 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%0DA=;f@$8SBy}tamK(t(pQfH5d|KQz!BG5 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 - - - - - Cherry Editor - Markdown Editor - - - - - - - - -

-
- - - - - diff --git a/packages/vscodePlugin/test-resources/logo/favicon.ico b/packages/vscodePlugin/test-resources/logo/favicon.ico deleted file mode 100644 index aa8c8987c7742d00a176b411c7a3244a8d772002..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3520 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 [Github 地址](https://github.com/Tencent/cherry-markdown){target=_blank} - -- [basic](index.html){target=_blank} -- [H5](h5.html){target=_blank} -- [多实例](multiple.html){target=_blank} -- [无 toolbar](notoolbar.html){target=_blank} -- [纯预览模式](preview_only.html){target=_blank} -- [注入](xss.html){target=_blank} -- [API](api.html){target=_blank} -- [图片所见即所得编辑尺寸](img.html){target=_blank} -- [表格所见即所得编辑尺寸](table.html){target=_blank} -- [标题自动序号](head_num.html){target=_blank} - -# Cherry Markdown { 简明手册 | jiǎn míng shǒu cè } - -[[toc]] - -# 基本语法 - ---- - -## 字体样式 - -**说明** - -- 使用`*(或_)` 和 `**(或__)` 表示*斜体*和 **粗体** -- 使用 `/` 表示 /下划线/ ,使用`~~` 表示~~删除线~~ -- 使用`^(或^^)`表示^上标^或^^下标^^ -- 使用 ! 号+数字 表示字体 !24 大! !12 小! [^专有语法提醒] -- 使用两个(三个)!号+RGB 颜色 表示!!#ff0000 字体颜色!!(!!!#f9cb9c 背景颜色!!!)[^专有语法提醒] - -**示例** - -``` -[!!#ff0000 红色超链接!!](http://www.qq.com) -[!!#ffffff !!!#000000 黑底白字超链接!!!!!](http://www.qq.com) -[新窗口打开](http://www.qq.com){target=_blank} -鞋子 !32 特大号! -大头 ^`儿子`^ 和小头 ^^`爸爸`^^ -爱在~~西元前~~**当下** -``` - -**效果** -[!!#ff0000 红色超链接!!](http://www.qq.com) -[!!#ffffff !!!#000000 黑底白字超链接!!!!!](http://www.qq.com) -[新窗口打开](http://www.qq.com){target=_blank} -鞋子 !32 特大号! -大头 ^`儿子`^ 和小头 ^^`爸爸`^^ -爱在~~西元前~~**当下** - ---- - -## 标题设置 - -**说明** - -- 在文字下方加 === 可使上一行文字变成一级标题 -- 在文字下方加 --- 可使上一行文字变成二级标题 -- 在行首加井号(#)表示不同级别的标题,例如:# H1, ##H2, ###H3 - ---- - -## 超链接 - -**说明** - -- 使用 `[描述](URL)` 为文字增加外链接 -- 使用``插入一个链接 -- URL 会自动转成链接 - -**示例** - -``` -这是 [腾讯网](https://www.qq.com) 的链接。 -这是 [一个引用的][引用一个链接] 的链接。 -这是一个包含中文的链接,中文 -直接识别成链接:https://www.qq.com?param=中文,中文 用空格结束 -[引用一个链接] -[引用一个链接]: https://www.qq.com -``` - -**效果** -这是 [腾讯网](https://www.qq.com) 的链接。 -这是 [一个引用的][引用一个链接] 的链接。 -这是一个包含中文的链接,中文 -直接识别成链接:https://www.qq.com?param=中文,中文 用空格结束 -[引用一个链接] -[引用一个链接]: https://www.qq.com - ---- - -## 无序列表 - -**说明** - -- 在行首使用 \*,+,- 表示无序列表 - -**示例** - -``` -- 无序列表项 一`默认` -- 无序列表项 二 - - 无序列表2.1 - - 无序列表2.2 -- 无序列表项 三 - + 无序列表3.1`空心圆` - + 无序列表3.1 -- 无序列表四 - * 无序列表4.1`实心方块` - * 无序列表4.2 - -``` - -**效果** - -- 无序列表项 一`默认` -- 无序列表项 二 - - 无序列表2.1 - - 无序列表2.2 -- 无序列表项 三 - + 无序列表3.1`空心圆` - + 无序列表3.1 -- 无序列表四 - * 无序列表4.1`实心方块` - * 无序列表4.2 - ---- - -## 有序列表 - -**说明** - -- 在行首使用数字、字母、汉字和点表示有序列表 - -**示例** - -``` -1. 有序列表项 一`阿拉伯数字` -1. 有序列表项 二 - I. 有序列表项 2.1`罗马数字` - I. 有序列表项 2.2 - I. 有序列表项 2.3 -1. 有序列表 三 - a. 有序列表3.1`希腊字母` - a. 有序列表3.2 - a. 有序列表3.3 -1. 有序列表 四 - 一. 有序列表4.1`中文数字` - 一. 有序列表4.2 - 一. 有序列表4.3 -``` - -**效果** - -1. 有序列表项 一`阿拉伯数字` -1. 有序列表项 二 - I. 有序列表项 2.1`罗马数字` - I. 有序列表项 2.2 - I. 有序列表项 2.3 -1. 有序列表 三 - a. 有序列表3.1`希腊字母` - a. 有序列表3.2 - a. 有序列表3.3 -1. 有序列表 四 - 一. 有序列表4.1`中文数字` - 一. 有序列表4.2 - 一. 有序列表4.3 - ---- - -## 引用 - -**说明** - -- 在行首使用 > 表示文字引用 - -**示例** - -``` -> 野火烧不尽,春风吹又生 -``` - -**效果** - -> 野火烧不尽,春风吹又生 - ---- - -## 行内代码 - -**说明** - -- 使用 \`代码` 表示行内代码 - -**示例** - -``` -让我们聊聊 `html` -``` - -**效果** -让我们聊聊 `html` - ---- - -## 代码块 - -**说明** - -- 使用 三个` 表示代码块 - -**效果** - -``` - 这是一个代码块 - 有两行 -``` - ---- - -## 插入图像 - -**说明** - -- 使用 `![描述](图片链接地址)` 插入图像 -- 截图,在编辑器中粘贴(ctrl+V)也可以插入图像 -- 使用`![描述#宽度#高度#对齐方式](图片链接地址)` 可以调整图片大小[^专有语法提醒] - -**示例** - -``` -标准图片 ![一条dog#100px](images/demo-dog.png) -设置图片大小(相对大小&绝对大小) ![一条dog#10%#50px](images/demo-dog.png) -设置图片对齐方式: -**左对齐+边框** -![一条dog#auto#100px#left#border](images/demo-dog.png) -**居中+边框+阴影** -![一条dog#auto#100px#center#B#shadow](images/demo-dog.png) -**右对齐+边框+阴影+圆角** -![一条dog#auto#100px#right#B#S#radius](images/demo-dog.png) -**浮动左对齐+边框+阴影+圆角** -![一条dog#auto#100px#float-left#B#S#R](images/demo-dog.png) -开心也是一天,不开心也是一天 -这样就过了两天,汪 -``` - -**效果** -标准图片 ![一条dog#100px](images/demo-dog.png) -设置图片大小(相对大小&绝对大小) ![一条dog#10%#50px](images/demo-dog.png) -设置图片对齐方式: -**左对齐+边框** -![一条dog#auto#100px#left#border](images/demo-dog.png) -**居中+边框+阴影** -![一条dog#auto#100px#center#B#shadow](images/demo-dog.png) -**右对齐+边框+阴影+圆角** -![一条dog#auto#100px#right#B#S#radius](images/demo-dog.png) -**浮动左对齐+边框+阴影+圆角** -![一条dog#auto#100px#float-left#B#S#R](images/demo-dog.png) -开心也是一天,不开心也是一天 -这样就过了两天,汪 - - -> 属性释义: -- 宽度:第一个 `#100px` 或 `#10%` 或 `#auto` -- 高度:第二个 `#100px` 或 `#10%` 或 `#auto` -- 左对齐:`#left` -- 右对齐:`#right` -- 居中对齐:`#center` -- 悬浮左对齐:`#float-left` -- 悬浮右对齐:`#float-right` -- 边框:`#border` 或 `#B` -- 阴影:`#shadow` 或 `#S` -- 圆角:`#radius` 或 `#R` - ---- - -# 高阶语法手册 - ---- - -## 目录 - -**说明** - -- 使用`[[toc]]`,会自动生成一个页面目录,目录内容由一级、二级、三级标题组成 - ---- - -## 语法高亮 - -**说明** - -- 在```后面指明语法名 -- 加强的代码块,支持四十一种编程语言的语法高亮的显示 - -**效果** -非代码示例: - -``` -$ sudo apt-get install vim-gnome -``` - -Python 示例: - -```python -@requires_authorization -def somefunc(param1='', param2=0): - '''A docstring''' - if param1 > param2: # interesting - print 'Greater' - return (param2 - param1 + 1) or None - -class SomeClass: - pass - ->>> message = '''interpreter -... prompt''' -``` - -JavaScript 示例: - -```javascript -/** - * nth element in the fibonacci series. - * @param n >= 0 - * @return the nth element, >= 0. - */ -function fib(n) { - var a = 1, - b = 1; - var tmp; - while (--n >= 0) { - tmp = a; - a += b; - b = tmp; - } - return a; -} - -document.write(fib(10)); -``` - ---- - -## checklist[^不通用提醒] - -**说明** - -- 输入`[ ]`或`[x]`,就会生成一个 checklist - -**示例** - -``` -- [ ] AAA -- [x] BBB -- [ ] CCC -``` - -**效果** - -- [ ] AAA -- [x] BBB -- [ ] CCC - ---- - -## 公式[^不通用提醒] - -**说明** - -- 输入`$$`或`$`,就会生成一个公式 -- 访问 [MathJax](http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) 参考更多使用方法 - -**示例** - -``` -块级公式:$$ -\begin{aligned} -P(B|A)&=\frac{P(AB)}{P(A)}\\ -P(\overline{B}|A)&=1-P(B|A)=1-\frac{P(AB)}{P(A)} -\end{aligned} -$$ -行内公式: $e=mc^2$ -``` - -**效果** -块级公式:$$ -\begin{aligned} -P(B|A)&=\frac{P(AB)}{P(A)}\\ -P(\overline{B}|A)&=1-P(B|A)=1-\frac{P(AB)}{P(A)} -\end{aligned} - -$$ -行内公式: $e=mc^2$ - - ------ - - - -## 插入音视频 -**说明** -- 使用 `!video[描述](视频链接地址)` 插入视频 - - 使用 `!video[描述](视频链接地址){poster=封面地址}` 插入视频并配上封面 -- 使用 `!audio[描述](视频链接地址)` 插入音频 - - -**示例** - -``` -这是个演示视频 !video[不带封面演示视频](images/demo.mp4) -这是个演示视频 !video[带封面演示视频](images/demo.mp4){poster=images/demo-dog.png} -这是个假音频!audio[描述](视频链接地址) -``` -**效果** - -这是个演示视频 !video[不带封面演示视频](images/demo.mp4) -这是个演示视频 !video[带封面演示视频](images/demo.mp4){poster=images/demo-dog.png} -这是个假音频!audio[描述](视频链接地址) - - ------ - - -## 带对齐功能的表格 -**说明** -- 一种比较通用的markdown表格语法 - - -**示例** -``` -|项目(居中对齐)|价格(右对齐)|数量(左对齐)| -|:-:|-:|:-| -|计算机|¥1600|5| -|手机机|¥12|50| -``` -**效果** -|项目(居中对齐)|价格(右对齐)|数量(左对齐)| -|:-:|-:|:-| -|计算机|¥1600|5| -|手机机|¥12|50| - ------ - - -## 流程图[^不通用提醒] -**说明** -- 访问[Mermaid 流程图](https://mermaid-js.github.io/mermaid/#/flowchart)参考具体使用方法。 - - -**效果** -小明老婆让小明下班时买一斤包子,如果遇到卖西瓜的,买一个。 - -左右结构 -```mermaid -graph LR - A[公司] -->| 下 班 | B(菜市场) - B --> C{看见
卖西瓜的} - C -->|Yes| D[买一个包子] - C -->|No| E[买一斤包子] -``` -上下结构 -```mermaid -graph TD - A[公司] -->| 下 班 | B(菜市场) - B --> C{看见
卖西瓜的} - C -->|Yes| D[买一个包子] - C -->|No| E[买一斤包子] -``` - - ------ - - - -## 时序图[^不通用提醒] -**说明** -- 访问[Mermaid 时序图](https://mermaid-js.github.io/mermaid/#/sequenceDiagram)参考具体使用方法 - - -**效果** -```mermaid -sequenceDiagram -A-->A: 文本1 -A->>B: 文本2 -loop 循环1 -loop 循环2 -A->B: 文本3 -end -loop 循环3 -B -->>A: 文本4 -end -B -->> B: 文本5 -end -``` - - ------ - - - -## 状态图[^不通用提醒] -**说明** -- 访问[Mermaid 状态图](https://mermaid-js.github.io/mermaid/#/stateDiagram)参考具体使用方法 - - -**效果** -```mermaid -stateDiagram -[*] --> A -A --> B -A --> C -state A { - [*] --> D - D --> [*] -} -B --> [*] -C --> [*] -``` - - ------ - - - -## UML图[^不通用提醒] -**说明** -- 访问[Mermaid UML图](https://mermaid-js.github.io/mermaid/#/classDiagram)参考具体使用方法 - - -**效果** -```mermaid -classDiagram -Base <|-- One -Base <|-- Two -Base : +String name -Base: +getName() -Base: +setName(String name) -class One{ - +String newName - +getNewName() -} -class Two{ - -int id - -getId() -} -``` - - ------ - - - -## 饼图[^不通用提醒] -**说明** -- 访问[Mermaid 饼图](https://mermaid-js.github.io/mermaid/#/pie)参考具体使用方法 - - -**效果** -```mermaid -pie -title 饼图 -"A" : 40 -"B" : 30 -"C" : 20 -"D" : 10 -``` - - ------ - - - -## 注释[^不通用提醒] -**说明** -- 使用中括号+冒号([]:)生成单行注释 -- 使用中括号+尖号+冒号([^]:)生成多行注释 -- 多行注释以连续两次回车结束 - - -**示例** -``` -下面是一行单行注释 -[注释摘要]: 这是一段注释,不会显示到页面上 -上面面是一行单行注释 -下面是多行注释 -[^注释摘要]: 这是一段多行注释,不会显示到页面上 -可以换行 - 可以缩进 -以两次回车结束 - -上面是多行注释 -``` -**效果** -下面是一行单行注释 -[注释摘要]: 这是一段注释,不会显示到页面上 -上面面是一行单行注释 -下面是多行注释 -[^注释摘要]: 这是一段多行注释,不会显示到页面上 -可以换行 - 可以缩进 -以两次回车结束 - -上面是多行注释 - - ------ - - - -## 脚注[^不通用提醒] -**说明** -- 在段落中引用多行注释即会生成脚注 -- 脚注中括号中的数字以引用脚注的顺序自动生成 -- 点击脚注的数字可以跳转到脚注详情或回到引用脚注位置 - - -**示例** -``` -这里需要一个脚注[^脚注别名1],另外这里也需要一个脚注[^another]。 -[^脚注别名1]: 无论脚注内容写在哪里,脚注的内容总会显示在页面最底部 -以两次回车结束 - -[^another]: 另外,脚注里也可以使用一些简单的markdown语法 ->比如 !!#ff0000 这里!!有一段**引用** - -``` -**效果** -这里需要一个脚注[^脚注别名1],另外这里也需要一个脚注[^another]。 -[^脚注别名1]: 无论脚注内容写在哪里,脚注的内容总会显示在页面最底部 -以两次回车结束 - -[^another]: 另外,脚注里也可以使用一些简单的markdown语法 ->比如 !!#ff0000 这里!!有一段**引用** - - ------ - - -# 编辑器操作能力 - - ------ - - -## 通过快捷按钮修改字体样式 -![bubble menu](images/feature_font.png) - - ------ - - - -## 复制html内容,粘贴成markdown -**说明** -- 粘贴html内容时会自动转成markdown,也可以选择粘贴为纯文本格式 -- 可以拖拽调整预览区域的宽度 - - -![copy and paste](images/feature_copy.gif) - - ------ - - -## 快捷键 -| 功能| 按键| -|--|--| -|1级标题| `Ctrl + 1`| -|2级标题| `Ctrl + 2`| -|3级标题| `Ctrl + 3`| -|4级标题| `Ctrl + 4`| -|5级标题| `Ctrl + 5`| -|6级标题| `Ctrl + 6`| -|加粗| `Ctrl + b`| -|斜体| `Ctrl + i` | -|插入链接| `Ctrl + l` | -|插入代码块| `Ctrl + k` | -|插入图片| `Ctrl + g` | -|插入公式| `Ctrl + m` | - - - -## 协议 -``` -/** - * Tencent is pleased to support the open source community by making CherryMarkdown available. - * - * Copyright (C) 2021 Tencent. All rights reserved. - * The below software in this distribution may have been modified by Tencent ("Tencent Modifications"). - * - * All Tencent Modifications are Copyright (C) Tencent. - * - * CherryMarkdown is licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -``` - - - -[^专有语法提醒]: 该语法是**CherryMarkdown专有语法**,可能无法在其他markdown平台上使用该语法 - -[^不通用提醒]: 该语法不是markdown通用语法,无法保证在其他markdown平台上进行正确渲染 - - -# 特性展示 - -## 语法特性 - -> 支持了所有常用的、通用的语法,除此之外我们还支持了一些有意思的语法 - -### 特性 1:图片缩放、对齐、引用 - -#### 语法 - -`![img #宽度#高度#对齐方式][图片URL或引用]` - -> 其中,`宽度`、`高度`支持:绝对像素值(比如200px)、相对外层容器百分比(比如50%), -`对齐方式`候选值有:左对齐(缺省)、右对齐(right)、居中(center)、悬浮左、右对齐(float-left/right) -![图片尺寸](images/feature_image_size.png) - ------ - -### 特性 2:根据表格内容生成图表 -![表格图表](images/feature_table_chart.png) - ------ - -### 特性 3:字体颜色、字体大小 -![字体样式](images/feature_font.png) - ------- - -## 功能特性 - -### 特性 1:复制Html粘贴成MD语法 -![html转md](images/feature_copy.gif) - -#### 使用场景 - -- Markdown初学者快速熟悉MD语法的一个途径 -- 为调用方提供一个历史富文本数据迁成Markdown数据的方法 - ----- - -### 特性 2:经典换行&常规换行 -![br](images/feature_br.gif) - -#### 使用场景 - -团队对markdown源码有最大宽度限制?一键切回经典换行(两个及以上连续换行才算一个换行) - ------ - -### 特性 3: 多光标编辑 -![br](images/feature_cursor.gif) - -#### 使用场景 - -想要批量修改?可以试试多光标编辑(快捷键、搜索多光标选中等功能正在开发中) - -### 特性 4:图片尺寸 -![wysiwyg](images/feature_image_wysiwyg.gif) - -### 特性 5:导出 -![wysiwyg](images/feature_export.png) - -------- - -## 性能特性 - -### 局部渲染 - -> CherryMarkdown会判断用户到底变更了哪个段落,做到只渲染变更的段落,从而提升修改时的渲染性能 - -![wysiwyg](images/feature_myers.png) - -### 局部更新 - -> CherryMarkdown利用virtual dom机制实现对预览区域需要变更的内容进行局部更新的功能,从而减少了浏览器Dom操作,提高了修改时预览内容更新的性能 - -![wysiwyg](images/feature_vdom.gif) From 9645655970ccf64f340dbbbc4de13a30f567da65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Sat, 3 Jan 2026 15:42:28 +0800 Subject: [PATCH 23/57] =?UTF-8?q?ci:=20=E4=BC=98=E5=8C=96=E9=A2=84?= =?UTF-8?q?=E8=A7=88=20client=20=E9=80=BB=E8=BE=91=20(#1583)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci: 优化预览 client 评论的生成逻辑 * ci: 统一 YAML 文件中的引号风格并优化构建产物信息的处理逻辑 * ci: 更新构建配置,添加目标平台和优化文件列表生成逻辑 * ci: 优化上传文件和文件列表的命名逻辑,增加对其他平台的支持 --- .../workflows/pr_merge_client_dev_preview.yml | 147 +++++++++++++----- 1 file changed, 108 insertions(+), 39 deletions(-) diff --git a/.github/workflows/pr_merge_client_dev_preview.yml b/.github/workflows/pr_merge_client_dev_preview.yml index 750b39457..89ca5179d 100644 --- a/.github/workflows/pr_merge_client_dev_preview.yml +++ b/.github/workflows/pr_merge_client_dev_preview.yml @@ -1,15 +1,17 @@ -name: 'Publish Client Dev Preview on PR Merge' +name: "Publish Client Dev Preview on PR Merge" on: pull_request_target: types: [closed] paths: - - 'packages/client/**' + - "packages/client/**" + - "packages/cherry-markdown/**" permissions: contents: read pull-requests: write actions: read + issues: write jobs: client-preview: @@ -22,21 +24,23 @@ jobs: include: - platform: macos-latest target: aarch64-apple-darwin - args: '--target aarch64-apple-darwin' + args: "--target aarch64-apple-darwin" path_patterns: | - ./packages/clientsrc-tauri/target/**/release/bundle/dmg/*.dmg - ./packages/clientsrc-tauri/target/**/release/bundle/macos/*.app + ./packages/client/src-tauri/target/**/release/bundle/dmg/*.dmg + ./packages/client/src-tauri/target/**/release/bundle/macos/*.app - platform: macos-latest target: x86_64-apple-darwin - args: '--target x86_64-apple-darwin' + args: "--target x86_64-apple-darwin" path_patterns: | - ./packages/clientsrc-tauri/target/**/release/bundle/dmg/*.dmg - ./packages/clientsrc-tauri/target/**/release/bundle/macos/*.app + ./packages/client/src-tauri/target/**/release/bundle/dmg/*.dmg + ./packages/client/src-tauri/target/**/release/bundle/macos/*.app - platform: windows-latest + target: x86_64-pc-windows-msvc path_patterns: | ./packages/client/src-tauri/target/**/release/bundle/msi/*.msi ./packages/client/src-tauri/target/**/release/bundle/nsis/*.exe - platform: ubuntu-latest + target: x86_64-unknown-linux-gnu path_patterns: | ./packages/client/src-tauri/target/**/release/bundle/appimage/*.AppImage ./packages/client/src-tauri/target/**/release/bundle/deb/*.deb @@ -48,7 +52,7 @@ jobs: uses: actions/setup-node@v4 with: node-version: lts/* - cache: 'yarn' + cache: "yarn" - name: Setup Rust uses: actions-rust-lang/setup-rust-toolchain@v1 @@ -56,10 +60,6 @@ jobs: target: ${{ matrix.target }} toolchain: stable - - name: Ensure x86_64 Target is Installed - if: matrix.target == 'x86_64-apple-darwin' - run: rustup target add x86_64-apple-darwin - - name: Install Linux Dependencies if: matrix.platform == 'ubuntu-latest' run: | @@ -70,40 +70,109 @@ jobs: run: | yarn --network-timeout 100000 yarn build - yarn build:client ${{ matrix.args }} + yarn build:client ${{ matrix.args || '' }} + + - name: Create File List + shell: bash + run: | + mkdir -p ./artifact-info + find ./packages/client/src-tauri/target -type f \( -name "*.dmg" -o -name "*.msi" -o -name "*.exe" -o -name "*.AppImage" -o -name "*.deb" \) -exec basename {} \; > ./artifact-info/files.txt + find ./packages/client/src-tauri/target -type d -name "*.app" -exec basename {} \; >> ./artifact-info/files.txt + if [ ! -s ./artifact-info/files.txt ]; then + echo "No build artifacts found!" > ./artifact-info/files.txt + fi + echo "Platform: ${{ matrix.platform }}" >> ./artifact-info/info.txt + echo "Target: ${{ matrix.target }}" >> ./artifact-info/info.txt - name: Upload Files - id: upload-artifact uses: actions/upload-artifact@v4 with: - name: cherry-markdown_client_${{ matrix.platform }} + name: cherry-markdown_client_${{ matrix.platform }}_${{ matrix.target }} path: ${{ matrix.path_patterns }} - - name: Artifact Commit - run: | - echo "Artifact URL: ${{ steps.upload-artifact.outputs.artifact-url }}" - - name: Extract package info - id: extract-package - run: | - $name = node -p "require('./packages/client/package.json').name" - $version = node -p "require('./packages/client/package.json').version" - "name=$name" | Out-File -FilePath $env:GITHUB_OUTPUT -Append - "version=$version" | Out-File -FilePath $env:GITHUB_OUTPUT -Append - shell: pwsh - - - name: Post Artifact URL to PR - uses: actions/github-script@v6 - env: - ARTIFACT_URL: ${{ steps.upload-artifact.outputs.artifact-url }} - NAME: ${{ steps.extract-package.outputs.name }} - VERSION: ${{ steps.extract-package.outputs.version }} - PLATFORM: ${{ matrix.platform }} + - name: Upload File List + uses: actions/upload-artifact@v4 + with: + name: file-list_${{ matrix.platform }}_${{ matrix.target }} + path: ./artifact-info/ + + post-preview-comment: + needs: client-preview + runs-on: ubuntu-latest + if: github.repository == 'Tencent/cherry-markdown' && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev' + steps: + - name: Download All File Lists + uses: actions/download-artifact@v4 + with: + pattern: file-list_* + path: ./file-lists + + - name: Post single aggregated comment + uses: actions/github-script@v8 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | - github.rest.issues.createComment({ + const fs = require('fs'); + const path = require('path'); + const owner = context.repo.owner; + const repo = context.repo.repo; + const runId = context.runId; + const runUrl = `https://github.com/${owner}/${repo}/actions/runs/${runId}`; + + // Read file lists + const fileListsDir = './file-lists'; + const groups = { + 'macOS (Apple Silicon/arm64)': [], + 'macOS (Intel/x86_64)': [], + 'Windows': [], + 'Linux': [], + 'Other': [] + }; + + // Process downloaded file lists + if (fs.existsSync(fileListsDir)) { + const dirs = fs.readdirSync(fileListsDir); + for (const dir of dirs) { + const filesPath = path.join(fileListsDir, dir, 'files.txt'); + const infoPath = path.join(fileListsDir, dir, 'info.txt'); + + if (fs.existsSync(filesPath) && fs.existsSync(infoPath)) { + const files = fs.readFileSync(filesPath, 'utf8').trim().split('\n').filter(f => f); + const info = fs.readFileSync(infoPath, 'utf8'); + + let groupKey = 'Other'; + if (info.includes('aarch64-apple-darwin')) groupKey = 'macOS (Apple Silicon/arm64)'; + else if (info.includes('x86_64-apple-darwin')) groupKey = 'macOS (Intel/x86_64)'; + else if (info.includes('windows-latest')) groupKey = 'Windows'; + else if (info.includes('ubuntu-latest')) groupKey = 'Linux'; + + groups[groupKey].push(...files); + } + } + } + + let body = '💻 **客户端预览构建已完成** (Client Preview Build Completed)\n\n'; + body += `📦 [查看并下载所有构建产物](${runUrl})\n\n`; + + const hasAnyFiles = Object.values(groups).some(files => files.length > 0); + if (!hasAnyFiles) { + body += '⚠️ 未找到构建产物,请检查构建日志。\n'; + } else { + body += '## 可下载的安装包\n\n'; + for (const [platform, files] of Object.entries(groups)) { + if (files.length > 0) { + body += `### ${platform}\n`; + for (const file of files) { + body += `- \`${file}\`\n`; + } + body += '\n'; + } + } + } + + await github.rest.issues.createComment({ issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: `📦 预览 (Preview) [${process.env.NAME}_${process.env.PLATFORM}@${process.env.VERSION}](${process.env.ARTIFACT_URL})` + owner: owner, + repo: repo, + body: body }); From f329e7d9c6fa960fd009c7c764bc88125042fd46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Sat, 3 Jan 2026 16:25:20 +0800 Subject: [PATCH 24/57] =?UTF-8?q?refactor(client):=20=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=8A=E4=B8=8B=E6=96=87=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=92=8C=E6=9C=80=E8=BF=91=E6=96=87=E4=BB=B6=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91=20(#1584)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(client): 重构侧边栏管理,新增目录树和最近文件面板组件 * refactor(client): 优化最近文件管理,增强文件保存和打开功能 * refactor(client): 重构目录管理,整合目录状态管理,优化文件加载逻辑 * refactor(client): 增强文件管理功能,优化上下文菜单和最近文件处理逻辑 * refactor(client): 优化代码格式,提升可读性 * refactor(client): 重构文件管理逻辑,优化目录切换和文件操作功能 * refactor(client): 重构事件管理和文件操作逻辑,增强用户交互体验 * refactor(client): 增强用户通知系统,添加 Toast 组件并优化文件操作提示 * refactor(client): 添加版本信息显示,优化侧边栏布局 * refactor(client): 添加 ESLint 配置以支持全局变量 __APP_VERSION__ * refactor(client): 移除侧边栏窗口的标题栏样式设置 --- packages/client/.eslintrc.json | 5 + .../src-tauri/capabilities/default.json | 16 +- packages/client/src-tauri/src/main.rs | 1 + packages/client/src-tauri/tauri.conf.json | 1 - packages/client/src/App.vue | 203 ++++++++----- .../client/src/components/CherryMarkdown.ts | 3 +- .../client/src/components/DirectoryTree.vue | 37 +++ .../client/src/components/ExplorerPanel.vue | 149 +++++++++ .../client/src/components/FileManager.vue | 124 -------- .../client/src/components/FolderManager.vue | 26 +- .../client/src/components/RecentPanel.vue | 150 +++++++++ .../src/components/SidePanelManager.vue | 284 ++++++++++++++++++ .../components/composables/useAppEvents.ts | 91 ++++++ .../components/composables/useContextMenu.ts | 41 +++ .../composables/useDirectoryManager.ts | 207 +++---------- .../components/composables/useFileManager.ts | 199 +++++------- .../src/components/composables/useToast.ts | 118 ++++++++ packages/client/src/components/fileUtils.ts | 159 +++------- packages/client/src/components/types.ts | 21 +- .../src/components/ui/ActionButtons.vue | 10 +- .../client/src/components/ui/ContextMenu.vue | 32 +- .../src/components/ui/ContextMenuList.vue | 48 +++ .../src/components/ui/DirectorySection.vue | 2 + .../src/components/ui/ToastContainer.vue | 121 ++++++++ .../components/ui/UnsavedChangesDialog.vue | 152 ++++++++++ packages/client/src/constants/events.ts | 15 + packages/client/src/constants/files.ts | 4 + packages/client/src/constants/i18n.ts | 80 +++++ packages/client/src/store/index.ts | 1 + packages/client/src/store/modal/directory.ts | 105 +++++++ packages/client/src/store/modal/file.ts | 44 ++- packages/client/src/utils/notifications.ts | 30 ++ packages/client/src/utils/path.ts | 45 +++ packages/client/src/vite-env.d.ts | 1 + packages/client/vite.config.ts | 17 +- 35 files changed, 1847 insertions(+), 695 deletions(-) create mode 100644 packages/client/.eslintrc.json create mode 100644 packages/client/src/components/DirectoryTree.vue create mode 100644 packages/client/src/components/ExplorerPanel.vue delete mode 100644 packages/client/src/components/FileManager.vue create mode 100644 packages/client/src/components/RecentPanel.vue create mode 100644 packages/client/src/components/SidePanelManager.vue create mode 100644 packages/client/src/components/composables/useAppEvents.ts create mode 100644 packages/client/src/components/composables/useContextMenu.ts create mode 100644 packages/client/src/components/composables/useToast.ts create mode 100644 packages/client/src/components/ui/ContextMenuList.vue create mode 100644 packages/client/src/components/ui/ToastContainer.vue create mode 100644 packages/client/src/components/ui/UnsavedChangesDialog.vue create mode 100644 packages/client/src/constants/events.ts create mode 100644 packages/client/src/constants/files.ts create mode 100644 packages/client/src/constants/i18n.ts create mode 100644 packages/client/src/store/modal/directory.ts create mode 100644 packages/client/src/utils/notifications.ts create mode 100644 packages/client/src/utils/path.ts diff --git a/packages/client/.eslintrc.json b/packages/client/.eslintrc.json new file mode 100644 index 000000000..eafa874d6 --- /dev/null +++ b/packages/client/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "globals": { + "__APP_VERSION__": "readonly" + } +} diff --git a/packages/client/src-tauri/capabilities/default.json b/packages/client/src-tauri/capabilities/default.json index 3134dc44c..1b77510f7 100644 --- a/packages/client/src-tauri/capabilities/default.json +++ b/packages/client/src-tauri/capabilities/default.json @@ -6,8 +6,12 @@ "permissions": [ "core:default", "opener:default", + "opener:allow-open-path", + "opener:allow-reveal-item-in-dir", "dialog:default", "core:window:allow-set-title", + "core:window:allow-close", + "core:window:allow-destroy", "global-shortcut:allow-register", "global-shortcut:allow-unregister", @@ -70,5 +74,15 @@ "fs:allow-picture-meta-recursive", "fs:allow-picture-read", "fs:allow-picture-read-recursive" - ] + ], + "scope": { + "allow": [ + { + "path": "$HOME/**" + }, + { + "path": "C:/Users/A1064/**" + } + ] + } } diff --git a/packages/client/src-tauri/src/main.rs b/packages/client/src-tauri/src/main.rs index b00f1e444..bbc895845 100644 --- a/packages/client/src-tauri/src/main.rs +++ b/packages/client/src-tauri/src/main.rs @@ -17,6 +17,7 @@ fn main() { tauri::Builder::default() .plugin(tauri_plugin_fs::init()) .plugin(tauri_plugin_dialog::init()) + .plugin(tauri_plugin_opener::init()) .plugin(tauri_plugin_global_shortcut::Builder::new().build()) .setup(|app| { let _ = implement::system_tray::system_tray_menu(app); diff --git a/packages/client/src-tauri/tauri.conf.json b/packages/client/src-tauri/tauri.conf.json index d6017918f..102357755 100644 --- a/packages/client/src-tauri/tauri.conf.json +++ b/packages/client/src-tauri/tauri.conf.json @@ -17,7 +17,6 @@ "url": "index.html", "width": 1600, "height": 800, - "titleBarStyle": "Overlay", "decorations": true } ], diff --git a/packages/client/src/App.vue b/packages/client/src/App.vue index 6ea6e220e..527b918c1 100644 --- a/packages/client/src/App.vue +++ b/packages/client/src/App.vue @@ -1,35 +1,84 @@ @@ -318,19 +399,6 @@ onUnmounted(async () => { overflow: hidden; } -.file-manager-sidebar { - flex-shrink: 0; - width: 300px; - height: 100%; - border-right: 1px solid #e0e0e0; - background-color: #f8f9fa; - transition: width 0.3s ease; -} - -.file-manager-sidebar.sidebar-collapsed { - width: 50px; -} - .editor-container { flex: 1; display: flex; @@ -339,25 +407,6 @@ onUnmounted(async () => { position: relative; } -.sidebar-toggle-btn { - position: absolute; - top: 10px; - left: 10px; - z-index: 10; - background: white; - border: 1px solid #ddd; - border-radius: 4px; - padding: 8px; - cursor: pointer; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); - transition: all 0.2s ease; -} - -.sidebar-toggle-btn:hover { - background: #f5f5f5; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); -} - #markdown-editor { height: 100%; width: 100%; diff --git a/packages/client/src/components/CherryMarkdown.ts b/packages/client/src/components/CherryMarkdown.ts index bf0e90361..d713322c4 100644 --- a/packages/client/src/components/CherryMarkdown.ts +++ b/packages/client/src/components/CherryMarkdown.ts @@ -4,6 +4,7 @@ import katex from 'katex'; import 'katex/dist/katex.min.css'; import { pinyin } from 'pinyin'; +import { WINDOW_EVENTS } from '../constants/events'; /** * ECharts优化导入 - 使用命名空间导入替代默认导入 @@ -54,7 +55,7 @@ const customSave = Cherry.createMenuHook('save', { this.updateMarkdown = false; if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function') { const markdown = this.$cherry?.getMarkdown?.() ?? ''; - const event = new CustomEvent('cherry:request-save', { detail: { markdown } }); + const event = new CustomEvent(WINDOW_EVENTS.REQUEST_SAVE, { detail: { markdown } }); window.dispatchEvent(event); } }, diff --git a/packages/client/src/components/DirectoryTree.vue b/packages/client/src/components/DirectoryTree.vue new file mode 100644 index 000000000..ade6e2b31 --- /dev/null +++ b/packages/client/src/components/DirectoryTree.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/packages/client/src/components/ExplorerPanel.vue b/packages/client/src/components/ExplorerPanel.vue new file mode 100644 index 000000000..6903d4017 --- /dev/null +++ b/packages/client/src/components/ExplorerPanel.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/packages/client/src/components/FileManager.vue b/packages/client/src/components/FileManager.vue deleted file mode 100644 index 0555a9d3f..000000000 --- a/packages/client/src/components/FileManager.vue +++ /dev/null @@ -1,124 +0,0 @@ - - - - - diff --git a/packages/client/src/components/FolderManager.vue b/packages/client/src/components/FolderManager.vue index 5cb4a7867..2f47abf3f 100644 --- a/packages/client/src/components/FolderManager.vue +++ b/packages/client/src/components/FolderManager.vue @@ -2,20 +2,16 @@
-
- - -
暂无访问过的目录
-
+ + +
暂无访问过的目录
@@ -23,8 +19,8 @@ + + diff --git a/packages/client/src/components/SidePanelManager.vue b/packages/client/src/components/SidePanelManager.vue new file mode 100644 index 000000000..07f70115b --- /dev/null +++ b/packages/client/src/components/SidePanelManager.vue @@ -0,0 +1,284 @@ + + + + + diff --git a/packages/client/src/components/composables/useAppEvents.ts b/packages/client/src/components/composables/useAppEvents.ts new file mode 100644 index 000000000..9e24cda20 --- /dev/null +++ b/packages/client/src/components/composables/useAppEvents.ts @@ -0,0 +1,91 @@ +import { listen, type UnlistenFn } from '@tauri-apps/api/event'; +import { TAURI_EVENTS, WINDOW_EVENTS } from '../../constants/events'; + +// ========== 事件 Detail 类型定义 ========== +export interface OpenFileFromSidebarDetail { + filePath: string; + content: string; +} + +export interface RequestSaveDetail { + markdown?: string; +} + +export type OpenFileFromSidebarEvent = CustomEvent; +export type RequestSaveEvent = CustomEvent; + +// ========== Handler 类型定义 ========== +interface TauriHandlers { + onNewFile: () => any; + onOpenFile: () => any; + onSave: () => any; + onSaveAs: () => any; + onToggleToolbar: () => any; +} + +interface AppEventHandlers { + onOpenFileFromSidebar: (event: OpenFileFromSidebarEvent) => Promise | void; + onRequestSave: (event: RequestSaveEvent) => Promise | void; + tauriHandlers: TauriHandlers; +} + +export function useAppEvents({ onOpenFileFromSidebar, onRequestSave, tauriHandlers }: AppEventHandlers) { + const unlistenFns: UnlistenFn[] = []; + + const registerWindowEvents = (): void => { + window.addEventListener(WINDOW_EVENTS.OPEN_FILE_FROM_SIDEBAR, onOpenFileFromSidebar as (e: Event) => void); + window.addEventListener(WINDOW_EVENTS.REQUEST_SAVE, onRequestSave as (e: Event) => void); + }; + + const unregisterWindowEvents = (): void => { + window.removeEventListener(WINDOW_EVENTS.OPEN_FILE_FROM_SIDEBAR, onOpenFileFromSidebar as (e: Event) => void); + window.removeEventListener(WINDOW_EVENTS.REQUEST_SAVE, onRequestSave as (e: Event) => void); + }; + + const registerTauriEvents = async (): Promise => { + try { + const unlisteners = await Promise.all([ + listen(TAURI_EVENTS.NEW_FILE, tauriHandlers.onNewFile), + listen(TAURI_EVENTS.OPEN_FILE, tauriHandlers.onOpenFile), + listen(TAURI_EVENTS.SAVE, tauriHandlers.onSave), + listen(TAURI_EVENTS.SAVE_AS, tauriHandlers.onSaveAs), + listen(TAURI_EVENTS.TOGGLE_TOOLBAR, tauriHandlers.onToggleToolbar), + ]); + // 过滤掉可能的 null/undefined + unlisteners.forEach((fn) => { + if (fn && typeof fn === 'function') { + unlistenFns.push(fn); + } + }); + } catch (error) { + console.error('注册 Tauri 事件失败:', error); + } + }; + + const cleanupTauri = async (): Promise => { + // 逐个清理,单个失败不影响其他 + await Promise.all( + unlistenFns.map(async (fn) => { + try { + await fn(); + } catch (error) { + console.warn('清理 Tauri 事件监听器失败:', error); + } + }), + ); + // 清空数组 + unlistenFns.length = 0; + }; + + const cleanupAll = async (): Promise => { + unregisterWindowEvents(); + await cleanupTauri(); + }; + + return { + registerWindowEvents, + unregisterWindowEvents, + registerTauriEvents, + cleanupAll, + }; +} diff --git a/packages/client/src/components/composables/useContextMenu.ts b/packages/client/src/components/composables/useContextMenu.ts new file mode 100644 index 000000000..8a49e1052 --- /dev/null +++ b/packages/client/src/components/composables/useContextMenu.ts @@ -0,0 +1,41 @@ +import { ref } from 'vue'; +import type { ContextMenuState, FileInfo, DirectoryNode } from '../types'; + +// 统一上下文菜单管理 +export function useContextMenu(mapper: (input: FileInfo | DirectoryNode) => FileInfo) { + const contextMenu = ref({ visible: false, x: 0, y: 0, file: null }); + + const handleGlobalClick = (event: MouseEvent): void => { + if (!contextMenu.value.visible) return; + const menuEl = document.querySelector('.context-menu'); + if (menuEl && !menuEl.contains(event.target as Node)) { + hideContextMenu(); + } + }; + + const hideContextMenu = (): void => { + contextMenu.value.visible = false; + document.removeEventListener('click', handleGlobalClick); + }; + + const showContextMenu = (event: MouseEvent, file: FileInfo | DirectoryNode): void => { + event.preventDefault(); + if (contextMenu.value.visible) hideContextMenu(); + + const fileInfo = mapper(file); + contextMenu.value = { + visible: true, + x: event.clientX, + y: event.clientY, + file: fileInfo, + }; + + setTimeout(() => document.addEventListener('click', handleGlobalClick, { once: true }), 0); + }; + + return { + contextMenu, + showContextMenu, + hideContextMenu, + }; +} diff --git a/packages/client/src/components/composables/useDirectoryManager.ts b/packages/client/src/components/composables/useDirectoryManager.ts index ab5712340..8a7b43741 100644 --- a/packages/client/src/components/composables/useDirectoryManager.ts +++ b/packages/client/src/components/composables/useDirectoryManager.ts @@ -7,113 +7,22 @@ import { extractFileName, openDirectoryDialog, } from '../fileUtils'; +import { useDirectoryStore } from '../../store'; +import { mergeSimilarDirectories } from '../../utils/path'; // 常量定义 const MAX_DIRECTORY_COUNT = 10; // 最大目录数量 -const STORAGE_KEY_EXPANSION_STATE = 'cherry-markdown-directory-expansion-state'; -const STORAGE_KEY_RECENT_DIRECTORIES = 'cherry-markdown-recent-directories'; - -/** - * 标准化路径分隔符为正斜杠 - */ -const normalizePath = (path: string): string => path.replace(/\\/g, '/'); - -/** - * 检查路径是否为绝对路径 - */ -const isAbsolutePath = (path: string): boolean => path.includes('/') || path.includes('\\'); +const FULL_TREE_DEPTH = 64; /** * 目录管理composable */ export function useDirectoryManager(fileStore: FileStore) { + const directoryStore = useDirectoryStore(); + // 目录管理相关数据 const recentDirectories = ref([]); - // 存储目录展开状态的Map - const directoryExpansionState = ref(new Map()); - - /** - * 从localStorage加载保存的目录展开状态 - */ - const loadExpansionStateFromStorage = (): Map => { - try { - const savedState = localStorage.getItem(STORAGE_KEY_EXPANSION_STATE); - if (!savedState) return new Map(); - - const parsedState = JSON.parse(savedState); - if (typeof parsedState !== 'object' || parsedState === null) { - console.warn('目录展开状态数据格式错误'); - return new Map(); - } - return new Map(Object.entries(parsedState)); - } catch (error) { - console.warn('加载目录展开状态失败:', error); - return new Map(); - } - }; - - /** - * 保存目录展开状态到localStorage - */ - const saveExpansionStateToStorage = (): void => { - try { - const stateObject = Object.fromEntries(directoryExpansionState.value); - localStorage.setItem(STORAGE_KEY_EXPANSION_STATE, JSON.stringify(stateObject)); - } catch (error) { - console.warn('保存目录展开状态失败:', error); - } - }; - - /** - * 从localStorage加载保存的最近目录列表 - */ - const loadRecentDirectoriesFromStorage = (): DirectoryNode[] => { - try { - const savedDirectories = localStorage.getItem(STORAGE_KEY_RECENT_DIRECTORIES); - if (!savedDirectories) return []; - - const parsedDirectories = JSON.parse(savedDirectories); - if (!Array.isArray(parsedDirectories)) { - console.warn('最近目录列表数据格式错误'); - return []; - } - - return parsedDirectories - .filter((dir) => dir && typeof dir.path === 'string') - .map((dir) => ({ - ...dir, - expanded: directoryExpansionState.value.get(dir.path) || false, - children: [], - })); - } catch (error) { - console.warn('加载最近目录列表失败:', error); - return []; - } - }; - - /** - * 保存最近目录列表到localStorage - * 只保存目录的基本信息,不保存children数据 - */ - const saveRecentDirectoriesToStorage = (): void => { - try { - const directoriesToSave = recentDirectories.value.map((dir) => ({ - path: dir.path, - name: dir.name, - type: dir.type, - expanded: dir.expanded, - })); - localStorage.setItem(STORAGE_KEY_RECENT_DIRECTORIES, JSON.stringify(directoriesToSave)); - } catch (error) { - console.warn('保存最近目录列表失败:', error); - } - }; - - // 初始化时从localStorage加载状态 - directoryExpansionState.value = loadExpansionStateFromStorage(); - recentDirectories.value = loadRecentDirectoriesFromStorage(); - /** * 合并相似目录路径 * 例如:将 D:\A\doc, doc, D:\A\doc\dir 合并为 D:\A\doc @@ -124,55 +33,6 @@ export function useDirectoryManager(fileStore: FileStore) { * 3. 对于每个路径,检查是否已有父路径存在 * 4. 对于相对路径,检查是否已有对应的绝对路径 */ - const mergeSimilarDirectories = (directories: string[]): string[] => { - if (directories.length === 0) return []; - if (directories.length === 1) return directories; - - // 分离并标准化路径 - const absolutePaths = new Map(); // normalized -> original - const relativePaths = new Set(); - - directories.forEach((dir) => { - if (isAbsolutePath(dir)) { - const normalized = normalizePath(dir); - if (!absolutePaths.has(normalized)) { - absolutePaths.set(normalized, dir); - } - } else { - relativePaths.add(dir); - } - }); - - // 处理绝对路径:按长度排序,保留最短的父目录 - const sortedAbsolutePaths = Array.from(absolutePaths.keys()).sort((a, b) => a.length - b.length); - - const mergedAbsolutePaths = new Set(); - for (const path of sortedAbsolutePaths) { - // 检查是否已有父目录 - let hasParent = false; - for (const existingPath of mergedAbsolutePaths) { - if (path.startsWith(`${existingPath}/`)) { - hasParent = true; - break; - } - } - - if (!hasParent) { - mergedAbsolutePaths.add(absolutePaths.get(path)!); - } - } - - // 处理相对路径:排除已有对应绝对路径的相对路径 - const mergedRelativePaths = Array.from(relativePaths).filter((relPath) => { - return !Array.from(mergedAbsolutePaths).some((absPath) => { - const normalized = normalizePath(absPath); - return normalized.endsWith(`/${relPath}`) || normalized.includes(`/${relPath}/`); - }); - }); - - return [...mergedAbsolutePaths, ...mergedRelativePaths]; - }; - // 切换目录展开状态 const toggleDirectory = async (dirPath: string, node?: DirectoryNode): Promise => { let directory: DirectoryNode | undefined; @@ -188,17 +48,11 @@ export function useDirectoryManager(fileStore: FileStore) { if (!directory) return; directory.expanded = !directory.expanded; - - // 保存展开状态到Map - directoryExpansionState.value.set(dirPath, directory.expanded); - - // 保存状态到localStorage - saveExpansionStateToStorage(); + directoryStore.setExpanded(dirPath, directory.expanded); if (directory.expanded) { - // 如果展开且没有子节点数据,加载子节点 if (!directory.children || directory.children.length === 0) { - const result = await loadDirectoryStructure(dirPath, 1); + const result = await loadDirectoryStructure(dirPath, 1, FULL_TREE_DEPTH); if (result.success && result.data) { directory.children = result.data; } @@ -227,29 +81,37 @@ export function useDirectoryManager(fileStore: FileStore) { const dirExists = await checkPathExists(dirPath); if (!dirExists) return null; + const cached = directoryStore.items.find((it) => it.path === dirPath); return { path: dirPath, name: extractFileName(dirPath), type: 'directory' as const, - expanded: directoryExpansionState.value.get(dirPath) || false, + expanded: cached?.expanded ?? false, children: [] as DirectoryNode[], }; }), ); - // 合并从localStorage加载的目录和新提取的目录 const validDirectories = directoryResults.filter(Boolean) as DirectoryNode[]; - const storedDirectories = recentDirectories.value.filter( - (storedDir) => !validDirectories.some((newDir) => newDir.path === storedDir.path), - ); - recentDirectories.value = [...validDirectories, ...storedDirectories].slice(0, MAX_DIRECTORY_COUNT); + // 结合 pinia 缓存(确保缓存的目录也能恢复) + const cachedOnly = directoryStore.items + .filter((item) => !validDirectories.some((dir) => dir.path === item.path)) + .map((item) => ({ + path: item.path, + name: extractFileName(item.path), + type: 'directory' as const, + expanded: item.expanded, + children: [] as DirectoryNode[], + })); + + recentDirectories.value = [...validDirectories, ...cachedOnly].slice(0, MAX_DIRECTORY_COUNT); // 为已展开的目录加载文件列表 const loadPromises = recentDirectories.value .filter((dir) => dir.expanded) .map(async (currentDir) => { - const result = await loadDirectoryStructure(currentDir.path, 1); + const result = await loadDirectoryStructure(currentDir.path, 1, FULL_TREE_DEPTH); if (result.success && result.data) { const updatedDir = recentDirectories.value.find((dir) => dir.path === currentDir.path); if (updatedDir) { @@ -260,8 +122,9 @@ export function useDirectoryManager(fileStore: FileStore) { await Promise.all(loadPromises); - // 保存更新后的目录列表 - saveRecentDirectoriesToStorage(); + directoryStore.setItems( + recentDirectories.value.map((dir) => ({ path: dir.path, expanded: dir.expanded ?? false })), + ); } catch (error) { console.error('获取目录列表失败:', error); } @@ -294,21 +157,19 @@ export function useDirectoryManager(fileStore: FileStore) { children: [], }; - // 保存展开状态 - directoryExpansionState.value.set(dirPath, true); - saveExpansionStateToStorage(); + directoryStore.upsertDirectory(dirPath, true); // 加载目录结构 - const loadResult = await loadDirectoryStructure(dirPath, 1); + const loadResult = await loadDirectoryStructure(dirPath, 1, FULL_TREE_DEPTH); if (loadResult.success && loadResult.data) { newDir.children = loadResult.data; } // 添加到目录列表开头并限制数量 recentDirectories.value = [newDir, ...recentDirectories.value].slice(0, MAX_DIRECTORY_COUNT); - - // 保存到localStorage - saveRecentDirectoriesToStorage(); + directoryStore.setItems( + recentDirectories.value.map((dir) => ({ path: dir.path, expanded: dir.expanded ?? false })), + ); } catch (error) { console.error('打开目录失败:', error); } @@ -335,7 +196,7 @@ export function useDirectoryManager(fileStore: FileStore) { } // 如果目录是展开的,加载文件列表 if (savedState && currentDir.children && currentDir.children.length === 0) { - loadDirectoryStructure(currentDir.path, 1).then((result) => { + loadDirectoryStructure(currentDir.path, 1, FULL_TREE_DEPTH).then((result) => { if (result.success && result.data) { const updatedDir = recentDirectories.value.find((d) => d.path === currentDir.path); if (updatedDir) { @@ -347,13 +208,13 @@ export function useDirectoryManager(fileStore: FileStore) { } }); - // 保存更新后的目录列表 - saveRecentDirectoriesToStorage(); + directoryStore.setItems( + recentDirectories.value.map((dir) => ({ path: dir.path, expanded: dir.expanded ?? false })), + ); }; return { recentDirectories, - directoryExpansionState, toggleDirectory, openDirectory, refreshDirectories, diff --git a/packages/client/src/components/composables/useFileManager.ts b/packages/client/src/components/composables/useFileManager.ts index 9abb8df3c..d108d836f 100644 --- a/packages/client/src/components/composables/useFileManager.ts +++ b/packages/client/src/components/composables/useFileManager.ts @@ -1,13 +1,12 @@ import { ref, computed, type Ref } from 'vue'; -import type { FileInfo, ContextMenuState, FileStore } from '../types'; -import { - createNewFile as createNewFileUtil, - openExistingFile as openExistingFileUtil, - readFileContent, - formatTimestamp, - debounce, -} from '../fileUtils'; -import { openPath } from '@tauri-apps/plugin-opener'; +import type { FileInfo, DirectoryNode } from '../types'; +import type { useFileStore as useFileStoreType } from '../../store/modal/file'; +import { openExistingFile as openExistingFileUtil, readFileContent, formatTimestamp } from '../fileUtils'; +import { openPath, revealItemInDir } from '@tauri-apps/plugin-opener'; +import { useContextMenu } from './useContextMenu'; +import { WINDOW_EVENTS } from '../../constants/events'; +import { notifyError, notifyInfo, notifySuccess } from '../../utils/notifications'; +import { MESSAGES } from '../../constants/i18n'; // 常量定义 const STORAGE_KEY_DIRECTORY_MANAGER_EXPANDED = 'cherry-markdown-directory-manager-expanded'; @@ -16,7 +15,9 @@ const DEFAULT_DIRECTORY_MANAGER_EXPANDED = true; /** * 文件管理composable */ -export function useFileManager(fileStore: FileStore, folderManagerRef: Ref) { +type FileStoreInstance = ReturnType; + +export function useFileManager(fileStore: FileStoreInstance, folderManagerRef: Ref) { // 响应式数据 const sortedRecentFiles = computed(() => fileStore.sortedRecentFiles); const currentFilePath = computed(() => fileStore.currentFilePath); @@ -54,13 +55,7 @@ export function useFileManager(fileStore: FileStore, folderManagerRef: Ref) // 组件状态 const recentFilesExpanded = ref(false); const directoryManagerExpanded = ref(loadDirectoryManagerExpandedState()); - - const contextMenu = ref({ - visible: false, - x: 0, - y: 0, - file: null, - }); + const isLoading = ref(false); // 切换目录管理展开状态 const toggleDirectoryManager = (): void => { @@ -73,67 +68,65 @@ export function useFileManager(fileStore: FileStore, folderManagerRef: Ref) } }; - // 切换最近文件展开状态 - const toggleRecentFiles = (): void => { - recentFilesExpanded.value = !recentFilesExpanded.value; - if (recentFilesExpanded.value) { - directoryManagerExpanded.value = false; - // 保存状态到localStorage - saveDirectoryManagerExpandedState(false); - } - }; - // 切换侧边栏 const toggleSidebar = (): void => { fileStore.toggleSidebar(); }; - // 创建新文件 - const createNewFile = async (): Promise => { - const result = await createNewFileUtil(); - if (result.success && result.data) { - await openFile(result.data); - } else if (result.error) { - console.error('创建新文件失败:', result.error); - } - }; - // 打开现有文件 const openExistingFile = async (): Promise => { - const result = await openExistingFileUtil(); - if (result.success && result.data) { - await openFile(result.data); - } else if (result.error) { - console.error('打开文件失败:', result.error); + if (isLoading.value) return; + isLoading.value = true; + try { + const result = await openExistingFileUtil(); + if (result.success && result.data) { + await openFile(result.data); + } else if (result.error) { + notifyError(`${MESSAGES.FILE.OPEN_FAILED}: ${result.error}`); + } + } finally { + isLoading.value = false; } }; // 打开目录 const openDirectory = async (): Promise => { + if (isLoading.value) return; + isLoading.value = true; try { if (folderManagerRef.value) { await folderManagerRef.value.openDirectory(); } } catch (error) { - console.error('打开目录失败:', error); + notifyError( + `${MESSAGES.DIRECTORY.OPEN_FAILED}: ${error instanceof Error ? error.message : MESSAGES.UNKNOWN_ERROR}`, + ); + } finally { + isLoading.value = false; } }; // 打开文件 - const openFile = async (filePath: string, fromDirectoryManager: boolean = false): Promise => { + const openFile = async ( + filePath: string, + fromDirectoryManager: boolean = false, + bumpRecent: boolean = true, + ): Promise => { try { const result = await readFileContent(filePath); if (result.success && result.data) { // 通过自定义事件传递文件内容到App.vue window.dispatchEvent( - new CustomEvent('open-file-from-sidebar', { + new CustomEvent(WINDOW_EVENTS.OPEN_FILE_FROM_SIDEBAR, { detail: { filePath, content: result.data }, }), ); // 更新当前文件路径 fileStore.setCurrentFilePath(filePath); - // 添加到最近访问列表 - fileStore.addRecentFile(filePath); + // 添加到最近访问列表(可选) + if (bumpRecent) { + fileStore.addRecentFile(filePath); + } if (fromDirectoryManager) { // 如果从目录管理打开文件,始终展开目录管理区域 @@ -147,10 +140,10 @@ export function useFileManager(fileStore: FileStore, folderManagerRef: Ref) saveDirectoryManagerExpandedState(false); } } else { - console.error('读取文件失败:', result.error); + notifyError(`${MESSAGES.FILE.READ_FAILED}: ${result.error}`); } } catch (error) { - console.error('打开文件失败:', error); + notifyError(`${MESSAGES.FILE.OPEN_FAILED}: ${error instanceof Error ? error.message : MESSAGES.UNKNOWN_ERROR}`); } }; @@ -166,107 +159,80 @@ export function useFileManager(fileStore: FileStore, folderManagerRef: Ref) } }; - // 清空最近文件列表 - const clearRecentFiles = (): void => { - const storeInstance = fileStore; - storeInstance.recentFiles = []; - void refreshDirectories(); - }; - // 从最近文件中移除 const removeFromRecent = (filePath: string): void => { - fileStore.removeRecentFile(filePath); - refreshDirectories(); + try { + fileStore.removeRecentFile(filePath); + notifySuccess(MESSAGES.FILE_MANAGEMENT.REMOVE_SUCCESS); + void refreshDirectories(); + } catch (error) { + notifyError( + `${MESSAGES.FILE_MANAGEMENT.REMOVE_FAILED}: ${error instanceof Error ? error.message : MESSAGES.UNKNOWN_ERROR}`, + ); + } }; // 复制文件路径 const copyFilePath = async (filePath: string): Promise => { try { await navigator.clipboard.writeText(filePath); + notifyInfo(MESSAGES.CLIPBOARD.COPY_PATH_SUCCESS); hideContextMenu(); } catch (error) { - console.error('复制文件路径失败:', error); + notifyError( + `${MESSAGES.CLIPBOARD.COPY_PATH_FAILED}: ${error instanceof Error ? error.message : MESSAGES.UNKNOWN_ERROR}`, + ); } }; // 在资源管理器中打开文件 const openInExplorer = async (filePath: string): Promise => { try { - // 从文件路径中提取目录路径 - const directoryPath = filePath.replace(/\\\\/g, '/').replace(/\/[^\\/]*$/, ''); + const directoryPath = filePath.replace(/\\/g, '/').replace(/\/[^\\/]*$/, ''); + + // 优先尝试直接在资源管理器定位文件 + try { + await revealItemInDir(filePath); + hideContextMenu(); + return; + } catch (_) { + // fallback: 打开所在目录 + } - // 使用Tauri opener插件打开文件夹 await openPath(directoryPath); hideContextMenu(); } catch (error) { - console.error('打开资源管理器失败:', error); + notifyError( + `${MESSAGES.EXPLORER.OPEN_FAILED}: ${error instanceof Error ? error.message : MESSAGES.UNKNOWN_ERROR}`, + ); // 备选方案:复制文件路径到剪贴板 try { await navigator.clipboard.writeText(filePath); - alert(`无法打开,已复制文件路径到剪贴板: ${filePath}`); + notifyInfo(`${MESSAGES.CLIPBOARD.COPY_PATH_FALLBACK}: ${filePath}`); } catch (clipboardError) { - console.error('复制文件路径失败:', clipboardError); + notifyError( + `${MESSAGES.CLIPBOARD.COPY_PATH_FAILED}: ${clipboardError instanceof Error ? clipboardError.message : MESSAGES.UNKNOWN_ERROR}`, + ); } } }; // 显示右键菜单 - const showContextMenu = (event: MouseEvent, file: FileInfo | any): void => { - event.preventDefault(); - - // 如果已经有右键菜单显示,先关闭它 - if (contextMenu.value.visible) { - hideContextMenu(); - } - - // 将DirectoryNode转换为FileInfo格式 - const fileInfo: FileInfo = { - path: file.path, - name: file.name, - lastAccessed: file.lastModified || Date.now(), - size: file.size, - type: file.type, - }; - - contextMenu.value = { - visible: true, - x: event.clientX, - y: event.clientY, - file: fileInfo, - }; - - // 添加全局点击监听器,点击其他地方时关闭菜单 - setTimeout(() => { - document.addEventListener('click', handleGlobalClick, { once: true }); - }, 0); - }; - - // 处理全局点击事件 - const handleGlobalClick = (event: MouseEvent): void => { - if (!contextMenu.value.visible) return; - - // 检查点击是否在右键菜单内部 - const contextMenuElement = document.querySelector('.context-menu'); - if (contextMenuElement && !contextMenuElement.contains(event.target as Node)) { - hideContextMenu(); - } - }; + const mapToFileInfo = (file: FileInfo | DirectoryNode): FileInfo => ({ + path: file.path, + name: file.name, + lastAccessed: 'lastAccessed' in file && file.lastAccessed ? file.lastAccessed : Date.now(), + size: 'size' in file ? file.size : undefined, + type: 'type' in file ? file.type : undefined, + }); - // 隐藏右键菜单 - const hideContextMenu = (): void => { - contextMenu.value.visible = false; - // 移除全局点击监听器 - document.removeEventListener('click', handleGlobalClick); - }; + const { contextMenu, showContextMenu, hideContextMenu } = useContextMenu(mapToFileInfo); // 格式化时间 const formatTime = (timestamp: number): string => { return formatTimestamp(timestamp); }; - // 防抖处理文件操作 - const debouncedOpenFile = debounce(openFile, 300); - return { sortedRecentFiles, currentFilePath, @@ -274,22 +240,19 @@ export function useFileManager(fileStore: FileStore, folderManagerRef: Ref) recentFilesExpanded, directoryManagerExpanded, contextMenu, + isLoading, toggleDirectoryManager, - toggleRecentFiles, toggleSidebar, - createNewFile, openExistingFile, openDirectory, openFile, handleOpenFile, refreshDirectories, - clearRecentFiles, removeFromRecent, copyFilePath, openInExplorer, showContextMenu, hideContextMenu, formatTime, - debouncedOpenFile, }; } diff --git a/packages/client/src/components/composables/useToast.ts b/packages/client/src/components/composables/useToast.ts new file mode 100644 index 000000000..51097df56 --- /dev/null +++ b/packages/client/src/components/composables/useToast.ts @@ -0,0 +1,118 @@ +import { ref, readonly, type Ref } from 'vue'; + +export type ToastType = 'info' | 'success' | 'warning' | 'error'; + +export interface ToastItem { + id: number; + type: ToastType; + message: string; + duration: number; +} + +interface ToastOptions { + type?: ToastType; + duration?: number; +} + +// 默认配置 +const DEFAULT_DURATION = 3000; +const THROTTLE_MS = 300; + +// 全局状态 +let nextId = 1; +const toasts: Ref = ref([]); +const lastMessageTime = new Map(); + +/** + * 检查消息是否应该被节流 + */ +const shouldThrottle = (message: string): boolean => { + const now = Date.now(); + const lastTime = lastMessageTime.get(message); + if (lastTime && now - lastTime < THROTTLE_MS) { + return true; + } + lastMessageTime.set(message, now); + return false; +}; + +/** + * 添加 toast 通知 + */ +const addToast = (message: string, options: ToastOptions = {}): number => { + if (shouldThrottle(message)) { + return -1; + } + + nextId += 1; + const id = nextId; + const toast: ToastItem = { + id, + type: options.type ?? 'info', + message, + duration: options.duration ?? DEFAULT_DURATION, + }; + + toasts.value.push(toast); + + // 自动移除 + if (toast.duration > 0) { + setTimeout(() => { + removeToast(id); + }, toast.duration); + } + + return id; +}; + +/** + * 移除 toast + */ +const removeToast = (id: number): void => { + const index = toasts.value.findIndex((t) => t.id === id); + if (index !== -1) { + toasts.value.splice(index, 1); + } +}; + +/** + * 清除所有 toast + */ +const clearAllToasts = (): void => { + toasts.value = []; +}; + +// 便捷方法 +const info = (message: string, duration?: number): number => addToast(message, { type: 'info', duration }); + +const success = (message: string, duration?: number): number => addToast(message, { type: 'success', duration }); + +const warning = (message: string, duration?: number): number => addToast(message, { type: 'warning', duration }); + +const error = (message: string, duration?: number): number => { + console.error(message); + return addToast(message, { type: 'error', duration }); +}; + +export const useToast = () => { + return { + toasts: readonly(toasts), + addToast, + removeToast, + clearAllToasts, + info, + success, + warning, + error, + }; +}; + +// 单例导出,方便非组件场景使用 +export const toast = { + info, + success, + warning, + error, + remove: removeToast, + clear: clearAllToasts, +}; diff --git a/packages/client/src/components/fileUtils.ts b/packages/client/src/components/fileUtils.ts index ca3850689..9b8d6f003 100644 --- a/packages/client/src/components/fileUtils.ts +++ b/packages/client/src/components/fileUtils.ts @@ -1,12 +1,12 @@ import { readDir, readTextFile, writeTextFile } from '@tauri-apps/plugin-fs'; import { open, save } from '@tauri-apps/plugin-dialog'; -import type { DirectoryNode, FileInfo, FileOperationResult, DirectoryStructureResult } from './types'; +import type { DirectoryNode, FileOperationResult, DirectoryStructureResult } from './types'; +import { SUPPORTED_FILE_EXTENSIONS, MAX_DIRECTORY_DEPTH, DEFAULT_FILE_CONTENT } from '../constants/files'; -// 常量定义 -export const SUPPORTED_FILE_EXTENSIONS = ['md', 'markdown', 'text', 'txt']; -export const MAX_RECENT_FILES = 50; -export const MAX_DIRECTORY_DEPTH = 4; -export const DEFAULT_FILE_CONTENT = '# 新文档\n\n开始编写你的内容...'; +const joinPath = (base: string, name: string): string => { + const trimmed = base.replace(/[\\/]+$/, ''); + return `${trimmed}/${name}`; +}; // 检查路径是否存在 export const checkPathExists = async (path: string): Promise => { @@ -24,33 +24,13 @@ export const isSupportedFile = (fileName: string): boolean => { return SUPPORTED_FILE_EXTENSIONS.includes(fileExtension || ''); }; -// 检查目录是否包含目标文件(递归检查) -export const checkDirectoryHasTargetFiles = async (dirPath: string): Promise => { - try { - const entries = await readDir(dirPath); - - // 检查当前目录是否有目标文件 - const hasFiles = entries.some((entry) => !entry.isDirectory && isSupportedFile(entry.name || '')); - - if (hasFiles) return true; - - // 递归检查子目录 - const subdirectories = entries.filter((entry) => entry.isDirectory); - for (const dir of subdirectories) { - const subDirPath = `${dirPath}/${dir.name}`; - const subHasFiles = await checkDirectoryHasTargetFiles(subDirPath); - if (subHasFiles) return true; - } - - return false; - } catch (error) { - return false; - } -}; - -// 递归加载目录结构 -export const loadDirectoryStructure = async (dirPath: string, depth: number = 0): Promise => { - if (depth > MAX_DIRECTORY_DEPTH) { +// 递归加载目录结构(可配置最大深度,包含所有子目录与文件) +export const loadDirectoryStructure = async ( + dirPath: string, + depth: number = 0, + maxDepth: number = MAX_DIRECTORY_DEPTH, +): Promise => { + if (depth > maxDepth) { return { success: true, data: [] }; } @@ -59,34 +39,35 @@ export const loadDirectoryStructure = async (dirPath: string, depth: number = 0) const children: DirectoryNode[] = []; - // 处理子目录 - const subdirectories = entries.filter((entry) => entry.isDirectory); - for (const dir of subdirectories) { - const subDirPath = `${dirPath}/${dir.name}`; - const hasTargetFiles = await checkDirectoryHasTargetFiles(subDirPath); + for (const entry of entries) { + const fullPath = joinPath(dirPath, entry.name || ''); - if (hasTargetFiles) { - children.push({ - path: subDirPath, - name: dir.name || '', + if (entry.isDirectory) { + const node: DirectoryNode = { + path: fullPath, + name: entry.name || '', type: 'directory', expanded: false, children: [], - }); + }; + + // 递归预取子节点 + const nested = await loadDirectoryStructure(fullPath, depth + 1, maxDepth); + if (nested.success && nested.data) { + node.children = nested.data; + } + children.push(node); + } else { + if (isSupportedFile(entry.name || '')) { + children.push({ + path: fullPath, + name: entry.name || '', + type: 'file', + }); + } } } - // 处理文件 - const files = entries.filter((entry) => !entry.isDirectory && isSupportedFile(entry.name || '')); - - files.forEach((file) => { - children.push({ - path: `${dirPath}/${file.name}`, - name: file.name || '', - type: 'file', - }); - }); - // 按类型和名称排序 children.sort((a, b) => { if (a.type === b.type) { @@ -201,20 +182,6 @@ export const readFileContent = async (filePath: string): Promise => { - try { - await writeTextFile(filePath, content); - return { success: true }; - } catch (error) { - console.error('写入文件失败:', error); - return { - success: false, - error: `写入文件失败: ${error instanceof Error ? error.message : String(error)}`, - }; - } -}; - // 从文件路径中提取目录路径 export const extractDirectoryPath = (filePath: string): string => { const lastSlashIndex = filePath.lastIndexOf('/'); @@ -227,17 +194,6 @@ export const extractFileName = (filePath: string): string => { return lastSlashIndex !== -1 ? filePath.substring(lastSlashIndex + 1) : filePath; }; -// 格式化文件大小 -export const formatFileSize = (bytes: number): string => { - if (bytes === 0) return '0 B'; - - const k = 1024; - const sizes = ['B', 'KB', 'MB', 'GB']; - const i = Math.floor(Math.log(bytes) / Math.log(k)); - - return `${parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`; -}; - /** * 格式化时间戳为相对时间或绝对日期 */ @@ -270,35 +226,6 @@ export const formatTimestamp = (timestamp: number): string => { return new Date(timestamp).toLocaleDateString(); }; -// 验证文件路径 -export const validateFilePath = (filePath: string): boolean => { - if (!filePath) return false; - - // 基本路径验证 - const validPathRegex = /^[a-zA-Z0-9/._-]+$/; - if (!validPathRegex.test(filePath)) return false; - - // 检查文件扩展名 - return isSupportedFile(filePath); -}; - -// 获取文件信息 -export const getFileInfo = async (filePath: string): Promise => { - try { - const exists = await checkPathExists(filePath); - if (!exists) return null; - - return { - path: filePath, - name: extractFileName(filePath), - lastAccessed: Date.now(), - }; - } catch (error) { - console.error('获取文件信息失败:', error); - return null; - } -}; - // 防抖函数 export const debounce = any>( func: T, @@ -311,19 +238,3 @@ export const debounce = any>( timeout = setTimeout(() => func(...args), wait); }; }; - -// 节流函数 -export const throttle = any>( - func: T, - limit: number, -): ((...args: Parameters) => void) => { - let inThrottle: boolean; - - return (...args: Parameters) => { - if (!inThrottle) { - func(...args); - inThrottle = true; - setTimeout(() => (inThrottle = false), limit); - } - }; -}; diff --git a/packages/client/src/components/types.ts b/packages/client/src/components/types.ts index c91863d64..27f436da5 100644 --- a/packages/client/src/components/types.ts +++ b/packages/client/src/components/types.ts @@ -3,6 +3,8 @@ export interface FileInfo { path: string; name: string; lastAccessed: number; + lastOpened?: number; + lastSaved?: number | null; size?: number; type?: string; } @@ -50,6 +52,7 @@ export interface FileOperationResult { success: boolean; error?: string; data?: any; + path?: string; } // 文件读取选项类型 @@ -117,14 +120,10 @@ export interface DirectoryStructureResult { data?: DirectoryNode[]; } -export interface FileOperationResult { - success: boolean; - error?: string; - data?: any; -} - -// 常量定义 -export const SUPPORTED_FILE_EXTENSIONS = ['md', 'markdown', 'text', 'txt']; -export const MAX_RECENT_FILES = 50; -export const MAX_DIRECTORY_DEPTH = 4; -export const DEFAULT_FILE_CONTENT = '# 新文档\n\n开始编写你的内容...'; +// 常量定义统一从 constants 中导出 +export { + SUPPORTED_FILE_EXTENSIONS, + MAX_RECENT_FILES, + MAX_DIRECTORY_DEPTH, + DEFAULT_FILE_CONTENT, +} from '../constants/files'; diff --git a/packages/client/src/components/ui/ActionButtons.vue b/packages/client/src/components/ui/ActionButtons.vue index bb55dfa7e..f56ab54a0 100644 --- a/packages/client/src/components/ui/ActionButtons.vue +++ b/packages/client/src/components/ui/ActionButtons.vue @@ -1,18 +1,12 @@ + + diff --git a/packages/client/src/components/ui/DirectorySection.vue b/packages/client/src/components/ui/DirectorySection.vue index d881b49e5..15f8aad18 100644 --- a/packages/client/src/components/ui/DirectorySection.vue +++ b/packages/client/src/components/ui/DirectorySection.vue @@ -3,6 +3,7 @@
`, ].join(''); + const previewDom = $cherry.previewer.getDom(); // 延迟到下一轮事件循环再执行;只重试一次 setTimeout(() => { - const container = document.getElementById(chartId); - if (!container || !this.echartsRef) return; - if (this.echartsRef.getInstanceByDom(container)) return; - try { - this.createChart(container, chartOption, type); - Logger.log('Chart initialized successfully:', chartId); - } catch (error) { - Logger.error('Failed to render chart:', error); - Logger.error('Chart options:', chartOption); - Logger.error('Container:', container); - container.innerHTML = `
-
${this.cherry.locale.chartRenderError}
-
${error.message}
-
`; - } + const containers = previewDom.querySelectorAll(`#${chartId}`); + if (containers.length <= 0 || !this.echartsRef) return; + // if (this.echartsRef.getInstanceByDom(container)) return; + containers.forEach((container) => { + try { + this.createChart(container, chartOption, type); + } catch (error) { + if ($cherry.options.engine.syntax.global.flowSessionContext) { + container.innerHTML = 'drawing...'; + } else { + container.innerHTML = `
+
${this.cherry.locale.chartRenderError}
+
${error.message}
+
`; + } + } + }); this.cleanupInvalidInstances(); }, 50); diff --git a/packages/cherry-markdown/src/core/hooks/Table.js b/packages/cherry-markdown/src/core/hooks/Table.js index 7f20c6f1e..7359cad7d 100644 --- a/packages/cherry-markdown/src/core/hooks/Table.js +++ b/packages/cherry-markdown/src/core/hooks/Table.js @@ -263,7 +263,12 @@ export default class Table extends ParagraphBase { // Logger.log('originalStr preview:', originalStr.substring(0, 200)); // } // } - const chart = this.chartRenderEngine.render(chartOptions.type, chartOptions.options, tableObject); + const chart = this.chartRenderEngine.render( + chartOptions.type, + chartOptions.options, + tableObject, + this.$engine.$cherry, + ); const chartHtml = `
${chart}
`; const newSign = `${tableResult.sign}${chartOptionsSign}`; return { From ba77f20660523832317a36efd2aa666b3688eaf2 Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Tue, 24 Mar 2026 16:46:51 +0800 Subject: [PATCH 56/57] =?UTF-8?q?fix:=201=E3=80=81=E4=BC=98=E5=8C=96demo?= =?UTF-8?q?=20=E7=9A=84=E8=8F=9C=E5=8D=95=E9=85=8D=E7=BD=AE=EF=BC=9B2?= =?UTF-8?q?=E3=80=81=E5=AD=97=E6=95=B0=E7=BB=9F=E8=AE=A1=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=B5=B7=E5=A7=8B=E7=8A=B6=E6=80=81=20(#1659)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/upset-games-relate.md | 5 +++++ examples/assets/scripts/index-demo.js | 14 ++++++++------ packages/cherry-markdown/src/locales/en_US.js | 2 +- packages/cherry-markdown/src/locales/ru_RU.js | 2 +- packages/cherry-markdown/src/locales/zh_CN.js | 2 +- .../src/toolbars/hooks/WordCount.js | 4 ++-- 6 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 .changeset/upset-games-relate.md diff --git a/.changeset/upset-games-relate.md b/.changeset/upset-games-relate.md new file mode 100644 index 000000000..2566aa794 --- /dev/null +++ b/.changeset/upset-games-relate.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +fix: 1、优化demo 的菜单配置;2、字数统计增加起始状态 diff --git a/examples/assets/scripts/index-demo.js b/examples/assets/scripts/index-demo.js index 9d1af900b..51f09d113 100644 --- a/examples/assets/scripts/index-demo.js +++ b/examples/assets/scripts/index-demo.js @@ -55,7 +55,7 @@ var customMenuA = Cherry.createMenuHook('加粗斜体', { /** * 定义一个空壳,用于自行规划cherry已有工具栏的层级结构 */ -var customMenuB = Cherry.createMenuHook('实验室', { +var customMenuB = Cherry.createMenuHook('自定义菜单+自定义菜单图标', { icon: { type: 'svg', content: @@ -66,7 +66,7 @@ var customMenuB = Cherry.createMenuHook('实验室', { /** * 定义一个自带二级菜单的工具栏 */ -var customMenuC = Cherry.createMenuHook('帮助中心', { +var customMenuC = Cherry.createMenuHook('自定义菜单+子菜单', { iconName: 'question', onClick: (selection, type) => { switch (type) { @@ -400,16 +400,18 @@ const basicConfig = { }, 'graph', 'proTable', + '|', // 'customMenuTable', - 'togglePreview', - 'search', - 'shortcutKey', { customMenuBName: ['ruby', 'audio', 'video', 'customMenuAName'], }, 'customMenuCName', + '|', + 'shortcutKey', + 'search', + 'togglePreview', ], - toolbarRight: ['fullScreen', '|', 'export', 'changeLocale', '|', 'wordCount', '|', 'cursorPosition'], + toolbarRight: ['fullScreen', '|', 'export', 'changeLocale', '|', 'wordCount'], bubble: ['bold', 'italic', 'underline', 'strikethrough', 'sub', 'sup', 'quote', 'ruby', '|', 'size', 'color'], // array or false sidebar: ['mobilePreview', 'copy', 'theme', 'codeTheme'], toc: { diff --git a/packages/cherry-markdown/src/locales/en_US.js b/packages/cherry-markdown/src/locales/en_US.js index 5a4efe48e..a9f13dbe2 100644 --- a/packages/cherry-markdown/src/locales/en_US.js +++ b/packages/cherry-markdown/src/locales/en_US.js @@ -172,7 +172,7 @@ export default { disableShortcut: 'Disable all shortcuts', enableShortcut: 'Enable all shortcuts', recoverShortcut: 'Restore default configuration', - search: 'Search', + search: 'Search/Replace', autoWrap: 'Auto Wrap', footnoteTitle: 'Footnote', searchFor: 'Search for', diff --git a/packages/cherry-markdown/src/locales/ru_RU.js b/packages/cherry-markdown/src/locales/ru_RU.js index c920f5bbe..dfe583623 100644 --- a/packages/cherry-markdown/src/locales/ru_RU.js +++ b/packages/cherry-markdown/src/locales/ru_RU.js @@ -172,7 +172,7 @@ export default { disableShortcut: 'Отключить все горячие клавиши', enableShortcut: 'Включить горячие клавиши', recoverShortcut: 'Восстановить конфигурацию по умолчанию', - search: 'Поиск', + search: 'Поиск/Заменить', autoWrap: 'Автоперенос строк', footnoteTitle: 'Сноска', searchFor: 'Найти', diff --git a/packages/cherry-markdown/src/locales/zh_CN.js b/packages/cherry-markdown/src/locales/zh_CN.js index 5d6beb398..85ebff327 100644 --- a/packages/cherry-markdown/src/locales/zh_CN.js +++ b/packages/cherry-markdown/src/locales/zh_CN.js @@ -173,7 +173,7 @@ export default { disableShortcut: '禁用所有快捷键', enableShortcut: '取消禁用快捷键', recoverShortcut: '恢复默认配置', - search: '搜索', + search: '搜索/替换', autoWrap: '自动换行', footnoteTitle: '脚注', searchFor: '查找', diff --git a/packages/cherry-markdown/src/toolbars/hooks/WordCount.js b/packages/cherry-markdown/src/toolbars/hooks/WordCount.js index 503315072..bb9d72d9f 100644 --- a/packages/cherry-markdown/src/toolbars/hooks/WordCount.js +++ b/packages/cherry-markdown/src/toolbars/hooks/WordCount.js @@ -24,7 +24,7 @@ export default class wordCount extends MenuBase { this.noIcon = true; this.countEvent = new Event('count'); // 强制转成数字 - this.countState = Number(localStorage.getItem('cherry-wordCountState')) || 1; + this.countState = Number(localStorage.getItem('cherry-wordCountState')) || 0; } $dealEditorChange() { @@ -83,7 +83,7 @@ export default class wordCount extends MenuBase { // 循环切换4种状态 this.countState += 1; if (this.countState > 3) { - this.countState = 1; + this.countState = 0; } // 转成string格式 localStorage.setItem('cherry-wordCountState', String(this.countState)); From 8dd9d1509a946af8d0dc3322f92ba1176fc57942 Mon Sep 17 00:00:00 2001 From: hobostay Date: Sun, 29 Mar 2026 21:15:56 +0800 Subject: [PATCH 57/57] fix: upgrade prismjs to 1.30.0 to fix bash backslash spaces issue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #1396 升级 prismjs 从 1.24.1 到 1.30.0,修复 bash 代码块中反斜杠后面多空格的问题。 Changes: - Upgrade prismjs from ^1.24.1 to ^1.30.0 Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/cherry-markdown/package.json | 2 +- yarn.lock | 2032 ++++++++++++------------- 2 files changed, 955 insertions(+), 1079 deletions(-) diff --git a/packages/cherry-markdown/package.json b/packages/cherry-markdown/package.json index d2a4aa503..0ef4938b1 100644 --- a/packages/cherry-markdown/package.json +++ b/packages/cherry-markdown/package.json @@ -94,7 +94,7 @@ "npm-run-all": "^4.1.5", "openai": "^5.9.0", "postcss": "^8.2.15", - "prismjs": "^1.24.1", + "prismjs": "^1.30.0", "replace-in-file": "^7.0.1", "rimraf": "^3.0.2", "rollup": "4.52.3", diff --git a/yarn.lock b/yarn.lock index ce64f7df5..d9700ec94 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,7 +19,7 @@ "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.26.2", "@babel/code-frame@^7.27.1": version "7.27.1" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== dependencies: "@babel/helper-validator-identifier" "^7.27.1" @@ -28,12 +28,12 @@ "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.8": version "7.26.8" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz" integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== "@babel/core@^7.7.2": version "7.26.10" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz" integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== dependencies: "@ampproject/remapping" "^2.2.0" @@ -54,7 +54,7 @@ "@babel/eslint-parser@^7.14.5", "@babel/eslint-parser@^7.28.0": version "7.28.0" - resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.0.tgz#c1b3fbba070f5bac32e3d02f244201add4afdd6e" + resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.0.tgz" integrity sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" @@ -63,7 +63,7 @@ "@babel/generator@^7.26.10", "@babel/generator@^7.28.3": version "7.28.3" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz" integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== dependencies: "@babel/parser" "^7.28.3" @@ -74,14 +74,14 @@ "@babel/helper-annotate-as-pure@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz" integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== dependencies: "@babel/types" "^7.25.9" "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.26.5": version "7.27.0" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz#de0c753b1cd1d9ab55d473c5a5cf7170f0a81880" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz" integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA== dependencies: "@babel/compat-data" "^7.26.8" @@ -92,7 +92,7 @@ "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.9": version "7.27.0" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz#518fad6a307c6a96f44af14912b2c20abe9bfc30" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz" integrity sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg== dependencies: "@babel/helper-annotate-as-pure" "^7.25.9" @@ -105,7 +105,7 @@ "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": version "7.27.0" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz#0e41f7d38c2ebe06ebd9cf0e02fb26019c77cd95" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz" integrity sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ== dependencies: "@babel/helper-annotate-as-pure" "^7.25.9" @@ -114,7 +114,7 @@ "@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2", "@babel/helper-define-polyfill-provider@^0.6.3": version "0.6.4" - resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz#15e8746368bfa671785f5926ff74b3064c291fab" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz" integrity sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw== dependencies: "@babel/helper-compilation-targets" "^7.22.6" @@ -125,12 +125,12 @@ "@babel/helper-globals@^7.28.0": version "7.28.0" - resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz" integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== "@babel/helper-member-expression-to-functions@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz" integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== dependencies: "@babel/traverse" "^7.25.9" @@ -138,7 +138,7 @@ "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.24.7", "@babel/helper-module-imports@^7.25.9": version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz" integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== dependencies: "@babel/traverse" "^7.27.1" @@ -146,7 +146,7 @@ "@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": version "7.26.0" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz" integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== dependencies: "@babel/helper-module-imports" "^7.25.9" @@ -155,19 +155,19 @@ "@babel/helper-optimise-call-expression@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz" integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== dependencies: "@babel/types" "^7.25.9" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5", "@babel/helper-plugin-utils@^7.8.0": version "7.26.5" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz" integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== "@babel/helper-remap-async-to-generator@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz" integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== dependencies: "@babel/helper-annotate-as-pure" "^7.25.9" @@ -176,7 +176,7 @@ "@babel/helper-replace-supers@^7.25.9", "@babel/helper-replace-supers@^7.26.5": version "7.26.5" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz#6cb04e82ae291dae8e72335dfe438b0725f14c8d" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz" integrity sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg== dependencies: "@babel/helper-member-expression-to-functions" "^7.25.9" @@ -185,7 +185,7 @@ "@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz" integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== dependencies: "@babel/traverse" "^7.25.9" @@ -193,27 +193,22 @@ "@babel/helper-string-parser@^7.27.1": version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== "@babel/helper-validator-identifier@^7.24.7", "@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.27.1": version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz" integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== -"@babel/helper-validator-identifier@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" - integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== - "@babel/helper-validator-option@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz" integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== "@babel/helper-wrap-function@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz" integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== dependencies: "@babel/template" "^7.25.9" @@ -222,7 +217,7 @@ "@babel/helpers@^7.26.10": version "7.27.0" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz" integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg== dependencies: "@babel/template" "^7.27.0" @@ -250,23 +245,16 @@ regenerator-runtime "^0.14.0" v8flags "^3.1.1" -"@babel/parser@^7.25.3", "@babel/parser@^7.26.10", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": +"@babel/parser@^7.25.3", "@babel/parser@^7.25.4", "@babel/parser@^7.26.10", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": version "7.28.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz" integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== dependencies: "@babel/types" "^7.28.4" -"@babel/parser@^7.25.4": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" - integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== - dependencies: - "@babel/types" "^7.28.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz" integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== dependencies: "@babel/helper-plugin-utils" "^7.25.9" @@ -274,21 +262,21 @@ "@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz" integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz" integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz" integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== dependencies: "@babel/helper-plugin-utils" "^7.25.9" @@ -297,7 +285,7 @@ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz" integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" @@ -351,14 +339,14 @@ "@babel/plugin-syntax-import-assertions@^7.26.0": version "7.26.0" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz" integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-syntax-import-attributes@^7.26.0": version "7.26.0" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz" integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== dependencies: "@babel/helper-plugin-utils" "^7.25.9" @@ -387,14 +375,14 @@ "@babel/plugin-transform-arrow-functions@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz" integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-async-generator-functions@^7.26.8": version "7.26.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz#5e3991135e3b9c6eaaf5eff56d1ae5a11df45ff8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz" integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg== dependencies: "@babel/helper-plugin-utils" "^7.26.5" @@ -403,7 +391,7 @@ "@babel/plugin-transform-async-to-generator@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz" integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== dependencies: "@babel/helper-module-imports" "^7.25.9" @@ -412,21 +400,21 @@ "@babel/plugin-transform-block-scoped-functions@^7.26.5": version "7.26.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz#3dc4405d31ad1cbe45293aa57205a6e3b009d53e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz" integrity sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ== dependencies: "@babel/helper-plugin-utils" "^7.26.5" "@babel/plugin-transform-block-scoping@^7.25.9": version "7.27.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz#acc2c0d98a7439bbde4244588ddbd4904701d47f" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz" integrity sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ== dependencies: "@babel/helper-plugin-utils" "^7.26.5" "@babel/plugin-transform-class-properties@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz" integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== dependencies: "@babel/helper-create-class-features-plugin" "^7.25.9" @@ -434,7 +422,7 @@ "@babel/plugin-transform-class-static-block@^7.26.0": version "7.26.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz" integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.25.9" @@ -442,7 +430,7 @@ "@babel/plugin-transform-classes@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz" integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== dependencies: "@babel/helper-annotate-as-pure" "^7.25.9" @@ -454,7 +442,7 @@ "@babel/plugin-transform-computed-properties@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz" integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== dependencies: "@babel/helper-plugin-utils" "^7.25.9" @@ -462,14 +450,14 @@ "@babel/plugin-transform-destructuring@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz" integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-dotall-regex@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz" integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.25.9" @@ -477,14 +465,14 @@ "@babel/plugin-transform-duplicate-keys@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz" integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz" integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.25.9" @@ -492,28 +480,28 @@ "@babel/plugin-transform-dynamic-import@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz" integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-exponentiation-operator@^7.26.3": version "7.26.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz#e29f01b6de302c7c2c794277a48f04a9ca7f03bc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz" integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-export-namespace-from@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz" integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-for-of@^7.26.9": version "7.26.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz#27231f79d5170ef33b5111f07fe5cafeb2c96a56" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz" integrity sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg== dependencies: "@babel/helper-plugin-utils" "^7.26.5" @@ -521,7 +509,7 @@ "@babel/plugin-transform-function-name@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz" integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== dependencies: "@babel/helper-compilation-targets" "^7.25.9" @@ -530,35 +518,35 @@ "@babel/plugin-transform-json-strings@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" + resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz" integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-literals@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz" integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-logical-assignment-operators@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz" integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-member-expression-literals@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz" integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-modules-amd@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz" integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== dependencies: "@babel/helper-module-transforms" "^7.25.9" @@ -566,7 +554,7 @@ "@babel/plugin-transform-modules-commonjs@^7.26.3": version "7.26.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz" integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== dependencies: "@babel/helper-module-transforms" "^7.26.0" @@ -574,7 +562,7 @@ "@babel/plugin-transform-modules-systemjs@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz" integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== dependencies: "@babel/helper-module-transforms" "^7.25.9" @@ -584,7 +572,7 @@ "@babel/plugin-transform-modules-umd@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz" integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== dependencies: "@babel/helper-module-transforms" "^7.25.9" @@ -592,7 +580,7 @@ "@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz" integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.25.9" @@ -600,28 +588,28 @@ "@babel/plugin-transform-new-target@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz" integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-nullish-coalescing-operator@^7.26.6": version "7.26.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz#fbf6b3c92cb509e7b319ee46e3da89c5bedd31fe" + resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz" integrity sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw== dependencies: "@babel/helper-plugin-utils" "^7.26.5" "@babel/plugin-transform-numeric-separator@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz" integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-object-rest-spread@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz" integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== dependencies: "@babel/helper-compilation-targets" "^7.25.9" @@ -630,7 +618,7 @@ "@babel/plugin-transform-object-super@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz" integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== dependencies: "@babel/helper-plugin-utils" "^7.25.9" @@ -638,14 +626,14 @@ "@babel/plugin-transform-optional-catch-binding@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz" integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-optional-chaining@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz" integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== dependencies: "@babel/helper-plugin-utils" "^7.25.9" @@ -653,14 +641,14 @@ "@babel/plugin-transform-parameters@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz" integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-private-methods@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz" integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== dependencies: "@babel/helper-create-class-features-plugin" "^7.25.9" @@ -668,7 +656,7 @@ "@babel/plugin-transform-private-property-in-object@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz" integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== dependencies: "@babel/helper-annotate-as-pure" "^7.25.9" @@ -677,14 +665,14 @@ "@babel/plugin-transform-property-literals@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz" integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-regenerator@^7.25.9": version "7.27.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz#822feebef43d6a59a81f696b2512df5b1682db31" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz" integrity sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA== dependencies: "@babel/helper-plugin-utils" "^7.26.5" @@ -692,7 +680,7 @@ "@babel/plugin-transform-regexp-modifiers@^7.26.0": version "7.26.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz" integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.25.9" @@ -700,7 +688,7 @@ "@babel/plugin-transform-reserved-words@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz" integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" @@ -719,14 +707,14 @@ "@babel/plugin-transform-shorthand-properties@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz" integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-spread@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz" integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== dependencies: "@babel/helper-plugin-utils" "^7.25.9" @@ -734,35 +722,35 @@ "@babel/plugin-transform-sticky-regex@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz" integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-template-literals@^7.26.8": version "7.26.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz#966b15d153a991172a540a69ad5e1845ced990b5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz" integrity sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q== dependencies: "@babel/helper-plugin-utils" "^7.26.5" "@babel/plugin-transform-typeof-symbol@^7.26.7": version "7.27.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz#044a0890f3ca694207c7826d0c7a65e5ac008aae" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz" integrity sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w== dependencies: "@babel/helper-plugin-utils" "^7.26.5" "@babel/plugin-transform-unicode-escapes@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz" integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-unicode-property-regex@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz" integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.25.9" @@ -770,7 +758,7 @@ "@babel/plugin-transform-unicode-regex@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz" integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.25.9" @@ -778,7 +766,7 @@ "@babel/plugin-transform-unicode-sets-regex@^7.25.9": version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz" integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.25.9" @@ -786,7 +774,7 @@ "@babel/preset-env@^7.7.1": version "7.26.9" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz#2ec64e903d0efe743699f77a10bdf7955c2123c3" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz" integrity sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ== dependencies: "@babel/compat-data" "^7.26.8" @@ -889,14 +877,14 @@ "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": version "7.27.0" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz#fbee7cf97c709518ecc1f590984481d5460d4762" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz" integrity sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw== dependencies: regenerator-runtime "^0.14.0" "@babel/template@^7.25.9", "@babel/template@^7.26.9", "@babel/template@^7.27.0", "@babel/template@^7.27.2": version "7.27.2" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz" integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== dependencies: "@babel/code-frame" "^7.27.1" @@ -905,7 +893,7 @@ "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8", "@babel/traverse@^7.27.0", "@babel/traverse@^7.27.1": version "7.28.4" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz#8d456101b96ab175d487249f60680221692b958b" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz" integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== dependencies: "@babel/code-frame" "^7.27.1" @@ -916,17 +904,9 @@ "@babel/types" "^7.28.4" debug "^4.3.1" -"@babel/types@^7.25.4", "@babel/types@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" - integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" - -"@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.27.1", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.4.4": +"@babel/types@^7.25.4", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.27.1", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.4.4": version "7.28.4" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz" integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== dependencies: "@babel/helper-string-parser" "^7.27.1" @@ -934,17 +914,17 @@ "@bcoe/v8-coverage@^1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz#bbe12dca5b4ef983a0d0af4b07b9bc90ea0ababa" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz" integrity sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA== "@braintree/sanitize-url@^6.0.0": version "6.0.4" - resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" + resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz" integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== "@changesets/apply-release-plan@^7.0.12": version "7.0.12" - resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.12.tgz#8413977f117fa95f6e2db6f0c35479a2eba6960a" + resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.12.tgz" integrity sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ== dependencies: "@changesets/config" "^3.1.1" @@ -963,7 +943,7 @@ "@changesets/assemble-release-plan@^6.0.9": version "6.0.9" - resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.9.tgz#8aa5baf0037a85812e320172e83b92ca31e85fd6" + resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.9.tgz" integrity sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ== dependencies: "@changesets/errors" "^0.2.0" @@ -975,14 +955,14 @@ "@changesets/changelog-git@^0.2.1": version "0.2.1" - resolved "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.2.1.tgz#7f311f3dc11eae1235aa7fd2c1807112962b409b" + resolved "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.2.1.tgz" integrity sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q== dependencies: "@changesets/types" "^6.1.0" "@changesets/cli@^2.29.5": version "2.29.5" - resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.29.5.tgz#7ff589686b5a16b6790962ac09182c7462db4899" + resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.29.5.tgz" integrity sha512-0j0cPq3fgxt2dPdFsg4XvO+6L66RC0pZybT9F4dG5TBrLA3jA/1pNkdTXH9IBBVHkgsKrNKenI3n1mPyPlIydg== dependencies: "@changesets/apply-release-plan" "^7.0.12" @@ -1016,7 +996,7 @@ "@changesets/config@^3.1.1": version "3.1.1" - resolved "https://registry.npmjs.org/@changesets/config/-/config-3.1.1.tgz#3e5b1f74236a4552c5f4eddf2bd05a43a0b71160" + resolved "https://registry.npmjs.org/@changesets/config/-/config-3.1.1.tgz" integrity sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA== dependencies: "@changesets/errors" "^0.2.0" @@ -1029,14 +1009,14 @@ "@changesets/errors@^0.2.0": version "0.2.0" - resolved "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz#3c545e802b0f053389cadcf0ed54e5636ff9026a" + resolved "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz" integrity sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow== dependencies: extendable-error "^0.1.5" "@changesets/get-dependents-graph@^2.1.3": version "2.1.3" - resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.3.tgz#cd31b39daab7102921fb65acdcb51b4658502eee" + resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.3.tgz" integrity sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ== dependencies: "@changesets/types" "^6.1.0" @@ -1046,7 +1026,7 @@ "@changesets/get-github-info@^0.6.0": version "0.6.0" - resolved "https://registry.npmjs.org/@changesets/get-github-info/-/get-github-info-0.6.0.tgz#faba66a20a3a5a0cbabea28efd43c9ede7429f11" + resolved "https://registry.npmjs.org/@changesets/get-github-info/-/get-github-info-0.6.0.tgz" integrity sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA== dependencies: dataloader "^1.4.0" @@ -1054,7 +1034,7 @@ "@changesets/get-release-plan@^4.0.13": version "4.0.13" - resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.13.tgz#02e2d9b89a3911bfc4bf1dafe237098b4b7454e9" + resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.13.tgz" integrity sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg== dependencies: "@changesets/assemble-release-plan" "^6.0.9" @@ -1066,12 +1046,12 @@ "@changesets/get-version-range-type@^0.4.0": version "0.4.0" - resolved "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz#429a90410eefef4368502c41c63413e291740bf5" + resolved "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz" integrity sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ== "@changesets/git@^3.0.4": version "3.0.4" - resolved "https://registry.npmjs.org/@changesets/git/-/git-3.0.4.tgz#75e3811ab407ec010beb51131ceb5c6b3975c914" + resolved "https://registry.npmjs.org/@changesets/git/-/git-3.0.4.tgz" integrity sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw== dependencies: "@changesets/errors" "^0.2.0" @@ -1082,14 +1062,14 @@ "@changesets/logger@^0.1.1": version "0.1.1" - resolved "https://registry.npmjs.org/@changesets/logger/-/logger-0.1.1.tgz#9926ac4dc8fb00472fe1711603b6b4755d64b435" + resolved "https://registry.npmjs.org/@changesets/logger/-/logger-0.1.1.tgz" integrity sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg== dependencies: picocolors "^1.1.0" "@changesets/parse@^0.4.1": version "0.4.1" - resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.4.1.tgz#18ba51d2eb784d27469034f06344f8fdcba586df" + resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.4.1.tgz" integrity sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q== dependencies: "@changesets/types" "^6.1.0" @@ -1097,7 +1077,7 @@ "@changesets/pre@^2.0.2": version "2.0.2" - resolved "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.2.tgz#b35e84d25fca8b970340642ca04ce76c7fc34ced" + resolved "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.2.tgz" integrity sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug== dependencies: "@changesets/errors" "^0.2.0" @@ -1107,7 +1087,7 @@ "@changesets/read@^0.6.5": version "0.6.5" - resolved "https://registry.npmjs.org/@changesets/read/-/read-0.6.5.tgz#7a68457e6356d3df187aa18e388f1b8dba3d2156" + resolved "https://registry.npmjs.org/@changesets/read/-/read-0.6.5.tgz" integrity sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg== dependencies: "@changesets/git" "^3.0.4" @@ -1120,7 +1100,7 @@ "@changesets/should-skip-package@^0.1.2": version "0.1.2" - resolved "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.2.tgz#c018e1e05eab3d97afa4c4590f2b0db7486ae488" + resolved "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.2.tgz" integrity sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw== dependencies: "@changesets/types" "^6.1.0" @@ -1128,17 +1108,17 @@ "@changesets/types@^4.0.1": version "4.1.0" - resolved "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz#fb8f7ca2324fd54954824e864f9a61a82cb78fe0" + resolved "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz" integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== "@changesets/types@^6.1.0": version "6.1.0" - resolved "https://registry.npmjs.org/@changesets/types/-/types-6.1.0.tgz#12a4c8490827d26bc6fbf97a151499be2fb6d2f5" + resolved "https://registry.npmjs.org/@changesets/types/-/types-6.1.0.tgz" integrity sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA== "@changesets/write@^0.4.0": version "0.4.0" - resolved "https://registry.npmjs.org/@changesets/write/-/write-0.4.0.tgz#ec903cbd8aa9b6da6fa09ef19fb609eedd115ed6" + resolved "https://registry.npmjs.org/@changesets/write/-/write-0.4.0.tgz" integrity sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q== dependencies: "@changesets/types" "^6.1.0" @@ -1148,7 +1128,7 @@ "@cherry-markdown/changesets-changelog-github@^0.0.1": version "0.0.1" - resolved "https://registry.npmjs.org/@cherry-markdown/changesets-changelog-github/-/changesets-changelog-github-0.0.1.tgz#776659a7a6b68a8b95b8932562b56042b4c4084c" + resolved "https://registry.npmjs.org/@cherry-markdown/changesets-changelog-github/-/changesets-changelog-github-0.0.1.tgz" integrity sha512-OnSb5HzA63LMcnrNVWWhQmfH+OSnu+UsuEzk4nJoTfe/aa9QWLRxtbJJw7sPJNpUtdOHHWRhuMGq0J1gZHNHHQ== dependencies: "@changesets/get-github-info" "^0.6.0" @@ -1161,7 +1141,7 @@ "@commitlint/cli@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.0.tgz#e66e5a5268437e42b7c6f2a447e94ea83b8a3272" + resolved "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.0.tgz" integrity sha512-t/fCrLVu+Ru01h0DtlgHZXbHV2Y8gKocTR5elDOqIRUzQd0/6hpt2VIWOj9b3NDo7y4/gfxeR2zRtXq/qO6iUg== dependencies: "@commitlint/format" "^19.8.0" @@ -1174,7 +1154,7 @@ "@commitlint/config-conventional@^19.6.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.8.0.tgz#4a1470a0156f5d1f560426c05cfc3a6a796c2b9c" + resolved "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.8.0.tgz" integrity sha512-9I2kKJwcAPwMoAj38hwqFXG0CzS2Kj+SAByPUQ0SlHTfb7VUhYVmo7G2w2tBrqmOf7PFd6MpZ/a1GQJo8na8kw== dependencies: "@commitlint/types" "^19.8.0" @@ -1182,7 +1162,7 @@ "@commitlint/config-validator@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.0.tgz#0b30c274e4427d3942fd62ecf53c19d99f43ac4a" + resolved "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.0.tgz" integrity sha512-+r5ZvD/0hQC3w5VOHJhGcCooiAVdynFlCe2d6I9dU+PvXdV3O+fU4vipVg+6hyLbQUuCH82mz3HnT/cBQTYYuA== dependencies: "@commitlint/types" "^19.8.0" @@ -1190,7 +1170,7 @@ "@commitlint/ensure@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.0.tgz#481c30706dc4aa4a8e85e7d1f1877c30e5201a0d" + resolved "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.0.tgz" integrity sha512-kNiNU4/bhEQ/wutI1tp1pVW1mQ0QbAjfPRo5v8SaxoVV+ARhkB8Wjg3BSseNYECPzWWfg/WDqQGIfV1RaBFQZg== dependencies: "@commitlint/types" "^19.8.0" @@ -1202,12 +1182,12 @@ "@commitlint/execute-rule@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.0.tgz#ebcac26dc75d481e223b0c37d59e5bdd7a164d4a" + resolved "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.0.tgz" integrity sha512-fuLeI+EZ9x2v/+TXKAjplBJWI9CNrHnyi5nvUQGQt4WRkww/d95oVRsc9ajpt4xFrFmqMZkd/xBQHZDvALIY7A== "@commitlint/format@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/format/-/format-19.8.0.tgz#b06084fb3b807f2142c19c94572127d4a3af5da1" + resolved "https://registry.npmjs.org/@commitlint/format/-/format-19.8.0.tgz" integrity sha512-EOpA8IERpQstxwp/WGnDArA7S+wlZDeTeKi98WMOvaDLKbjptuHWdOYYr790iO7kTCif/z971PKPI2PkWMfOxg== dependencies: "@commitlint/types" "^19.8.0" @@ -1215,7 +1195,7 @@ "@commitlint/is-ignored@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.0.tgz#3e413168b1222e62798dd1a36c64d2454e7bb291" + resolved "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.0.tgz" integrity sha512-L2Jv9yUg/I+jF3zikOV0rdiHUul9X3a/oU5HIXhAJLE2+TXTnEBfqYP9G5yMw/Yb40SnR764g4fyDK6WR2xtpw== dependencies: "@commitlint/types" "^19.8.0" @@ -1223,7 +1203,7 @@ "@commitlint/lint@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.0.tgz#c2bf85de6d2e86e13c972cf19a2d425e62e9b057" + resolved "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.0.tgz" integrity sha512-+/NZKyWKSf39FeNpqhfMebmaLa1P90i1Nrb1SrA7oSU5GNN/lksA4z6+ZTnsft01YfhRZSYMbgGsARXvkr/VLQ== dependencies: "@commitlint/is-ignored" "^19.8.0" @@ -1233,7 +1213,7 @@ "@commitlint/load@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/load/-/load-19.8.0.tgz#7c7078fbdc9c4e3a14fa5a8684c3cb854353551e" + resolved "https://registry.npmjs.org/@commitlint/load/-/load-19.8.0.tgz" integrity sha512-4rvmm3ff81Sfb+mcWT5WKlyOa+Hd33WSbirTVUer0wjS1Hv/Hzr07Uv1ULIV9DkimZKNyOwXn593c+h8lsDQPQ== dependencies: "@commitlint/config-validator" "^19.8.0" @@ -1249,12 +1229,12 @@ "@commitlint/message@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/message/-/message-19.8.0.tgz#1ac1c527a601b329373ba50ffd70a713acb0b8ca" + resolved "https://registry.npmjs.org/@commitlint/message/-/message-19.8.0.tgz" integrity sha512-qs/5Vi9bYjf+ZV40bvdCyBn5DvbuelhR6qewLE8Bh476F7KnNyLfdM/ETJ4cp96WgeeHo6tesA2TMXS0sh5X4A== "@commitlint/parse@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.0.tgz#bce415dda60e115239cd337b15262e459cab8eba" + resolved "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.0.tgz" integrity sha512-YNIKAc4EXvNeAvyeEnzgvm1VyAe0/b3Wax7pjJSwXuhqIQ1/t2hD3OYRXb6D5/GffIvaX82RbjD+nWtMZCLL7Q== dependencies: "@commitlint/types" "^19.8.0" @@ -1263,7 +1243,7 @@ "@commitlint/read@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/read/-/read-19.8.0.tgz#d16bea846619100e23c4d56bcf191c397da7542f" + resolved "https://registry.npmjs.org/@commitlint/read/-/read-19.8.0.tgz" integrity sha512-6ywxOGYajcxK1y1MfzrOnwsXO6nnErna88gRWEl3qqOOP8MDu/DTeRkGLXBFIZuRZ7mm5yyxU5BmeUvMpNte5w== dependencies: "@commitlint/top-level" "^19.8.0" @@ -1274,7 +1254,7 @@ "@commitlint/resolve-extends@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.0.tgz#2ef6c448ed7f925840cca282e3ce37bea8e9b726" + resolved "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.0.tgz" integrity sha512-CLanRQwuG2LPfFVvrkTrBR/L/DMy3+ETsgBqW1OvRxmzp/bbVJW0Xw23LnnExgYcsaFtos967lul1CsbsnJlzQ== dependencies: "@commitlint/config-validator" "^19.8.0" @@ -1286,7 +1266,7 @@ "@commitlint/rules@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.0.tgz#0ca2b7bd9dc22409173963f15061d8cac671bdaa" + resolved "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.0.tgz" integrity sha512-IZ5IE90h6DSWNuNK/cwjABLAKdy8tP8OgGVGbXe1noBEX5hSsu00uRlLu6JuruiXjWJz2dZc+YSw3H0UZyl/mA== dependencies: "@commitlint/ensure" "^19.8.0" @@ -1296,19 +1276,19 @@ "@commitlint/to-lines@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.0.tgz#f7bdf7878999c0620f3a2f46f829fcc1f1f1d118" + resolved "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.0.tgz" integrity sha512-3CKLUw41Cur8VMjh16y8LcsOaKbmQjAKCWlXx6B0vOUREplp6em9uIVhI8Cv934qiwkbi2+uv+mVZPnXJi1o9A== "@commitlint/top-level@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.0.tgz#5ff4d9b8be44501edd2c94b93602a7104d63d92d" + resolved "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.0.tgz" integrity sha512-Rphgoc/omYZisoNkcfaBRPQr4myZEHhLPx2/vTXNLjiCw4RgfPR1wEgUpJ9OOmDCiv5ZyIExhprNLhteqH4FuQ== dependencies: find-up "^7.0.0" "@commitlint/types@^19.8.0": version "19.8.0" - resolved "https://registry.npmjs.org/@commitlint/types/-/types-19.8.0.tgz#5a77c7a723a714995a51917edd0ecfcf29495d3c" + resolved "https://registry.npmjs.org/@commitlint/types/-/types-19.8.0.tgz" integrity sha512-LRjP623jPyf3Poyfb0ohMj8I3ORyBDOwXAgxxVPbSD0unJuW2mJWeiRfaQinjtccMqC5Wy1HOMfa4btKjbNxbg== dependencies: "@types/conventional-commits-parser" "^5.0.0" @@ -1325,28 +1305,28 @@ "@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.7": version "0.5.7" - resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@emnapi/core@^1.5.0": - version "1.7.1" - resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz#3a79a02dbc84f45884a1806ebb98e5746bdfaac4" - integrity sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg== + version "1.9.1" + resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz#2143069c744ca2442074f8078462e51edd63c7bd" + integrity sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA== dependencies: - "@emnapi/wasi-threads" "1.1.0" + "@emnapi/wasi-threads" "1.2.0" tslib "^2.4.0" "@emnapi/runtime@^1.5.0": - version "1.7.1" - resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz#a73784e23f5d57287369c808197288b52276b791" - integrity sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA== + version "1.9.1" + resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz#115ff2a0d589865be6bd8e9d701e499c473f2a8d" + integrity sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA== dependencies: tslib "^2.4.0" -"@emnapi/wasi-threads@1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf" - integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== +"@emnapi/wasi-threads@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz#a19d9772cc3d195370bf6e2a805eec40aa75e18e" + integrity sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg== dependencies: tslib "^2.4.0" @@ -1372,7 +1352,7 @@ "@esbuild/darwin-arm64@0.25.1": version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz#a46805c1c585d451aa83be72500bd6e8495dd591" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz" integrity sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ== "@esbuild/darwin-x64@0.25.1": @@ -1477,14 +1457,14 @@ "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.7.0" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz" integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== dependencies: eslint-visitor-keys "^3.4.3" "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": version "4.12.1" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== "@eslint/eslintrc@^0.4.3": @@ -1504,7 +1484,7 @@ "@eslint/eslintrc@^2.1.4": version "2.1.4" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" @@ -1519,29 +1499,29 @@ "@eslint/js@8.57.1", "@eslint/js@^8.57.0": version "8.57.1" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz" integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== "@gar/promisify@^1.1.3": version "1.1.3" - resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@gulpjs/messages@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz#94e70978ff676ade541faab459c37ae0c7095e5a" + resolved "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz" integrity sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg== "@gulpjs/to-absolute-glob@^4.0.0": version "4.0.0" - resolved "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz#1fc2460d3953e1d9b9f2dfdb4bcc99da4710c021" + resolved "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz" integrity sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA== dependencies: is-negated-glob "^1.0.0" "@humanwhocodes/config-array@^0.13.0": version "0.13.0" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz" integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== dependencies: "@humanwhocodes/object-schema" "^2.0.3" @@ -1559,7 +1539,7 @@ "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.0": @@ -1569,7 +1549,7 @@ "@humanwhocodes/object-schema@^2.0.3": version "2.0.3" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== "@hutson/parse-repository-url@^3.0.0": @@ -1579,7 +1559,7 @@ "@isaacs/cliui@^8.0.2": version "8.0.2" - resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== dependencies: string-width "^5.1.2" @@ -1591,12 +1571,12 @@ "@istanbuljs/schema@^0.1.2": version "0.1.3" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": version "0.3.13" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== dependencies: "@jridgewell/sourcemap-codec" "^1.5.0" @@ -1617,12 +1597,12 @@ "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": version "1.5.5" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": version "0.3.31" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== dependencies: "@jridgewell/resolve-uri" "^3.1.0" @@ -1630,22 +1610,22 @@ "@jsonjoy.com/base64@^1.1.2": version "1.1.2" - resolved "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" + resolved "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz" integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== "@jsonjoy.com/buffers@^1.0.0", "@jsonjoy.com/buffers@^1.2.0": version "1.2.1" - resolved "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" + resolved "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz" integrity sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA== "@jsonjoy.com/codegen@^1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" + resolved "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz" integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== "@jsonjoy.com/json-pack@^1.11.0": version "1.21.0" - resolved "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" + resolved "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz" integrity sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg== dependencies: "@jsonjoy.com/base64" "^1.1.2" @@ -1659,7 +1639,7 @@ "@jsonjoy.com/json-pointer@^1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" + resolved "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz" integrity sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg== dependencies: "@jsonjoy.com/codegen" "^1.0.0" @@ -1667,7 +1647,7 @@ "@jsonjoy.com/util@^1.9.0": version "1.9.0" - resolved "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" + resolved "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz" integrity sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ== dependencies: "@jsonjoy.com/buffers" "^1.0.0" @@ -1675,12 +1655,12 @@ "@leichtgewicht/ip-codec@^2.0.1": version "2.0.5" - resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz" integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== "@manypkg/find-root@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f" + resolved "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz" integrity sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== dependencies: "@babel/runtime" "^7.5.5" @@ -1690,7 +1670,7 @@ "@manypkg/get-packages@^1.1.3": version "1.1.3" - resolved "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz#e184db9bba792fa4693de4658cfb1463ac2c9c47" + resolved "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz" integrity sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A== dependencies: "@babel/runtime" "^7.5.5" @@ -1702,12 +1682,12 @@ "@module-federation/error-codes@0.21.6": version "0.21.6" - resolved "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.21.6.tgz#d0c9fa71f9469b2150165ef4461dfd5be0e7f79b" + resolved "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.21.6.tgz" integrity sha512-MLJUCQ05KnoVl8xd6xs9a5g2/8U+eWmVxg7xiBMeR0+7OjdWUbHwcwgVFatRIwSZvFgKHfWEiI7wsU1q1XbTRQ== "@module-federation/runtime-core@0.21.6": version "0.21.6" - resolved "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.21.6.tgz#2bcd24db2192179c96ce49772b09d72820ab9ea3" + resolved "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.21.6.tgz" integrity sha512-5Hd1Y5qp5lU/aTiK66lidMlM/4ji2gr3EXAtJdreJzkY+bKcI5+21GRcliZ4RAkICmvdxQU5PHPL71XmNc7Lsw== dependencies: "@module-federation/error-codes" "0.21.6" @@ -1715,7 +1695,7 @@ "@module-federation/runtime-tools@0.21.6": version "0.21.6" - resolved "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.21.6.tgz#40cbcc16af4c597169834a2d8b71a9d31779ab0c" + resolved "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.21.6.tgz" integrity sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q== dependencies: "@module-federation/runtime" "0.21.6" @@ -1723,7 +1703,7 @@ "@module-federation/runtime@0.21.6": version "0.21.6" - resolved "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.21.6.tgz#8d4a29a792ed4a94e5a811fe097d314a6f9dcab7" + resolved "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.21.6.tgz" integrity sha512-+caXwaQqwTNh+CQqyb4mZmXq7iEemRDrTZQGD+zyeH454JAYnJ3s/3oDFizdH6245pk+NiqDyOOkHzzFQorKhQ== dependencies: "@module-federation/error-codes" "0.21.6" @@ -1732,12 +1712,12 @@ "@module-federation/sdk@0.21.6": version "0.21.6" - resolved "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.21.6.tgz#8aac1159ff37f418ed72bc79afccbbfb025f847a" + resolved "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.21.6.tgz" integrity sha512-x6hARETb8iqHVhEsQBysuWpznNZViUh84qV2yE7AD+g7uIzHKiYdoWqj10posbo5XKf/147qgWDzKZoKoEP2dw== "@module-federation/webpack-bundler-runtime@0.21.6": version "0.21.6" - resolved "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.21.6.tgz#6831eaf147356fe5b096d24c7a902c323e810bb9" + resolved "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.21.6.tgz" integrity sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ== dependencies: "@module-federation/runtime" "0.21.6" @@ -1782,7 +1762,7 @@ "@npmcli/fs@^2.1.0": version "2.1.2" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz" integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== dependencies: "@gar/promisify" "^1.1.3" @@ -1790,7 +1770,7 @@ "@npmcli/move-file@^2.0.0": version "2.0.1" - resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz" integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== dependencies: mkdirp "^1.0.4" @@ -1798,27 +1778,27 @@ "@pkgjs/parseargs@^0.11.0": version "0.11.0" - resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@pkgr/core@^0.2.4": version "0.2.7" - resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz#eb5014dfd0b03e7f3ba2eeeff506eed89b028058" + resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz" integrity sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg== "@polka/url@^1.0.0-next.24": version "1.0.0-next.29" - resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz#5a40109a1ab5f84d6fd8fc928b19f367cbe7e7b1" + resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz" integrity sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww== "@rollup/plugin-alias@5.1.1": version "5.1.1" - resolved "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.1.1.tgz#53601d88cda8b1577aa130b4a6e452283605bf26" + resolved "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.1.1.tgz" integrity sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ== "@rollup/plugin-babel@6.0.4": version "6.0.4" - resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz#bd698e351fa9aa9619fcae780aea2a603d98e4c4" + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz" integrity sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw== dependencies: "@babel/helper-module-imports" "^7.18.6" @@ -1826,7 +1806,7 @@ "@rollup/plugin-commonjs@28.0.6": version "28.0.6" - resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.6.tgz#32425f28832a1831c4388b71541ef229ef34cd4c" + resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.6.tgz" integrity sha512-XSQB1K7FUU5QP+3lOQmVCE3I0FcbbNvmNT4VJSj93iUjayaARrTQeoRdiYQoftAJBLrR9t2agwAd3ekaTgHNlw== dependencies: "@rollup/pluginutils" "^5.0.1" @@ -1847,14 +1827,14 @@ "@rollup/plugin-json@6.1.0": version "6.1.0" - resolved "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz#fbe784e29682e9bb6dee28ea75a1a83702e7b805" + resolved "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz" integrity sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA== dependencies: "@rollup/pluginutils" "^5.1.0" "@rollup/plugin-node-resolve@16.0.1": version "16.0.1" - resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.1.tgz#2fc6b54ca3d77e12f3fb45b2a55b50720de4c95d" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.1.tgz" integrity sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA== dependencies: "@rollup/pluginutils" "^5.0.1" @@ -1865,7 +1845,7 @@ "@rollup/plugin-replace@6.0.2": version "6.0.2" - resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.2.tgz#2f565d312d681e4570ff376c55c5c08eb6f1908d" + resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.2.tgz" integrity sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ== dependencies: "@rollup/pluginutils" "^5.0.1" @@ -1890,7 +1870,7 @@ "@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.1.0": version "5.3.0" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz#57ba1b0cbda8e7a3c597a4853c807b156e21a7b4" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz" integrity sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q== dependencies: "@types/estree" "^1.0.0" @@ -1909,7 +1889,7 @@ "@rollup/rollup-darwin-arm64@4.52.3": version "4.52.3" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz#70a1679fb4393ba7bafb730ee56a5278cbcdafb0" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz" integrity sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg== "@rollup/rollup-darwin-x64@4.52.3": @@ -2009,7 +1989,7 @@ "@rspack/binding-darwin-arm64@1.6.8": version "1.6.8" - resolved "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.6.8.tgz#52987c0cbc487a240bdc6b1a31838372daddee2b" + resolved "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.6.8.tgz" integrity sha512-e8CTQtzaeGnf+BIzR7wRMUwKfIg0jd/sxMRc1Vd0bCMHBhSN9EsGoMuJJaKeRrSmy2nwMCNWHIG+TvT1CEKg+A== "@rspack/binding-darwin-x64@1.6.8": @@ -2061,7 +2041,7 @@ "@rspack/binding@1.6.8": version "1.6.8" - resolved "https://registry.npmjs.org/@rspack/binding/-/binding-1.6.8.tgz#c2cd2c31a4313ab10ad8ed871a5b9be0444046f3" + resolved "https://registry.npmjs.org/@rspack/binding/-/binding-1.6.8.tgz" integrity sha512-lUeL4mbwGo+nqRKqFDCm9vH2jv9FNMVt1X8jqayWRcOCPlj/2UVMEFgqjR7Pp2vlvnTKq//31KbDBJmDZq31RQ== optionalDependencies: "@rspack/binding-darwin-arm64" "1.6.8" @@ -2077,7 +2057,7 @@ "@rspack/cli@^1.5.3": version "1.6.8" - resolved "https://registry.npmjs.org/@rspack/cli/-/cli-1.6.8.tgz#ef644e718156c6764e835919b1a35123ce6157f5" + resolved "https://registry.npmjs.org/@rspack/cli/-/cli-1.6.8.tgz" integrity sha512-pFMYsov8Av7bNWEU9l0HCTk2A5vOPaaZBkZSkCs68U07tkMOQ58IvUiC5Uy1B780bqE2jBt/b6yA41uNmXScZg== dependencies: "@discoveryjs/json-ext" "^0.5.7" @@ -2087,7 +2067,7 @@ "@rspack/core@^1.5.3": version "1.6.8" - resolved "https://registry.npmjs.org/@rspack/core/-/core-1.6.8.tgz#b1f945a1a167f74394304ea93723616428d66095" + resolved "https://registry.npmjs.org/@rspack/core/-/core-1.6.8.tgz" integrity sha512-FolcIAH5FW4J2FET+qwjd1kNeFbCkd0VLuIHO0thyolEjaPSxw5qxG67DA7BZGm6PVcoiSgPLks1DL6eZ8c+fA== dependencies: "@module-federation/runtime-tools" "0.21.6" @@ -2096,7 +2076,7 @@ "@rspack/dev-server@~1.1.4": version "1.1.4" - resolved "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.1.4.tgz#f31096a9ff65cb29444e5cc86c03754aa6361b8f" + resolved "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.1.4.tgz" integrity sha512-kGHYX2jYf3ZiHwVl0aUEPBOBEIG1aWleCDCAi+Jg32KUu3qr/zDUpCEd0wPuHfLEgk0X0xAEYCS6JMO7nBStNQ== dependencies: chokidar "^3.6.0" @@ -2107,32 +2087,27 @@ "@rspack/lite-tapable@1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz#3cfdafeed01078e116bd4f191b684c8b484de425" + resolved "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz" integrity sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw== "@rtsao/scc@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== -"@tauri-apps/api@2.2.0": +"@tauri-apps/api@2.2.0", "@tauri-apps/api@^2.0.0": version "2.2.0" - resolved "https://registry.npmjs.org/@tauri-apps/api/-/api-2.2.0.tgz#daaff2515b1a4ff1e763cf84a414548b02b566c5" + resolved "https://registry.npmjs.org/@tauri-apps/api/-/api-2.2.0.tgz" integrity sha512-R8epOeZl1eJEl603aUMIGb4RXlhPjpgxbGVEaqY+0G5JG9vzV/clNlzTeqc+NLYXVqXcn8mb4c5b9pJIUDEyAg== -"@tauri-apps/api@^2.0.0": - version "2.4.0" - resolved "https://registry.npmjs.org/@tauri-apps/api/-/api-2.4.0.tgz#1b93976a129383ad914e979402431a63045c6329" - integrity sha512-F1zXTsmwcCp+ocg6fbzD/YL0OHeSG1eynCag1UNlX2tD5+dlXy7eRbTu9cAcscPjcR7Nix7by2wiv/+VfWUieg== - "@tauri-apps/api@^2.8.0": version "2.9.1" - resolved "https://registry.npmjs.org/@tauri-apps/api/-/api-2.9.1.tgz#e539bfa437e53864fd5e7ed0f28e8217fbc74de1" + resolved "https://registry.npmjs.org/@tauri-apps/api/-/api-2.9.1.tgz" integrity sha512-IGlhP6EivjXHepbBic618GOmiWe4URJiIeZFlB7x3czM0yDHHYviH1Xvoiv4FefdkQtn6v7TuwWCRfOGdnVUGw== "@tauri-apps/cli-darwin-arm64@2.2.5": version "2.2.5" - resolved "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.2.5.tgz#6a4265d99120c5464cd9df6deec5aad3f028bf67" + resolved "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.2.5.tgz" integrity sha512-qdPmypQE7qj62UJy3Wl/ccCJZwsv5gyBByOrAaG7u5c/PB3QSxhNPegice2k4EHeIuApaVJOoe/CEYVgm/og2Q== "@tauri-apps/cli-darwin-x64@2.2.5": @@ -2182,7 +2157,7 @@ "@tauri-apps/cli@2.2.5": version "2.2.5" - resolved "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.2.5.tgz#d146f02201c5ab580513db2030de33e9a2a666ce" + resolved "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.2.5.tgz" integrity sha512-PaefTQUCYYqvZWdH8EhXQkyJEjQwtoy/OHGoPcZx7Gk3D3K6AtGSxZ9OlHIz3Bu5LDGgVBk36vKtHW0WYsWnbw== optionalDependencies: "@tauri-apps/cli-darwin-arm64" "2.2.5" @@ -2198,28 +2173,28 @@ "@tauri-apps/plugin-dialog@2.2.0": version "2.2.0" - resolved "https://registry.npmjs.org/@tauri-apps/plugin-dialog/-/plugin-dialog-2.2.0.tgz#2f7b841a982820adbc9c182e0e95acd8d90aa6fc" + resolved "https://registry.npmjs.org/@tauri-apps/plugin-dialog/-/plugin-dialog-2.2.0.tgz" integrity sha512-6bLkYK68zyK31418AK5fNccCdVuRnNpbxquCl8IqgFByOgWFivbiIlvb79wpSXi0O+8k8RCSsIpOquebusRVSg== dependencies: "@tauri-apps/api" "^2.0.0" "@tauri-apps/plugin-fs@2.2.0": version "2.2.0" - resolved "https://registry.npmjs.org/@tauri-apps/plugin-fs/-/plugin-fs-2.2.0.tgz#3cf2968139a9cd9e4d12a7a7176c0b59e446b0a3" + resolved "https://registry.npmjs.org/@tauri-apps/plugin-fs/-/plugin-fs-2.2.0.tgz" integrity sha512-+08mApuONKI8/sCNEZ6AR8vf5vI9DXD4YfrQ9NQmhRxYKMLVhRW164vdW5BSLmMpuevftpQ2FVoL9EFkfG9Z+g== dependencies: "@tauri-apps/api" "^2.0.0" "@tauri-apps/plugin-global-shortcut@^2.3.1": version "2.3.1" - resolved "https://registry.npmjs.org/@tauri-apps/plugin-global-shortcut/-/plugin-global-shortcut-2.3.1.tgz#c9c7a3db688eaaac2e1a9e22a37beb60004f2ed5" + resolved "https://registry.npmjs.org/@tauri-apps/plugin-global-shortcut/-/plugin-global-shortcut-2.3.1.tgz" integrity sha512-vr40W2N6G63dmBPaha1TsBQLLURXG538RQbH5vAm0G/ovVZyXJrmZR1HF1W+WneNloQvwn4dm8xzwpEXRW560g== dependencies: "@tauri-apps/api" "^2.8.0" "@tauri-apps/plugin-opener@2.2.0": version "2.2.0" - resolved "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.2.0.tgz#a9aa3272a440f2a011228acb3c46c0619506914d" + resolved "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.2.0.tgz" integrity sha512-FSOjVsIKlRWPjjcnHgrjdxJlOFfPTkw5GtfutCyJSDyHJ/M3NULd8dkGewkWwozDFwiAJj1hqaj2R3K12uXWIw== dependencies: "@tauri-apps/api" "^2.0.0" @@ -2231,7 +2206,7 @@ "@trysound/sax@0.2.0": version "0.2.0" - resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@tybys/wasm-util@^0.10.1": @@ -2243,7 +2218,7 @@ "@types/body-parser@*": version "1.19.6" - resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz" integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== dependencies: "@types/connect" "*" @@ -2251,7 +2226,7 @@ "@types/bonjour@^3.5.13": version "3.5.13" - resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz" integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== dependencies: "@types/node" "*" @@ -2265,7 +2240,7 @@ "@types/connect-history-api-fallback@^1.5.4": version "1.5.4" - resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz" integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== dependencies: "@types/express-serve-static-core" "*" @@ -2273,7 +2248,7 @@ "@types/connect@*": version "3.4.38" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== dependencies: "@types/node" "*" @@ -2294,22 +2269,12 @@ "@types/estree@*", "@types/estree@1.0.8", "@types/estree@^1.0.0": version "1.0.8" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz#74f47555b3d804b54cb7030e6f9aa0c7485cfc5b" - integrity sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express-serve-static-core@^4.17.21", "@types/express-serve-static-core@^4.17.33": +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.21", "@types/express-serve-static-core@^4.17.33": version "4.19.7" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz#f1d306dcc03b1aafbfb6b4fe684cce8a31cffc10" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz" integrity sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg== dependencies: "@types/node" "*" @@ -2317,18 +2282,9 @@ "@types/range-parser" "*" "@types/send" "*" -"@types/express@*": - version "5.0.6" - resolved "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz#2d724b2c990dcb8c8444063f3580a903f6d500cc" - integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^5.0.0" - "@types/serve-static" "^2" - -"@types/express@^4.17.21": +"@types/express@*", "@types/express@^4.17.21": version "4.17.25" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz#070c8c73a6fee6936d65c195dbbfb7da5026649b" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz" integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== dependencies: "@types/body-parser" "*" @@ -2346,12 +2302,12 @@ "@types/http-errors@*": version "2.0.5" - resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz#5b749ab2b16ba113423feb1a64a95dcd30398472" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz" integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== "@types/http-proxy@^1.17.8": version "1.17.17" - resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz#d9e2c4571fe3507343cb210cd41790375e59a533" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz" integrity sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw== dependencies: "@types/node" "*" @@ -2367,7 +2323,7 @@ "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/json5@^0.0.29": @@ -2382,17 +2338,17 @@ "@types/mathjax@0.0.37": version "0.0.37" - resolved "https://registry.npmjs.org/@types/mathjax/-/mathjax-0.0.37.tgz#31a0076ced55c2e12da75edb44db45098b6feed6" + resolved "https://registry.npmjs.org/@types/mathjax/-/mathjax-0.0.37.tgz" integrity sha512-y0WSZBtBNQwcYipTU/BhgeFu1EZNlFvUNCmkMXV9kBQZq7/o5z82dNVyH3yy2Xv5zzeNeQoHSL4Xm06+EQiH+g== "@types/mermaid@^8.2.6": version "8.2.9" - resolved "https://registry.npmjs.org/@types/mermaid/-/mermaid-8.2.9.tgz#1844505dcffcd47703e94628a6200583d35c2c76" + resolved "https://registry.npmjs.org/@types/mermaid/-/mermaid-8.2.9.tgz" integrity sha512-f1i8fNoVFVJXedk+R7GcEk4KoOWzWAU3CzFqlVw1qWKktfsataBERezCz1pOdKy8Ec02ZdPQXGM7NU2lPHABYQ== "@types/mime@^1": version "1.3.5" - resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== "@types/minimatch@*": @@ -2407,28 +2363,23 @@ "@types/node-forge@^1.3.0": version "1.3.14" - resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz#006c2616ccd65550560c2757d8472eb6d3ecea0b" + resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz" integrity sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw== dependencies: "@types/node" "*" -"@types/node@*": - version "17.0.45" - resolved "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz" - integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== - -"@types/node@^12.7.1": - version "12.20.55" - resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" - integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== - -"@types/node@^20.10.6": +"@types/node@*", "@types/node@^20.10.6": version "20.19.27" - resolved "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz#d51333f77953a5e4e71d3b5aefa83ec5297fbb80" + resolved "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz" integrity sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug== dependencies: undici-types "~6.21.0" +"@types/node@^12.7.1": + version "12.20.55" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz" @@ -2441,12 +2392,12 @@ "@types/qs@*": version "6.14.0" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz" integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== "@types/range-parser@*": version "1.2.7" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== "@types/resolve@1.20.2": @@ -2456,24 +2407,24 @@ "@types/retry@0.12.2": version "0.12.2" - resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz" integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== "@types/semver@^7.5.0": version "7.7.0" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz" integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== "@types/send@*": version "1.2.1" - resolved "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz#6a784e45543c18c774c049bff6d3dbaf045c9c74" + resolved "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz" integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== dependencies: "@types/node" "*" "@types/send@<1": version "0.17.6" - resolved "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz" integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== dependencies: "@types/mime" "^1" @@ -2481,31 +2432,23 @@ "@types/serve-index@^1.9.4": version "1.9.4" - resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz" integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== dependencies: "@types/express" "*" "@types/serve-static@^1", "@types/serve-static@^1.15.5": version "1.15.10" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz" integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== dependencies: "@types/http-errors" "*" "@types/node" "*" "@types/send" "<1" -"@types/serve-static@^2": - version "2.2.0" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz#d4a447503ead0d1671132d1ab6bd58b805d8de6a" - integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - "@types/sockjs@^0.3.36": version "0.3.36" - resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz" integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== dependencies: "@types/node" "*" @@ -2529,7 +2472,7 @@ "@types/trusted-types@^2.0.7": version "2.0.7" - resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== "@types/virtual-dom@^2.1.0": @@ -2539,12 +2482,12 @@ "@types/vscode@^1.58.0": version "1.98.0" - resolved "https://registry.npmjs.org/@types/vscode/-/vscode-1.98.0.tgz#5b6fa5bd99ba15313567d3847fb1177832fee08c" + resolved "https://registry.npmjs.org/@types/vscode/-/vscode-1.98.0.tgz" integrity sha512-+KuiWhpbKBaG2egF+51KjbGWatTH5BbmWQjSLMDCssb4xF8FJnW4nGH4nuAdOOfMbpD0QlHtI+C3tPq+DoKElg== "@types/ws@^8.5.10": version "8.18.1" - resolved "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz" integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== dependencies: "@types/node" "*" @@ -2556,7 +2499,7 @@ "@typescript-eslint/eslint-plugin@7.18.0": version "7.18.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz" integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== dependencies: "@eslint-community/regexpp" "^4.10.0" @@ -2571,7 +2514,7 @@ "@typescript-eslint/eslint-plugin@^6.21.0": version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz" integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== dependencies: "@eslint-community/regexpp" "^4.5.1" @@ -2588,7 +2531,7 @@ "@typescript-eslint/parser@7.18.0": version "7.18.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz" integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== dependencies: "@typescript-eslint/scope-manager" "7.18.0" @@ -2599,7 +2542,7 @@ "@typescript-eslint/parser@^6.21.0": version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz" integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== dependencies: "@typescript-eslint/scope-manager" "6.21.0" @@ -2610,7 +2553,7 @@ "@typescript-eslint/scope-manager@6.21.0": version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz" integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== dependencies: "@typescript-eslint/types" "6.21.0" @@ -2618,7 +2561,7 @@ "@typescript-eslint/scope-manager@7.18.0": version "7.18.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz" integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== dependencies: "@typescript-eslint/types" "7.18.0" @@ -2626,7 +2569,7 @@ "@typescript-eslint/type-utils@6.21.0": version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz" integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== dependencies: "@typescript-eslint/typescript-estree" "6.21.0" @@ -2636,7 +2579,7 @@ "@typescript-eslint/type-utils@7.18.0": version "7.18.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz" integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== dependencies: "@typescript-eslint/typescript-estree" "7.18.0" @@ -2646,17 +2589,17 @@ "@typescript-eslint/types@6.21.0": version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz" integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== "@typescript-eslint/types@7.18.0": version "7.18.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz" integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== "@typescript-eslint/typescript-estree@6.21.0": version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz" integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== dependencies: "@typescript-eslint/types" "6.21.0" @@ -2670,7 +2613,7 @@ "@typescript-eslint/typescript-estree@7.18.0": version "7.18.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz" integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== dependencies: "@typescript-eslint/types" "7.18.0" @@ -2684,7 +2627,7 @@ "@typescript-eslint/utils@6.21.0": version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz" integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" @@ -2697,7 +2640,7 @@ "@typescript-eslint/utils@7.18.0": version "7.18.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz" integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== dependencies: "@eslint-community/eslint-utils" "^4.4.0" @@ -2707,7 +2650,7 @@ "@typescript-eslint/visitor-keys@6.21.0": version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz" integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== dependencies: "@typescript-eslint/types" "6.21.0" @@ -2715,7 +2658,7 @@ "@typescript-eslint/visitor-keys@7.18.0": version "7.18.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz" integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== dependencies: "@typescript-eslint/types" "7.18.0" @@ -2723,22 +2666,22 @@ "@ungap/promise-all-settled@1.1.2": version "1.1.2" - resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== "@ungap/structured-clone@^1.2.0": version "1.3.0" - resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== "@vitejs/plugin-vue@^5.2.1": version "5.2.3" - resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz#71a8fc82d4d2e425af304c35bf389506f674d89b" + resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz" integrity sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg== "@vitest/coverage-v8@3.1.3": version "3.1.3" - resolved "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.1.3.tgz#d40e21d11384ef55d12ece1cb711b32930deb499" + resolved "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.1.3.tgz" integrity sha512-cj76U5gXCl3g88KSnf80kof6+6w+K4BjOflCl7t6yRJPDuCrHtVu0SgNYOUARJOL5TI8RScDbm5x4s1/P9bvpw== dependencies: "@ampproject/remapping" "^2.3.0" @@ -2756,7 +2699,7 @@ "@vitest/expect@3.1.3": version "3.1.3" - resolved "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.3.tgz#bbca175cd2f23d7de9448a215baed8f3d7abd7b7" + resolved "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.3.tgz" integrity sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg== dependencies: "@vitest/spy" "3.1.3" @@ -2766,7 +2709,7 @@ "@vitest/mocker@3.1.3": version "3.1.3" - resolved "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.3.tgz#121d0f2fcca20c9ccada9e2d6e761f7fc687f4ce" + resolved "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.3.tgz" integrity sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ== dependencies: "@vitest/spy" "3.1.3" @@ -2775,14 +2718,14 @@ "@vitest/pretty-format@3.1.3", "@vitest/pretty-format@^3.1.3": version "3.1.3" - resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.3.tgz#760b9eab5f253d7d2e7dcd28ef34570f584023d4" + resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.3.tgz" integrity sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA== dependencies: tinyrainbow "^2.0.0" "@vitest/runner@3.1.3": version "3.1.3" - resolved "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.3.tgz#b268fa90fca38fab363f1107f057c0a2a141ee45" + resolved "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.3.tgz" integrity sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA== dependencies: "@vitest/utils" "3.1.3" @@ -2790,7 +2733,7 @@ "@vitest/snapshot@3.1.3": version "3.1.3" - resolved "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.3.tgz#39a8f9f8c6ba732ffde59adeacf0a549bef11e76" + resolved "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.3.tgz" integrity sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ== dependencies: "@vitest/pretty-format" "3.1.3" @@ -2799,14 +2742,14 @@ "@vitest/spy@3.1.3": version "3.1.3" - resolved "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.3.tgz#ca81e2b4f0c3d6c75f35defa77c3336f39c8f605" + resolved "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.3.tgz" integrity sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ== dependencies: tinyspy "^3.0.2" "@vitest/utils@3.1.3": version "3.1.3" - resolved "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.3.tgz#4f31bdfd646cd82d30bfa730d7410cb59d529669" + resolved "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.3.tgz" integrity sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg== dependencies: "@vitest/pretty-format" "3.1.3" @@ -2815,19 +2758,19 @@ "@volar/language-core@2.4.27": version "2.4.27" - resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.27.tgz#c66d44cd22a914384d238bbcd0f621ecc57e3618" + resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.27.tgz" integrity sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ== dependencies: "@volar/source-map" "2.4.27" "@volar/source-map@2.4.27": version "2.4.27" - resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.27.tgz#8ce6f16e207987078fd866e2faf65c35c4d15987" + resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.27.tgz" integrity sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg== "@volar/typescript@2.4.27": version "2.4.27" - resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.27.tgz#8950318a33d5dfcdc4b0e5bbe5a38c1b8383eae6" + resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.27.tgz" integrity sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg== dependencies: "@volar/language-core" "2.4.27" @@ -2836,7 +2779,7 @@ "@vue/compiler-core@3.5.13": version "3.5.13" - resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz#b0ae6c4347f60c03e849a05d34e5bf747c9bda05" + resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz" integrity sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q== dependencies: "@babel/parser" "^7.25.3" @@ -2847,7 +2790,7 @@ "@vue/compiler-dom@3.5.13", "@vue/compiler-dom@^3.5.0": version "3.5.13" - resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz#bb1b8758dbc542b3658dda973b98a1c9311a8a58" + resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz" integrity sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA== dependencies: "@vue/compiler-core" "3.5.13" @@ -2855,7 +2798,7 @@ "@vue/compiler-sfc@3.5.13": version "3.5.13" - resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz#461f8bd343b5c06fac4189c4fef8af32dea82b46" + resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz" integrity sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ== dependencies: "@babel/parser" "^7.25.3" @@ -2870,7 +2813,7 @@ "@vue/compiler-ssr@3.5.13": version "3.5.13" - resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz#e771adcca6d3d000f91a4277c972a996d07f43ba" + resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz" integrity sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA== dependencies: "@vue/compiler-dom" "3.5.13" @@ -2878,14 +2821,14 @@ "@vue/devtools-api@^7.7.7": version "7.7.9" - resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.9.tgz#999dbea50da6b00cf59a1336f11fdc2b43d9e063" + resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.9.tgz" integrity sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g== dependencies: "@vue/devtools-kit" "^7.7.9" "@vue/devtools-kit@^7.7.9": version "7.7.9" - resolved "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.9.tgz#bc218a815616e8987df7ab3e10fc1fb3b8706c58" + resolved "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.9.tgz" integrity sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA== dependencies: "@vue/devtools-shared" "^7.7.9" @@ -2898,14 +2841,14 @@ "@vue/devtools-shared@^7.7.9": version "7.7.9" - resolved "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.9.tgz#fa4c096b744927081a7dda5fcf05f34b1ae6ca14" + resolved "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.9.tgz" integrity sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA== dependencies: rfdc "^1.4.1" "@vue/language-core@3.2.2": version "3.2.2" - resolved "https://registry.npmjs.org/@vue/language-core/-/language-core-3.2.2.tgz#00af7f3ba584f2d4cbf17c564a00e0437c19823e" + resolved "https://registry.npmjs.org/@vue/language-core/-/language-core-3.2.2.tgz" integrity sha512-5DAuhxsxBN9kbriklh3Q5AMaJhyOCNiQJvCskN9/30XOpdLiqZU9Q+WvjArP17ubdGEyZtBzlIeG5nIjEbNOrQ== dependencies: "@volar/language-core" "2.4.27" @@ -2918,14 +2861,14 @@ "@vue/reactivity@3.5.13": version "3.5.13" - resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz#b41ff2bb865e093899a22219f5b25f97b6fe155f" + resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz" integrity sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg== dependencies: "@vue/shared" "3.5.13" "@vue/runtime-core@3.5.13": version "3.5.13" - resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz#1fafa4bf0b97af0ebdd9dbfe98cd630da363a455" + resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz" integrity sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw== dependencies: "@vue/reactivity" "3.5.13" @@ -2933,7 +2876,7 @@ "@vue/runtime-dom@3.5.13": version "3.5.13" - resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz#610fc795de9246300e8ae8865930d534e1246215" + resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz" integrity sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog== dependencies: "@vue/reactivity" "3.5.13" @@ -2943,7 +2886,7 @@ "@vue/server-renderer@3.5.13": version "3.5.13" - resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz#429ead62ee51de789646c22efe908e489aad46f7" + resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz" integrity sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA== dependencies: "@vue/compiler-ssr" "3.5.13" @@ -2951,7 +2894,7 @@ "@vue/shared@3.5.13", "@vue/shared@^3.5.0": version "3.5.13" - resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f" + resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz" integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ== "@zeit/schemas@2.36.0": @@ -2961,7 +2904,7 @@ JSONStream@^1.0.4, JSONStream@^1.3.5: version "1.3.5" - resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" @@ -2974,7 +2917,7 @@ abab@^2.0.5, abab@^2.0.6: abbrev@^1.0.0: version "1.1.1" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: @@ -3005,12 +2948,12 @@ acorn-walk@^7.1.1: acorn-walk@^8.0.0: version "8.3.4" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz" integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== dependencies: acorn "^8.11.0" -acorn@8.11.3: +acorn@8.11.3, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.5.0, acorn@^8.8.2, acorn@^8.9.0: version "8.11.3" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== @@ -3020,9 +2963,9 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.11.0, acorn@^8.15.0, acorn@^8.5.0, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.15.0: version "8.15.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== add-stream@^1.0.0: @@ -3039,7 +2982,7 @@ agent-base@6, agent-base@^6.0.2: agentkeepalive@^4.2.1: version "4.6.0" - resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz" integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== dependencies: humanize-ms "^1.2.1" @@ -3054,14 +2997,14 @@ aggregate-error@^3.0.0: ajv-formats@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" ajv-keywords@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== dependencies: fast-deep-equal "^3.1.3" @@ -3088,7 +3031,7 @@ ajv@^6.10.0, ajv@^6.12.4: ajv@^8.0.0, ajv@^8.0.1, ajv@^8.11.0, ajv@^8.9.0: version "8.17.1" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== dependencies: fast-deep-equal "^3.1.3" @@ -3098,7 +3041,7 @@ ajv@^8.0.0, ajv@^8.0.1, ajv@^8.11.0, ajv@^8.9.0: alien-signals@^3.0.0: version "3.1.2" - resolved "https://registry.npmjs.org/alien-signals/-/alien-signals-3.1.2.tgz#26e623e3ed81e401df1a7c503f726e2288a4fa02" + resolved "https://registry.npmjs.org/alien-signals/-/alien-signals-3.1.2.tgz" integrity sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw== ansi-align@^3.0.1: @@ -3110,7 +3053,7 @@ ansi-align@^3.0.1: ansi-colors@4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-colors@^1.0.1: @@ -3122,7 +3065,7 @@ ansi-colors@^1.0.1: ansi-colors@^4.1.1, ansi-colors@^4.1.3: version "4.1.3" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^4.3.0: @@ -3141,27 +3084,27 @@ ansi-gray@^0.1.1: ansi-html-community@^0.0.8: version "0.0.8" - resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== ansi-regex@^2.0.0: version "2.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: version "6.2.2" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz" integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== ansi-styles@^2.2.1: @@ -3203,7 +3146,7 @@ anymatch@^3.1.3, anymatch@~3.1.1, anymatch@~3.1.2: "aproba@^1.0.3 || ^2.0.0": version "2.0.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== arch@^2.2.0: @@ -3213,7 +3156,7 @@ arch@^2.2.0: are-we-there-yet@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz" integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== dependencies: delegates "^1.0.0" @@ -3248,7 +3191,7 @@ arr-union@^3.1.0: array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz" integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== dependencies: call-bound "^1.0.3" @@ -3256,7 +3199,7 @@ array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: array-differ@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + resolved "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz" integrity sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ== array-each@^1.0.1: @@ -3266,7 +3209,7 @@ array-each@^1.0.1: array-flatten@1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array-ify@^1.0.0: @@ -3276,7 +3219,7 @@ array-ify@^1.0.0: array-includes@^3.1.6, array-includes@^3.1.8, array-includes@^3.1.9: version "3.1.9" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz" integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== dependencies: call-bind "^1.0.8" @@ -3300,12 +3243,12 @@ array-union@^2.1.0: array-uniq@^1.0.2: version "1.0.3" - resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== array.prototype.findlast@^1.2.5: version "1.2.5" - resolved "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + resolved "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz" integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== dependencies: call-bind "^1.0.7" @@ -3317,7 +3260,7 @@ array.prototype.findlast@^1.2.5: array.prototype.findlastindex@^1.2.6: version "1.2.6" - resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" + resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz" integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== dependencies: call-bind "^1.0.8" @@ -3330,7 +3273,7 @@ array.prototype.findlastindex@^1.2.6: array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.3: version "1.3.3" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz" integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== dependencies: call-bind "^1.0.8" @@ -3340,7 +3283,7 @@ array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.3: array.prototype.flatmap@1.2.4: version "1.2.4" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz" integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== dependencies: call-bind "^1.0.0" @@ -3350,7 +3293,7 @@ array.prototype.flatmap@1.2.4: array.prototype.flatmap@^1.3.3: version "1.3.3" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz" integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== dependencies: call-bind "^1.0.8" @@ -3373,7 +3316,7 @@ array.prototype.reduce@^1.0.6: array.prototype.tosorted@^1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz" integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== dependencies: call-bind "^1.0.7" @@ -3384,7 +3327,7 @@ array.prototype.tosorted@^1.1.4: arraybuffer.prototype.slice@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz" integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== dependencies: array-buffer-byte-length "^1.0.1" @@ -3402,7 +3345,7 @@ arrify@^1.0.1: assertion-error@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz" integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== assign-symbols@^1.0.0: @@ -3417,7 +3360,7 @@ astral-regex@^2.0.0: async-done@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz#f1ec5df738c6383a52b0a30d0902fd897329c15a" + resolved "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz" integrity sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw== dependencies: end-of-stream "^1.4.4" @@ -3426,12 +3369,12 @@ async-done@^2.0.0: async-function@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b" + resolved "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz" integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== async-settle@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz#c695ad14e070f6a755d019d32d6eb38029020287" + resolved "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz" integrity sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg== dependencies: async-done "^2.0.0" @@ -3455,7 +3398,7 @@ available-typed-arrays@^1.0.7: axios@^1.4.0: version "1.8.4" - resolved "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz#78990bb4bc63d2cae072952d374835950a82f447" + resolved "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz" integrity sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw== dependencies: follow-redirects "^1.15.6" @@ -3464,7 +3407,7 @@ axios@^1.4.0: b4a@^1.6.4: version "1.6.7" - resolved "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz#a99587d4ebbfbd5a6e3b21bdb5d5fa385767abe4" + resolved "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz" integrity sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg== babel-plugin-polyfill-corejs2@^0.4.10: @@ -3486,7 +3429,7 @@ babel-plugin-polyfill-corejs3@^0.10.1: babel-plugin-polyfill-corejs3@^0.11.0: version "0.11.1" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz#4e4e182f1bb37c7ba62e2af81d8dd09df31344f6" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz" integrity sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ== dependencies: "@babel/helper-define-polyfill-provider" "^0.6.3" @@ -3506,7 +3449,7 @@ babel-plugin-prismjs@^2.1.0: bach@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/bach/-/bach-2.0.1.tgz#45a3a3cbf7dbba3132087185c60357482b988972" + resolved "https://registry.npmjs.org/bach/-/bach-2.0.1.tgz" integrity sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg== dependencies: async-done "^2.0.0" @@ -3520,7 +3463,7 @@ balanced-match@^1.0.0: bare-events@^2.2.0: version "2.5.4" - resolved "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz#16143d435e1ed9eafd1ab85f12b89b3357a41745" + resolved "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz" integrity sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA== base64-arraybuffer@^1.0.2: @@ -3535,17 +3478,17 @@ base64-js@^1.3.1: batch@0.6.1: version "0.6.1" - resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== beeper@^1.0.0: version "1.1.1" - resolved "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + resolved "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz" integrity sha512-3vqtKL1N45I5dV0RdssXZG7X6pCqQrWPNOlBPZPrd+QkE2HEhR57Z04m0KtpbsZH73j+a3F8UD1TQnn+ExTvIA== better-path-resolve@1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz#13a35a1104cdd48a7b74bf8758f96a1ee613f99d" + resolved "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz" integrity sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g== dependencies: is-windows "^1.0.0" @@ -3564,12 +3507,12 @@ bindings@^1.5.0: birpc@^2.3.0: version "2.9.0" - resolved "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz#b59550897e4cd96a223e2a6c1475b572236ed145" + resolved "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz" integrity sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw== bl@^5.0.0: version "5.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" + resolved "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz" integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== dependencies: buffer "^6.0.3" @@ -3583,7 +3526,7 @@ bluebird@^3.1.1: body-parser@~1.20.3: version "1.20.4" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz#f8e20f4d06ca8a50a71ed329c15dccad1cdc547f" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz" integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA== dependencies: bytes "~3.1.2" @@ -3601,7 +3544,7 @@ body-parser@~1.20.3: bonjour-service@^1.2.1: version "1.3.0" - resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" + resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz" integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== dependencies: fast-deep-equal "^3.1.3" @@ -3660,12 +3603,12 @@ browser-split@0.0.1: browser-stdout@1.3.1: version "1.3.1" - resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== browserslist@^4.0.0, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.24.4: version "4.25.1" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz" integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== dependencies: caniuse-lite "^1.0.30001726" @@ -3680,7 +3623,7 @@ buffer-from@^1.0.0: buffer@^6.0.3: version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" @@ -3688,21 +3631,21 @@ buffer@^6.0.3: bufferstreams@^1.0.2, bufferstreams@^1.1.0: version "1.1.3" - resolved "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.3.tgz#a8515ac024fa90e8fa7d58c11b13dea1f28abe72" + resolved "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.3.tgz" integrity sha512-HaJnVuslRF4g2kSDeyl++AaVizoitCpL9PglzCYwy0uHHyvWerfvEb8jWmYbF1z4kiVFolGomnxSGl+GUQp2jg== dependencies: readable-stream "^2.0.2" bufferstreams@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/bufferstreams/-/bufferstreams-3.0.0.tgz#d2cb186cffeb527668341891e523c19539bc4a14" + resolved "https://registry.npmjs.org/bufferstreams/-/bufferstreams-3.0.0.tgz" integrity sha512-Qg0ggJUWJq90vtg4lDsGN9CDWvzBMQxhiEkSOD/sJfYt6BLect3eV1/S6K7SCSKJ34n60rf6U5eUPmQENVE4UA== dependencies: readable-stream "^3.4.0" bundle-name@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" + resolved "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz" integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== dependencies: run-applescript "^7.0.0" @@ -3712,19 +3655,19 @@ bytes@3.0.0: resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== -bytes@3.1.2, bytes@~3.1.2: +bytes@~3.1.2: version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cac@^6.7.14: version "6.7.14" - resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz" integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== cacache@^16.1.0: version "16.1.3" - resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz" integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== dependencies: "@npmcli/fs" "^2.1.0" @@ -3748,7 +3691,7 @@ cacache@^16.1.0: call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== dependencies: es-errors "^1.3.0" @@ -3756,7 +3699,7 @@ call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply- call-bind@^1.0.0, call-bind@^1.0.7, call-bind@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz" integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== dependencies: call-bind-apply-helpers "^1.0.0" @@ -3766,7 +3709,7 @@ call-bind@^1.0.0, call-bind@^1.0.7, call-bind@^1.0.8: call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== dependencies: call-bind-apply-helpers "^1.0.2" @@ -3818,12 +3761,12 @@ caniuse-api@^3.0.0: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001726: version "1.0.30001726" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz#a15bd87d5a4bf01f6b6f70ae7c97fdfd28b5ae47" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz" integrity sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw== chai@^5.2.0: version "5.2.0" - resolved "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz#1358ee106763624114addf84ab02697e411c9c05" + resolved "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz" integrity sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw== dependencies: assertion-error "^2.0.1" @@ -3884,12 +3827,12 @@ chardet@^0.7.0: charenc@0.0.2: version "0.0.2" - resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== check-error@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" + resolved "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz" integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== cheerio-select@^1.5.0: @@ -3932,7 +3875,7 @@ cherry-markdown@*: chokidar@3.5.1: version "3.5.1" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: anymatch "~3.1.1" @@ -3967,7 +3910,7 @@ chownr@^2.0.0: ci-info@^3.7.0: version "3.9.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== clean-stack@^2.0.0: @@ -4046,7 +3989,7 @@ clone-deep@^4.0.1: clone-stats@^0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + resolved "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" integrity sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA== clone-stats@^1.0.0: @@ -4097,12 +4040,12 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: +color-name@1.1.3, color-name@^1.0.0: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@^1.0.0, color-name@~1.1.4: +color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -4130,7 +4073,7 @@ color@^3.1.3: colord@^2.9.1: version "2.9.3" - resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== colorette@^2.0.10, colorette@^2.0.16: @@ -4170,7 +4113,7 @@ commander@^2.20.0: commander@^4.0.1: version "4.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commander@^6.1.0, commander@^6.2.0: @@ -4180,7 +4123,7 @@ commander@^6.1.0, commander@^6.2.0: commander@^8.3.0: version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== commander@^9.3.0: @@ -4190,14 +4133,14 @@ commander@^9.3.0: commander@~1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz#50d1651868ae60eccff0a2d9f34595376bc6b041" + resolved "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz" integrity sha512-71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA== dependencies: keypress "0.1.x" commitlint@^19.6.1: version "19.8.0" - resolved "https://registry.npmjs.org/commitlint/-/commitlint-19.8.0.tgz#032f9f1a1ca6393cca252a8a2b9250523aeb1ed2" + resolved "https://registry.npmjs.org/commitlint/-/commitlint-19.8.0.tgz" integrity sha512-O5waRm0RsjH1g2sT4ifTV58sBYW3wPjfclsdicj1NWUyF91aF0fSqFgKC8EEOUi9RRLKBOhlJarS6V1jWIUx1Q== dependencies: "@commitlint/cli" "^19.8.0" @@ -4216,14 +4159,14 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -compressible@~2.0.16, compressible@~2.0.18: +compressible@~2.0.16: version "2.0.18" resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: mime-db ">= 1.43.0 < 2" -compression@1.7.4: +compression@1.7.4, compression@^1.7.4: version "1.7.4" resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -4236,19 +4179,6 @@ compression@1.7.4: safe-buffer "5.1.2" vary "~1.1.2" -compression@^1.7.4: - version "1.8.1" - resolved "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79" - integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== - dependencies: - bytes "3.1.2" - compressible "~2.0.18" - debug "2.6.9" - negotiator "~0.6.4" - on-headers "~1.1.0" - safe-buffer "5.2.1" - vary "~1.1.2" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" @@ -4273,12 +4203,12 @@ concat-with-sourcemaps@^1.1.0: connect-history-api-fallback@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== console-control-strings@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== consolidate@~0.14.0: @@ -4295,14 +4225,14 @@ content-disposition@0.5.2: content-disposition@~0.5.4: version "0.5.4" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" content-type@~1.0.4, content-type@~1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== conventional-changelog-angular@^5.0.12: @@ -4315,7 +4245,7 @@ conventional-changelog-angular@^5.0.12: conventional-changelog-angular@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz" integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== dependencies: compare-func "^2.0.0" @@ -4350,7 +4280,7 @@ conventional-changelog-conventionalcommits@4.6.3, conventional-changelog-convent conventional-changelog-conventionalcommits@^7.0.2: version "7.0.2" - resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz#aa5da0f1b2543094889e8cf7616ebe1a8f5c70d5" + resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz" integrity sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w== dependencies: compare-func "^2.0.0" @@ -4470,7 +4400,7 @@ conventional-commits-parser@^3.2.0: conventional-commits-parser@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz#57f3594b81ad54d40c1b4280f04554df28627d9a" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz" integrity sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA== dependencies: JSONStream "^1.3.5" @@ -4499,24 +4429,24 @@ convert-source-map@^2.0.0: cookie-signature@~1.0.6: version "1.0.7" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz" integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== cookie@~0.7.1: version "0.7.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz" integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== copy-anything@^4: version "4.0.5" - resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-4.0.5.tgz#16cabafd1ea4bb327a540b750f2b4df522825aea" + resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-4.0.5.tgz" integrity sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA== dependencies: is-what "^5.2.0" copy-props@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz#01d249198b8c2e4d8a5e87b90c9630f52c99a9c9" + resolved "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz" integrity sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw== dependencies: each-props "^3.0.0" @@ -4524,7 +4454,7 @@ copy-props@^4.0.0: core-js-compat@^3.36.1, core-js-compat@^3.40.0: version "3.41.0" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz#4cdfce95f39a8f27759b667cf693d96e5dda3d17" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz" integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A== dependencies: browserslist "^4.24.4" @@ -4560,7 +4490,7 @@ cose-base@^2.2.0: cosmiconfig-typescript-loader@^6.1.0: version "6.1.0" - resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz#7f644503e1c2bff90aed2d29a637008f279646bb" + resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz" integrity sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g== dependencies: jiti "^2.4.1" @@ -4584,7 +4514,7 @@ cross-env@^7.0.2: cross-spawn@^6.0.5: version "6.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz" integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== dependencies: nice-try "^1.0.4" @@ -4595,7 +4525,7 @@ cross-spawn@^6.0.5: cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.5, cross-spawn@^7.0.6: version "7.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" @@ -4604,7 +4534,7 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.5, crypt@0.0.2: version "0.0.2" - resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== crypto-js@^4.2.0: @@ -4614,7 +4544,7 @@ crypto-js@^4.2.0: css-declaration-sorter@^6.3.1: version "6.4.1" - resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz" integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== css-line-break@^2.1.0: @@ -4655,7 +4585,7 @@ cssesc@^3.0.0: cssnano-preset-default@^5.2.14: version "5.2.14" - resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz" integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== dependencies: css-declaration-sorter "^6.3.1" @@ -4690,12 +4620,12 @@ cssnano-preset-default@^5.2.14: cssnano-utils@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== cssnano@^5.0.1: version "5.1.15" - resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz" integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== dependencies: cssnano-preset-default "^5.2.14" @@ -4704,7 +4634,7 @@ cssnano@^5.0.1: csso@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== dependencies: css-tree "^1.1.2" @@ -4728,12 +4658,12 @@ cssstyle@^2.3.0: csstype@^3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== cubic2quad@^1.0.0: version "1.2.1" - resolved "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.2.1.tgz#2442260b72c02ee4b6a2fe998fcc1c4073622286" + resolved "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.2.1.tgz" integrity sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ== cytoscape-cose-bilkent@^4.1.0: @@ -4745,14 +4675,14 @@ cytoscape-cose-bilkent@^4.1.0: cytoscape-fcose@^2.1.0: version "2.2.0" - resolved "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz#e4d6f6490df4fab58ae9cea9e5c3ab8d7472f471" + resolved "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz" integrity sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ== dependencies: cose-base "^2.2.0" cytoscape@^3.23.0: version "3.32.1" - resolved "https://registry.npmjs.org/cytoscape/-/cytoscape-3.32.1.tgz#8475a892a43c79a26825b4f16946fa1491020798" + resolved "https://registry.npmjs.org/cytoscape/-/cytoscape-3.32.1.tgz" integrity sha512-dbeqFTLYEwlFg7UGtcZhCCG/2WayX72zK3Sq323CEX29CY81tYfVhw1MIdduCtpstB0cTOhJswWlM/OEB3Xp+Q== "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: @@ -4965,7 +4895,7 @@ d3-zoom@3: d3@^7.4.0, d3@^7.8.2: version "7.9.0" - resolved "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz#579e7acb3d749caf8860bd1741ae8d371070cd5d" + resolved "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz" integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA== dependencies: d3-array "3" @@ -5001,7 +4931,7 @@ d3@^7.4.0, d3@^7.8.2: dagre-d3-es@7.0.9: version "7.0.9" - resolved "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.9.tgz#aca12fccd9d09955a4430029ba72ee6934542a8d" + resolved "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.9.tgz" integrity sha512-rYR4QfVmy+sR44IBDvVtcAmOReGBvRCWDpO2QjYwqgh9yijw6eSHBqaPG/LIOEy7aBsniLvtMW6pg19qJhq60w== dependencies: d3 "^7.8.2" @@ -5014,7 +4944,7 @@ dargs@^7.0.0: dargs@^8.0.0: version "8.1.0" - resolved "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz#a34859ea509cbce45485e5aa356fef70bfcc7272" + resolved "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz" integrity sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw== data-urls@^3.0.1: @@ -5028,7 +4958,7 @@ data-urls@^3.0.1: data-view-buffer@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" + resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz" integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== dependencies: call-bound "^1.0.3" @@ -5037,7 +4967,7 @@ data-view-buffer@^1.0.2: data-view-byte-length@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" + resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz" integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== dependencies: call-bound "^1.0.3" @@ -5046,7 +4976,7 @@ data-view-byte-length@^1.0.2: data-view-byte-offset@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" + resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz" integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== dependencies: call-bound "^1.0.2" @@ -5055,12 +4985,12 @@ data-view-byte-offset@^1.0.1: dataloader@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" + resolved "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz" integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw== dateformat@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz" integrity sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw== dateformat@^3.0.0: @@ -5070,12 +5000,12 @@ dateformat@^3.0.0: dayjs@^1.11.7: version "1.11.13" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz" integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== debounce@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== debug@2.6.9: @@ -5087,14 +5017,14 @@ debug@2.6.9: debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.4.0: version "4.4.1" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz" integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: ms "^2.1.3" debug@4.3.1: version "4.3.1" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" @@ -5121,7 +5051,7 @@ decamelize@^1.1.0: decamelize@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== decimal.js@^10.3.1: @@ -5131,7 +5061,7 @@ decimal.js@^10.3.1: deep-eql@^5.0.1: version "5.0.2" - resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz" integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== deep-extend@^0.6.0: @@ -5151,12 +5081,12 @@ deepmerge@^4.2.2: default-browser-id@^5.0.0: version "5.0.1" - resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz#f7a7ccb8f5104bf8e0f71ba3b1ccfa5eafdb21e8" + resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz" integrity sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q== default-browser@^5.2.1: version "5.4.0" - resolved "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz#b55cf335bb0b465dd7c961a02cd24246aa434287" + resolved "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz" integrity sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg== dependencies: bundle-name "^4.1.0" @@ -5173,7 +5103,7 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: define-lazy-prop@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz" integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== define-properties@^1.1.3, define-properties@^1.2.1: @@ -5199,22 +5129,22 @@ delayed-stream@~1.0.0: delegates@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== depd@2.0.0, depd@~2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== depd@~1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== destroy@1.2.0, destroy@~1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-file@^1.0.0: @@ -5234,12 +5164,12 @@ detect-newline@^3.1.0: detect-node@^2.0.4: version "2.1.0" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== diff@5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== dir-glob@^3.0.1: @@ -5251,7 +5181,7 @@ dir-glob@^3.0.1: dns-packet@^5.2.2: version "5.6.1" - resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" @@ -5286,7 +5216,7 @@ dom-serializer@^1.0.1, dom-serializer@^1.3.2: dom-serializer@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: domelementtype "^2.3.0" @@ -5326,19 +5256,19 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: domelementtype "^2.3.0" dompurify@2.4.3: version "2.4.3" - resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz#f4133af0e6a50297fc8874e2eaedc13a3c308c03" + resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz" integrity sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ== dompurify@^3.2.6: version "3.2.6" - resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz#ca040a6ad2b88e2a92dc45f38c79f84a714a1cad" + resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz" integrity sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ== optionalDependencies: "@types/trusted-types" "^2.0.7" @@ -5354,7 +5284,7 @@ domutils@^2.4.2, domutils@^2.5.2, domutils@^2.8.0: domutils@^3.2.1: version "3.2.2" - resolved "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz" integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw== dependencies: dom-serializer "^2.0.0" @@ -5370,7 +5300,7 @@ dot-prop@^5.1.0: dotenv@^16.0.3: version "16.4.7" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz" integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== dotgitignore@^2.1.0: @@ -5383,7 +5313,7 @@ dotgitignore@^2.1.0: dunder-proto@^1.0.0, dunder-proto@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== dependencies: call-bind-apply-helpers "^1.0.1" @@ -5392,7 +5322,7 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1: duplexer2@0.0.2: version "0.0.2" - resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz" integrity sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g== dependencies: readable-stream "~1.1.9" @@ -5406,12 +5336,12 @@ duplexer2@^0.1.2: duplexer@^0.1.2: version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== each-props@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz#a88fb17634a4828307610ec68269fba2f7280cd8" + resolved "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz" integrity sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw== dependencies: is-plain-object "^5.0.0" @@ -5424,7 +5354,7 @@ eastasianwidth@^0.2.0: echarts@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/echarts/-/echarts-6.0.0.tgz#2935aa7751c282d1abbbf7d719d397199a15b9e7" + resolved "https://registry.npmjs.org/echarts/-/echarts-6.0.0.tgz" integrity sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ== dependencies: tslib "2.3.0" @@ -5432,17 +5362,17 @@ echarts@^6.0.0: ee-first@1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.173: version "1.5.178" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.178.tgz#6fc4d69eb5275bb13068931448fd822458901fbb" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.178.tgz" integrity sha512-wObbz/ar3Bc6e4X5vf0iO8xTN8YAjN/tgiAOJLr7yjYFtP9wAjq8Mb5h0yn6kResir+VYx2DXBj9NNobs0ETSA== elkjs@^0.8.2: version "0.8.2" - resolved "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz#c37763c5a3e24e042e318455e0147c912a7c248e" + resolved "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz" integrity sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ== emoji-regex@^8.0.0: @@ -5462,7 +5392,7 @@ enabled@2.0.x: encodeurl@~2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== encoding@^0.1.13: @@ -5474,14 +5404,14 @@ encoding@^0.1.13: end-of-stream@^1.4.4: version "1.4.5" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz" integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== dependencies: once "^1.4.0" enquirer@^2.3.5, enquirer@^2.4.1: version "2.4.1" - resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz" integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== dependencies: ansi-colors "^4.1.1" @@ -5494,12 +5424,12 @@ entities@^2.0.0: entities@^4.2.0, entities@^4.5.0: version "4.5.0" - resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== entities@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz#09c9e29cb79b0a6459a9b9db9efb418ac5bb8e51" + resolved "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz" integrity sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw== env-paths@^2.2.0, env-paths@^2.2.1: @@ -5530,7 +5460,7 @@ error@^4.3.0: es-abstract@^1.17.5, es-abstract@^1.18.0-next.1, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0: version "1.24.0" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz" integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== dependencies: array-buffer-byte-length "^1.0.2" @@ -5606,7 +5536,7 @@ es-check@^7.1.1: es-define-property@^1.0.0, es-define-property@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== es-errors@^1.3.0: @@ -5616,7 +5546,7 @@ es-errors@^1.3.0: es-iterator-helpers@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz#d1dd0f58129054c0ad922e6a9a1e65eef435fe75" + resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz" integrity sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w== dependencies: call-bind "^1.0.8" @@ -5638,19 +5568,19 @@ es-iterator-helpers@^1.2.1: es-module-lexer@^1.7.0: version "1.7.0" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz" integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== dependencies: es-errors "^1.3.0" es-set-tostringtag@^2.0.3, es-set-tostringtag@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz" integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== dependencies: es-errors "^1.3.0" @@ -5660,14 +5590,14 @@ es-set-tostringtag@^2.0.3, es-set-tostringtag@^2.1.0: es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz" integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== dependencies: hasown "^2.0.2" es-to-primitive@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz" integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== dependencies: is-callable "^1.2.7" @@ -5676,7 +5606,7 @@ es-to-primitive@^1.3.0: esbuild@^0.25.0, esbuild@~0.25.0: version "0.25.1" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz#a16b8d070b6ad4871935277bda6ccfe852e3fa2f" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz" integrity sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ== optionalDependencies: "@esbuild/aix-ppc64" "0.25.1" @@ -5707,7 +5637,7 @@ esbuild@^0.25.0, esbuild@~0.25.0: escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-goat@^3.0.0: @@ -5717,7 +5647,7 @@ escape-goat@^3.0.0: escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: @@ -5743,12 +5673,12 @@ escodegen@^2.0.0: eslint-config-prettier@^10.1.5: version "10.1.5" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz#00c18d7225043b6fbce6a665697377998d453782" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz" integrity sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw== eslint-config-tencent@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/eslint-config-tencent/-/eslint-config-tencent-1.1.3.tgz#bd0bb4bb815b78ea7af7b07a6d4fb1731d628475" + resolved "https://registry.npmjs.org/eslint-config-tencent/-/eslint-config-tencent-1.1.3.tgz" integrity sha512-8RAev4+j2kJ3YzXbrQ032fYV4q49AW7b1FeeZ2NXBcL8xt6asA1n5NPuPCAM8PKFHYLb2SBSv8x0blDkm6UU4g== dependencies: "@babel/eslint-parser" "^7.14.5" @@ -5771,7 +5701,7 @@ eslint-import-resolver-node@^0.3.9: eslint-module-utils@^2.12.1: version "2.12.1" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz" integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== dependencies: debug "^3.2.7" @@ -5785,7 +5715,7 @@ eslint-plugin-chalk@^1.0.0: eslint-plugin-file-progress@^1.5.0: version "1.5.0" - resolved "https://registry.npmjs.org/eslint-plugin-file-progress/-/eslint-plugin-file-progress-1.5.0.tgz#beceb622875d3cad8f2c05afe23d2426ffa80be8" + resolved "https://registry.npmjs.org/eslint-plugin-file-progress/-/eslint-plugin-file-progress-1.5.0.tgz" integrity sha512-get8oNfacIagP+igSzrEZhepPgodtdwACVeKQsE1fVvTL15tZvgCv8K4B2lKT4FZOZOyhxSkQGnWyjEOx1uoIw== dependencies: nanospinner "^1.1.0" @@ -5793,7 +5723,7 @@ eslint-plugin-file-progress@^1.5.0: eslint-plugin-import@^2.31.0, eslint-plugin-import@^2.32.0: version "2.32.0" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz" integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== dependencies: "@rtsao/scc" "^1.1.0" @@ -5818,14 +5748,14 @@ eslint-plugin-import@^2.31.0, eslint-plugin-import@^2.32.0: eslint-plugin-prettier@^3.4.0: version "3.4.1" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz" integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== dependencies: prettier-linter-helpers "^1.0.0" eslint-plugin-prettier@^5.5.1: version "5.5.1" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz#470820964de9aedb37e9ce62c3266d2d26d08d15" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz" integrity sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw== dependencies: prettier-linter-helpers "^1.0.0" @@ -5833,7 +5763,7 @@ eslint-plugin-prettier@^5.5.1: eslint-plugin-react@^7.35.0: version "7.37.5" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz#2975511472bdda1b272b34d779335c9b0e877065" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz" integrity sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA== dependencies: array-includes "^3.1.8" @@ -5857,7 +5787,7 @@ eslint-plugin-react@^7.35.0: eslint-plugin-vue@^9.24.0: version "9.33.0" - resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz#de33eba8f78e1d172c59c8ec7fbfd60c6ca35c39" + resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz" integrity sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw== dependencies: "@eslint-community/eslint-utils" "^4.4.0" @@ -5879,7 +5809,7 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: eslint-scope@^7.1.1, eslint-scope@^7.2.2: version "7.2.2" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" @@ -5887,7 +5817,7 @@ eslint-scope@^7.1.1, eslint-scope@^7.2.2: eslint-scope@^8.2.0: version "8.4.0" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz" integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== dependencies: esrecurse "^4.3.0" @@ -5902,7 +5832,7 @@ eslint-utils@^2.1.0: eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: @@ -5917,7 +5847,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 eslint-visitor-keys@^4.2.0, eslint-visitor-keys@^4.2.1: version "4.2.1" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz" integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== eslint@^7.12.0: @@ -5968,7 +5898,7 @@ eslint@^7.12.0: eslint@^8.57.1: version "8.57.1" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz" integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -6012,7 +5942,7 @@ eslint@^8.57.1: espree@^10.3.0: version "10.4.0" - resolved "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" + resolved "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz" integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== dependencies: acorn "^8.15.0" @@ -6030,7 +5960,7 @@ espree@^7.3.0, espree@^7.3.1: espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: version "9.6.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: acorn "^8.9.0" @@ -6044,7 +5974,7 @@ esprima@^4.0.0, esprima@^4.0.1: esquery@^1.4.0, esquery@^1.4.2, esquery@^1.6.0: version "1.6.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" @@ -6078,7 +6008,7 @@ estree-walker@^2.0.1, estree-walker@^2.0.2: estree-walker@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz" integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== dependencies: "@types/estree" "^1.0.0" @@ -6090,7 +6020,7 @@ esutils@^2.0.2: etag@~1.8.1: version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== ev-store@^7.0.0: @@ -6122,7 +6052,7 @@ execa@^5.1.1: exit-hook@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz#c1e16ebd03d3166f837b1502dac755bb5c460d58" + resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz" integrity sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ== expand-tilde@^2.0.0, expand-tilde@^2.0.2: @@ -6134,7 +6064,7 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: expect-type@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz#af76d8b357cf5fa76c41c09dafb79c549e75f71f" + resolved "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz" integrity sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw== exponential-backoff@^3.1.1: @@ -6144,7 +6074,7 @@ exponential-backoff@^3.1.1: express@^4.21.2: version "4.22.1" - resolved "https://registry.npmjs.org/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069" + resolved "https://registry.npmjs.org/express/-/express-4.22.1.tgz" integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g== dependencies: accepts "~1.3.8" @@ -6189,17 +6119,17 @@ extend-shallow@^3.0.2: extend@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extendable-error@^0.1.5: version "0.1.7" - resolved "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz#60b9adf206264ac920058a7395685ae4670c2b96" + resolved "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz" integrity sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg== external-editor@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" @@ -6228,7 +6158,7 @@ fast-diff@^1.1.2: fast-fifo@^1.3.2: version "1.3.2" - resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== fast-glob@^3.2.9, fast-glob@^3.3.2: @@ -6254,38 +6184,38 @@ fast-levenshtein@^2.0.6: fast-levenshtein@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz#37b899ae47e1090e40e3fd2318e4d5f0142ca912" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz" integrity sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ== dependencies: fastest-levenshtein "^1.0.7" fast-uri@^3.0.1: version "3.0.6" - resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz" integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== fastest-levenshtein@^1.0.7: version "1.0.16" - resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.13.0, fastq@^1.6.0: version "1.19.1" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz" integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== dependencies: reusify "^1.0.4" faye-websocket@^0.11.3: version "0.11.4" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" fdir@^6.2.0, fdir@^6.4.4: version "6.5.0" - resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz" integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== fecha@^4.2.0: @@ -6321,7 +6251,7 @@ fill-range@^7.1.1: finalhandler@~1.3.1: version "1.3.2" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz#1ebc2228fc7673aac4a472c310cc05b77d852b88" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz" integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg== dependencies: debug "2.6.9" @@ -6382,7 +6312,7 @@ find-up@^4.0.0, find-up@^4.1.0: find-up@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz#e8dec1455f74f78d888ad65bf7ca13dd2b4e66fb" + resolved "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz" integrity sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g== dependencies: locate-path "^7.2.0" @@ -6391,7 +6321,7 @@ find-up@^7.0.0: findup-sync@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz#54380ad965a7edca00cc8f63113559aadc541bd2" + resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz" integrity sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ== dependencies: detect-file "^1.0.0" @@ -6401,7 +6331,7 @@ findup-sync@^5.0.0: fined@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz#6846563ed96879ce6de6c85c715c42250f8d8089" + resolved "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz" integrity sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A== dependencies: expand-tilde "^2.0.2" @@ -6412,7 +6342,7 @@ fined@^2.0.0: flagged-respawn@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz#abf39719dcfe1ac06c86c9466081c541c682987b" + resolved "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz" integrity sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA== flat-cache@^3.0.4: @@ -6426,7 +6356,7 @@ flat-cache@^3.0.4: flat@^5.0.2: version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.2.9: @@ -6439,19 +6369,14 @@ fn.name@1.x.x: resolved "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== -follow-redirects@^1.0.0: - version "1.15.11" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" - integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== - -follow-redirects@^1.15.6: +follow-redirects@^1.0.0, follow-redirects@^1.15.6: version "1.15.9" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz" integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== for-each@^0.3.3, for-each@^0.3.5: version "0.3.5" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz" integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== dependencies: is-callable "^1.2.7" @@ -6470,7 +6395,7 @@ for-own@^1.0.0: foreground-child@^3.1.0: version "3.3.1" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== dependencies: cross-spawn "^7.0.6" @@ -6487,12 +6412,12 @@ form-data@^4.0.0: forwarded@0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fresh@~0.5.2: version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== fs-extra@^10.0.0: @@ -6506,7 +6431,7 @@ fs-extra@^10.0.0: fs-extra@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" @@ -6515,7 +6440,7 @@ fs-extra@^7.0.1: fs-extra@^8.1.0: version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: graceful-fs "^4.2.0" @@ -6531,7 +6456,7 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0: fs-mkdirp-stream@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz#1e82575c4023929ad35cf69269f84f1a8c973aa7" + resolved "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz" integrity sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw== dependencies: graceful-fs "^4.2.8" @@ -6554,7 +6479,7 @@ function-bind@^1.1.1, function-bind@^1.1.2: function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: version "1.1.8" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz" integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== dependencies: call-bind "^1.0.8" @@ -6576,7 +6501,7 @@ functions-have-names@^1.2.3: gauge@^4.0.3: version "4.0.4" - resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -6590,7 +6515,7 @@ gauge@^4.0.3: generic-names@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" + resolved "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz" integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== dependencies: loader-utils "^3.2.0" @@ -6602,7 +6527,7 @@ gensync@^1.0.0-beta.2: geometry-interfaces@^1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/geometry-interfaces/-/geometry-interfaces-1.1.4.tgz#9e82af6700ca639a675299f08e1f5fbc4a79d48d" + resolved "https://registry.npmjs.org/geometry-interfaces/-/geometry-interfaces-1.1.4.tgz" integrity sha512-qD6OdkT6NcES9l4Xx3auTpwraQruU7dARbQPVO71MKvkGYw5/z/oIiGymuFXrRaEQa5Y67EIojUpaLeGEa5hGA== get-caller-file@^2.0.5: @@ -6612,7 +6537,7 @@ get-caller-file@^2.0.5: get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== dependencies: call-bind-apply-helpers "^1.0.2" @@ -6638,7 +6563,7 @@ get-pkg-repo@^4.0.0: get-proto@^1.0.0, get-proto@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== dependencies: dunder-proto "^1.0.1" @@ -6651,7 +6576,7 @@ get-stream@^6.0.0: get-symbol-description@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz" integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== dependencies: call-bound "^1.0.3" @@ -6660,7 +6585,7 @@ get-symbol-description@^1.1.0: get-tsconfig@^4.7.5: version "4.10.0" - resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz#403a682b373a823612475a4c2928c7326fc0f6bb" + resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz" integrity sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A== dependencies: resolve-pkg-maps "^1.0.0" @@ -6678,7 +6603,7 @@ git-raw-commits@^2.0.8: git-raw-commits@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz#b212fd2bff9726d27c1283a1157e829490593285" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz" integrity sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ== dependencies: dargs "^8.0.0" @@ -6710,21 +6635,21 @@ gitconfiglocal@^1.0.0: glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob-stream@^8.0.3: version "8.0.3" - resolved "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.3.tgz#87e63153aadf05bd0207cde1a253ee39d91458b9" + resolved "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.3.tgz" integrity sha512-fqZVj22LtFJkHODT+M4N1RJQ3TjnnQhfE9GwZI8qXscYarnhpip70poMldRnP8ipQ/w0B621kOhfc53/J9bd/A== dependencies: "@gulpjs/to-absolute-glob" "^4.0.0" @@ -6738,12 +6663,12 @@ glob-stream@^8.0.3: glob-to-regex.js@^1.0.1: version "1.2.0" - resolved "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" + resolved "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz" integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== glob-watcher@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz#8565341978a92233fb3881b8857b4d1e9c6bf080" + resolved "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz" integrity sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw== dependencies: async-done "^2.0.0" @@ -6751,7 +6676,7 @@ glob-watcher@^6.0.0: glob@7.1.6: version "7.1.6" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" @@ -6763,7 +6688,7 @@ glob@7.1.6: glob@^10.4.1: version "10.5.0" - resolved "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c" + resolved "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz" integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== dependencies: foreground-child "^3.1.0" @@ -6838,7 +6763,7 @@ globals@^11.1.0: globals@^13.19.0, globals@^13.24.0, globals@^13.6.0, globals@^13.9.0: version "13.24.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" @@ -6853,7 +6778,7 @@ globalthis@^1.0.4: globby@^11.0.0, globby@^11.1.0: version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -6872,14 +6797,14 @@ glogg@^1.0.0: glogg@^2.2.0: version "2.2.0" - resolved "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz#956ceb855a05a2aa1fa668d748f2be8e7361c11c" + resolved "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz" integrity sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A== dependencies: sparkles "^2.1.0" gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.6, graceful-fs@^4.2.8: @@ -6889,17 +6814,17 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graphemer@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== growl@1.10.5: version "1.10.5" - resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== gulp-cli@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.1.0.tgz#92590e9b209142b176c95ad5c7066d2592017268" + resolved "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.1.0.tgz" integrity sha512-zZzwlmEsTfXcxRKiCHsdyjZZnFvXWM4v1NqBJSYbuApkvVKivjcmOS2qruAJ+PkEHLFavcDKH40DPc1+t12a9Q== dependencies: "@gulpjs/messages" "^1.1.0" @@ -6925,7 +6850,7 @@ gulp-consolidate@^0.2.0: gulp-iconfont@^11.0.0: version "11.0.1" - resolved "https://registry.npmjs.org/gulp-iconfont/-/gulp-iconfont-11.0.1.tgz#4080f1bc105c5194e30c34a764764cd689bdc173" + resolved "https://registry.npmjs.org/gulp-iconfont/-/gulp-iconfont-11.0.1.tgz" integrity sha512-/BD0ofW4AzBriL/J2m5gONq655Gco0ZZUhW7O2PibHv2KtGLShA1TOFRH5YRBE7almQ0UO3wwvAwNn5NLg1tLQ== dependencies: gulp-spawn "^1.0.0" @@ -6952,7 +6877,7 @@ gulp-spawn@^1.0.0: gulp-svg2ttf@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/gulp-svg2ttf/-/gulp-svg2ttf-2.0.1.tgz#11d68bbbe27b89f47657b4d8f29cf33854d7e68c" + resolved "https://registry.npmjs.org/gulp-svg2ttf/-/gulp-svg2ttf-2.0.1.tgz" integrity sha512-L0oi56jjFKSGXSZfmG1YKwiC5pe5JrQtF5a54xgAqUSBtAcSfBYC2JfOatF2qefIUu+uLCH8rPmfSZozw+WYng== dependencies: bufferstreams "^1.1.0" @@ -6962,7 +6887,7 @@ gulp-svg2ttf@^2.0.0: gulp-svgicons2svgfont@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/gulp-svgicons2svgfont/-/gulp-svgicons2svgfont-5.0.1.tgz#c900418d24f097e3e3662b97c754f37c6e68e1b4" + resolved "https://registry.npmjs.org/gulp-svgicons2svgfont/-/gulp-svgicons2svgfont-5.0.1.tgz" integrity sha512-wXPQGpQ8bjP2oV25Cq39+r+RjPRQ4u4aCAmBXsXm48Lsx7xfDdTG8dE8uZcheK68pcHTdNm+FK1QMKhKYbwMGA== dependencies: fancy-log "^1.3.2" @@ -6974,7 +6899,7 @@ gulp-svgicons2svgfont@^5.0.1: gulp-ttf2eot@^1.1.1: version "1.1.2" - resolved "https://registry.npmjs.org/gulp-ttf2eot/-/gulp-ttf2eot-1.1.2.tgz#67516fe253baecbb3910b417a08dcb51e34acb0c" + resolved "https://registry.npmjs.org/gulp-ttf2eot/-/gulp-ttf2eot-1.1.2.tgz" integrity sha512-B2NwwG+QVMF6ETzeXwZHx6MeYEx0oHguIj0ZjPhqtKM3iXuDOrYbT2054q73cTI6hn2GMNAQWy11GjZM+LUxRg== dependencies: bufferstreams "^1.1.0" @@ -6984,7 +6909,7 @@ gulp-ttf2eot@^1.1.1: gulp-ttf2woff2@^4.0.0: version "4.0.1" - resolved "https://registry.npmjs.org/gulp-ttf2woff2/-/gulp-ttf2woff2-4.0.1.tgz#a66dcd2ccac5a0b4a71203497f17857d6e652d18" + resolved "https://registry.npmjs.org/gulp-ttf2woff2/-/gulp-ttf2woff2-4.0.1.tgz" integrity sha512-VkeQaXqTud/e4mDLIuWzRbR7+1QGkmmpRYek/cFZTe7pwsQJshisqSwPwxM7CBrypD7zK8WEH3ktNzFSsyanVg== dependencies: bufferstreams "^3.0.0" @@ -6996,7 +6921,7 @@ gulp-ttf2woff2@^4.0.0: gulp-ttf2woff@^1.1.0: version "1.1.1" - resolved "https://registry.npmjs.org/gulp-ttf2woff/-/gulp-ttf2woff-1.1.1.tgz#e22ca6e71bd9ad105751644f8b1c7e3be3b086ac" + resolved "https://registry.npmjs.org/gulp-ttf2woff/-/gulp-ttf2woff-1.1.1.tgz" integrity sha512-l230Pv3CzE9OND8GlXyrdLvBjrfS2VCVs8g0+L6DaglqnW7aZFvZdeDH5VFe0zfp16n/zNPf4HBNfNStn9iXDA== dependencies: bufferstreams "^1.0.2" @@ -7006,7 +6931,7 @@ gulp-ttf2woff@^1.1.0: gulp-util@^3.0.6, gulp-util@^3.0.7: version "3.0.8" - resolved "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + resolved "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz" integrity sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw== dependencies: array-differ "^1.0.0" @@ -7030,7 +6955,7 @@ gulp-util@^3.0.6, gulp-util@^3.0.7: gulp@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/gulp/-/gulp-5.0.1.tgz#c43f37aa34569e101fb6da4e0b464677305acd36" + resolved "https://registry.npmjs.org/gulp/-/gulp-5.0.1.tgz" integrity sha512-PErok3DZSA5WGMd6XXV3IRNO0mlB+wW3OzhFJLEec1jSERg2j1bxJ6e5Fh6N6fn3FH2T9AP4UYNb/pYlADB9sA== dependencies: glob-watcher "^6.0.0" @@ -7047,21 +6972,21 @@ gulplog@^1.0.0: gulplog@^2.2.0: version "2.2.0" - resolved "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz#71adf43ea5cd07c23ded0fb8af4a844b67c63be8" + resolved "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz" integrity sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A== dependencies: glogg "^2.2.0" gzip-size@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: duplexer "^0.1.2" handle-thing@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== handlebars@^4.7.7: @@ -7105,7 +7030,7 @@ has-flag@^4.0.0: has-gulplog@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + resolved "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz" integrity sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw== dependencies: sparkles "^1.0.0" @@ -7119,14 +7044,14 @@ has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: has-proto@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz" integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== dependencies: dunder-proto "^1.0.0" has-symbols@^1.0.3, has-symbols@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== has-tostringtag@^1.0.2: @@ -7138,7 +7063,7 @@ has-tostringtag@^1.0.2: has-unicode@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== hasown@^2.0.2: @@ -7150,7 +7075,7 @@ hasown@^2.0.2: he@1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== homedir-polyfill@^1.0.1: @@ -7162,7 +7087,7 @@ homedir-polyfill@^1.0.1: hookable@^5.5.3: version "5.5.3" - resolved "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d" + resolved "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz" integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== hosted-git-info@^2.1.4: @@ -7179,7 +7104,7 @@ hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: hpack.js@^2.1.6: version "2.1.6" - resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== dependencies: inherits "^2.0.1" @@ -7196,12 +7121,12 @@ html-encoding-sniffer@^3.0.0: html-escaper@^2.0.0, html-escaper@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-to-image@^1.11.11: version "1.11.13" - resolved "https://registry.npmjs.org/html-to-image/-/html-to-image-1.11.13.tgz#adbc989c993b7aaf90b629c0cacf833db84d5f43" + resolved "https://registry.npmjs.org/html-to-image/-/html-to-image-1.11.13.tgz" integrity sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg== html2canvas@^1.1.3: @@ -7214,7 +7139,7 @@ html2canvas@^1.1.3: htmlparser2@^10.0.0: version "10.0.0" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz#77ad249037b66bf8cc99c6e286ef73b83aeb621d" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz" integrity sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g== dependencies: domelementtype "^2.3.0" @@ -7244,17 +7169,17 @@ htmlparser2@^6.1.0: http-cache-semantics@^4.1.0: version "4.2.0" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz" integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== http-deceiver@^1.2.7: version "1.2.7" - resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== http-errors@~1.6.2: version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== dependencies: depd "~1.1.2" @@ -7264,7 +7189,7 @@ http-errors@~1.6.2: http-errors@~2.0.0, http-errors@~2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz" integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== dependencies: depd "~2.0.0" @@ -7275,7 +7200,7 @@ http-errors@~2.0.0, http-errors@~2.0.1: http-parser-js@>=0.5.1: version "0.5.10" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz" integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== http-proxy-agent@^5.0.0: @@ -7289,7 +7214,7 @@ http-proxy-agent@^5.0.0: http-proxy-middleware@^2.0.9: version "2.0.9" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz" integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== dependencies: "@types/http-proxy" "^1.17.8" @@ -7300,7 +7225,7 @@ http-proxy-middleware@^2.0.9: http-proxy@^1.18.1: version "1.18.1" - resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" @@ -7317,7 +7242,7 @@ https-proxy-agent@^5.0.0: human-id@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/human-id/-/human-id-4.1.1.tgz#2801fbd61b9a5c1c9170f332802db6408a39a4b0" + resolved "https://registry.npmjs.org/human-id/-/human-id-4.1.1.tgz" integrity sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg== human-signals@^2.1.0: @@ -7327,19 +7252,19 @@ human-signals@^2.1.0: humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" husky@~9.1.7: version "9.1.7" - resolved "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" + resolved "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz" integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== hyperdyperid@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" + resolved "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz" integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== iconv-lite@0.6, iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: @@ -7363,7 +7288,7 @@ icss-replace-symbols@^1.1.0: icss-utils@^5.0.0: version "5.1.0" - resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== ieee754@^1.2.1: @@ -7378,7 +7303,7 @@ ignore@^4.0.6: ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: version "5.3.2" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== immutable@^4.0.0: @@ -7430,7 +7355,7 @@ individual@^3.0.0: infer-owner@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: @@ -7448,7 +7373,7 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== ini@4.1.1: @@ -7463,7 +7388,7 @@ ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: internal-slot@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz" integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== dependencies: es-errors "^1.3.0" @@ -7477,7 +7402,7 @@ internal-slot@^1.1.0: interpret@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== ip-address@^9.0.5: @@ -7490,12 +7415,12 @@ ip-address@^9.0.5: ipaddr.js@1.9.1: version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== ipaddr.js@^2.1.0: version "2.3.0" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz#71dce70e1398122208996d1c22f2ba46a24b1abc" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz" integrity sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg== is-absolute@^1.0.0: @@ -7508,7 +7433,7 @@ is-absolute@^1.0.0: is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: version "3.0.5" - resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz" integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== dependencies: call-bind "^1.0.8" @@ -7527,7 +7452,7 @@ is-arrayish@^0.3.1: is-async-function@^2.0.0: version "2.1.1" - resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523" + resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz" integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ== dependencies: async-function "^1.0.0" @@ -7538,7 +7463,7 @@ is-async-function@^2.0.0: is-bigint@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz" integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== dependencies: has-bigints "^1.0.2" @@ -7552,7 +7477,7 @@ is-binary-path@~2.1.0: is-boolean-object@^1.2.1: version "1.2.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz" integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== dependencies: call-bound "^1.0.3" @@ -7570,14 +7495,14 @@ is-callable@^1.2.7: is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.16.1, is-core-module@^2.5.0: version "2.16.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== dependencies: hasown "^2.0.2" is-data-view@^1.0.1, is-data-view@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e" + resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz" integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== dependencies: call-bound "^1.0.2" @@ -7586,7 +7511,7 @@ is-data-view@^1.0.1, is-data-view@^1.0.2: is-date-object@^1.0.5, is-date-object@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz" integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== dependencies: call-bound "^1.0.2" @@ -7599,7 +7524,7 @@ is-docker@^2.0.0: is-docker@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== is-extendable@^1.0.1: @@ -7616,7 +7541,7 @@ is-extglob@^2.1.1: is-finalizationregistry@^1.1.0: version "1.1.1" - resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90" + resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz" integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== dependencies: call-bound "^1.0.3" @@ -7638,7 +7563,7 @@ is-fullwidth-code-point@^4.0.0: is-generator-function@^1.0.10: version "1.1.0" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz" integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== dependencies: call-bound "^1.0.3" @@ -7655,7 +7580,7 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: is-inside-container@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + resolved "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz" integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== dependencies: is-docker "^3.0.0" @@ -7667,7 +7592,7 @@ is-lambda@^1.0.1: is-map@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz" integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== is-module@^1.0.0: @@ -7687,12 +7612,12 @@ is-negative-zero@^2.0.3: is-network-error@^1.0.0: version "1.3.0" - resolved "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz#2ce62cbca444abd506f8a900f39d20b898d37512" + resolved "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz" integrity sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw== is-number-object@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz" integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== dependencies: call-bound "^1.0.3" @@ -7715,7 +7640,7 @@ is-object@^1.0.1: is-path-inside@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-obj@^1.1.0: @@ -7725,12 +7650,12 @@ is-plain-obj@^1.1.0: is-plain-obj@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-plain-obj@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== is-plain-object@^2.0.4: @@ -7757,14 +7682,14 @@ is-potential-custom-element-name@^1.0.1: is-reference@1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz" integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== dependencies: "@types/estree" "*" is-regex@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz" integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== dependencies: call-bound "^1.0.2" @@ -7781,12 +7706,12 @@ is-relative@^1.0.0: is-set@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz" integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== is-shared-array-buffer@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz" integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== dependencies: call-bound "^1.0.3" @@ -7798,7 +7723,7 @@ is-stream@^2.0.0: is-string@^1.0.7, is-string@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz" integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== dependencies: call-bound "^1.0.3" @@ -7806,14 +7731,14 @@ is-string@^1.0.7, is-string@^1.1.1: is-subdir@^1.1.1: version "1.2.0" - resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz#b791cd28fab5202e91a08280d51d9d7254fd20d4" + resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz" integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== dependencies: better-path-resolve "1.0.0" is-symbol@^1.0.4, is-symbol@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz" integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== dependencies: call-bound "^1.0.2" @@ -7829,14 +7754,14 @@ is-text-path@^1.0.1: is-text-path@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz#b2484e2b720a633feb2e85b67dc193ff72c75636" + resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz" integrity sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw== dependencies: text-extensions "^2.0.0" is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15: version "1.1.15" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz" integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== dependencies: which-typed-array "^1.1.16" @@ -7855,19 +7780,19 @@ is-valid-glob@^1.0.0: is-weakmap@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz" integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== is-weakref@^1.0.2, is-weakref@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz" integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== dependencies: call-bound "^1.0.3" is-weakset@^2.0.3: version "2.0.4" - resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz" integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== dependencies: call-bound "^1.0.3" @@ -7875,12 +7800,12 @@ is-weakset@^2.0.3: is-what@^5.2.0: version "5.5.0" - resolved "https://registry.npmjs.org/is-what/-/is-what-5.5.0.tgz#a3031815757cfe1f03fed990bf6355a2d3f628c4" + resolved "https://registry.npmjs.org/is-what/-/is-what-5.5.0.tgz" integrity sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw== is-windows@^1.0.0, is-windows@^1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-wsl@^2.2.0: @@ -7892,14 +7817,14 @@ is-wsl@^2.2.0: is-wsl@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz" integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== dependencies: is-inside-container "^1.0.0" isarray@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== isarray@^2.0.5: @@ -7929,12 +7854,12 @@ isstream@^0.1.2: istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.2: version "3.2.2" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== istanbul-lib-report@^3.0.0, istanbul-lib-report@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -7943,7 +7868,7 @@ istanbul-lib-report@^3.0.0, istanbul-lib-report@^3.0.1: istanbul-lib-source-maps@^5.0.6: version "5.0.6" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz#acaef948df7747c8eb5fbf1265cb980f6353a441" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz" integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== dependencies: "@jridgewell/trace-mapping" "^0.3.23" @@ -7952,7 +7877,7 @@ istanbul-lib-source-maps@^5.0.6: istanbul-reports@^3.1.7: version "3.2.0" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz#cb4535162b5784aa623cee21a7252cf2c807ac93" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz" integrity sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA== dependencies: html-escaper "^2.0.0" @@ -7960,7 +7885,7 @@ istanbul-reports@^3.1.7: iterator.prototype@^1.1.4: version "1.1.5" - resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" + resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz" integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g== dependencies: define-data-property "^1.1.4" @@ -7972,7 +7897,7 @@ iterator.prototype@^1.1.4: jackspeak@^3.1.2: version "3.4.3" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== dependencies: "@isaacs/cliui" "^8.0.2" @@ -7981,7 +7906,7 @@ jackspeak@^3.1.2: jiti@^2.4.1: version "2.4.2" - resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560" + resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz" integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: @@ -7991,14 +7916,14 @@ jiti@^2.4.1: js-yaml@4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz" integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== dependencies: argparse "^2.0.1" js-yaml@^3.13.1, js-yaml@^3.6.1: version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -8051,12 +7976,12 @@ jsdom@~19.0.0: jsesc@^3.0.2: version "3.1.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== jsesc@~3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz" integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== json-buffer@3.0.1: @@ -8108,7 +8033,7 @@ json5@^2.2.3: jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" @@ -8129,7 +8054,7 @@ jsonparse@^1.2.0: "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.5" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== dependencies: array-includes "^3.1.6" @@ -8148,23 +8073,16 @@ juice@^8.0.0: slick "^1.12.2" web-resource-inliner "^6.0.1" -katex@^0.16.27: +katex@^0.16.27, katex@^0.16.4: version "0.16.27" - resolved "https://registry.npmjs.org/katex/-/katex-0.16.27.tgz#4ecf6f620e0ca1c1a5de722e85fcdcec49086a48" + resolved "https://registry.npmjs.org/katex/-/katex-0.16.27.tgz" integrity sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw== dependencies: commander "^8.3.0" -katex@^0.16.4: - version "0.16.21" - resolved "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz#8f63c659e931b210139691f2cc7bb35166b792a3" - integrity sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A== - dependencies: - commander "^8.3.0" - keypress@0.1.x: version "0.1.0" - resolved "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz#4a3188d4291b66b4f65edb99f806aa9ae293592a" + resolved "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz" integrity sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA== keyv@^4.5.3: @@ -8176,7 +8094,7 @@ keyv@^4.5.3: khroma@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz#45f2ce94ce231a437cf5b63c2e886e6eb42bbbb1" + resolved "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz" integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw== kind-of@^6.0.2, kind-of@^6.0.3: @@ -8191,12 +8109,12 @@ kuler@^2.0.0: last-run@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz#f82dcfbfce6e63d041bd83d64c82e34cdba6572e" + resolved "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz" integrity sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ== launch-editor@^2.6.1: version "2.12.0" - resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz#cc740f4e0263a6b62ead2485f9896e545321f817" + resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz" integrity sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg== dependencies: picocolors "^1.1.1" @@ -8214,7 +8132,7 @@ layout-base@^2.0.0: lead@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz#5317a49effb0e7ec3a0c8fb9c1b24fb716aab939" + resolved "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz" integrity sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg== levn@^0.4.1: @@ -8227,7 +8145,7 @@ levn@^0.4.1: liftoff@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/liftoff/-/liftoff-5.0.1.tgz#e2329e7f1e19e98c8dba71185f2078e6dbbc5c1f" + resolved "https://registry.npmjs.org/liftoff/-/liftoff-5.0.1.tgz" integrity sha512-wwLXMbuxSF8gMvubFcFRp56lkFV69twvbU5vDPbaw+Q+/rF8j0HKjGbIdlSi+LuJm9jf7k9PB+nTxnsLMPcv2Q== dependencies: extend "^3.0.2" @@ -8238,16 +8156,11 @@ liftoff@^5.0.1: rechoir "^0.8.0" resolve "^1.20.0" -lilconfig@2.0.5: +lilconfig@2.0.5, lilconfig@^2.0.3, lilconfig@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== -lilconfig@^2.0.3, lilconfig@^2.0.5: - version "2.1.0" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" @@ -8299,7 +8212,7 @@ load-json-file@^4.0.0: loader-utils@^3.2.0: version "3.3.1" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz" integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== locate-path@^2.0.0: @@ -8334,7 +8247,7 @@ locate-path@^6.0.0: locate-path@^7.2.0: version "7.2.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== dependencies: p-locate "^6.0.0" @@ -8346,47 +8259,47 @@ lodash-es@^4.17.21: lodash._basecopy@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + resolved "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz" integrity sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ== lodash._basetostring@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + resolved "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" integrity sha512-mTzAr1aNAv/i7W43vOR/uD/aJ4ngbtsRaCubp2BfZhlGU/eORUjg/7F6X0orNMdv33JOrdgGybtvMN/po3EWrA== lodash._basevalues@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + resolved "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz" integrity sha512-H94wl5P13uEqlCg7OcNNhMQ8KvWSIyqXzOPusRgHC9DK3o54P6P3xtbXlVbRABG4q5gSmp7EDdJ0MSuW9HX6Mg== lodash._getnative@^3.0.0: version "3.9.1" - resolved "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + resolved "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz" integrity sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA== lodash._isiterateecall@^3.0.0: version "3.0.9" - resolved "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + resolved "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz" integrity sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ== lodash._reescape@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + resolved "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz" integrity sha512-Sjlavm5y+FUVIF3vF3B75GyXrzsfYV8Dlv3L4mEpuB9leg8N6yf/7rU06iLPx9fY0Mv3khVp9p7Dx0mGV6V5OQ== lodash._reevaluate@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + resolved "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz" integrity sha512-OrPwdDc65iJiBeUe5n/LIjd7Viy99bKwDdk7Z5ljfZg0uFRFlfQaCy9tZ4YMAag9WAZmlVpe1iZrkIMMSMHD3w== lodash._reinterpolate@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== lodash._root@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + resolved "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz" integrity sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ== lodash.camelcase@^4.3.0: @@ -8401,19 +8314,19 @@ lodash.debounce@^4.0.8: lodash.escape@^3.0.0: version "3.2.0" - resolved "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + resolved "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz" integrity sha512-n1PZMXgaaDWZDSvuNZ/8XOcYO2hOKDqZel5adtR30VKQAtoWs/5AOeFA0vPV8moiPzlqe7F4cP2tzpFewQyelQ== dependencies: lodash._root "^3.0.0" lodash.isarguments@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + resolved "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz" integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== lodash.isarray@^3.0.0: version "3.0.4" - resolved "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + resolved "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" integrity sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ== lodash.ismatch@^4.4.0: @@ -8428,12 +8341,12 @@ lodash.isplainobject@^4.0.6: lodash.kebabcase@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + resolved "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz" integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== lodash.keys@^3.0.0: version "3.1.2" - resolved "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + resolved "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz" integrity sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ== dependencies: lodash._getnative "^3.0.0" @@ -8457,22 +8370,22 @@ lodash.mergewith@^4.6.2: lodash.restparam@^3.0.0: version "3.6.1" - resolved "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + resolved "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz" integrity sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw== lodash.snakecase@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + resolved "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz" integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== lodash.startcase@^4.4.0: version "4.4.0" - resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== lodash.template@^3.0.0: version "3.6.2" - resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz" integrity sha512-0B4Y53I0OgHUJkt+7RmlDFWKjVAI/YUpWNiL9GQz5ORDr4ttgfQGo+phBWKFLJbBdtOwgMuUkdOHOnPg45jKmQ== dependencies: lodash._basecopy "^3.0.0" @@ -8487,7 +8400,7 @@ lodash.template@^3.0.0: lodash.templatesettings@^3.0.0: version "3.1.1" - resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz" integrity sha512-TcrlEr31tDYnWkHFWDCV3dHYroKEXpJZ2YJYvJdhN+y4AkWMDZ5I4I8XDtUKqSAyG81N7w+I1mFEJtcED+tGqQ== dependencies: lodash._reinterpolate "^3.0.0" @@ -8505,17 +8418,17 @@ lodash.uniq@^4.5.0: lodash.upperfirst@^4.3.1: version "4.3.1" - resolved "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + resolved "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz" integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz" integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== dependencies: chalk "^4.0.0" @@ -8544,19 +8457,19 @@ logform@^2.3.2, logform@^2.4.0: loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" loupe@^3.1.0, loupe@^3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz#042a8f7986d77f3d0f98ef7990a2b2fef18b0fd2" + resolved "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz" integrity sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug== lru-cache@^10.2.0: version "10.4.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== lru-cache@^5.1.1: @@ -8575,19 +8488,19 @@ lru-cache@^6.0.0: lru-cache@^7.7.1: version "7.18.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== magic-string@^0.30.11, magic-string@^0.30.17, magic-string@^0.30.3: version "0.30.19" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz#cebe9f104e565602e5d2098c5f2e79a77cc86da9" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz" integrity sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw== dependencies: "@jridgewell/sourcemap-codec" "^1.5.5" magicast@^0.3.5: version "0.3.5" - resolved "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz#8301c3c7d66704a0771eb1bad74274f0ec036739" + resolved "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz" integrity sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ== dependencies: "@babel/parser" "^7.25.4" @@ -8611,14 +8524,14 @@ make-dir@^3.0.2: make-dir@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: semver "^7.5.3" make-fetch-happen@^10.0.3: version "10.2.1" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz" integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== dependencies: agentkeepalive "^4.2.1" @@ -8660,17 +8573,17 @@ map-stream@0.0.4: math-intrinsics@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== mathjax@^3.2.2: version "3.2.2" - resolved "https://registry.npmjs.org/mathjax/-/mathjax-3.2.2.tgz#c754d7b46a679d7f3fa03543d6b8bf124ddf9f6b" + resolved "https://registry.npmjs.org/mathjax/-/mathjax-3.2.2.tgz" integrity sha512-Bt+SSVU8eBG27zChVewOicYs7Xsdt40qm4+UpHyX7k0/O9NliPc+x77k1/FEsPsjKPZGJvtRZM1vO+geW0OhGw== md5@^2.3.0: version "2.3.0" - resolved "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + resolved "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== dependencies: charenc "0.0.2" @@ -8684,12 +8597,12 @@ mdn-data@2.0.14: media-typer@0.3.0: version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^4.43.1: version "4.51.1" - resolved "https://registry.npmjs.org/memfs/-/memfs-4.51.1.tgz#25945de4a90d1573945105e187daa9385e1bca73" + resolved "https://registry.npmjs.org/memfs/-/memfs-4.51.1.tgz" integrity sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ== dependencies: "@jsonjoy.com/json-pack" "^1.11.0" @@ -8711,7 +8624,7 @@ mensch@^0.3.4: meow@^12.0.1: version "12.1.1" - resolved "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz#e558dddbab12477b69b2e9a2728c327f191bace6" + resolved "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz" integrity sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== meow@^8.0.0: @@ -8733,7 +8646,7 @@ meow@^8.0.0: merge-descriptors@1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-stream@^2.0.0: @@ -8748,7 +8661,7 @@ merge2@^1.3.0, merge2@^1.4.1: mermaid@9.4.3: version "9.4.3" - resolved "https://registry.npmjs.org/mermaid/-/mermaid-9.4.3.tgz#62cf210c246b74972ea98c19837519b6f03427f2" + resolved "https://registry.npmjs.org/mermaid/-/mermaid-9.4.3.tgz" integrity sha512-TLkQEtqhRSuEHSE34lh5bCa94KATCyluAXmFnNI2PRZwOpXFeqiJWwZl+d2CcemE1RS6QbbueSSq9QIg8Uxcyw== dependencies: "@braintree/sanitize-url" "^6.0.0" @@ -8770,7 +8683,7 @@ mermaid@9.4.3: methods@~1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== microbuffer@^1.0.0: @@ -8780,7 +8693,7 @@ microbuffer@^1.0.0: micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: version "4.0.8" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: braces "^3.0.3" @@ -8793,7 +8706,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": mime-db@^1.54.0: version "1.54.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz" integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== mime-db@~1.33.0: @@ -8817,14 +8730,14 @@ mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: mime-types@^3.0.1: version "3.0.2" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz#39002d4182575d5af036ffa118100f2524b2e2ab" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz" integrity sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A== dependencies: mime-db "^1.54.0" mime@1.6.0: version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.4.6: @@ -8851,12 +8764,12 @@ min-indent@^1.0.0: minimalistic-assert@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimatch@3.0.4: version "3.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" @@ -8870,7 +8783,7 @@ minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch minimatch@9.0.3: version "9.0.3" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: brace-expansion "^2.0.1" @@ -8884,7 +8797,7 @@ minimatch@^5.0.1: minimatch@^9.0.4: version "9.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== dependencies: brace-expansion "^2.0.1" @@ -8900,19 +8813,19 @@ minimist-options@4.1.0: minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minipass-collect@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: minipass "^3.0.0" minipass-fetch@^2.0.3: version "2.1.2" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz" integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== dependencies: minipass "^3.1.6" @@ -8956,7 +8869,7 @@ minipass@^5.0.0: "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: version "7.1.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== minizlib@^2.1.1, minizlib@^2.1.2: @@ -8979,7 +8892,7 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: mocha@^8.4.0: version "8.4.0" - resolved "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" + resolved "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz" integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== dependencies: "@ungap/promise-all-settled" "1.1.2" @@ -9015,12 +8928,12 @@ modify-values@^1.0.0: mri@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== mrmime@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz#bc3e87f7987853a54c9850eeb1f1078cd44adddc" + resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz" integrity sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ== ms@2.0.0: @@ -9035,17 +8948,17 @@ ms@2.1.2: ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== muggle-string@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz#3b366bd43b32f809dc20659534dd30e7c8a0d328" + resolved "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz" integrity sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ== multicast-dns@^7.2.5: version "7.2.5" - resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: dns-packet "^5.2.2" @@ -9053,7 +8966,7 @@ multicast-dns@^7.2.5: multipipe@^0.1.2: version "0.1.2" - resolved "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + resolved "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz" integrity sha512-7ZxrUybYv9NonoXgwoOqtStIu18D1c3eFZj27hqgf5kBrBF8Q+tE8V0MW8dKM5QLkQPh1JhhbKgHLY9kifov4Q== dependencies: duplexer2 "0.0.2" @@ -9068,27 +8981,27 @@ multipipe@^4.0.0: mute-stdout@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz#c6a9b4b6185d3b7f70d3ffcb734cbfc8b0f38761" + resolved "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz" integrity sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ== nan@^2.14.2: version "2.22.2" - resolved "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz#6b504fd029fb8f38c0990e52ad5c26772fdacfbb" + resolved "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz" integrity sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ== nanoid@3.1.20: version "3.1.20" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz" integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== nanoid@^3.3.8: version "3.3.11" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== nanospinner@^1.1.0: version "1.2.2" - resolved "https://registry.npmjs.org/nanospinner/-/nanospinner-1.2.2.tgz#5a38f4410b5bf7a41585964bee74d32eab3e040b" + resolved "https://registry.npmjs.org/nanospinner/-/nanospinner-1.2.2.tgz" integrity sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA== dependencies: picocolors "^1.1.1" @@ -9100,7 +9013,7 @@ natural-compare@^1.4.0: neatequal@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/neatequal/-/neatequal-1.0.0.tgz#2ee1211bc9fa6e4c55715fd210bb05602eb1ae3b" + resolved "https://registry.npmjs.org/neatequal/-/neatequal-1.0.0.tgz" integrity sha512-sVt5awO4a4w24QmAthdrCPiVRW3naB8FGLdyadin01BH+6BzNPEBwGrpwCczQvPlULS6uXTItTe1PJ5P0kYm7A== dependencies: varstream "^0.3.2" @@ -9110,11 +9023,6 @@ negotiator@0.6.3, negotiator@^0.6.3: resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -negotiator@~0.6.4: - version "0.6.4" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" - integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== - neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" @@ -9140,19 +9048,19 @@ node-environment-flags@^1.0.5: node-fetch@^2.5.0, node-fetch@^2.6.0: version "2.7.0" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" node-forge@^1: version "1.3.3" - resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz#0ad80f6333b3a0045e827ac20b7f735f93716751" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz" integrity sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg== node-gyp@^9.0.0: version "9.4.1" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz" integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== dependencies: env-paths "^2.2.0" @@ -9169,17 +9077,17 @@ node-gyp@^9.0.0: node-releases@^2.0.19: version "2.0.19" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz" integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== non-layered-tidy-tree-layout@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" + resolved "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz" integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw== nopt@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz" integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== dependencies: abbrev "^1.0.0" @@ -9211,19 +9119,19 @@ normalize-path@3.0.0, normalize-path@^3.0.0, normalize-path@~3.0.0: normalize-url@^6.0.1: version "6.1.0" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== now-and-later@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz#cdc045dc5b894b35793cf276cc3206077bb7302d" + resolved "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz" integrity sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg== dependencies: once "^1.4.0" npm-run-all@^4.1.5: version "4.1.5" - resolved "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" + resolved "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz" integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== dependencies: ansi-styles "^3.2.1" @@ -9245,7 +9153,7 @@ npm-run-path@^4.0.1: npmlog@^6.0.0: version "6.0.2" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: are-we-there-yet "^3.0.0" @@ -9255,7 +9163,7 @@ npmlog@^6.0.0: nth-check@^2.0.1, nth-check@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" @@ -9267,17 +9175,17 @@ nwsapi@^2.2.0: object-assign@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" integrity sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ== object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.2, object-inspect@^1.13.3, object-inspect@^1.13.4: version "1.13.4" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== object-keys@^1.1.1: @@ -9287,7 +9195,7 @@ object-keys@^1.1.1: object.assign@^4.1.4, object.assign@^4.1.7: version "4.1.7" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz" integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== dependencies: call-bind "^1.0.8" @@ -9309,7 +9217,7 @@ object.defaults@^1.1.0: object.entries@^1.1.9: version "1.1.9" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz#e4770a6a1444afb61bd39f984018b5bede25f8b3" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz" integrity sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw== dependencies: call-bind "^1.0.8" @@ -9358,7 +9266,7 @@ object.pick@^1.3.0: object.values@^1.1.6, object.values@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz" integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== dependencies: call-bind "^1.0.8" @@ -9368,12 +9276,12 @@ object.values@^1.1.6, object.values@^1.2.1: obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== on-finished@^2.4.1, on-finished@~2.4.1: version "2.4.1" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" @@ -9383,11 +9291,6 @@ on-headers@~1.0.2: resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -on-headers@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz#59da4f91c45f5f989c6e4bcedc5a3b0aed70ff65" - integrity sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A== - once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" @@ -9411,7 +9314,7 @@ onetime@^5.1.0, onetime@^5.1.2: open@^10.0.3: version "10.2.0" - resolved "https://registry.npmjs.org/open/-/open-10.2.0.tgz#b9d855be007620e80b6fb05fac98141fe62db73c" + resolved "https://registry.npmjs.org/open/-/open-10.2.0.tgz" integrity sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA== dependencies: default-browser "^5.2.1" @@ -9421,17 +9324,17 @@ open@^10.0.3: openai@^5.9.0: version "5.9.0" - resolved "https://registry.npmjs.org/openai/-/openai-5.9.0.tgz#fe6109d3dca5be6dd742f7ac54d810a0086d1d37" + resolved "https://registry.npmjs.org/openai/-/openai-5.9.0.tgz" integrity sha512-cmLC0pfqLLhBGxE4aZPyRPjydgYCncppV2ClQkKmW79hNjCvmzkfhz8rN5/YVDmjVQlFV+UsF1JIuNjNgeagyQ== opener@^1.5.2: version "1.5.2" - resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== optionator@^0.9.1, optionator@^0.9.3: version "0.9.4" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== dependencies: deep-is "^0.1.3" @@ -9448,12 +9351,12 @@ os-tmpdir@~1.0.2: outdent@^0.5.0: version "0.5.0" - resolved "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff" + resolved "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz" integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== own-keys@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" + resolved "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz" integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== dependencies: get-intrinsic "^1.2.6" @@ -9462,7 +9365,7 @@ own-keys@^1.0.1: p-filter@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" + resolved "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz" integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== dependencies: p-map "^2.0.0" @@ -9495,7 +9398,7 @@ p-limit@^3.0.2: p-limit@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== dependencies: yocto-queue "^1.0.0" @@ -9530,14 +9433,14 @@ p-locate@^5.0.0: p-locate@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== dependencies: p-limit "^4.0.0" p-map@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== p-map@^4.0.0: @@ -9549,7 +9452,7 @@ p-map@^4.0.0: p-queue@^6.6.2: version "6.6.2" - resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== dependencies: eventemitter3 "^4.0.4" @@ -9557,7 +9460,7 @@ p-queue@^6.6.2: p-retry@^6.2.0: version "6.2.1" - resolved "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz#81828f8dc61c6ef5a800585491572cc9892703af" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz" integrity sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ== dependencies: "@types/retry" "0.12.2" @@ -9583,12 +9486,12 @@ p-try@^2.0.0: package-json-from-dist@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== package-manager-detector@^0.2.0: version "0.2.11" - resolved "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz#3af0b34f99d86d24af0a0620603d2e1180d05c9c" + resolved "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz" integrity sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ== dependencies: quansync "^0.2.7" @@ -9607,7 +9510,7 @@ parent-module@^1.0.0: parse-filepath@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + resolved "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz" integrity sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q== dependencies: is-absolute "^1.0.0" @@ -9656,12 +9559,12 @@ parse5@6.0.1, parse5@^6.0.1: parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== path-browserify@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== path-exists@^3.0.0: @@ -9676,7 +9579,7 @@ path-exists@^4.0.0: path-exists@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== path-is-absolute@^1.0.0: @@ -9718,7 +9621,7 @@ path-root@^0.1.1: path-scurry@^1.11.1: version "1.11.1" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== dependencies: lru-cache "^10.2.0" @@ -9726,12 +9629,12 @@ path-scurry@^1.11.1: path-to-regexp@3.3.0: version "3.3.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz#f7f31d32e8518c2660862b644414b6d5c63a611b" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz" integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== path-to-regexp@~0.1.12: version "0.1.12" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== path-type@^3.0.0: @@ -9748,22 +9651,22 @@ path-type@^4.0.0: pathe@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716" + resolved "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz" integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== pathval@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" + resolved "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz" integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== perfect-debounce@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a" + resolved "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz" integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA== picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: @@ -9773,7 +9676,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: picomatch@^4.0.2: version "4.0.2" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz" integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== pidtree@^0.3.0: @@ -9808,14 +9711,14 @@ pify@^5.0.0: pinia@^3.0.4: version "3.0.4" - resolved "https://registry.npmjs.org/pinia/-/pinia-3.0.4.tgz#75dde12784a61e34c1fa6abcd13c1a1061c360c0" + resolved "https://registry.npmjs.org/pinia/-/pinia-3.0.4.tgz" integrity sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw== dependencies: "@vue/devtools-api" "^7.7.7" pinyin@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/pinyin/-/pinyin-4.0.0.tgz#9c15fd9d45c08b6813221fc602f77759429bfa4f" + resolved "https://registry.npmjs.org/pinyin/-/pinyin-4.0.0.tgz" integrity sha512-vHpV5K+vpp6XUUpZNGRDuHoN+1xcmieM3EWlH4QjSX2kkpG/gVOwpqwV9EOJ9x9c9UERFKeLml5XVSukE/PLgQ== dependencies: commander "~1.1.1" @@ -9864,7 +9767,7 @@ possible-typed-array-names@^1.0.0: postcss-calc@^8.2.3: version "8.2.4" - resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== dependencies: postcss-selector-parser "^6.0.9" @@ -9872,7 +9775,7 @@ postcss-calc@^8.2.3: postcss-colormin@^5.3.1: version "5.3.1" - resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz" integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== dependencies: browserslist "^4.21.4" @@ -9882,7 +9785,7 @@ postcss-colormin@^5.3.1: postcss-convert-values@^5.1.3: version "5.1.3" - resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz" integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== dependencies: browserslist "^4.21.4" @@ -9890,27 +9793,27 @@ postcss-convert-values@^5.1.3: postcss-discard-comments@^5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== postcss-discard-duplicates@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== postcss-discard-empty@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== postcss-discard-overridden@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== postcss-load-config@^3.0.0: version "3.1.4" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz" integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== dependencies: lilconfig "^2.0.5" @@ -9918,7 +9821,7 @@ postcss-load-config@^3.0.0: postcss-merge-longhand@^5.1.7: version "5.1.7" - resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz" integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== dependencies: postcss-value-parser "^4.2.0" @@ -9926,7 +9829,7 @@ postcss-merge-longhand@^5.1.7: postcss-merge-rules@^5.1.4: version "5.1.4" - resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz" integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== dependencies: browserslist "^4.21.4" @@ -9936,14 +9839,14 @@ postcss-merge-rules@^5.1.4: postcss-minify-font-values@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== dependencies: postcss-value-parser "^4.2.0" postcss-minify-gradients@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== dependencies: colord "^2.9.1" @@ -9952,7 +9855,7 @@ postcss-minify-gradients@^5.1.1: postcss-minify-params@^5.1.4: version "5.1.4" - resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz" integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== dependencies: browserslist "^4.21.4" @@ -9961,19 +9864,19 @@ postcss-minify-params@^5.1.4: postcss-minify-selectors@^5.2.1: version "5.2.1" - resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== dependencies: postcss-selector-parser "^6.0.5" postcss-modules-extract-imports@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz" integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== postcss-modules-local-by-default@^4.0.0: version "4.2.0" - resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz" integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== dependencies: icss-utils "^5.0.0" @@ -9982,21 +9885,21 @@ postcss-modules-local-by-default@^4.0.0: postcss-modules-scope@^3.0.0: version "3.2.1" - resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz" integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== dependencies: postcss-selector-parser "^7.0.0" postcss-modules-values@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: icss-utils "^5.0.0" postcss-modules@^4.0.0: version "4.3.1" - resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz#517c06c09eab07d133ae0effca2c510abba18048" + resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz" integrity sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q== dependencies: generic-names "^4.0.0" @@ -10010,47 +9913,47 @@ postcss-modules@^4.0.0: postcss-normalize-charset@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== postcss-normalize-display-values@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-positions@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-repeat-style@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-string@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-timing-functions@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-unicode@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz" integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== dependencies: browserslist "^4.21.4" @@ -10058,7 +9961,7 @@ postcss-normalize-unicode@^5.1.1: postcss-normalize-url@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== dependencies: normalize-url "^6.0.1" @@ -10066,14 +9969,14 @@ postcss-normalize-url@^5.1.0: postcss-normalize-whitespace@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: postcss-value-parser "^4.2.0" postcss-ordered-values@^5.1.3: version "5.1.3" - resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== dependencies: cssnano-utils "^3.1.0" @@ -10081,7 +9984,7 @@ postcss-ordered-values@^5.1.3: postcss-reduce-initial@^5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz" integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== dependencies: browserslist "^4.21.4" @@ -10089,14 +9992,14 @@ postcss-reduce-initial@^5.1.2: postcss-reduce-transforms@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== dependencies: postcss-value-parser "^4.2.0" postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: version "6.1.2" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== dependencies: cssesc "^3.0.0" @@ -10104,7 +10007,7 @@ postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.4, postcss-selecto postcss-selector-parser@^7.0.0: version "7.1.0" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz" integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== dependencies: cssesc "^3.0.0" @@ -10112,7 +10015,7 @@ postcss-selector-parser@^7.0.0: postcss-svgo@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== dependencies: postcss-value-parser "^4.2.0" @@ -10120,19 +10023,19 @@ postcss-svgo@^5.1.0: postcss-unique-selectors@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: postcss-selector-parser "^6.0.5" postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.2.15, postcss@^8.4.48, postcss@^8.5.3: version "8.5.3" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz" integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== dependencies: nanoid "^3.3.8" @@ -10153,18 +10056,18 @@ prettier-linter-helpers@^1.0.0: prettier@^2.7.1: version "2.8.8" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== prettier@^3.3.3: version "3.6.2" - resolved "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz" integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ== -prismjs@^1.24.1: - version "1.29.0" - resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" - integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== +prismjs@^1.30.0: + version "1.30.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz" + integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw== process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" @@ -10183,7 +10086,7 @@ progress@^2.0.0: promise-inflight@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: @@ -10201,7 +10104,7 @@ promise.series@^0.2.0: prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -10210,7 +10113,7 @@ prop-types@^15.8.1: proxy-addr@~2.0.7: version "2.0.7" - resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" @@ -10218,7 +10121,7 @@ proxy-addr@~2.0.7: proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== psl@^1.1.33: @@ -10238,14 +10141,14 @@ q@^1.5.1: qs@~6.14.0: version "6.14.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" + resolved "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz" integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== dependencies: side-channel "^1.1.0" quansync@^0.2.7: version "0.2.10" - resolved "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz#32053cf166fa36511aae95fc49796116f2dc20e1" + resolved "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz" integrity sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A== querystringify@^2.1.1: @@ -10277,12 +10180,12 @@ range-parser@1.2.0: range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== raw-body@~2.5.3: version "2.5.3" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz" integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== dependencies: bytes "~3.1.2" @@ -10302,7 +10205,7 @@ rc@^1.0.1, rc@^1.1.6: react-is@^16.13.1: version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== read-pkg-up@^3.0.0: @@ -10343,7 +10246,7 @@ read-pkg@^5.2.0: read-yaml-file@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz#9362bbcbdc77007cc8ea4519fe1c0b821a7ce0d8" + resolved "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz" integrity sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA== dependencies: graceful-fs "^4.1.5" @@ -10362,7 +10265,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre readable-stream@^1.0.33, readable-stream@~1.1.9: version "1.1.14" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== dependencies: core-util-is "~1.0.0" @@ -10385,7 +10288,7 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable readdirp@~3.5.0: version "3.5.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz" integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== dependencies: picomatch "^2.2.1" @@ -10399,7 +10302,7 @@ readdirp@~3.6.0: rechoir@^0.8.0: version "0.8.0" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz" integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== dependencies: resolve "^1.20.0" @@ -10414,7 +10317,7 @@ redent@^3.0.0: reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: version "1.0.10" - resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" + resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz" integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== dependencies: call-bind "^1.0.8" @@ -10428,7 +10331,7 @@ reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: regenerate-unicode-properties@^10.2.0: version "10.2.0" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz" integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== dependencies: regenerate "^1.4.2" @@ -10452,7 +10355,7 @@ regenerator-transform@^0.15.2: regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4: version "1.5.4" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz" integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== dependencies: call-bind "^1.0.8" @@ -10469,7 +10372,7 @@ regexpp@^3.1.0: regexpu-core@^6.2.0: version "6.2.0" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz" integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== dependencies: regenerate "^1.4.2" @@ -10496,12 +10399,12 @@ registry-url@3.1.0: regjsgen@^0.8.0: version "0.8.0" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz" integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== regjsparser@^0.12.0: version "0.12.0" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz" integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== dependencies: jsesc "~3.0.2" @@ -10513,7 +10416,7 @@ remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: replace-ext@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + resolved "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz" integrity sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ== replace-ext@^1.0.0: @@ -10528,7 +10431,7 @@ replace-ext@^2.0.0: replace-homedir@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/replace-homedir/-/replace-homedir-2.0.0.tgz#245bd9c909275e0beee75eae85bb40780cd61903" + resolved "https://registry.npmjs.org/replace-homedir/-/replace-homedir-2.0.0.tgz" integrity sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw== replace-in-file@^7.0.1: @@ -10575,19 +10478,19 @@ resolve-from@^5.0.0: resolve-options@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz#a1a57a9949db549dd075de3f5550675f02f1e4c5" + resolved "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz" integrity sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A== dependencies: value-or-function "^4.0.0" resolve-pkg-maps@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4: version "1.22.10" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== dependencies: is-core-module "^2.16.0" @@ -10596,7 +10499,7 @@ resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.2 resolve@^2.0.0-next.5: version "2.0.0-next.5" - resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz" integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== dependencies: is-core-module "^2.13.0" @@ -10618,7 +10521,7 @@ retry@^0.12.0: retry@^0.13.1: version "0.13.1" - resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== reusify@^1.0.4: @@ -10645,7 +10548,7 @@ robust-predicates@^3.0.2: rollup-plugin-postcss@^4.0.2: version "4.0.2" - resolved "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz#15e9462f39475059b368ce0e49c800fa4b1f7050" + resolved "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz" integrity sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w== dependencies: chalk "^4.1.0" @@ -10664,14 +10567,14 @@ rollup-plugin-postcss@^4.0.2: rollup-plugin-scss@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/rollup-plugin-scss/-/rollup-plugin-scss-4.0.1.tgz#5677eff2754525cebc813a9b876ae7ec44d192b4" + resolved "https://registry.npmjs.org/rollup-plugin-scss/-/rollup-plugin-scss-4.0.1.tgz" integrity sha512-3W3+3OzR+shkDl3hJ1XTAuGkP4AfiLgIjie2GtcoZ9pHfRiNqeDbtCu1EUnkjZ98EPIM6nnMIXkKlc7Sx5bRvA== dependencies: rollup-pluginutils "^2.3.3" rollup-plugin-typescript2@^0.36.0: version "0.36.0" - resolved "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.36.0.tgz#309564eb70d710412f5901344ca92045e180ed53" + resolved "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.36.0.tgz" integrity sha512-NB2CSQDxSe9+Oe2ahZbf+B4bh7pHwjV5L+RSYpCu7Q5ROuN94F9b6ioWwKfz3ueL3KTtmX4o2MUH2cgHDIEUsw== dependencies: "@rollup/pluginutils" "^4.1.2" @@ -10689,7 +10592,7 @@ rollup-pluginutils@^2.3.3, rollup-pluginutils@^2.8.2: rollup@4.52.3, rollup@^4.34.9: version "4.52.3" - resolved "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz#cc5c28d772b022ce48b235a97b347ccd9d88c1a3" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz" integrity sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A== dependencies: "@types/estree" "1.0.8" @@ -10720,7 +10623,7 @@ rollup@4.52.3, rollup@^4.34.9: run-applescript@^7.0.0: version "7.1.0" - resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz#2e9e54c4664ec3106c5b5630e249d3d6595c4911" + resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz" integrity sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q== run-parallel@^1.1.9: @@ -10744,7 +10647,7 @@ rxjs@^7.5.5: safe-array-concat@^1.1.2, safe-array-concat@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz" integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== dependencies: call-bind "^1.0.8" @@ -10753,24 +10656,24 @@ safe-array-concat@^1.1.2, safe-array-concat@^1.1.3: has-symbols "^1.1.0" isarray "^2.0.5" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-identifier@^0.4.2: version "0.4.2" - resolved "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" + resolved "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz" integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== safe-push-apply@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" + resolved "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz" integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== dependencies: es-errors "^1.3.0" @@ -10778,7 +10681,7 @@ safe-push-apply@^1.0.0: safe-regex-test@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz" integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== dependencies: call-bound "^1.0.2" @@ -10806,7 +10709,7 @@ sass@^1.52.3: sax@^1.2.4: version "1.4.1" - resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz" integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== saxes@^5.0.1: @@ -10816,19 +10719,9 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -schema-utils@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz#3b669f04f71ff2dfb5aba7ce2d5a9d79b35622c0" - integrity sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -schema-utils@^4.2.0: +schema-utils@^4.0.0, schema-utils@^4.2.0: version "4.3.3" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz#5b1850912fa31df90716963d45d9121fdfc09f46" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz" integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== dependencies: "@types/json-schema" "^7.0.9" @@ -10838,12 +10731,12 @@ schema-utils@^4.2.0: select-hose@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== selfsigned@^2.4.1: version "2.4.1" - resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== dependencies: "@types/node-forge" "^1.3.0" @@ -10851,7 +10744,7 @@ selfsigned@^2.4.1: semver-greatest-satisfied-range@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz#4b62942a7a1ccbdb252e5329677c003bac546fe7" + resolved "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz" integrity sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g== dependencies: sver "^1.8.3" @@ -10868,12 +10761,12 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: semver@^7.1.1, semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: version "7.7.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz" integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== send@~0.19.0, send@~0.19.1: version "0.19.2" - resolved "https://registry.npmjs.org/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29" + resolved "https://registry.npmjs.org/send/-/send-0.19.2.tgz" integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg== dependencies: debug "2.6.9" @@ -10892,7 +10785,7 @@ send@~0.19.0, send@~0.19.1: serialize-javascript@5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz" integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== dependencies: randombytes "^2.1.0" @@ -10906,7 +10799,7 @@ serialize-javascript@^6.0.1: serve-handler@6.1.6: version "6.1.6" - resolved "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz#50803c1d3e947cd4a341d617f8209b22bd76cfa1" + resolved "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz" integrity sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ== dependencies: bytes "3.0.0" @@ -10919,7 +10812,7 @@ serve-handler@6.1.6: serve-index@^1.9.1: version "1.9.1" - resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== dependencies: accepts "~1.3.4" @@ -10932,7 +10825,7 @@ serve-index@^1.9.1: serve-static@~1.16.2: version "1.16.3" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz" integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA== dependencies: encodeurl "~2.0.0" @@ -10942,7 +10835,7 @@ serve-static@~1.16.2: serve@^14.2.0: version "14.2.4" - resolved "https://registry.npmjs.org/serve/-/serve-14.2.4.tgz#ba4c425c3c965f496703762e808f34b913f42fb0" + resolved "https://registry.npmjs.org/serve/-/serve-14.2.4.tgz" integrity sha512-qy1S34PJ/fcY8gjVGszDB3EXiPSk5FKhUa7tQe0UPRddxRidc2V6cNHPNewbE1D7MAkgLuWEt3Vw56vYy73tzQ== dependencies: "@zeit/schemas" "2.36.0" @@ -10986,7 +10879,7 @@ set-function-name@^2.0.2: set-proto@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" + resolved "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz" integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== dependencies: dunder-proto "^1.0.1" @@ -10995,12 +10888,12 @@ set-proto@^1.0.0: setprototypeof@1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== setprototypeof@1.2.0, setprototypeof@~1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== shallow-clone@^3.0.0: @@ -11034,19 +10927,14 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.6.1: - version "1.8.1" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -shell-quote@^1.8.3: +shell-quote@^1.6.1, shell-quote@^1.8.3: version "1.8.3" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz" integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== side-channel-list@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== dependencies: es-errors "^1.3.0" @@ -11054,7 +10942,7 @@ side-channel-list@^1.0.0: side-channel-map@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== dependencies: call-bound "^1.0.2" @@ -11064,7 +10952,7 @@ side-channel-map@^1.0.1: side-channel-weakmap@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== dependencies: call-bound "^1.0.2" @@ -11075,7 +10963,7 @@ side-channel-weakmap@^1.0.2: side-channel@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== dependencies: es-errors "^1.3.0" @@ -11086,7 +10974,7 @@ side-channel@^1.1.0: siginfo@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz" integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: @@ -11096,7 +10984,7 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: signal-exit@^4.0.1: version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== simple-swizzle@^0.2.2: @@ -11108,7 +10996,7 @@ simple-swizzle@^0.2.2: sirv@^2.0.3: version "2.0.4" - resolved "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" + resolved "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz" integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== dependencies: "@polka/url" "^1.0.0-next.24" @@ -11163,7 +11051,7 @@ smob@^1.0.0: sockjs@^0.3.24: version "0.3.24" - resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" @@ -11172,7 +11060,7 @@ sockjs@^0.3.24: socks-proxy-agent@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== dependencies: agent-base "^6.0.2" @@ -11181,7 +11069,7 @@ socks-proxy-agent@^7.0.0: socks@^2.6.2: version "2.8.5" - resolved "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz#bfe18f5ead1efc93f5ec90c79fa8bdccbcee2e64" + resolved "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz" integrity sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww== dependencies: ip-address "^9.0.5" @@ -11189,7 +11077,7 @@ socks@^2.6.2: "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0, source-map-js@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map-support@^0.5.16, source-map-support@~0.5.20: @@ -11212,12 +11100,12 @@ sparkles@^1.0.0: sparkles@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz#8ad4e8cecba7e568bba660c39b6db46625ecf1ad" + resolved "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz" integrity sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg== spawndamnit@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/spawndamnit/-/spawndamnit-3.0.1.tgz#44410235d3dc4e21f8e4f740ae3266e4486c2aed" + resolved "https://registry.npmjs.org/spawndamnit/-/spawndamnit-3.0.1.tgz" integrity sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg== dependencies: cross-spawn "^7.0.5" @@ -11251,7 +11139,7 @@ spdx-license-ids@^3.0.0: spdy-transport@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: debug "^4.1.0" @@ -11263,7 +11151,7 @@ spdy-transport@^3.0.0: spdy@^4.0.2: version "4.0.2" - resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== dependencies: debug "^4.1.0" @@ -11274,7 +11162,7 @@ spdy@^4.0.2: speakingurl@^14.0.1: version "14.0.1" - resolved "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53" + resolved "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz" integrity sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ== split2@^3.0.0: @@ -11286,7 +11174,7 @@ split2@^3.0.0: split2@^4.0.0: version "4.2.0" - resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== split@^1.0.0: @@ -11308,7 +11196,7 @@ sprintf-js@~1.0.2: ssri@^9.0.0: version "9.0.1" - resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz" integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== dependencies: minipass "^3.1.1" @@ -11325,7 +11213,7 @@ stack-trace@0.0.x: stackback@0.0.2: version "0.0.2" - resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz" integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== standard-version@^9.3.2: @@ -11350,22 +11238,22 @@ standard-version@^9.3.2: "statuses@>= 1.4.0 < 2": version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== statuses@~2.0.1, statuses@~2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz" integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== std-env@^3.9.0: version "3.9.0" - resolved "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1" + resolved "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz" integrity sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw== stop-iteration-iterator@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" + resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz" integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== dependencies: es-errors "^1.3.0" @@ -11373,31 +11261,31 @@ stop-iteration-iterator@^1.1.0: stream-composer@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz#7ee61ca1587bf5f31b2e29aa2093cbf11442d152" + resolved "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz" integrity sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w== dependencies: streamx "^2.13.2" stream-exhaust@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + resolved "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz" integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== streamfilter@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/streamfilter/-/streamfilter-3.0.0.tgz#8c61b08179a6c336c6efccc5df30861b7a9675e7" + resolved "https://registry.npmjs.org/streamfilter/-/streamfilter-3.0.0.tgz" integrity sha512-kvKNfXCmUyC8lAXSSHCIXBUlo/lhsLcCU/OmzACZYpRUdtKIH68xYhm/+HI15jFJYtNJGYtCgn2wmIiExY1VwA== dependencies: readable-stream "^3.0.6" streamifier@^0.1.1: version "0.1.1" - resolved "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz#97e98d8fa4d105d62a2691d1dc07e820db8dfc4f" + resolved "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz" integrity sha512-zDgl+muIlWzXNsXeyUfOk9dChMjlpkq0DRsxujtYPgyJ676yQ8jEm6zzaaWHFDg5BNcLuif0eD2MTyJdZqXpdg== streamx@^2.12.0, streamx@^2.12.5, streamx@^2.13.2, streamx@^2.14.0: version "2.22.1" - resolved "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz#c97cbb0ce18da4f4db5a971dc9ab68ff5dc7f5a5" + resolved "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz" integrity sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA== dependencies: fast-fifo "^1.3.2" @@ -11422,7 +11310,7 @@ string-template@~0.2.0: "string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -11431,7 +11319,7 @@ string-template@~0.2.0: "string-width@^1.0.2 || 2": version "2.1.1" - resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" @@ -11457,17 +11345,17 @@ string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: string.fromcodepoint@^0.2.1: version "0.2.1" - resolved "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz#8d978333c0bc92538f50f383e4888f3e5619d653" + resolved "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz" integrity sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg== string.prototype.codepointat@^0.2.1: version "0.2.1" - resolved "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz#004ad44c8afc727527b108cd462b4d971cd469bc" + resolved "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz" integrity sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg== string.prototype.matchall@^4.0.12: version "4.0.12" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz#6c88740e49ad4956b1332a911e949583a275d4c0" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz" integrity sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA== dependencies: call-bind "^1.0.8" @@ -11496,7 +11384,7 @@ string.prototype.padend@^3.0.0: string.prototype.repeat@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#e90872ee0308b29435aa26275f6e1b762daee01a" + resolved "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz" integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w== dependencies: define-properties "^1.1.3" @@ -11504,7 +11392,7 @@ string.prototype.repeat@^1.0.0: string.prototype.trim@^1.2.10: version "1.2.10" - resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz" integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== dependencies: call-bind "^1.0.8" @@ -11517,7 +11405,7 @@ string.prototype.trim@^1.2.10: string.prototype.trimend@^1.0.9: version "1.0.9" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz" integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== dependencies: call-bind "^1.0.8" @@ -11534,25 +11422,18 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - -string_decoder@~1.1.1: +string_decoder@^1.1.1, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + stringify-package@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz" @@ -11560,7 +11441,7 @@ stringify-package@^1.0.1: "strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" @@ -11627,7 +11508,7 @@ style-inject@^0.3.0: stylehacks@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz" integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== dependencies: browserslist "^4.21.4" @@ -11635,12 +11516,12 @@ stylehacks@^5.1.1: stylis@^4.1.2: version "4.3.6" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz#7c7b97191cb4f195f03ecab7d52f7902ed378320" + resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz" integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== superjson@^2.2.2: version "2.2.6" - resolved "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz#a223a3a988172a5f9656e2063fe5f733af40d099" + resolved "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz" integrity sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA== dependencies: copy-anything "^4" @@ -11683,19 +11564,19 @@ supports-preserve-symlinks-flag@^1.0.0: sver@^1.8.3: version "1.8.4" - resolved "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz#9bd6f6265263f01aab152df935dc7a554c15673f" + resolved "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz" integrity sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA== optionalDependencies: semver "^6.3.0" svg-pathdata@^5.0.2: version "5.0.5" - resolved "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-5.0.5.tgz#65e8d765642ba15fe15434444087d082bc526b29" + resolved "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-5.0.5.tgz" integrity sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow== svg2ttf@^4.1.0: version "4.3.0" - resolved "https://registry.npmjs.org/svg2ttf/-/svg2ttf-4.3.0.tgz#433440c7e9062f8fdcec3cad721cd08a2c7e51e3" + resolved "https://registry.npmjs.org/svg2ttf/-/svg2ttf-4.3.0.tgz" integrity sha512-LZ0B7zzHWLWbzLzwaKGHQvPOuxCXLReIb3LSxFSGUy1gMw2Utk6KGNbTmbmRL6Rk1qDSmTixnDrQgnXaL9n0CA== dependencies: argparse "^1.0.6" @@ -11707,7 +11588,7 @@ svg2ttf@^4.1.0: svgicons2svgfont@^9.0.3: version "9.2.0" - resolved "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-9.2.0.tgz#9ff1b643891891eb52ab1bd764b468e2d06ded80" + resolved "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-9.2.0.tgz" integrity sha512-mWeiuob7L2ZTcnAEP4JvSQ1pnIsGjV16ykQ0fCiiXqoUAQ/iNsDvBc601ojjfP89eCPtr3IVZ9mDxYpdxYO3xQ== dependencies: array.prototype.flatmap "1.2.4" @@ -11723,7 +11604,7 @@ svgicons2svgfont@^9.0.3: svgo@^2.7.0: version "2.8.0" - resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== dependencies: "@trysound/sax" "0.2.0" @@ -11746,7 +11627,7 @@ symbol-tree@^3.2.4: synckit@^0.11.7: version "0.11.8" - resolved "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz#b2aaae998a4ef47ded60773ad06e7cb821f55457" + resolved "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz" integrity sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A== dependencies: "@pkgr/core" "^0.2.4" @@ -11764,7 +11645,7 @@ table@^6.0.9: tar@^6.1.11, tar@^6.1.2: version "6.2.1" - resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz" integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" @@ -11776,19 +11657,19 @@ tar@^6.1.11, tar@^6.1.2: teex@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz#b8fa7245ef8e8effa8078281946c85ab780a0b12" + resolved "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz" integrity sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg== dependencies: streamx "^2.12.5" term-size@^2.1.0: version "2.2.1" - resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== terser@^5.17.4: version "5.39.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz#0e82033ed57b3ddf1f96708d123cca717d86ca3a" + resolved "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz" integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw== dependencies: "@jridgewell/source-map" "^0.3.3" @@ -11798,7 +11679,7 @@ terser@^5.17.4: test-exclude@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz#20b3ba4906ac20994e275bbcafd68d510264c2a2" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz" integrity sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -11807,7 +11688,7 @@ test-exclude@^7.0.1: text-decoder@^1.1.0: version "1.2.3" - resolved "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz#b19da364d981b2326d5f43099c310cc80d770c65" + resolved "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz" integrity sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA== dependencies: b4a "^1.6.4" @@ -11819,7 +11700,7 @@ text-extensions@^1.0.0: text-extensions@^2.0.0: version "2.4.0" - resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz#a1cfcc50cf34da41bfd047cc744f804d1680ea34" + resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz" integrity sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g== text-hex@1.0.x: @@ -11841,7 +11722,7 @@ text-table@^0.2.0: thingies@^2.5.0: version "2.5.0" - resolved "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz#5f7b882c933b85989f8466b528a6247a6881e04f" + resolved "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz" integrity sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw== through2@^2.0.0: @@ -11866,7 +11747,7 @@ through@2, "through@>=2.2.7 <3", through@^2.3.8: thunky@^1.0.2: version "1.1.0" - resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== time-stamp@^1.0.0: @@ -11876,17 +11757,17 @@ time-stamp@^1.0.0: tinybench@^2.9.0: version "2.9.0" - resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" + resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz" integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== tinyexec@^0.3.0, tinyexec@^0.3.2: version "0.3.2" - resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz#941794e657a85e496577995c6eef66f53f42b3d2" + resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz" integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA== tinyglobby@^0.2.13: version "0.2.13" - resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz#a0e46515ce6cbcd65331537e57484af5a7b2ff7e" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz" integrity sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw== dependencies: fdir "^6.4.4" @@ -11894,17 +11775,17 @@ tinyglobby@^0.2.13: tinypool@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz#706193cc532f4c100f66aa00b01c42173d9051b2" + resolved "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz" integrity sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA== tinyrainbow@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz#9509b2162436315e80e3eee0fcce4474d2444294" + resolved "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz" integrity sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw== tinyspy@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" + resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz" integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== tmp@^0.0.33: @@ -11923,19 +11804,19 @@ to-regex-range@^5.0.1: to-through@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz#bf4956eaca5a0476474850a53672bed6906ace54" + resolved "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz" integrity sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw== dependencies: streamx "^2.12.5" toidentifier@~1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== totalist@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + resolved "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz" integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== tough-cookie@^4.0.0: @@ -11962,7 +11843,7 @@ tr46@~0.0.3: tree-dump@^1.0.3, tree-dump@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" + resolved "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz" integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA== trim-newlines@^3.0.0: @@ -11977,7 +11858,7 @@ triple-beam@^1.3.0: ts-api-utils@^1.0.1, ts-api-utils@^1.3.0: version "1.4.3" - resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz" integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== ts-dedent@^2.2.0: @@ -11997,17 +11878,17 @@ tsconfig-paths@^3.15.0: tslib@2.3.0: version "2.3.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== tslib@^2.0.0, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.4.0, tslib@^2.6.2: version "2.8.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== tsx@^4.19.2: version "4.19.3" - resolved "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz#2bdbcb87089374d933596f8645615142ed727666" + resolved "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz" integrity sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ== dependencies: esbuild "~0.25.0" @@ -12017,7 +11898,7 @@ tsx@^4.19.2: ttf2eot@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/ttf2eot/-/ttf2eot-2.0.0.tgz#8e6337a585abd1608a0c84958ab483ce69f6654b" + resolved "https://registry.npmjs.org/ttf2eot/-/ttf2eot-2.0.0.tgz" integrity sha512-U56aG2Ylw7psLOmakjemAzmpqVgeadwENg9oaDjaZG5NYX4WB6+7h74bNPcc+0BXsoU5A/XWiHabDXyzFOmsxQ== dependencies: argparse "^1.0.6" @@ -12025,7 +11906,7 @@ ttf2eot@^2.0.0: ttf2woff2@^4.0.1: version "4.0.5" - resolved "https://registry.npmjs.org/ttf2woff2/-/ttf2woff2-4.0.5.tgz#c7c87242938e9e2ed37fe5f477dd21acdb88fbfd" + resolved "https://registry.npmjs.org/ttf2woff2/-/ttf2woff2-4.0.5.tgz" integrity sha512-zpoU0NopfjoyVqkFeQ722SyKk/n607mm5OHxuDS/wCCSy82B8H3hHXrezftA2KMbKqfJIjie2lsJHdvPnBGbsw== dependencies: bindings "^1.5.0" @@ -12035,7 +11916,7 @@ ttf2woff2@^4.0.1: ttf2woff@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/ttf2woff/-/ttf2woff-2.0.2.tgz#09a7cee59abd3c15282b57ed84ac7c7770749f1f" + resolved "https://registry.npmjs.org/ttf2woff/-/ttf2woff-2.0.2.tgz" integrity sha512-X68badwBjAy/+itU49scLjXUL094up+rHuYk+YAOTTBYSUMOmLZ7VyhZJuqQESj1gnyLAC2/5V8Euv+mExmyPA== dependencies: argparse "^1.0.6" @@ -12081,7 +11962,7 @@ type-fest@^2.13.0: type-is@~1.6.18: version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" @@ -12089,7 +11970,7 @@ type-is@~1.6.18: typed-array-buffer@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz" integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== dependencies: call-bound "^1.0.3" @@ -12098,7 +11979,7 @@ typed-array-buffer@^1.0.3: typed-array-byte-length@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz" integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== dependencies: call-bind "^1.0.8" @@ -12109,7 +11990,7 @@ typed-array-byte-length@^1.0.3: typed-array-byte-offset@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz" integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== dependencies: available-typed-arrays "^1.0.7" @@ -12122,7 +12003,7 @@ typed-array-byte-offset@^1.0.4: typed-array-length@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz" integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== dependencies: call-bind "^1.0.7" @@ -12139,7 +12020,7 @@ typedarray@^0.0.6: typescript-eslint@^7.18.0: version "7.18.0" - resolved "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.18.0.tgz#e90d57649b2ad37a7475875fa3e834a6d9f61eb2" + resolved "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.18.0.tgz" integrity sha512-PonBkP603E3tt05lDkbOMyaxJjvKqQrXsnow72sVeOFINDE/qNmnnd+f9b4N+U7W6MXnnYyrhtmF2t08QWwUbA== dependencies: "@typescript-eslint/eslint-plugin" "7.18.0" @@ -12153,7 +12034,7 @@ typescript@4.7.2: typescript@5.7.3: version "5.7.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz" integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== uglify-js@^3.1.4: @@ -12163,7 +12044,7 @@ uglify-js@^3.1.4: unbox-primitive@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz" integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== dependencies: call-bound "^1.0.3" @@ -12178,12 +12059,12 @@ unc-path-regex@^0.1.2: undertaker-registry@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-2.0.0.tgz#d434246e398444740dd7fe4c9543e402ad99e4ca" + resolved "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-2.0.0.tgz" integrity sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew== undertaker@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/undertaker/-/undertaker-2.0.0.tgz#fe4d40dc71823ce5a80f1ecc63ec8b88ad40b54a" + resolved "https://registry.npmjs.org/undertaker/-/undertaker-2.0.0.tgz" integrity sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ== dependencies: bach "^2.0.1" @@ -12193,7 +12074,7 @@ undertaker@^2.0.0: undici-types@~6.21.0: version "6.21.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz" integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== unicode-canonical-property-names-ecmascript@^2.0.0: @@ -12221,26 +12102,26 @@ unicode-property-aliases-ecmascript@^2.0.0: unicorn-magic@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" + resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz" integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== unique-filename@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz" integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== dependencies: unique-slug "^3.0.0" unique-slug@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz" integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== dependencies: imurmurhash "^0.1.4" universalify@^0.1.0: version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^0.2.0: @@ -12255,12 +12136,12 @@ universalify@^2.0.0: unpipe@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== update-browserslist-db@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz" integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== dependencies: escalade "^3.2.0" @@ -12296,7 +12177,7 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== utrie@^1.0.2: @@ -12308,12 +12189,12 @@ utrie@^1.0.2: uuid@^8.3.2: version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== uuid@^9.0.0: version "9.0.1" - resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== v8-compile-cache@^2.0.3: @@ -12330,7 +12211,7 @@ v8flags@^3.1.1: v8flags@^4.0.0: version "4.0.1" - resolved "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz#98fe6c4308317c5f394d85a435eb192490f7e132" + resolved "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz" integrity sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg== valid-data-url@^3.0.0: @@ -12348,12 +12229,12 @@ validate-npm-package-license@^3.0.1: value-or-function@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz#70836b6a876a010dc3a2b884e7902e9db064378d" + resolved "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz" integrity sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg== varstream@^0.3.2: version "0.3.2" - resolved "https://registry.npmjs.org/varstream/-/varstream-0.3.2.tgz#18ac6494765f3ff1a35ad9a4be053bec188a5de1" + resolved "https://registry.npmjs.org/varstream/-/varstream-0.3.2.tgz" integrity sha512-OpR3Usr9dGZZbDttlTxdviGdxiURI0prX68+DuaN/JfIDbK9ZOmREKM6PgmelsejMnhgjXmEEEgf+E4NbsSqMg== dependencies: readable-stream "^1.0.33" @@ -12365,7 +12246,7 @@ vary@~1.1.2: vinyl-contents@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz#cc2ba4db3a36658d069249e9e36d9e2b41935d89" + resolved "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz" integrity sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q== dependencies: bl "^5.0.0" @@ -12373,7 +12254,7 @@ vinyl-contents@^2.0.0: vinyl-fs@^4.0.2: version "4.0.2" - resolved "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.2.tgz#d46557653e4a7109f29d626a9cf478680c7f8c70" + resolved "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.2.tgz" integrity sha512-XRFwBLLTl8lRAOYiBqxY279wY46tVxLaRhSwo3GzKEuLz1giffsOquWWboD/haGf5lx+JyTigCFfe7DWHoARIA== dependencies: fs-mkdirp-stream "^2.0.1" @@ -12393,7 +12274,7 @@ vinyl-fs@^4.0.2: vinyl-sourcemap@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz#422f410a0ea97cb54cebd698d56a06d7a22e0277" + resolved "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz" integrity sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q== dependencies: convert-source-map "^2.0.0" @@ -12405,7 +12286,7 @@ vinyl-sourcemap@^2.0.0: vinyl@^0.5.0: version "0.5.3" - resolved "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + resolved "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz" integrity sha512-P5zdf3WB9uzr7IFoVQ2wZTmUwHL8cMZWJGzLBNCHNZ3NB6HTMsYABtt7z8tAGIINLXyAob9B9a1yzVGMFOYKEA== dependencies: clone "^1.0.0" @@ -12414,7 +12295,7 @@ vinyl@^0.5.0: vinyl@^2.1.0, vinyl@^2.2.0: version "2.2.1" - resolved "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" + resolved "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz" integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== dependencies: clone "^2.1.1" @@ -12426,7 +12307,7 @@ vinyl@^2.1.0, vinyl@^2.2.0: vinyl@^3.0.0, vinyl@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/vinyl/-/vinyl-3.0.1.tgz#5f5ff85255bda2b5da25e4b3bd80b3fc077fb5a9" + resolved "https://registry.npmjs.org/vinyl/-/vinyl-3.0.1.tgz" integrity sha512-0QwqXteBNXgnLCdWdvPQBX6FXRHtIH3VhJPTd5Lwn28tJXc34YqSCWUmkOvtJHBmB3gGoPtrOKk3Ts8/kEZ9aA== dependencies: clone "^2.1.2" @@ -12450,7 +12331,7 @@ virtual-dom@^2.1.1: vite-node@3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/vite-node/-/vite-node-3.1.3.tgz#d021ced40b5a057305eaea9ce62c610c33b60a48" + resolved "https://registry.npmjs.org/vite-node/-/vite-node-3.1.3.tgz" integrity sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA== dependencies: cac "^6.7.14" @@ -12461,7 +12342,7 @@ vite-node@3.1.3: "vite@^5.0.0 || ^6.0.0", vite@^6.4.1: version "6.4.1" - resolved "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz#afbe14518cdd6887e240a4b0221ab6d0ce733f96" + resolved "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz" integrity sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g== dependencies: esbuild "^0.25.0" @@ -12475,7 +12356,7 @@ vite-node@3.1.3: vitest@^3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/vitest/-/vitest-3.1.3.tgz#0b0b01932408cd3af61867f4468d28bd83406ffb" + resolved "https://registry.npmjs.org/vitest/-/vitest-3.1.3.tgz" integrity sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw== dependencies: "@vitest/expect" "3.1.3" @@ -12502,12 +12383,12 @@ vitest@^3.1.3: vscode-uri@^3.0.8: version "3.1.0" - resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz#dd09ec5a66a38b5c3fffc774015713496d14e09c" + resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz" integrity sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ== vue-eslint-parser@^10.2.0: version "10.2.0" - resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz#cb53f89b14c7f5bf6a95c9532e3b2961ab619d61" + resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz" integrity sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw== dependencies: debug "^4.4.0" @@ -12519,7 +12400,7 @@ vue-eslint-parser@^10.2.0: vue-eslint-parser@^9.4.3: version "9.4.3" - resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz#9b04b22c71401f1e8bca9be7c3e3416a4bde76a8" + resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz" integrity sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg== dependencies: debug "^4.3.4" @@ -12532,7 +12413,7 @@ vue-eslint-parser@^9.4.3: vue-tsc@^3.2.2: version "3.2.2" - resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.2.2.tgz#ccee54f2c2490713de75a66d9965bd9e33fe7066" + resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.2.2.tgz" integrity sha512-r9YSia/VgGwmbbfC06hDdAatH634XJ9nVl6Zrnz1iK4ucp8Wu78kawplXnIDa3MSu1XdQQePTHLXYwPDWn+nyQ== dependencies: "@volar/typescript" "2.4.27" @@ -12540,7 +12421,7 @@ vue-tsc@^3.2.2: vue@^3.5.13: version "3.5.13" - resolved "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz#9f760a1a982b09c0c04a867903fc339c9f29ec0a" + resolved "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz" integrity sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ== dependencies: "@vue/compiler-dom" "3.5.13" @@ -12565,7 +12446,7 @@ w3c-xmlserializer@^3.0.0: wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" - resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" @@ -12584,7 +12465,7 @@ web-resource-inliner@^6.0.1: web-worker@^1.2.0: version "1.5.0" - resolved "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz#71b2b0fbcc4293e8f0aa4f6b8a3ffebff733dcc5" + resolved "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz" integrity sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw== webidl-conversions@^3.0.0: @@ -12599,7 +12480,7 @@ webidl-conversions@^7.0.0: webpack-bundle-analyzer@4.10.2: version "4.10.2" - resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" + resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz" integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== dependencies: "@discoveryjs/json-ext" "0.5.7" @@ -12617,7 +12498,7 @@ webpack-bundle-analyzer@4.10.2: webpack-dev-middleware@^7.4.2: version "7.4.5" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz#d4e8720aa29cb03bc158084a94edb4594e3b7ac0" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz" integrity sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA== dependencies: colorette "^2.0.10" @@ -12629,7 +12510,7 @@ webpack-dev-middleware@^7.4.2: webpack-dev-server@5.2.2: version "5.2.2" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz#96a143d50c58fef0c79107e61df911728d7ceb39" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz" integrity sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg== dependencies: "@types/bonjour" "^3.5.13" @@ -12663,7 +12544,7 @@ webpack-dev-server@5.2.2: websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: http-parser-js ">=0.5.1" @@ -12672,7 +12553,7 @@ websocket-driver@>=0.5.1, websocket-driver@^0.7.4: websocket-extensions@>=0.1.1: version "0.1.4" - resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== whatwg-encoding@^2.0.0: @@ -12713,7 +12594,7 @@ whatwg-url@^5.0.0: which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz" integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== dependencies: is-bigint "^1.1.0" @@ -12724,7 +12605,7 @@ which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: which-builtin-type@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e" + resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz" integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== dependencies: call-bound "^1.0.2" @@ -12743,7 +12624,7 @@ which-builtin-type@^1.2.1: which-collection@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz" integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== dependencies: is-map "^2.0.3" @@ -12753,7 +12634,7 @@ which-collection@^1.0.2: which-typed-array@^1.1.16, which-typed-array@^1.1.19: version "1.1.19" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz" integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== dependencies: available-typed-arrays "^1.0.7" @@ -12780,7 +12661,7 @@ which@^1.2.14, which@^1.2.9: why-is-node-running@^2.3.0: version "2.3.0" - resolved "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" + resolved "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz" integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== dependencies: siginfo "^2.0.0" @@ -12788,14 +12669,14 @@ why-is-node-running@^2.3.0: wide-align@1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" wide-align@^1.1.5: version "1.1.5" - resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" @@ -12845,12 +12726,12 @@ wordwrap@^1.0.0: workerpool@6.1.0: version "6.1.0" - resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz" integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -12891,17 +12772,17 @@ wrappy@1: ws@^7.3.1: version "7.5.10" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.18.0, ws@^8.2.3: version "8.18.1" - resolved "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz#ea131d3784e1dfdff91adb0a4a116b127515e3cb" + resolved "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz" integrity sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w== wsl-utils@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz#8783d4df671d4d50365be2ee4c71917a0557baab" + resolved "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz" integrity sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw== dependencies: is-wsl "^3.1.0" @@ -12928,12 +12809,12 @@ xmlchars@^2.2.0: xmldom-sre@^0.1.31: version "0.1.31" - resolved "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz#10860d5bab2c603144597d04bf2c4980e98067f4" + resolved "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz" integrity sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw== xmldom@~0.1.22: version "0.1.31" - resolved "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" + resolved "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz" integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== xtend@~4.0.0, xtend@~4.0.1: @@ -12961,24 +12842,19 @@ yaml@^1.10.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@20.2.4: +yargs-parser@20.2.4, yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.4" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - yargs-parser@^21.1.1: version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs-unparser@2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: camelcase "^6.0.0" @@ -13001,7 +12877,7 @@ yargs@16.2.0, yargs@^16.0.0, yargs@^16.2.0: yargs@^17.0.0, yargs@^17.7.2: version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" @@ -13019,12 +12895,12 @@ yocto-queue@^0.1.0: yocto-queue@^1.0.0: version "1.2.1" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz#36d7c4739f775b3cbc28e6136e21aa057adec418" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz" integrity sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg== zrender@6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/zrender/-/zrender-6.0.0.tgz#947077bc69cdea744134984927f132f3727f8079" + resolved "https://registry.npmjs.org/zrender/-/zrender-6.0.0.tgz" integrity sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg== dependencies: tslib "2.3.0"
目录管理 + {{ subtitle }}
@@ -23,6 +24,7 @@ import { ArrowIcon, RefreshIcon } from '../icons'; defineProps<{ expanded: boolean; + subtitle?: string; }>(); defineEmits<{ diff --git a/packages/client/src/components/ui/ToastContainer.vue b/packages/client/src/components/ui/ToastContainer.vue new file mode 100644 index 000000000..0a16f379b --- /dev/null +++ b/packages/client/src/components/ui/ToastContainer.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/packages/client/src/components/ui/UnsavedChangesDialog.vue b/packages/client/src/components/ui/UnsavedChangesDialog.vue new file mode 100644 index 000000000..767620c7d --- /dev/null +++ b/packages/client/src/components/ui/UnsavedChangesDialog.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/packages/client/src/constants/events.ts b/packages/client/src/constants/events.ts new file mode 100644 index 000000000..cc768b5f8 --- /dev/null +++ b/packages/client/src/constants/events.ts @@ -0,0 +1,15 @@ +export const TAURI_EVENTS = { + NEW_FILE: 'new_file', + OPEN_FILE: 'open_file', + SAVE: 'save', + SAVE_AS: 'save_as', + TOGGLE_TOOLBAR: 'toggle_toolbar', +} as const; + +export const WINDOW_EVENTS = { + OPEN_FILE_FROM_SIDEBAR: 'open-file-from-sidebar', + REQUEST_SAVE: 'cherry:request-save', +} as const; + +export type TauriEventName = (typeof TAURI_EVENTS)[keyof typeof TAURI_EVENTS]; +export type WindowEventName = (typeof WINDOW_EVENTS)[keyof typeof WINDOW_EVENTS]; diff --git a/packages/client/src/constants/files.ts b/packages/client/src/constants/files.ts new file mode 100644 index 000000000..94ddddeab --- /dev/null +++ b/packages/client/src/constants/files.ts @@ -0,0 +1,4 @@ +export const SUPPORTED_FILE_EXTENSIONS = ['md', 'markdown', 'text', 'txt']; +export const MAX_RECENT_FILES = 50; +export const MAX_DIRECTORY_DEPTH = 8; +export const DEFAULT_FILE_CONTENT = '# 新文档\n\n开始编写你的内容...'; diff --git a/packages/client/src/constants/i18n.ts b/packages/client/src/constants/i18n.ts new file mode 100644 index 000000000..246b5ba4f --- /dev/null +++ b/packages/client/src/constants/i18n.ts @@ -0,0 +1,80 @@ +/** + * 国际化消息常量 + * 集中管理所有用户可见的文案,便于后续多语言支持 + */ + +export const MESSAGES = { + // 文件操作 + FILE: { + OPEN_FAILED: '打开文件失败', + SAVE_SUCCESS: '文件已保存', + SAVE_FAILED: '保存文件失败', + SAVE_AS_SUCCESS: '文件已另存为', + SAVE_AS_FAILED: '另存为失败', + READ_FAILED: '读取文件失败', + CREATE_FAILED: '创建新文件失败', + USER_CANCELLED: '用户取消操作', + USER_CANCELLED_SAVE: '用户取消保存', + USER_CANCELLED_SELECT: '用户取消选择文件', + RESTORE_SUCCESS: '成功恢复上次打开的文件', + RESTORE_FAILED: '恢复上次打开的文件失败', + }, + + // 目录操作 + DIRECTORY: { + OPEN_FAILED: '打开目录失败', + LOAD_FAILED: '加载目录结构失败', + GET_LIST_FAILED: '获取目录列表失败', + }, + + // 剪贴板 + CLIPBOARD: { + COPY_PATH_SUCCESS: '文件路径已复制到剪贴板', + COPY_PATH_FAILED: '复制文件路径失败', + COPY_PATH_FALLBACK: '无法打开,已复制文件路径到剪贴板', + }, + + // 文件管理 + FILE_MANAGEMENT: { + REMOVE_SUCCESS: '文件已从最近列表中移除', + REMOVE_FAILED: '移除文件失败', + }, + + // 资源管理器 + EXPLORER: { + OPEN_FAILED: '打开资源管理器失败', + }, + + // 快捷键 + SHORTCUT: { + REGISTER_SAVE_FAILED: '注册保存快捷键失败', + UNREGISTER_SAVE_FAILED: '注销保存快捷键失败', + }, + + // 状态持久化 + STORAGE: { + LOAD_EXPAND_STATE_FAILED: '加载目录管理展开状态失败', + SAVE_EXPAND_STATE_FAILED: '保存目录管理展开状态失败', + LOAD_FILE_STATE_FAILED: '加载文件状态失败', + SAVE_FILE_STATE_FAILED: '保存文件状态失败', + }, + + // 未知错误 + UNKNOWN_ERROR: '未知错误', +} as const; + +export const DIALOGS = { + UNSAVED_CHANGES: { + TITLE: '未保存的更改', + MESSAGE: '检测到未保存的更改,您要如何处理?', + SAVE_AND_CONTINUE: '保存并继续', + DISCARD: '放弃更改', + CANCEL: '取消', + // 简单模式(confirm)的提示 + SIMPLE_CONFIRM: '检测到未保存的更改,继续操作将丢失未保存内容,是否继续?', + }, + CANCELLED_UNSAVED: '已取消:存在未保存的更改', +} as const; + +export type MessageKey = keyof typeof MESSAGES; +export type DialogKey = keyof typeof DIALOGS; diff --git a/packages/client/src/store/index.ts b/packages/client/src/store/index.ts index e23e64d7e..1513d5f80 100644 --- a/packages/client/src/store/index.ts +++ b/packages/client/src/store/index.ts @@ -1 +1,2 @@ export { useFileStore } from './modal/file'; +export { useDirectoryStore } from './modal/directory'; diff --git a/packages/client/src/store/modal/directory.ts b/packages/client/src/store/modal/directory.ts new file mode 100644 index 000000000..2fa57bdf0 --- /dev/null +++ b/packages/client/src/store/modal/directory.ts @@ -0,0 +1,105 @@ +import { defineStore } from 'pinia'; + +interface DirectoryCacheItem { + path: string; + expanded: boolean; +} + +interface DirectoryState { + items: DirectoryCacheItem[]; + currentPath: string | null; +} + +const STORAGE_KEY = 'cherry_markdown_directories'; +const CURRENT_KEY = 'cherry_markdown_current_directory'; + +const loadItemsFromStorage = (): DirectoryCacheItem[] => { + try { + const saved = localStorage.getItem(STORAGE_KEY); + if (saved) { + const parsed = JSON.parse(saved); + if (Array.isArray(parsed)) { + return parsed + .filter((x) => x && typeof x.path === 'string') + .map((x) => ({ + path: x.path as string, + expanded: Boolean(x.expanded), + })); + } + } + } catch (error) { + console.warn('加载目录缓存失败:', error); + } + return []; +}; + +const loadCurrentFromStorage = (): string | null => { + try { + return localStorage.getItem(CURRENT_KEY); + } catch { + return null; + } +}; + +const saveToStorage = (items: DirectoryCacheItem[]) => { + try { + localStorage.setItem(STORAGE_KEY, JSON.stringify(items)); + } catch (error) { + console.warn('保存目录缓存失败:', error); + } +}; + +const saveCurrentPath = (path: string | null) => { + try { + if (path) { + localStorage.setItem(CURRENT_KEY, path); + } else { + localStorage.removeItem(CURRENT_KEY); + } + } catch (error) { + console.warn('保存当前目录失败:', error); + } +}; + +export const useDirectoryStore = defineStore('directories', { + state: (): DirectoryState => ({ + items: loadItemsFromStorage(), + currentPath: loadCurrentFromStorage(), + }), + actions: { + upsertDirectory(path: string, expanded: boolean = true) { + const idx = this.items.findIndex((it) => it.path === path); + if (idx >= 0) { + this.items[idx].expanded = expanded; + } else { + this.items.unshift({ path, expanded }); + } + saveToStorage(this.items); + }, + setCurrent(path: string | null) { + this.currentPath = path; + saveCurrentPath(path); + }, + setExpanded(path: string, expanded: boolean) { + const idx = this.items.findIndex((it) => it.path === path); + if (idx >= 0) { + this.items[idx].expanded = expanded; + saveToStorage(this.items); + } + }, + setItems(items: DirectoryCacheItem[]) { + this.items = items; + saveToStorage(this.items); + }, + removeMissing(validPaths: Set) { + this.items = this.items.filter((it) => validPaths.has(it.path)); + saveToStorage(this.items); + }, + clear() { + this.items = []; + this.currentPath = null; + saveToStorage(this.items); + saveCurrentPath(null); + }, + }, +}); diff --git a/packages/client/src/store/modal/file.ts b/packages/client/src/store/modal/file.ts index 873bd2aa5..788a15581 100644 --- a/packages/client/src/store/modal/file.ts +++ b/packages/client/src/store/modal/file.ts @@ -1,10 +1,8 @@ import { defineStore } from 'pinia'; -interface RecentFile { - path: string; - name: string; - lastAccessed: number; -} +import type { FileInfo } from '../../components/types'; + +interface RecentFile extends FileInfo {} interface FileState { currentFilePath: string | null; @@ -56,25 +54,31 @@ export const useFileStore = defineStore('file', { const savedState = loadFromStorage(); const lastOpenedFile = localStorage.getItem(STORAGE_KEYS.LAST_OPENED_FILE); + const recentFiles = (savedState.recentFiles || []).map((file) => ({ + ...file, + lastAccessed: file.lastAccessed ?? file.lastSaved ?? file.lastOpened ?? Date.now(), + })); + return { currentFilePath: lastOpenedFile || savedState.currentFilePath || null, - recentFiles: savedState.recentFiles || [], + recentFiles, sidebarCollapsed: savedState.sidebarCollapsed || false, }; }, getters: { sortedRecentFiles: (state) => { - return state.recentFiles - .slice() - .sort((a, b) => b.lastAccessed - a.lastAccessed) - .slice(0, 10); // 只显示最近10个文件 + return state.recentFiles.slice().sort((a, b) => { + const timeA = a.lastSaved ?? a.lastOpened ?? a.lastAccessed; + const timeB = b.lastSaved ?? b.lastOpened ?? b.lastAccessed; + return timeB - timeA; + }); }, // 获取最后打开的文件(按时间排序的第一个文件) lastOpenedFile: (state) => { if (state.recentFiles.length === 0) return null; - return state.recentFiles.slice().sort((a, b) => b.lastAccessed - a.lastAccessed)[0]; + return state.recentFiles.slice().sort((a, b) => (b.lastAccessed ?? 0) - (a.lastAccessed ?? 0))[0]; }, }, @@ -86,25 +90,39 @@ export const useFileStore = defineStore('file', { addRecentFile(filePath: string) { const fileName = filePath.split(/[\\/]/).pop() || filePath; + const now = Date.now(); // 检查是否已存在 const existingIndex = this.recentFiles.findIndex((file) => file.path === filePath); if (existingIndex >= 0) { // 更新访问时间 - this.recentFiles[existingIndex].lastAccessed = Date.now(); + this.recentFiles[existingIndex].lastOpened = now; + this.recentFiles[existingIndex].lastAccessed = now; } else { // 添加新文件 this.recentFiles.push({ path: filePath, name: fileName, - lastAccessed: Date.now(), + lastOpened: now, + lastAccessed: now, + lastSaved: null, }); } this.saveState(); }, + markSaved(filePath: string) { + const existingIndex = this.recentFiles.findIndex((file) => file.path === filePath); + if (existingIndex >= 0) { + const now = Date.now(); + this.recentFiles[existingIndex].lastSaved = now; + this.recentFiles[existingIndex].lastAccessed = now; + this.saveState(); + } + }, + removeRecentFile(filePath: string) { this.recentFiles = this.recentFiles.filter((file) => file.path !== filePath); this.saveState(); diff --git a/packages/client/src/utils/notifications.ts b/packages/client/src/utils/notifications.ts new file mode 100644 index 000000000..497258329 --- /dev/null +++ b/packages/client/src/utils/notifications.ts @@ -0,0 +1,30 @@ +import { toast } from '../components/composables/useToast'; + +/** + * 显示错误通知 + * 使用 toast 组件替代 alert,支持节流和统一样式 + */ +export const notifyError = (message: string): void => { + toast.error(message); +}; + +/** + * 显示信息通知 + */ +export const notifyInfo = (message: string): void => { + toast.info(message); +}; + +/** + * 显示成功通知 + */ +export const notifySuccess = (message: string): void => { + toast.success(message); +}; + +/** + * 显示警告通知 + */ +export const notifyWarning = (message: string): void => { + toast.warning(message); +}; diff --git a/packages/client/src/utils/path.ts b/packages/client/src/utils/path.ts new file mode 100644 index 000000000..16ce0a9b0 --- /dev/null +++ b/packages/client/src/utils/path.ts @@ -0,0 +1,45 @@ +// 路径工具 + +// 标准化路径分隔符为正斜杠 +export const normalizePath = (path: string): string => path.replace(/\\/g, '/'); + +// 检查路径是否为绝对路径 +export const isAbsolutePath = (path: string): boolean => path.includes('/') || path.includes('\\'); + +// 合并相似目录路径,保留父目录或绝对路径优先 +export const mergeSimilarDirectories = (directories: string[]): string[] => { + if (directories.length <= 1) return directories; + + const absolutePaths = new Map(); // normalized -> original + const relativePaths = new Set(); + + directories.forEach((dir) => { + if (isAbsolutePath(dir)) { + const normalized = normalizePath(dir); + if (!absolutePaths.has(normalized)) { + absolutePaths.set(normalized, dir); + } + } else { + relativePaths.add(dir); + } + }); + + const sortedAbsolutePaths = Array.from(absolutePaths.keys()).sort((a, b) => a.length - b.length); + const mergedAbsolutePaths = new Set(); + + for (const path of sortedAbsolutePaths) { + const hasParent = Array.from(mergedAbsolutePaths).some((existing) => path.startsWith(`${existing}/`)); + if (!hasParent) { + mergedAbsolutePaths.add(absolutePaths.get(path)!); + } + } + + const mergedRelativePaths = Array.from(relativePaths).filter((relPath) => { + return !Array.from(mergedAbsolutePaths).some((absPath) => { + const normalized = normalizePath(absPath); + return normalized.endsWith(`/${relPath}`) || normalized.includes(`/${relPath}/`); + }); + }); + + return [...mergedAbsolutePaths, ...mergedRelativePaths]; +}; diff --git a/packages/client/src/vite-env.d.ts b/packages/client/src/vite-env.d.ts index ae770de36..49b808e5d 100644 --- a/packages/client/src/vite-env.d.ts +++ b/packages/client/src/vite-env.d.ts @@ -5,3 +5,4 @@ declare module '*.vue' { const component: DefineComponent<{}, {}, any>; export default component; } +declare const __APP_VERSION__: string; diff --git a/packages/client/vite.config.ts b/packages/client/vite.config.ts index 1f8450e84..dc03aa05f 100644 --- a/packages/client/vite.config.ts +++ b/packages/client/vite.config.ts @@ -1,12 +1,19 @@ -import { defineConfig } from "vite"; -import vue from "@vitejs/plugin-vue"; +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import { readFileSync } from 'fs'; +import { resolve } from 'path'; + +// 读取 package.json 获取版本号 +const packageJson = JSON.parse(readFileSync(resolve(__dirname, './package.json'), 'utf-8')); -// @ts-expect-error process is a nodejs global const host = process.env.TAURI_DEV_HOST; // https://vitejs.dev/config/ export default defineConfig(async () => ({ plugins: [vue()], + define: { + __APP_VERSION__: JSON.stringify(packageJson.version), + }, // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` // @@ -19,14 +26,14 @@ export default defineConfig(async () => ({ host: host || false, hmr: host ? { - protocol: "ws", + protocol: 'ws', host, port: 1421, } : undefined, watch: { // 3. tell vite to ignore watching `src-tauri` - ignored: ["**/src-tauri/**"], + ignored: ['**/src-tauri/**'], }, }, // 添加optimizeDeps配置来解决katex依赖优化问题 From 5d2d0be8fe879775bb35359d660a69e205ea3467 Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Mon, 5 Jan 2026 17:20:55 +0800 Subject: [PATCH 25/57] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E5=90=8C=E4=B8=80=E4=B8=AA=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E5=86=85=E6=97=A0=E6=B3=95=E8=BF=9E=E7=BB=AD=E8=BE=93=E5=85=A5?= =?UTF-8?q?\|=E7=9A=84=E9=97=AE=E9=A2=98=20(#1588)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/small-ghosts-travel.md | 5 +++++ packages/cherry-markdown/src/core/hooks/CodeBlock.js | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/small-ghosts-travel.md diff --git a/.changeset/small-ghosts-travel.md b/.changeset/small-ghosts-travel.md new file mode 100644 index 000000000..5cff4e5d5 --- /dev/null +++ b/.changeset/small-ghosts-travel.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +fix: 修复表格同一个单元格内无法连续输入\|的问题 diff --git a/packages/cherry-markdown/src/core/hooks/CodeBlock.js b/packages/cherry-markdown/src/core/hooks/CodeBlock.js index 83b4ee7ef..ee6255577 100644 --- a/packages/cherry-markdown/src/core/hooks/CodeBlock.js +++ b/packages/cherry-markdown/src/core/hooks/CodeBlock.js @@ -480,7 +480,7 @@ export default class CodeBlock extends ParagraphBase { .replace(/\\\|/g, '~CHERRYNormalLine') .split('|') .map((oneTd) => { - return this.makeInlineCode(oneTd, false).replace('~CHERRYNormalLine', '\\|'); + return this.makeInlineCode(oneTd, false).replace(/~CHERRYNormalLine/g, '\\|'); }) .join('|') .replace(/`/g, '\\`'); @@ -518,7 +518,7 @@ export default class CodeBlock extends ParagraphBase { } let $code = code.replace(/~~not~inlineCode/g, '\\`'); $code = this.$replaceSpecialChar($code); - $code = $code.replace('~CHERRYNormalLine', '|'); + $code = $code.replace(/~CHERRYNormalLine/g, '|'); $code = $code.replace(/\\/g, '\\\\'); // 如果行内代码只有一个颜色值,则在code末尾追加一个颜色圆点 From 710f27bd22ab33ec87211a00c43c48393768f9e7 Mon Sep 17 00:00:00 2001 From: liweijie0812 <674416404@qq.com> Date: Wed, 7 Jan 2026 18:44:47 +0800 Subject: [PATCH 26/57] =?UTF-8?q?test(AutoLink):=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=A1=88=E4=BE=8B=20(#1558)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * test(AutoLink): 完善测试案例 * test: coverage * chore: update lock * test: 单测 escapePreservedSymbol * chore: 测试范围逐步增加 * test: 覆盖率提升 * refactor: 优化 AutoLink 测试用例 - 提取 createAutoLinkHook 辅助函数,减少重复代码 - 使用 describe 分组测试,提高可读性 - 使用数组解构简化测试用例代码 - 修复 isLinkInATag 正则表达式,正确处理带多个属性的 a 标签 - 修复测试用例中带额外属性的 URL 的 index 和 length 参数 - 合并重复的测试场景,从 25 个测试优化到 15 个 - 代码覆盖率保持在 86.77% --------- Co-authored-by: 阿菜 Cai --- .gitignore | 1 + packages/cherry-markdown/package.json | 5 +- .../src/core/hooks/AutoLink.js | 16 +- .../test/core/hooks/AutoLink.spec.ts | 204 +++++++++++++++-- packages/cherry-markdown/vitest.config.ts | 2 + yarn.lock | 214 +++++++++++++++++- 6 files changed, 411 insertions(+), 31 deletions(-) diff --git a/.gitignore b/.gitignore index 8e7c2739e..ec65c4fc6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .DS_Store node_modules dist +coverage # local env files .env.local diff --git a/packages/cherry-markdown/package.json b/packages/cherry-markdown/package.json index 64cda042d..b70969fa4 100644 --- a/packages/cherry-markdown/package.json +++ b/packages/cherry-markdown/package.json @@ -74,6 +74,7 @@ "@types/lodash": "^4.14.170", "@types/mermaid": "^8.2.6", "@types/virtual-dom": "^2.1.0", + "@vitest/coverage-v8": "3.1.3", "async": "^3.2.4", "babel-plugin-prismjs": "^2.1.0", "cm-search-replace": "^1.0.0", @@ -98,7 +99,6 @@ "replace-in-file": "^7.0.1", "rimraf": "^3.0.2", "rollup": "4.52.3", - "vite": "^6.4.1", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-scss": "^4.0.1", "rollup-plugin-typescript2": "^0.36.0", @@ -106,7 +106,8 @@ "serve": "^14.2.0", "standard-version": "^9.3.2", "typescript": "4.7.2", - "virtual-dom": "^2.1.1" + "virtual-dom": "^2.1.1", + "vite": "^6.4.1" }, "dependencies": { "@types/codemirror": "^0.0.108", diff --git a/packages/cherry-markdown/src/core/hooks/AutoLink.js b/packages/cherry-markdown/src/core/hooks/AutoLink.js index ec0263e79..e64e21047 100644 --- a/packages/cherry-markdown/src/core/hooks/AutoLink.js +++ b/packages/cherry-markdown/src/core/hooks/AutoLink.js @@ -36,6 +36,13 @@ export default class AutoLink extends SyntaxBase { this.rel = config.rel ? `rel="${config.rel}"` : ''; } + /** + * 检查指定位置和长度的字符串是否位于HTML标签的属性值中 + * @param {string} str - 要检查的完整字符串 + * @param {number} index - 链接字符串的起始位置 + * @param {number} linkLength - 链接字符串的长度 + * @returns {boolean} 如果链接位于HTML属性值中则返回true,否则返回false + */ isLinkInHtmlAttribute(str, index, linkLength) { const xmlTagRegex = new RegExp( [ @@ -83,7 +90,7 @@ export default class AutoLink extends SyntaxBase { * @param {number} linkLength */ isLinkInATag(str, index, linkLength) { - const aTagRegex = /[^<]*<\/a>/g; + const aTagRegex = /]*>[^<]*<\/a>/gi; let match; while ((match = aTagRegex.exec(str)) !== null) { // 搜索范围超过了字符串匹配到的位置 @@ -99,6 +106,13 @@ export default class AutoLink extends SyntaxBase { return false; } + /** + * 将字符串中的URL或电子邮件地址转换为HTML链接 + * @param {string} str - 包含可能URL或电子邮件地址的原始字符串 + * @param {Function} [sentenceMakeFunc] - 可选的回调函数,用于处理句子生成 + * @returns {string} 转换后的HTML字符串,其中URL和电子邮件地址被替换为
标签 + * @throws {Error} 如果输入不是字符串可能会抛出错误 + */ makeHtml(str, sentenceMakeFunc) { if (!(this.test(str) && (EMAIL_INLINE.test(str) || URL_INLINE_NO_SLASH.test(str)))) { return str; diff --git a/packages/cherry-markdown/test/core/hooks/AutoLink.spec.ts b/packages/cherry-markdown/test/core/hooks/AutoLink.spec.ts index df6469998..c88dd6b81 100644 --- a/packages/cherry-markdown/test/core/hooks/AutoLink.spec.ts +++ b/packages/cherry-markdown/test/core/hooks/AutoLink.spec.ts @@ -1,29 +1,193 @@ import { describe, it, expect } from 'vitest'; import AutoLink from '../../../src/core/hooks/AutoLink'; +function createAutoLinkHook(config = {}) { + const hook = new AutoLink({ config, globalConfig: {} }) as any; + hook.$engine = { urlProcessor: (url: string) => url }; + hook.$engine.$cherry = { + options: { + engine: { + syntax: { + autoLink: { + attrRender: (_url: string, _text: string) => '', + }, + }, + }, + }, + }; + return hook; +} + const autoLinkHook = new AutoLink({ config: {}, globalConfig: {} }); describe('core/hooks/autolink', () => { - it('isLinkInHtmlAttribute', () => { - const cases = [ - { - str: 'link in attribute', - index: 9, - length: 25, - }, - { - str: "link in attribute", - index: 9, - length: 25, - }, - { - str: 'link in attribute', - index: 8, - length: 25, - }, - ]; - cases.forEach((item) => { - expect(autoLinkHook.isLinkInHtmlAttribute(item.str, item.index, item.length)).toBe(true); + describe('isLinkInHtmlAttribute', () => { + it('检测HTML标签属性中的链接', () => { + const cases = [ + // 双引号、单引号、无引号属性 + ['', 9, 25, true], + ["", 9, 25, true], + ['', 8, 25, true], + // 不同标签 + ['', 10, 26, true], + ['', 13, 31, true], + ['', 25, 26, true], + // 多个属性、XML命名空间 + ['
', 15, 26, true], + ['', 13, 27, true], + // 嵌套、边界情况 + ['
', 15, 27, true], + ['', 9, 0, true], + ['', 100, 10, false], + // 不在属性中 + ['this is a plain text https://not.in.attribute.com', 19, 27, false], + ['
content https://not.in.attribute.com
', 15, 27, false], + ['

Visit https://in.content.example.com

', 11, 30, false], + ]; + cases.forEach(([str, index, length, expected]) => { + expect(autoLinkHook.isLinkInHtmlAttribute(str as string, index as number, length as number)).toBe(expected); + }); + }); + }); + + describe('isLinkInATag', () => { + it('检测a标签内的链接', () => { + const cases = [ + // 基础a标签 + ['
https://example.com', 26, 18, true], + ["https://example.com", 26, 18, true], + ['https://example.com', 25, 18, true], + // 带额外属性 + ['https://example.com', 46, 19, true], + // 嵌套、多个链接 + ['', 31, 18, true], + ['Visit https://first.com', 32, 19, true], + ['Visit https://first.com and https://second.com', 47, 19, true], + // 不在a标签中 + ['this is a plain text https://not.in.tag.com', 19, 21, false], + ['', 10, 23, false], + // a标签外、不完整标签 + ['Visit https://outside.com inside', 6, 20, false], + ['https://incomplete.com', 29, 24, false], + [' https://outside.com', 33, 20, false], + // 边界情况 + ['link after', 35, 5, false], + ['https://example.com', 100, 10, false], + ['text', 9, 25, true], + ]; + cases.forEach(([str, index, length, expected]) => { + expect(autoLinkHook.isLinkInATag(str as string, index as number, length as number)).toBe(expected); + }); + }); + }); + + describe('escapePreservedSymbol', () => { + it('转义下划线和星号', () => { + const cases = [ + ['https://example.com', 'https://example.com'], + ['https://example_test.com', 'https://example_test.com'], + ['https://example*test.com', 'https://example*test.com'], + ['https://example_test*star.com', 'https://example_test*star.com'], + ['https://example__test.com', 'https://example__test.com'], + ['https://example**test.com', 'https://example**test.com'], + ['', ''], + ['_', '_'], + ['*', '*'], + ['user_name@example.com', 'user_name@example.com'], + ['_https://example.com', '_https://example.com'], + ['https://example.com_', 'https://example.com_'], + ['https://example.com?param_name=value', 'https://example.com?param_name=value'], + ]; + cases.forEach(([input, expected]) => { + expect(AutoLink.escapePreservedSymbol(input as string)).toBe(expected); + }); + }); + }); + + describe('makeHtml', () => { + it('非法URL原样返回', () => { + const hook = createAutoLinkHook(); + expect(hook.makeHtml('http:invalid-url')).toBe('http:invalid-url'); + expect(hook.makeHtml('test@@example.com')).toBe('test@@example.com'); + expect(hook.makeHtml('example.com')).toBe('example.com'); + expect(hook.makeHtml('example.com/path')).toBe('example.com/path'); + expect(hook.makeHtml('')).toBe(''); + }); + + it('javascript:和mailto:协议处理', () => { + const hook = createAutoLinkHook(); + expect(hook.makeHtml('')).toBe(''); + expect(hook.makeHtml('mailto:not-a-valid-email')).toBe('mailto:not-a-valid-email'); + }); + + it('邮箱地址转换', () => { + const hook = createAutoLinkHook(); + expect(hook.makeHtml('test@example.com')).toContain('test@example.com'); + expect(hook.makeHtml('')).toContain('href="mailto:test@example.com"'); + expect(hook.makeHtml('mailto:test@example.com')).toContain('test@example.com'); + }); + + it('无协议URL转换', () => { + const hook = createAutoLinkHook(); + expect(hook.makeHtml('www.example.com')).toContain('www.example.com'); + expect(hook.makeHtml('')).toContain('href="https://example.com"'); + expect(hook.makeHtml('')).toContain('href="https://example.com/path"'); + expect(hook.makeHtml('https://example.com')).toContain('href="https://example.com"'); + expect(hook.makeHtml('https://example.com/path')).toContain('href="https://example.com/path"'); + }); + + it('target和rel属性配置', () => { + const hook = createAutoLinkHook({ target: '_self', rel: 'nofollow' }); + expect(hook.makeHtml('https://example.com')).toContain('target="_self"'); + expect(hook.makeHtml('https://example.com')).toContain('rel="nofollow"'); + }); + + it('openNewPage配置', () => { + const hook = createAutoLinkHook({ openNewPage: true }); + expect(hook.makeHtml('https://example.com')).toContain('target="_blank"'); + }); + + it('attrRender自定义属性', () => { + const hook = createAutoLinkHook(); + hook.$engine.$cherry.options.engine.syntax.autoLink.attrRender = (url: string) => + `data-url="${url}" class="custom-link"`; + expect(hook.makeHtml('https://example.com')).toContain('data-url="https://example.com"'); + expect(hook.makeHtml('https://example.com')).toContain('class="custom-link"'); + }); + + it('带协议但不合法的URL', () => { + const hook = createAutoLinkHook(); + // 协议不为空但address不符合URL格式 - 实际上这个分支很难触发 + // 因为不符合URL格式的地址通常也不会通过test(str)检查 + // 这里使用一个合法的URL来测试 + expect(hook.makeHtml('http://user@example.com')).toContain('user@example.com'); + }); + }); + + describe('renderLink', () => { + it('短链接功能', () => { + const hook = createAutoLinkHook({ enableShortLink: true, shortLinkLength: 15 }); + expect(hook.renderLink('https://www.example.com/very/long/path')).toContain('...'); + expect(hook.renderLink('https://www.example.com/very/long/path')).toContain('www.example.com...'); + }); + + it('短链接不截断', () => { + const hook = createAutoLinkHook({ enableShortLink: true, shortLinkLength: 30 }); + expect(hook.renderLink('https://example.com')).not.toContain('...'); + }); + + it('不启用短链接显示完整URL', () => { + const hook = createAutoLinkHook({ enableShortLink: false }); + expect(hook.renderLink('https://www.example.com/very/long/path/to/resource')).toContain( + 'https://www.example.com/very/long/path/to/resource', + ); + expect(hook.renderLink('https://www.example.com/very/long/path/to/resource')).not.toContain('...'); + }); + + it('自定义链接文本', () => { + const hook = createAutoLinkHook({ enableShortLink: true, shortLinkLength: 15 }); + expect(hook.renderLink('https://example.com', 'Click Here')).toContain('>Click Here<'); + expect(hook.renderLink('https://example.com', 'Click Here')).not.toContain('...'); }); }); }); diff --git a/packages/cherry-markdown/vitest.config.ts b/packages/cherry-markdown/vitest.config.ts index 82893d61c..9587e9fb6 100644 --- a/packages/cherry-markdown/vitest.config.ts +++ b/packages/cherry-markdown/vitest.config.ts @@ -13,6 +13,8 @@ export default defineConfig({ globals: true, environment: 'jsdom', // Use jsdom for browser-like tests coverage: { + enabled: true, + include: ['src/core/**/*.js'], reporter: ['text', 'json', 'html'], // Optional: Add coverage reports }, }, diff --git a/yarn.lock b/yarn.lock index 0119aecb7..436a30ceb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.2.0": +"@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.3.0": version "2.3.0" resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== @@ -201,6 +201,11 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== + "@babel/helper-validator-option@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" @@ -252,6 +257,13 @@ dependencies: "@babel/types" "^7.28.4" +"@babel/parser@^7.25.4": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" + integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== + dependencies: + "@babel/types" "^7.28.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" @@ -904,6 +916,14 @@ "@babel/types" "^7.28.4" debug "^4.3.1" +"@babel/types@^7.25.4", "@babel/types@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" + integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.27.1", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.4.4": version "7.28.4" resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" @@ -912,6 +932,11 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" +"@bcoe/v8-coverage@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz#bbe12dca5b4ef983a0d0af4b07b9bc90ea0ababa" + integrity sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA== + "@braintree/sanitize-url@^6.0.0": version "6.0.4" resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" @@ -1552,6 +1577,23 @@ resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + "@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": version "0.3.13" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" @@ -1578,7 +1620,7 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": +"@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": version "0.3.31" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== @@ -1754,6 +1796,11 @@ mkdirp "^1.0.4" rimraf "^3.0.2" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@pkgr/core@^0.2.4": version "0.2.7" resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz#eb5014dfd0b03e7f3ba2eeeff506eed89b028058" @@ -2689,6 +2736,24 @@ resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz#71a8fc82d4d2e425af304c35bf389506f674d89b" integrity sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg== +"@vitest/coverage-v8@3.1.3": + version "3.1.3" + resolved "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.1.3.tgz#d40e21d11384ef55d12ece1cb711b32930deb499" + integrity sha512-cj76U5gXCl3g88KSnf80kof6+6w+K4BjOflCl7t6yRJPDuCrHtVu0SgNYOUARJOL5TI8RScDbm5x4s1/P9bvpw== + dependencies: + "@ampproject/remapping" "^2.3.0" + "@bcoe/v8-coverage" "^1.0.2" + debug "^4.4.0" + istanbul-lib-coverage "^3.2.2" + istanbul-lib-report "^3.0.1" + istanbul-lib-source-maps "^5.0.6" + istanbul-reports "^3.1.7" + magic-string "^0.30.17" + magicast "^0.3.5" + std-env "^3.9.0" + test-exclude "^7.0.1" + tinyrainbow "^2.0.0" + "@vitest/expect@3.1.3": version "3.1.3" resolved "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.3.tgz#bbca175cd2f23d7de9448a215baed8f3d7abd7b7" @@ -3082,9 +3147,9 @@ ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + version "6.2.2" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" + integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== ansi-styles@^2.2.1: version "2.2.1" @@ -4489,7 +4554,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.5: +cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.5, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -6369,6 +6434,14 @@ for-own@^1.0.0: dependencies: for-in "^1.0.1" +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + form-data@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" @@ -6654,6 +6727,18 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^10.4.1: + version "10.5.0" + resolved "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c" + integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" @@ -7070,7 +7155,7 @@ html-encoding-sniffer@^3.0.0: dependencies: whatwg-encoding "^2.0.0" -html-escaper@^2.0.2: +html-escaper@^2.0.0, html-escaper@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== @@ -7798,6 +7883,37 @@ isstream@^0.1.2: resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-report@^3.0.0, istanbul-lib-report@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^5.0.6: + version "5.0.6" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz#acaef948df7747c8eb5fbf1265cb980f6353a441" + integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== + dependencies: + "@jridgewell/trace-mapping" "^0.3.23" + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + +istanbul-reports@^3.1.7: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz#cb4535162b5784aa623cee21a7252cf2c807ac93" + integrity sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + iterator.prototype@^1.1.4: version "1.1.5" resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" @@ -7810,6 +7926,15 @@ iterator.prototype@^1.1.4: has-symbols "^1.1.0" set-function-name "^2.0.2" +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jiti@^2.4.1: version "2.4.2" resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560" @@ -8385,6 +8510,11 @@ loupe@^3.1.0, loupe@^3.1.3: resolved "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz#042a8f7986d77f3d0f98ef7990a2b2fef18b0fd2" integrity sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug== +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -8411,6 +8541,15 @@ magic-string@^0.30.11, magic-string@^0.30.17, magic-string@^0.30.3: dependencies: "@jridgewell/sourcemap-codec" "^1.5.5" +magicast@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz#8301c3c7d66704a0771eb1bad74274f0ec036739" + integrity sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ== + dependencies: + "@babel/parser" "^7.25.4" + "@babel/types" "^7.25.4" + source-map-js "^1.2.0" + make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" @@ -8426,6 +8565,13 @@ make-dir@^3.0.2: dependencies: semver "^6.0.0" +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + make-fetch-happen@^10.0.3: version "10.2.1" resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" @@ -8764,6 +8910,11 @@ minipass@^5.0.0: resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" @@ -9386,6 +9537,11 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + package-manager-detector@^0.2.0: version "0.2.11" resolved "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz#3af0b34f99d86d24af0a0620603d2e1180d05c9c" @@ -9516,6 +9672,14 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz#f7f31d32e8518c2660862b644414b6d5c63a611b" @@ -11203,6 +11367,15 @@ string-template@~0.2.0: resolved "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz" integrity sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw== +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + "string-width@^1.0.2 || 2": version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -11332,6 +11505,13 @@ stringify-package@^1.0.1: resolved "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz" integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" @@ -11556,6 +11736,15 @@ terser@^5.17.4: commander "^2.20.0" source-map-support "~0.5.20" +test-exclude@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz#20b3ba4906ac20994e275bbcafd68d510264c2a2" + integrity sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^10.4.1" + minimatch "^9.0.4" + text-decoder@^1.1.0: version "1.2.3" resolved "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz#b19da364d981b2326d5f43099c310cc80d770c65" @@ -12604,6 +12793,15 @@ workerpool@6.1.0: resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" @@ -12622,7 +12820,7 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^8.0.1: +wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== From 61598e3698ef9b89010dec9346fcb68ffcfb436a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Thu, 8 Jan 2026 20:14:18 +0800 Subject: [PATCH 27/57] =?UTF-8?q?ci(client):=20=E4=BC=98=E5=8C=96=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E9=A2=84=E8=A7=88=E6=9E=84=E5=BB=BA=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=20(#1589)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci: 优化客户端预览构建工作流 优化 GitHub Actions 工作流配置,添加并发控制和超时设置,改进构建产物路径匹配,增强构建信息收集和 PR 评论生成逻辑。 * chore: 更新依赖并添加版本同步脚本 * ci: 优化客户端构建流程配置 * ci: 优化 PR 预览工作流产物上传和缓存配置 * ci: 更新 PR 预览构建触发条件 * ci: 移除 PR 合并工作流的分支限制 * ci: 优化 PR 预览构建评论逻辑 --- .../workflows/pr_merge_client_dev_preview.yml | 326 +++++++++++++----- packages/client/package.json | 12 +- packages/client/scripts/sync-version.js | 106 ++++++ packages/client/src-tauri/Cargo.lock | 2 +- packages/client/src-tauri/Cargo.toml | 4 +- packages/client/src-tauri/tauri.conf.json | 4 +- yarn.lock | 167 +++++---- 7 files changed, 465 insertions(+), 156 deletions(-) create mode 100644 packages/client/scripts/sync-version.js diff --git a/.github/workflows/pr_merge_client_dev_preview.yml b/.github/workflows/pr_merge_client_dev_preview.yml index 89ca5179d..981516518 100644 --- a/.github/workflows/pr_merge_client_dev_preview.yml +++ b/.github/workflows/pr_merge_client_dev_preview.yml @@ -1,11 +1,16 @@ -name: "Publish Client Dev Preview on PR Merge" +name: 'Publish Client Dev Preview on PR Merge' on: pull_request_target: types: [closed] paths: - - "packages/client/**" - - "packages/cherry-markdown/**" + - 'packages/client/**' + - 'packages/cherry-markdown/**' + - '!packages/cherry-markdown/test/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true permissions: contents: read @@ -15,44 +20,47 @@ permissions: jobs: client-preview: - # 不需要在fork仓库的pr中运行, 仅当pr合并时运行 + # 不需要在 fork 仓库的pr中运行, 仅当 pr 合并时运行 if: github.repository == 'Tencent/cherry-markdown' && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev' + name: client-${{ matrix.platform_name }}-${{ matrix.arch }} runs-on: ${{ matrix.platform }} + timeout-minutes: 60 strategy: fail-fast: false + max-parallel: 4 matrix: include: - platform: macos-latest target: aarch64-apple-darwin - args: "--target aarch64-apple-darwin" - path_patterns: | - ./packages/client/src-tauri/target/**/release/bundle/dmg/*.dmg - ./packages/client/src-tauri/target/**/release/bundle/macos/*.app + platform_name: macos + arch: arm64 + args: '--target aarch64-apple-darwin' - platform: macos-latest target: x86_64-apple-darwin - args: "--target x86_64-apple-darwin" - path_patterns: | - ./packages/client/src-tauri/target/**/release/bundle/dmg/*.dmg - ./packages/client/src-tauri/target/**/release/bundle/macos/*.app + platform_name: macos + arch: x64 + args: '--target x86_64-apple-darwin' - platform: windows-latest target: x86_64-pc-windows-msvc - path_patterns: | - ./packages/client/src-tauri/target/**/release/bundle/msi/*.msi - ./packages/client/src-tauri/target/**/release/bundle/nsis/*.exe + platform_name: windows + arch: x64 + args: '--target x86_64-pc-windows-msvc' - platform: ubuntu-latest target: x86_64-unknown-linux-gnu - path_patterns: | - ./packages/client/src-tauri/target/**/release/bundle/appimage/*.AppImage - ./packages/client/src-tauri/target/**/release/bundle/deb/*.deb + platform_name: linux + arch: x64 + args: '--target x86_64-unknown-linux-gnu' steps: - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} - name: Setup Node uses: actions/setup-node@v4 with: node-version: lts/* - cache: "yarn" + cache: 'yarn' - name: Setup Rust uses: actions-rust-lang/setup-rust-toolchain@v1 @@ -60,54 +68,147 @@ jobs: target: ${{ matrix.target }} toolchain: stable + - name: Cache Rust Dependencies + uses: Swatinem/rust-cache@v2 + with: + workspaces: packages/client/src-tauri -> target + save-if: false # PR Preview 只读(main)缓存,不保存新缓存 + - name: Install Linux Dependencies if: matrix.platform == 'ubuntu-latest' run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - - name: Build Tauri + - name: Get Version + id: version + shell: bash run: | - yarn --network-timeout 100000 - yarn build - yarn build:client ${{ matrix.args || '' }} + VERSION=$(node -p "require('./packages/client/package.json').version") + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Version: $VERSION" - - name: Create File List + - name: Install Dependencies + run: yarn --network-timeout 100000 + + - name: Build Cherry Markdown + run: yarn build + + - name: Build Tauri Client + run: yarn build:client ${{ matrix.args }} + + - name: Collect and Upload Artifacts + id: artifacts shell: bash run: | mkdir -p ./artifact-info - find ./packages/client/src-tauri/target -type f \( -name "*.dmg" -o -name "*.msi" -o -name "*.exe" -o -name "*.AppImage" -o -name "*.deb" \) -exec basename {} \; > ./artifact-info/files.txt - find ./packages/client/src-tauri/target -type d -name "*.app" -exec basename {} \; >> ./artifact-info/files.txt - if [ ! -s ./artifact-info/files.txt ]; then - echo "No build artifacts found!" > ./artifact-info/files.txt + VERSION="${{ steps.version.outputs.version }}" + PLATFORM="${{ matrix.platform_name }}" + ARCH="${{ matrix.arch }}" + TARGET="${{ matrix.target }}" + TARGET_DIR="./packages/client/src-tauri/target/$TARGET/release/bundle" + + # 创建产物信息文件 + echo "version=$VERSION" > ./artifact-info/build-info.txt + echo "platform=$PLATFORM" >> ./artifact-info/build-info.txt + echo "arch=$ARCH" >> ./artifact-info/build-info.txt + echo "target=$TARGET" >> ./artifact-info/build-info.txt + + # 收集所有产物文件名 + > ./artifact-info/files.txt + if [ -d "$TARGET_DIR" ]; then + find "$TARGET_DIR" -type f \( -name "*.dmg" -o -name "*.msi" -o -name "*.exe" -o -name "*.AppImage" -o -name "*.deb" \) | while read file; do + basename "$file" >> ./artifact-info/files.txt + done + find "$TARGET_DIR" -type d -name "*.app" | while read dir; do + basename "$dir" >> ./artifact-info/files.txt + done fi - echo "Platform: ${{ matrix.platform }}" >> ./artifact-info/info.txt - echo "Target: ${{ matrix.target }}" >> ./artifact-info/info.txt - - name: Upload Files + echo "Build Info:" + cat ./artifact-info/build-info.txt + echo "Artifacts:" + cat ./artifact-info/files.txt + + # macOS: 上传 DMG + - name: Upload DMG + if: matrix.platform_name == 'macos' + uses: actions/upload-artifact@v4 + with: + name: cherry-markdown-${{ steps.version.outputs.version }}-${{ matrix.platform_name }}-${{ matrix.arch }}-dmg + path: ./packages/client/src-tauri/target/${{ matrix.target }}/release/bundle/dmg/*.dmg + retention-days: 7 + if-no-files-found: error + + # macOS: 上传 App + - name: Upload App + if: matrix.platform_name == 'macos' + uses: actions/upload-artifact@v4 + with: + name: cherry-markdown-${{ steps.version.outputs.version }}-${{ matrix.platform_name }}-${{ matrix.arch }}-app + path: ./packages/client/src-tauri/target/${{ matrix.target }}/release/bundle/macos/*.app + retention-days: 7 + if-no-files-found: error + + # Windows: 上传 MSI + - name: Upload MSI + if: matrix.platform_name == 'windows' + uses: actions/upload-artifact@v4 + with: + name: cherry-markdown-${{ steps.version.outputs.version }}-${{ matrix.platform_name }}-${{ matrix.arch }}-msi + path: ./packages/client/src-tauri/target/${{ matrix.target }}/release/bundle/msi/*.msi + retention-days: 7 + if-no-files-found: error + + # Windows: 上传 NSIS Exe + - name: Upload NSIS Installer + if: matrix.platform_name == 'windows' + uses: actions/upload-artifact@v4 + with: + name: cherry-markdown-${{ steps.version.outputs.version }}-${{ matrix.platform_name }}-${{ matrix.arch }}-exe + path: ./packages/client/src-tauri/target/${{ matrix.target }}/release/bundle/nsis/*.exe + retention-days: 7 + if-no-files-found: error + + # Linux: 上传 AppImage + - name: Upload AppImage + if: matrix.platform_name == 'linux' + uses: actions/upload-artifact@v4 + with: + name: cherry-markdown-${{ steps.version.outputs.version }}-${{ matrix.platform_name }}-${{ matrix.arch }}-appimage + path: ./packages/client/src-tauri/target/${{ matrix.target }}/release/bundle/appimage/*.AppImage + retention-days: 7 + if-no-files-found: error + + # Linux: 上传 Deb + - name: Upload Deb + if: matrix.platform_name == 'linux' uses: actions/upload-artifact@v4 with: - name: cherry-markdown_client_${{ matrix.platform }}_${{ matrix.target }} - path: ${{ matrix.path_patterns }} + name: cherry-markdown-${{ steps.version.outputs.version }}-${{ matrix.platform_name }}-${{ matrix.arch }}-deb + path: ./packages/client/src-tauri/target/${{ matrix.target }}/release/bundle/deb/*.deb + retention-days: 7 + if-no-files-found: error - - name: Upload File List + - name: Upload Artifact Info uses: actions/upload-artifact@v4 with: - name: file-list_${{ matrix.platform }}_${{ matrix.target }} + name: artifact-info-${{ matrix.platform_name }}-${{ matrix.arch }} path: ./artifact-info/ + retention-days: 7 post-preview-comment: needs: client-preview runs-on: ubuntu-latest - if: github.repository == 'Tencent/cherry-markdown' && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev' + if: github.repository == 'Tencent/cherry-markdown' steps: - - name: Download All File Lists + - name: Download All Artifact Info uses: actions/download-artifact@v4 with: - pattern: file-list_* - path: ./file-lists + pattern: artifact-info-* + path: ./artifact-info - - name: Post single aggregated comment + - name: Generate PR Comment with Cherry-Markdown Artifacts uses: actions/github-script@v8 with: github-token: ${{ secrets.GITHUB_TOKEN }} @@ -119,60 +220,121 @@ jobs: const runId = context.runId; const runUrl = `https://github.com/${owner}/${repo}/actions/runs/${runId}`; - // Read file lists - const fileListsDir = './file-lists'; - const groups = { - 'macOS (Apple Silicon/arm64)': [], - 'macOS (Intel/x86_64)': [], - 'Windows': [], - 'Linux': [], - 'Other': [] - }; - - // Process downloaded file lists - if (fs.existsSync(fileListsDir)) { - const dirs = fs.readdirSync(fileListsDir); + // 获取本次 workflow run 的所有 artifacts + const { data: artifactList } = await github.rest.actions.listWorkflowRunArtifacts({ + owner, + repo, + run_id: runId + }); + + // 构建 artifact 名称到下载链接的映射 + const artifactDownloadUrls = {}; + for (const artifact of artifactList.artifacts) { + artifactDownloadUrls[artifact.name] = `https://github.com/${owner}/${repo}/actions/runs/${runId}/artifacts/${artifact.id}`; + } + + // 读取构建信息 + const artifactInfoDir = './artifact-info'; + const buildInfos = []; + + if (fs.existsSync(artifactInfoDir)) { + const dirs = fs.readdirSync(artifactInfoDir); + for (const dir of dirs) { - const filesPath = path.join(fileListsDir, dir, 'files.txt'); - const infoPath = path.join(fileListsDir, dir, 'info.txt'); + const buildInfoPath = path.join(artifactInfoDir, dir, 'build-info.txt'); - if (fs.existsSync(filesPath) && fs.existsSync(infoPath)) { - const files = fs.readFileSync(filesPath, 'utf8').trim().split('\n').filter(f => f); - const info = fs.readFileSync(infoPath, 'utf8'); - - let groupKey = 'Other'; - if (info.includes('aarch64-apple-darwin')) groupKey = 'macOS (Apple Silicon/arm64)'; - else if (info.includes('x86_64-apple-darwin')) groupKey = 'macOS (Intel/x86_64)'; - else if (info.includes('windows-latest')) groupKey = 'Windows'; - else if (info.includes('ubuntu-latest')) groupKey = 'Linux'; - - groups[groupKey].push(...files); + if (fs.existsSync(buildInfoPath)) { + const buildInfo = {}; + const buildInfoContent = fs.readFileSync(buildInfoPath, 'utf8'); + buildInfoContent.split('\n').forEach(line => { + const [key, value] = line.split('='); + if (key && value) { + buildInfo[key.trim()] = value.trim(); + } + }); + buildInfos.push(buildInfo); } } } - let body = '💻 **客户端预览构建已完成** (Client Preview Build Completed)\n\n'; - body += `📦 [查看并下载所有构建产物](${runUrl})\n\n`; + // 生成评论内容 + let body = '## 💻 Cherry-Markdown Client 预览构建已完成\n\n'; - const hasAnyFiles = Object.values(groups).some(files => files.length > 0); - if (!hasAnyFiles) { - body += '⚠️ 未找到构建产物,请检查构建日志。\n'; + if (buildInfos.length === 0) { + body += '> ⚠️ 未找到构建产物,请检查构建日志。\n\n'; + body += `[查看构建详情](${runUrl})\n`; } else { - body += '## 可下载的安装包\n\n'; - for (const [platform, files] of Object.entries(groups)) { - if (files.length > 0) { - body += `### ${platform}\n`; - for (const file of files) { - body += `- \`${file}\`\n`; - } - body += '\n'; + const version = buildInfos[0]?.version || 'unknown'; + + // 定义产物类型映射 + const artifactTypes = { + 'macos': [ + { suffix: 'dmg', label: 'DMG 安装包' }, + { suffix: 'app', label: 'App 应用' } + ], + 'windows': [ + { suffix: 'msi', label: 'MSI 安装包' }, + { suffix: 'exe', label: 'EXE 安装程序' } + ], + 'linux': [ + { suffix: 'appimage', label: 'AppImage' }, + { suffix: 'deb', label: 'Deb 包' } + ] + }; + + // 按平台分组 + const platformOrder = ['macOS', 'Windows', 'Linux']; + const platformMap = { 'macos': 'macOS', 'windows': 'Windows', 'linux': 'Linux' }; + + // 生成表格 + body += '| 平台 | 架构 | 产物类型 | 下载 |\n'; + body += '|------|------|----------|------|\n'; + + for (const info of buildInfos) { + const platform = info.platform; + const arch = info.arch; + const platformLabel = platformMap[platform] || platform; + const archLabel = arch === 'arm64' ? 'Apple Silicon' : 'x64'; + const types = artifactTypes[platform] || []; + + for (const type of types) { + const artifactName = `cherry-markdown-${version}-${platform}-${arch}-${type.suffix}`; + const downloadUrl = artifactDownloadUrls[artifactName] || `${runUrl}`; + body += `| ${platformLabel} | ${archLabel} | ${type.label} | [下载](${downloadUrl}) |\n`; } } + + body += `\n> 📋 版本: \`${version}\` | ⏰ 产物保留 7 天 | [查看所有构建产物](${runUrl})\n`; } - await github.rest.issues.createComment({ + // 查找现有的 Cherry-Markdown Client 预览构建评论 + const { data: comments } = await github.rest.issues.listComments({ issue_number: context.issue.number, owner: owner, - repo: repo, - body: body + repo: repo }); + + const botComment = comments.find(comment => + comment.user.type === 'Bot' && + comment.body.includes('💻 Cherry-Markdown Client 预览构建') + ); + + if (botComment) { + // 更新现有评论 + await github.rest.issues.updateComment({ + comment_id: botComment.id, + owner: owner, + repo: repo, + body: body + }); + console.log(`Updated existing comment: ${botComment.id}`); + } else { + // 创建新评论 + await github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: owner, + repo: repo, + body: body + }); + console.log('Created new comment'); + } diff --git a/packages/client/package.json b/packages/client/package.json index a29af9a45..41eae60a9 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -3,10 +3,10 @@ "version": "0.2.1", "type": "module", "scripts": { - "dev": "vite", - "build": "vue-tsc --noEmit && vite build", + "dev": "npx node ./scripts/sync-version.js && vite", + "build": "npx node ./scripts/sync-version.js && vue-tsc --noEmit && vite build", "preview": "vite preview", - "tauri": "tauri", + "version:sync": "node ./scripts/sync-version.js", "lint": "cd ../.. && npx prettier --check packages/client/src/**/*.{ts,vue} && npx eslint packages/client/src/**/*.{ts,vue}", "lint:fix": "cd ../.. && npx prettier --write packages/client/src/**/*.{ts,vue} && npx eslint packages/client/src/**/*.{ts,vue} --fix" }, @@ -20,13 +20,13 @@ "echarts": "^6.0.0", "katex": "^0.16.27", "pinyin": "^4.0.0", - "pinia": "^2.2.4", + "pinia": "^3.0.4", "vue": "^3.5.13" }, "devDependencies": { "@tauri-apps/cli": "2.2.5", "@vitejs/plugin-vue": "^5.2.1", - "vite": "^6.0.3", - "vue-tsc": "^2.1.10" + "vite": "^6.4.1", + "vue-tsc": "^3.2.2" } } diff --git a/packages/client/scripts/sync-version.js b/packages/client/scripts/sync-version.js new file mode 100644 index 000000000..6a85a3075 --- /dev/null +++ b/packages/client/scripts/sync-version.js @@ -0,0 +1,106 @@ +#!/usr/bin/env node + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const filename = fileURLToPath(import.meta.url); +const dirname = path.dirname(filename); + +/** + * 同步版本号脚本 + * 将 package.json 的版本号同步到 tauri.conf.json 和 Cargo.toml + */ + +const clientDir = path.resolve(dirname, '..'); +const packageJsonPath = path.join(clientDir, 'package.json'); +const tauriConfPath = path.join(clientDir, 'src-tauri', 'tauri.conf.json'); +const cargoTomlPath = path.join(clientDir, 'src-tauri', 'Cargo.toml'); + +function readJsonFile(filePath) { + try { + const content = fs.readFileSync(filePath, 'utf8'); + return JSON.parse(content); + } catch (error) { + console.error(`❌ 读取文件失败: ${filePath}`, error.message); + process.exit(1); + } +} + +function writeJsonFile(filePath, data) { + try { + const content = `${JSON.stringify(data, null, 2)}\n`; + fs.writeFileSync(filePath, content, 'utf8'); + console.log(`✅ 更新成功: ${path.relative(clientDir, filePath)}`); + } catch (error) { + console.error(`❌ 写入文件失败: ${filePath}`, error.message); + process.exit(1); + } +} + +function updateCargoToml(filePath, newVersion) { + try { + let content = fs.readFileSync(filePath, 'utf8'); + + // 更新 version 字段 + content = content.replace(/^version\s*=\s*"[^"]*"/m, `version = "${newVersion}"`); + + fs.writeFileSync(filePath, content, 'utf8'); + console.log(`✅ 更新成功: ${path.relative(clientDir, filePath)}`); + } catch (error) { + console.error(`❌ 更新 Cargo.toml 失败: ${filePath}`, error.message); + process.exit(1); + } +} + +function main() { + console.log('🔄 开始同步版本号...\n'); + + // 检查文件是否存在 + const files = [packageJsonPath, tauriConfPath, cargoTomlPath]; + for (const file of files) { + if (!fs.existsSync(file)) { + console.error(`❌ 文件不存在: ${file}`); + process.exit(1); + } + } + + // 读取 package.json 中的版本号 + const packageJson = readJsonFile(packageJsonPath); + const { version } = packageJson; + + if (!version) { + console.error('❌ package.json 中未找到版本号'); + process.exit(1); + } + + console.log(`📦 当前版本: ${version}\n`); + + // 更新 tauri.conf.json + const tauriConf = readJsonFile(tauriConfPath); + const oldTauriVersion = tauriConf.version; + + if (oldTauriVersion !== version) { + tauriConf.version = version; + writeJsonFile(tauriConfPath, tauriConf); + console.log(` ${oldTauriVersion} → ${version}`); + } else { + console.log(`✅ tauri.conf.json 版本已是最新: ${version}`); + } + + // 更新 Cargo.toml + const cargoContent = fs.readFileSync(cargoTomlPath, 'utf8'); + const cargoVersionMatch = cargoContent.match(/^version\s*=\s*"([^"]*)"/m); + const oldCargoVersion = cargoVersionMatch ? cargoVersionMatch[1] : null; + + if (oldCargoVersion !== version) { + updateCargoToml(cargoTomlPath, version); + console.log(` ${oldCargoVersion} → ${version}`); + } else { + console.log(`✅ Cargo.toml 版本已是最新: ${version}`); + } + + console.log('\n🎉 版本同步完成!'); +} + +main(); diff --git a/packages/client/src-tauri/Cargo.lock b/packages/client/src-tauri/Cargo.lock index 3a4226474..1f76d3232 100644 --- a/packages/client/src-tauri/Cargo.lock +++ b/packages/client/src-tauri/Cargo.lock @@ -508,7 +508,7 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "cherry-markdown-client" -version = "0.1.0" +version = "0.2.1" dependencies = [ "lazy_static", "serde", diff --git a/packages/client/src-tauri/Cargo.toml b/packages/client/src-tauri/Cargo.toml index edbdc5243..fac43d5c0 100644 --- a/packages/client/src-tauri/Cargo.toml +++ b/packages/client/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cherry-markdown-client" -version = "0.1.0" +version = "0.2.1" description = "A Cherry Markdown Client" authors = ["Cherry OTeam"] edition = "2021" @@ -16,5 +16,5 @@ serde_json = "1.0.137" lazy_static = "1.4.0" tauri-plugin-dialog = "2.2.0" tauri-plugin-fs = "2.2.0" -tauri-plugin-global-shortcut = "2.1.0" +tauri-plugin-global-shortcut = "2.3.1" diff --git a/packages/client/src-tauri/tauri.conf.json b/packages/client/src-tauri/tauri.conf.json index 102357755..2780ac3a7 100644 --- a/packages/client/src-tauri/tauri.conf.json +++ b/packages/client/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "cherry-markdown", - "version": "0.1.0", + "version": "0.2.1", "identifier": "com.cherry-markdown.app", "build": { "beforeDevCommand": "yarn dev", @@ -21,7 +21,7 @@ } ], "security": { - "csp": null + "csp": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; font-src 'self' data:;" } }, "bundle": { diff --git a/yarn.lock b/yarn.lock index 436a30ceb..bbe713ac6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2813,24 +2813,24 @@ loupe "^3.1.3" tinyrainbow "^2.0.0" -"@volar/language-core@2.4.12", "@volar/language-core@~2.4.11": - version "2.4.12" - resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.12.tgz#98c8424f8d81a9cad1760a587b1c6db27d05f0cc" - integrity sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA== +"@volar/language-core@2.4.27": + version "2.4.27" + resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.27.tgz#c66d44cd22a914384d238bbcd0f621ecc57e3618" + integrity sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ== dependencies: - "@volar/source-map" "2.4.12" + "@volar/source-map" "2.4.27" -"@volar/source-map@2.4.12": - version "2.4.12" - resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.12.tgz#7cc8c6b1b134a2215f06c91ad011d94eef81b0ed" - integrity sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw== +"@volar/source-map@2.4.27": + version "2.4.27" + resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.27.tgz#8ce6f16e207987078fd866e2faf65c35c4d15987" + integrity sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg== -"@volar/typescript@~2.4.11": - version "2.4.12" - resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.12.tgz#8c638c23cab89ab131cdcd2d6f2a51768caaa015" - integrity sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g== +"@volar/typescript@2.4.27": + version "2.4.27" + resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.27.tgz#8950318a33d5dfcdc4b0e5bbe5a38c1b8383eae6" + integrity sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg== dependencies: - "@volar/language-core" "2.4.12" + "@volar/language-core" "2.4.27" path-browserify "^1.0.1" vscode-uri "^3.0.8" @@ -2876,32 +2876,45 @@ "@vue/compiler-dom" "3.5.13" "@vue/shared" "3.5.13" -"@vue/compiler-vue2@^2.7.16": - version "2.7.16" - resolved "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz#2ba837cbd3f1b33c2bc865fbe1a3b53fb611e249" - integrity sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A== +"@vue/devtools-api@^7.7.7": + version "7.7.9" + resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.9.tgz#999dbea50da6b00cf59a1336f11fdc2b43d9e063" + integrity sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g== dependencies: - de-indent "^1.0.2" - he "^1.2.0" + "@vue/devtools-kit" "^7.7.9" -"@vue/devtools-api@^6.6.3": - version "6.6.4" - resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343" - integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g== +"@vue/devtools-kit@^7.7.9": + version "7.7.9" + resolved "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.9.tgz#bc218a815616e8987df7ab3e10fc1fb3b8706c58" + integrity sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA== + dependencies: + "@vue/devtools-shared" "^7.7.9" + birpc "^2.3.0" + hookable "^5.5.3" + mitt "^3.0.1" + perfect-debounce "^1.0.0" + speakingurl "^14.0.1" + superjson "^2.2.2" + +"@vue/devtools-shared@^7.7.9": + version "7.7.9" + resolved "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.9.tgz#fa4c096b744927081a7dda5fcf05f34b1ae6ca14" + integrity sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA== + dependencies: + rfdc "^1.4.1" -"@vue/language-core@2.2.8": - version "2.2.8" - resolved "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.8.tgz#05befa390399fbd4409bc703ee0520b8ac1b7088" - integrity sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ== +"@vue/language-core@3.2.2": + version "3.2.2" + resolved "https://registry.npmjs.org/@vue/language-core/-/language-core-3.2.2.tgz#00af7f3ba584f2d4cbf17c564a00e0437c19823e" + integrity sha512-5DAuhxsxBN9kbriklh3Q5AMaJhyOCNiQJvCskN9/30XOpdLiqZU9Q+WvjArP17ubdGEyZtBzlIeG5nIjEbNOrQ== dependencies: - "@volar/language-core" "~2.4.11" + "@volar/language-core" "2.4.27" "@vue/compiler-dom" "^3.5.0" - "@vue/compiler-vue2" "^2.7.16" "@vue/shared" "^3.5.0" - alien-signals "^1.0.3" - minimatch "^9.0.3" + alien-signals "^3.0.0" muggle-string "^0.4.1" path-browserify "^1.0.1" + picomatch "^4.0.2" "@vue/reactivity@3.5.13": version "3.5.13" @@ -3083,10 +3096,10 @@ ajv@^8.0.0, ajv@^8.0.1, ajv@^8.11.0, ajv@^8.9.0: json-schema-traverse "^1.0.0" require-from-string "^2.0.2" -alien-signals@^1.0.3: - version "1.0.8" - resolved "https://registry.npmjs.org/alien-signals/-/alien-signals-1.0.8.tgz#911e82041dfe8ab4e34fe59a95f3dc4d03e265bf" - integrity sha512-5Tnk+Q3E7b4NgTgxAyoggQHeEzUicxgiZhcFvBQhM4catV+wFDTmoHPectL7FL5YzkCjz4zhB/y00Q7n3vwVGQ== +alien-signals@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/alien-signals/-/alien-signals-3.1.2.tgz#26e623e3ed81e401df1a7c503f726e2288a4fa02" + integrity sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw== ansi-align@^3.0.1: version "3.0.1" @@ -3549,6 +3562,11 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" +birpc@^2.3.0: + version "2.9.0" + resolved "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz#b59550897e4cd96a223e2a6c1475b572236ed145" + integrity sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw== + bl@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" @@ -4475,6 +4493,13 @@ cookie@~0.7.1: resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== +copy-anything@^4: + version "4.0.5" + resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-4.0.5.tgz#16cabafd1ea4bb327a540b750f2b4df522825aea" + integrity sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA== + dependencies: + is-what "^5.2.0" + copy-props@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz#01d249198b8c2e4d8a5e87b90c9630f52c99a9c9" @@ -5034,11 +5059,6 @@ dayjs@^1.11.7: resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== - debounce@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -7114,7 +7134,7 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" -he@1.2.0, he@^1.2.0: +he@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -7126,6 +7146,11 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hookable@^5.5.3: + version "5.5.3" + resolved "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d" + integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" @@ -7834,6 +7859,11 @@ is-weakset@^2.0.3: call-bound "^1.0.3" get-intrinsic "^1.2.6" +is-what@^5.2.0: + version "5.5.0" + resolved "https://registry.npmjs.org/is-what/-/is-what-5.5.0.tgz#a3031815757cfe1f03fed990bf6355a2d3f628c4" + integrity sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw== + is-windows@^1.0.0, is-windows@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -8838,7 +8868,7 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.3, minimatch@^9.0.4: +minimatch@^9.0.4: version "9.0.5" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -8923,7 +8953,7 @@ minizlib@^2.1.1, minizlib@^2.1.2: minipass "^3.0.0" yallist "^4.0.0" -mitt@^3.0.0: +mitt@^3.0.0, mitt@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz" integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== @@ -9712,6 +9742,11 @@ pathval@^2.0.0: resolved "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== +perfect-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a" + integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA== + picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" @@ -9757,13 +9792,12 @@ pify@^5.0.0: resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz" integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== -pinia@^2.2.4: - version "2.3.1" - resolved "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz#54c476675b72f5abcfafa24a7582531ea8c23d94" - integrity sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug== +pinia@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/pinia/-/pinia-3.0.4.tgz#75dde12784a61e34c1fa6abcd13c1a1061c360c0" + integrity sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw== dependencies: - "@vue/devtools-api" "^6.6.3" - vue-demi "^0.14.10" + "@vue/devtools-api" "^7.7.7" pinyin@^4.0.0: version "4.0.0" @@ -10578,7 +10612,7 @@ reusify@^1.0.4: resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rfdc@^1.3.0: +rfdc@^1.3.0, rfdc@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz" integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== @@ -11224,6 +11258,11 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" +speakingurl@^14.0.1: + version "14.0.1" + resolved "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53" + integrity sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ== + split2@^3.0.0: version "3.2.2" resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" @@ -11585,6 +11624,13 @@ stylis@^4.1.2: resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz#7c7b97191cb4f195f03ecab7d52f7902ed378320" integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== +superjson@^2.2.2: + version "2.2.6" + resolved "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz#a223a3a988172a5f9656e2063fe5f733af40d099" + integrity sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA== + dependencies: + copy-anything "^4" + supports-color@8.1.1, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" @@ -12399,7 +12445,7 @@ vite-node@3.1.3: pathe "^2.0.3" vite "^5.0.0 || ^6.0.0" -"vite@^5.0.0 || ^6.0.0", vite@^6.0.3, vite@^6.4.1: +"vite@^5.0.0 || ^6.0.0", vite@^6.4.1: version "6.4.1" resolved "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz#afbe14518cdd6887e240a4b0221ab6d0ce733f96" integrity sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g== @@ -12445,11 +12491,6 @@ vscode-uri@^3.0.8: resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz#dd09ec5a66a38b5c3fffc774015713496d14e09c" integrity sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ== -vue-demi@^0.14.10: - version "0.14.10" - resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04" - integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg== - vue-eslint-parser@^10.2.0: version "10.2.0" resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz#cb53f89b14c7f5bf6a95c9532e3b2961ab619d61" @@ -12475,13 +12516,13 @@ vue-eslint-parser@^9.4.3: lodash "^4.17.21" semver "^7.3.6" -vue-tsc@^2.1.10: - version "2.2.8" - resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.2.8.tgz#7c8e1bd9333d25241a7f9988eedf08c65483158c" - integrity sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ== +vue-tsc@^3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.2.2.tgz#ccee54f2c2490713de75a66d9965bd9e33fe7066" + integrity sha512-r9YSia/VgGwmbbfC06hDdAatH634XJ9nVl6Zrnz1iK4ucp8Wu78kawplXnIDa3MSu1XdQQePTHLXYwPDWn+nyQ== dependencies: - "@volar/typescript" "~2.4.11" - "@vue/language-core" "2.2.8" + "@volar/typescript" "2.4.27" + "@vue/language-core" "3.2.2" vue@^3.5.13: version "3.5.13" From e069033baa5ed51ecbd0fa6bfe54b3f37f1f74e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Thu, 8 Jan 2026 23:50:31 +0800 Subject: [PATCH 28/57] =?UTF-8?q?feat(sidebar):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BE=A7=E8=BE=B9=E6=A0=8F=E5=88=97=E8=A1=A8=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E5=92=8C=E5=8A=A8=E6=80=81=E9=AB=98=E5=BA=A6=E6=94=AF=E6=8C=81?= =?UTF-8?q?=20(#1587)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(sidebar): 添加侧边栏列表样式和动态高度支持 * add changeset * feat(sidebar): 修复侧边栏列表高度设置,使用 setTimeout 确保正确获取高度 * feat(sidebar): 移除调试日志 * feat(sidebar): 优化侧边栏列表高度设置,使用 ResizeObserver 代替 setTimeout * fix(sidebar): 更新侧边栏高度判断逻辑,确保高度小于 40 时保持默认值 --------- Co-authored-by: Seeridia --- .changeset/tall-pots-bake.md | 5 +++++ packages/cherry-markdown/src/sass/cherry.scss | 9 ++++++++- .../src/sass/variables/semantic.scss | 2 ++ .../cherry-markdown/src/toolbars/MenuBase.js | 4 ++++ packages/cherry-markdown/src/toolbars/Sidebar.js | 16 +++++++++++++++- 5 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 .changeset/tall-pots-bake.md diff --git a/.changeset/tall-pots-bake.md b/.changeset/tall-pots-bake.md new file mode 100644 index 000000000..37c62031e --- /dev/null +++ b/.changeset/tall-pots-bake.md @@ -0,0 +1,5 @@ +--- +"cherry-markdown": patch +--- + +feat(sidebar): 添加侧边栏列表样式和动态高度支持 diff --git a/packages/cherry-markdown/src/sass/cherry.scss b/packages/cherry-markdown/src/sass/cherry.scss index 2af0649c9..161916e29 100644 --- a/packages/cherry-markdown/src/sass/cherry.scss +++ b/packages/cherry-markdown/src/sass/cherry.scss @@ -522,6 +522,13 @@ bottom: 0; overflow: hidden; + .cherry-sidebar-list { + display: flex; + flex-direction: column; + align-items: center; + box-sizing: border-box; + } + // 侧边栏按钮 非顶部工具栏 .cherry-toolbar-button { height: 30px; @@ -1460,7 +1467,7 @@ z-index: 11; position: absolute; right: 0; - top: calc(var(--height-toolbar) + 120px); + top: calc(var(--height-toolbar) + var(--sidebar-list-height)); height: calc(100% - 220px); max-height: 600px; width: 160px; diff --git a/packages/cherry-markdown/src/sass/variables/semantic.scss b/packages/cherry-markdown/src/sass/variables/semantic.scss index 5321fd939..c8f7b1945 100644 --- a/packages/cherry-markdown/src/sass/variables/semantic.scss +++ b/packages/cherry-markdown/src/sass/variables/semantic.scss @@ -28,6 +28,8 @@ --toolbar-shadow: var(--shadow-sm); --toolbar-split-color: var(--base-border-color); --toolbar-min-height: 48px; // 单行工具栏的高度 + // 侧边栏列表高度(由 JS 动态写入),默认 120px 作为无侧栏时的回退 + --sidebar-list-height: 120px; // 工具栏按钮 --toolbar-btn-color: #3f4a56; diff --git a/packages/cherry-markdown/src/toolbars/MenuBase.js b/packages/cherry-markdown/src/toolbars/MenuBase.js index 86d43a48e..9948b8149 100644 --- a/packages/cherry-markdown/src/toolbars/MenuBase.js +++ b/packages/cherry-markdown/src/toolbars/MenuBase.js @@ -557,6 +557,10 @@ export default class MenuBase { */ static getTargetParentByButton(dom) { let parent = dom.parentElement; + // unwrap sidebar list wrapper to preserve position detection + if (parent && parent.classList.contains('cherry-sidebar-list')) { + parent = parent.parentElement; + } if (/toolbar-(left|right)/.test(parent.className)) { parent = parent.parentElement; } diff --git a/packages/cherry-markdown/src/toolbars/Sidebar.js b/packages/cherry-markdown/src/toolbars/Sidebar.js index 8ea7b63ce..c0d893184 100644 --- a/packages/cherry-markdown/src/toolbars/Sidebar.js +++ b/packages/cherry-markdown/src/toolbars/Sidebar.js @@ -24,7 +24,21 @@ export default class Sidebar extends Toolbar { // super(options); // } appendMenusToDom(menus) { - this.options.dom.appendChild(menus); + const list = document.createElement('div'); + list.className = 'cherry-sidebar-list'; + list.appendChild(menus); + this.options.dom.appendChild(list); + // 将侧栏列表高度写入 CSS 变量,便于定位 + if (typeof document !== 'undefined' && typeof ResizeObserver !== 'undefined') { + const observer = new ResizeObserver(() => { + const height = list.scrollHeight; + // 高度小于 40 时保持默认 120px,不覆盖 + if (height > 40) { + this.$cherry.wrapperDom.style.setProperty('--sidebar-list-height', `${height}px`); + } + }); + observer.observe(list); + } } init() { From 2478d680595156078f555043fd3d9cb9d7ba7daf Mon Sep 17 00:00:00 2001 From: Seeridia Date: Fri, 9 Jan 2026 00:06:12 +0800 Subject: [PATCH 29/57] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E6=A0=8F=E9=AB=98=E5=BA=A6=E5=8A=A8=E6=80=81=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=80=BB=E8=BE=91=EF=BC=8C=E7=AE=80=E5=8C=96=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=A0=8F=E9=AB=98=E5=BA=A6=E5=8F=98=E9=87=8F=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20(#1585)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 移除工具栏高度动态更新逻辑,简化任务栏高度变量管理 * add changeset --------- Co-authored-by: 阿菜 Cai --- .changeset/sour-moons-live.md | 5 +++++ packages/cherry-markdown/src/Cherry.js | 5 ----- packages/cherry-markdown/src/sass/cherry.scss | 2 +- packages/cherry-markdown/src/sass/variables/base.scss | 2 +- packages/cherry-markdown/src/sass/variables/semantic.scss | 1 + 5 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 .changeset/sour-moons-live.md diff --git a/.changeset/sour-moons-live.md b/.changeset/sour-moons-live.md new file mode 100644 index 000000000..47906ac7d --- /dev/null +++ b/.changeset/sour-moons-live.md @@ -0,0 +1,5 @@ +--- +"cherry-markdown": patch +--- + +fix: 移除工具栏高度动态更新逻辑,简化任务栏高度变量管理 diff --git a/packages/cherry-markdown/src/Cherry.js b/packages/cherry-markdown/src/Cherry.js index 4961b740f..803a99beb 100644 --- a/packages/cherry-markdown/src/Cherry.js +++ b/packages/cherry-markdown/src/Cherry.js @@ -238,11 +238,6 @@ export default class Cherry extends CherryStatic { this.$event.on('editorOpen', () => { this.status.editor = 'show'; }); - this.$event.on('editor.size.change', () => { - // 更新工具栏高度CSS变量 - const toolbarHeight = this.toolbar.options.dom.offsetHeight; - this.wrapperDom.style.setProperty('--height-toolbar', `${toolbarHeight}px`); - }); // 切换模式,有纯预览模式、纯编辑模式、双栏编辑模式 this.switchModel(this.options.editor.defaultModel, this.options.toolbars.showToolbar); diff --git a/packages/cherry-markdown/src/sass/cherry.scss b/packages/cherry-markdown/src/sass/cherry.scss index 161916e29..daf9c9118 100644 --- a/packages/cherry-markdown/src/sass/cherry.scss +++ b/packages/cherry-markdown/src/sass/cherry.scss @@ -176,7 +176,7 @@ padding: var(--toolbar-padding); font-size: var(--toolbar-font-size); line-height: 2.8; - min-height: var(--toolbar-min-height); + min-height: var(--height-toolbar); flex-basis: 100%; box-sizing: border-box; z-index: 2; diff --git a/packages/cherry-markdown/src/sass/variables/base.scss b/packages/cherry-markdown/src/sass/variables/base.scss index a8f274027..85761ef17 100644 --- a/packages/cherry-markdown/src/sass/variables/base.scss +++ b/packages/cherry-markdown/src/sass/variables/base.scss @@ -67,7 +67,7 @@ /* ========== 高度尺寸 ========== */ // 组件高度 - --height-toolbar: 48px; // 不得更改,用于动态计算多行的工具栏高度 + --height-toolbar: 48px; --height-button: 38px; /* ========== 透明度 ========== */ diff --git a/packages/cherry-markdown/src/sass/variables/semantic.scss b/packages/cherry-markdown/src/sass/variables/semantic.scss index c8f7b1945..bbd6c444a 100644 --- a/packages/cherry-markdown/src/sass/variables/semantic.scss +++ b/packages/cherry-markdown/src/sass/variables/semantic.scss @@ -27,6 +27,7 @@ --toolbar-radius: none; --toolbar-shadow: var(--shadow-sm); --toolbar-split-color: var(--base-border-color); + --toolbar-min-height: 48px; // 单行工具栏的高度 // 侧边栏列表高度(由 JS 动态写入),默认 120px 作为无侧栏时的回退 --sidebar-list-height: 120px; From 9778b415848f645e11e26af5a69cf07b1189675c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Fri, 23 Jan 2026 19:09:15 +0800 Subject: [PATCH 30/57] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20demo=20?= =?UTF-8?q?=E4=B8=AD=20pinyin=20=E8=BD=AC=E6=8D=A2=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=20(#1607)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/assets/scripts/index-demo.js | 3 +- examples/assets/scripts/pinyin/hanziPinyin.js | 1 - .../scripts/pinyin/hanziPinyinWithoutYin.js | 1 - examples/assets/scripts/pinyin/pinyin.js | 81 ------------------- examples/assets/scripts/pinyin/pinyin_dist.js | 40 ++++----- packages/cherry-markdown/index.html | 9 +-- 6 files changed, 26 insertions(+), 109 deletions(-) delete mode 100644 examples/assets/scripts/pinyin/hanziPinyin.js delete mode 100644 examples/assets/scripts/pinyin/hanziPinyinWithoutYin.js delete mode 100644 examples/assets/scripts/pinyin/pinyin.js diff --git a/examples/assets/scripts/index-demo.js b/examples/assets/scripts/index-demo.js index d895d4bee..da4d8aff0 100644 --- a/examples/assets/scripts/index-demo.js +++ b/examples/assets/scripts/index-demo.js @@ -1,5 +1,3 @@ -import './pinyin/pinyin_dist.js'; - /** * 自定义一个语法 */ @@ -471,6 +469,7 @@ const basicConfig = { keydown: [], //extensions: [], callback: { + changeString2Pinyin: pinyin, onClickPreview: (event) => { console.log('onClickPreview', event); }, diff --git a/examples/assets/scripts/pinyin/hanziPinyin.js b/examples/assets/scripts/pinyin/hanziPinyin.js deleted file mode 100644 index 35d74d8aa..000000000 --- a/examples/assets/scripts/pinyin/hanziPinyin.js +++ /dev/null @@ -1 +0,0 @@ -exports.hzpy="吖ā,阿ā,啊ā,锕ā,錒ā,嗄á,厑ae,哎āi,哀āi,唉āi,埃āi,挨āi,溾āi,锿āi,鎄āi,啀ái,捱ái,皑ái,凒ái,嵦ái,溰ái,嘊ái,敱ái,敳ái,皚ái,癌ái,娾ái,隑ái,剴ái,騃ái,毐ǎi,昹ǎi,矮ǎi,蔼ǎi,躷ǎi,濭ǎi,藹ǎi,譪ǎi,霭ǎi,靄ǎi,鯦ǎi,噯ài,艾ài,伌ài,爱ài,砹ài,硋ài,隘ài,嗌ài,塧ài,嫒ài,愛ài,碍ài,叆ài,暧ài,瑷ài,僾ài,壒ài,嬡ài,懓ài,薆ài,懝ài,曖ài,賹ài,餲ài,鴱ài,皧ài,瞹ài,馤ài,礙ài,譺ài,鑀ài,鱫ài,靉ài,閡ài,欬ài,焥ài,堨ài,乂ài,嗳ài,璦ài,安ān,侒ān,峖ān,桉ān,氨ān,庵ān,谙ān,媕ān,萻ān,葊ān,痷ān,腤ān,鹌ān,蓭ān,誝ān,鞌ān,鞍ān,盦ān,闇ān,馣ān,鮟ān,盫ān,鵪ān,韽ān,鶕ān,啽ān,厰ān,鴳ān,諳ān,玵án,雸án,儑án,垵ǎn,俺ǎn,唵ǎn,埯ǎn,铵ǎn,隌ǎn,揞ǎn,晻ǎn,罯ǎn,銨ǎn,碪ǎn,犴àn,岸àn,按àn,洝àn,荌àn,案àn,胺àn,豻àn,堓àn,婩àn,貋àn,錌àn,黯àn,頇àn,屽àn,垾àn,遃àn,暗àn,肮āng,骯āng,岇áng,昂áng,昻áng,卬áng,枊àng,盎àng,醠àng,凹āo,垇āo,柪āo,軪āo,爊āo,熝āo,眑āo,泑āo,梎āo,敖áo,厫áo,隞áo,嗷áo,嗸áo,嶅áo,廒áo,滶áo,獒áo,獓áo,遨áo,摮áo,璈áo,蔜áo,磝áo,翱áo,聱áo,螯áo,翶áo,謷áo,翺áo,鳌áo,鏖áo,鰲áo,鷔áo,鼇áo,慠áo,鏕áo,嚻áo,熬áo,抝ǎo,芺ǎo,袄ǎo,媪ǎo,镺ǎo,媼ǎo,襖ǎo,郩ǎo,鴁ǎo,蝹ǎo,坳ào,岙ào,扷ào,岰ào,傲ào,奡ào,奥ào,嫯ào,奧ào,澚ào,墺ào,嶴ào,澳ào,懊ào,擙ào,謸ào,鏊ào,驁ào,骜ào,吧ba,八bā,仈bā,巴bā,叭bā,扒bā,朳bā,玐bā,夿bā,岜bā,芭bā,疤bā,哵bā,捌bā,笆bā,粑bā,紦bā,羓bā,蚆bā,釟bā,鲃bā,魞bā,鈀bā,柭bā,丷bā,峇bā,豝bā,叐bá,犮bá,抜bá,坺bá,妭bá,拔bá,茇bá,炦bá,癹bá,胈bá,釛bá,菝bá,詙bá,跋bá,軷bá,颰bá,魃bá,墢bá,鼥bá,把bǎ,钯bǎ,靶bǎ,坝bà,弝bà,爸bà,罢bà,鲅bà,罷bà,鮁bà,覇bà,矲bà,霸bà,壩bà,灞bà,欛bà,鲌bà,鮊bà,皅bà,挀bāi,掰bāi,白bái,百bǎi,佰bǎi,柏bǎi,栢bǎi,捭bǎi,竡bǎi,粨bǎi,絔bǎi,摆bǎi,擺bǎi,襬bǎi,庍bài,拝bài,败bài,拜bài,敗bài,稗bài,粺bài,鞁bài,薭bài,贁bài,韛bài,扳bān,攽bān,朌bān,班bān,般bān,颁bān,斑bān,搬bān,斒bān,頒bān,瘢bān,螁bān,螌bān,褩bān,癍bān,辬bān,籓bān,肦bān,鳻bān,搫bān,阪bǎn,坂bǎn,岅bǎn,昄bǎn,板bǎn,版bǎn,钣bǎn,粄bǎn,舨bǎn,鈑bǎn,蝂bǎn,魬bǎn,覂bǎn,瓪bǎn,办bàn,半bàn,伴bàn,扮bàn,姅bàn,怑bàn,拌bàn,绊bàn,秚bàn,湴bàn,絆bàn,鉡bàn,靽bàn,辦bàn,瓣bàn,跘bàn,邦bāng,峀bāng,垹bāng,帮bāng,捠bāng,梆bāng,浜bāng,邫bāng,幚bāng,縍bāng,幫bāng,鞤bāng,幇bāng,绑bǎng,綁bǎng,榜bǎng,牓bǎng,膀bǎng,騯bǎng,玤bàng,蚌bàng,傍bàng,棒bàng,棓bàng,硥bàng,谤bàng,塝bàng,徬bàng,稖bàng,蒡bàng,蜯bàng,镑bàng,艕bàng,謗bàng,鎊bàng,埲bàng,蚄bàng,蛖bàng,嫎bàng,勹bāo,包bāo,佨bāo,孢bāo,胞bāo,剝bāo,笣bāo,煲bāo,龅bāo,蕔bāo,褒bāo,闁bāo,襃bāo,齙bāo,剥bāo,枹bāo,裦bāo,苞bāo,窇báo,嫑báo,雹báo,铇báo,薄báo,宝bǎo,怉bǎo,饱bǎo,保bǎo,鸨bǎo,珤bǎo,堡bǎo,堢bǎo,媬bǎo,葆bǎo,寚bǎo,飹bǎo,飽bǎo,褓bǎo,駂bǎo,鳵bǎo,緥bǎo,賲bǎo,藵bǎo,寳bǎo,寶bǎo,靌bǎo,宀bǎo,鴇bǎo,勽bào,报bào,抱bào,豹bào,菢bào,袌bào,報bào,鉋bào,鲍bào,靤bào,骲bào,暴bào,髱bào,虣bào,鮑bào,儤bào,曓bào,爆bào,忁bào,鑤bào,蚫bào,瀑bào,萡be,呗bei,唄bei,陂bēi,卑bēi,盃bēi,桮bēi,悲bēi,揹bēi,碑bēi,鹎bēi,藣bēi,鵯bēi,柸bēi,錍bēi,椑bēi,諀bēi,杯bēi,喺béi,北běi,鉳běi,垻bèi,贝bèi,狈bèi,貝bèi,邶bèi,备bèi,昁bèi,牬bèi,苝bèi,背bèi,钡bèi,俻bèi,倍bèi,悖bèi,狽bèi,被bèi,偝bèi,偹bèi,梖bèi,珼bèi,備bèi,僃bèi,惫bèi,焙bèi,琲bèi,軰bèi,辈bèi,愂bèi,碚bèi,禙bèi,蓓bèi,蛽bèi,犕bèi,褙bèi,誖bèi,骳bèi,輩bèi,鋇bèi,憊bèi,糒bèi,鞴bèi,鐾bèi,鐴bèi,杮bèi,韝bèi,棑bèi,哱bèi,鄁bèi,奔bēn,泍bēn,贲bēn,倴bēn,渀bēn,逩bēn,犇bēn,賁bēn,錛bēn,喯bēn,锛bēn,本běn,苯běn,奙běn,畚běn,楍běn,翉běn,夲běn,坌bèn,捹bèn,桳bèn,笨bèn,撪bèn,獖bèn,輽bèn,炃bèn,燌bèn,夯bèn,伻bēng,祊bēng,奟bēng,崩bēng,绷bēng,絣bēng,閍bēng,嵭bēng,痭bēng,嘣bēng,綳bēng,繃bēng,嗙bēng,挷bēng,傰bēng,搒bēng,甭béng,埄běng,菶běng,琣běng,鞛běng,琫běng,泵bèng,迸bèng,逬bèng,跰bèng,塴bèng,甏bèng,镚bèng,蹦bèng,鏰bèng,錋bèng,皀bī,屄bī,偪bī,毴bī,逼bī,豍bī,螕bī,鲾bī,鎞bī,鵖bī,鰏bī,悂bī,鈚bī,柲bí,荸bí,鼻bí,嬶bí,匕bǐ,比bǐ,夶bǐ,朼bǐ,佊bǐ,妣bǐ,沘bǐ,疕bǐ,彼bǐ,柀bǐ,秕bǐ,俾bǐ,笔bǐ,粃bǐ,粊bǐ,舭bǐ,啚bǐ,筆bǐ,鄙bǐ,聛bǐ,貏bǐ,箄bǐ,崥bǐ,魮bǐ,娝bǐ,箃bǐ,吡bǐ,匂bì,币bì,必bì,毕bì,闭bì,佖bì,坒bì,庇bì,诐bì,邲bì,妼bì,怭bì,枈bì,畀bì,苾bì,哔bì,毖bì,珌bì,疪bì,胇bì,荜bì,陛bì,毙bì,狴bì,畢bì,袐bì,铋bì,婢bì,庳bì,敝bì,梐bì,萆bì,萞bì,閇bì,閉bì,堛bì,弻bì,弼bì,愊bì,愎bì,湢bì,皕bì,禆bì,筚bì,貱bì,赑bì,嗶bì,彃bì,楅bì,滗bì,滭bì,煏bì,痹bì,痺bì,腷bì,蓖bì,蓽bì,蜌bì,裨bì,跸bì,鉍bì,閟bì,飶bì,幣bì,弊bì,熚bì,獙bì,碧bì,稫bì,箅bì,箆bì,綼bì,蔽bì,馝bì,幤bì,潷bì,獘bì,罼bì,襅bì,駜bì,髲bì,壁bì,嬖bì,廦bì,篦bì,篳bì,縪bì,薜bì,觱bì,避bì,鮅bì,斃bì,濞bì,臂bì,蹕bì,鞞bì,髀bì,奰bì,璧bì,鄨bì,饆bì,繴bì,襞bì,鏎bì,鞸bì,韠bì,躃bì,躄bì,魓bì,贔bì,驆bì,鷝bì,鷩bì,鼊bì,咇bì,鮩bì,畐bì,踾bì,鶝bì,闬bì,閈bì,祕bì,鴓bì,怶bì,旇bì,翍bì,肶bì,笓bì,鸊bì,肸bì,畁bì,詖bì,鄪bì,襣bì,边biān,砭biān,笾biān,猵biān,编biān,萹biān,煸biān,牑biān,甂biān,箯biān,編biān,蝙biān,獱biān,邉biān,鍽biān,鳊biān,邊biān,鞭biān,鯿biān,籩biān,糄biān,揙biān,臱biān,鯾biān,炞biǎn,贬biǎn,扁biǎn,窆biǎn,匾biǎn,貶biǎn,惼biǎn,碥biǎn,稨biǎn,褊biǎn,鴘biǎn,藊biǎn,釆biǎn,辧biǎn,疺biǎn,覵biǎn,鶣biǎn,卞biàn,弁biàn,忭biàn,抃biàn,汳biàn,汴biàn,苄biàn,峅biàn,便biàn,变biàn,変biàn,昪biàn,覍biàn,缏biàn,遍biàn,閞biàn,辡biàn,緶biàn,艑biàn,辨biàn,辩biàn,辫biàn,辮biàn,辯biàn,變biàn,彪biāo,标biāo,飑biāo,骉biāo,髟biāo,淲biāo,猋biāo,脿biāo,墂biāo,幖biāo,滮biāo,蔈biāo,骠biāo,標biāo,熛biāo,膘biāo,麃biāo,瘭biāo,镖biāo,飙biāo,飚biāo,儦biāo,颷biāo,瀌biāo,藨biāo,謤biāo,爂biāo,臕biāo,贆biāo,鏢biāo,穮biāo,镳biāo,飆biāo,飇biāo,飈biāo,飊biāo,驃biāo,鑣biāo,驫biāo,摽biāo,膔biāo,篻biāo,僄biāo,徱biāo,表biǎo,婊biǎo,裱biǎo,褾biǎo,錶biǎo,檦biǎo,諘biǎo,俵biào,鳔biào,鰾biào,憋biē,鳖biē,鱉biē,鼈biē,虌biē,龞biē,蟞biē,別bié,别bié,莂bié,蛂bié,徶bié,襒bié,蹩bié,穪bié,瘪biě,癟biě,彆biè,汃bīn,邠bīn,砏bīn,宾bīn,彬bīn,斌bīn,椕bīn,滨bīn,缤bīn,槟bīn,瑸bīn,豩bīn,賓bīn,賔bīn,镔bīn,儐bīn,濒bīn,濱bīn,濵bīn,虨bīn,豳bīn,璸bīn,瀕bīn,霦bīn,繽bīn,蠙bīn,鑌bīn,顮bīn,檳bīn,玢bīn,訜bīn,傧bīn,氞bìn,摈bìn,殡bìn,膑bìn,髩bìn,擯bìn,鬂bìn,臏bìn,髌bìn,鬓bìn,髕bìn,鬢bìn,殯bìn,仌bīng,氷bīng,冰bīng,兵bīng,栟bīng,掤bīng,梹bīng,鋲bīng,幷bīng,丙bǐng,邴bǐng,陃bǐng,怲bǐng,抦bǐng,秉bǐng,苪bǐng,昞bǐng,昺bǐng,柄bǐng,炳bǐng,饼bǐng,眪bǐng,窉bǐng,蛃bǐng,禀bǐng,鈵bǐng,鉼bǐng,鞆bǐng,餅bǐng,餠bǐng,燷bǐng,庰bǐng,偋bǐng,寎bǐng,綆bǐng,稟bǐng,癛bǐng,癝bǐng,琕bǐng,棅bǐng,并bìng,並bìng,併bìng,垪bìng,倂bìng,栤bìng,病bìng,竝bìng,傡bìng,摒bìng,誁bìng,靐bìng,疒bìng,啵bo,蔔bo,卜bo,噃bo,趵bō,癶bō,拨bō,波bō,玻bō,袚bō,袯bō,钵bō,饽bō,紴bō,缽bō,菠bō,碆bō,鉢bō,僠bō,嶓bō,撥bō,播bō,餑bō,磻bō,蹳bō,驋bō,鱍bō,帗bō,盋bō,脖bó,仢bó,伯bó,孛bó,犻bó,驳bó,帛bó,泊bó,狛bó,苩bó,侼bó,勃bó,胉bó,郣bó,亳bó,挬bó,浡bó,瓟bó,秡bó,钹bó,铂bó,桲bó,淿bó,舶bó,博bó,渤bó,湐bó,葧bó,鹁bó,愽bó,搏bó,猼bó,鈸bó,鉑bó,馎bó,僰bó,煿bó,箔bó,膊bó,艊bó,馛bó,駁bó,踣bó,鋍bó,镈bó,壆bó,馞bó,駮bó,豰bó,嚗bó,懪bó,礡bó,簙bó,鎛bó,餺bó,鵓bó,犦bó,髆bó,髉bó,欂bó,襮bó,礴bó,鑮bó,肑bó,茀bó,袹bó,穛bó,彴bó,瓝bó,牔bó,蚾bǒ,箥bǒ,跛bǒ,簸bò,孹bò,擘bò,檗bò,糪bò,譒bò,蘗bò,襎bò,檘bò,蔢bò,峬bū,庯bū,逋bū,钸bū,晡bū,鈽bū,誧bū,餔bū,鵏bū,秿bū,陠bū,鯆bū,轐bú,醭bú,不bú,輹bú,卟bǔ,补bǔ,哺bǔ,捕bǔ,補bǔ,鳪bǔ,獛bǔ,鸔bǔ,擈bǔ,佈bù,吥bù,步bù,咘bù,怖bù,歨bù,歩bù,钚bù,勏bù,埗bù,悑bù,捗bù,荹bù,部bù,埠bù,瓿bù,鈈bù,廍bù,蔀bù,踄bù,郶bù,篰bù,餢bù,簿bù,尃bù,箁bù,抪bù,柨bù,布bù,擦cā,攃cā,礤cǎ,礸cǎ,遪cà,偲cāi,猜cāi,揌cāi,才cái,材cái,财cái,財cái,戝cái,裁cái,采cǎi,倸cǎi,埰cǎi,婇cǎi,寀cǎi,彩cǎi,採cǎi,睬cǎi,跴cǎi,綵cǎi,踩cǎi,菜cài,棌cài,蔡cài,縩cài,乲cal,参cān,參cān,飡cān,骖cān,喰cān,湌cān,傪cān,嬠cān,餐cān,驂cān,嵾cān,飱cān,残cán,蚕cán,惭cán,殘cán,慚cán,蝅cán,慙cán,蠶cán,蠺cán,惨cǎn,慘cǎn,噆cǎn,憯cǎn,黪cǎn,黲cǎn,灿càn,粲càn,儏càn,澯càn,薒càn,燦càn,璨càn,爘càn,謲càn,仓cāng,沧cāng,苍cāng,倉cāng,舱cāng,凔cāng,嵢cāng,滄cāng,獊cāng,蒼cāng,濸cāng,艙cāng,螥cāng,罉cāng,藏cáng,欌cáng,鑶cáng,賶càng,撡cāo,操cāo,糙cāo,曺cáo,嘈cáo,嶆cáo,漕cáo,蓸cáo,槽cáo,褿cáo,艚cáo,螬cáo,鏪cáo,慒cáo,曹cáo,艹cǎo,艸cǎo,草cǎo,愺cǎo,懆cǎo,騲cǎo,慅cǎo,肏cào,鄵cào,襙cào,冊cè,册cè,侧cè,厕cè,恻cè,拺cè,测cè,荝cè,敇cè,側cè,粣cè,萗cè,廁cè,惻cè,測cè,策cè,萴cè,筞cè,蓛cè,墄cè,箣cè,憡cè,刂cè,厠cè,膥cēn,岑cén,梣cén,涔cén,硶cén,噌cēng,层céng,層céng,竲céng,驓céng,曾céng,蹭cèng,硛ceok,硳ceok,岾ceom,猠ceon,乽ceor,嚓chā,叉chā,扠chā,芆chā,杈chā,肞chā,臿chā,訍chā,偛chā,嗏chā,插chā,銟chā,锸chā,艖chā,疀chā,鍤chā,鎈chā,垞chá,查chá,査chá,茬chá,茶chá,嵖chá,猹chá,靫chá,槎chá,察chá,碴chá,褨chá,檫chá,搽chá,衩chǎ,镲chǎ,鑔chǎ,奼chà,汊chà,岔chà,侘chà,诧chà,剎chà,姹chà,差chà,紁chà,詫chà,拆chāi,钗chāi,釵chāi,犲chái,侪chái,柴chái,祡chái,豺chái,儕chái,喍chái,虿chài,袃chài,瘥chài,蠆chài,囆chài,辿chān,觇chān,梴chān,掺chān,搀chān,覘chān,裧chān,摻chān,鋓chān,幨chān,襜chān,攙chān,嚵chān,脠chān,婵chán,谗chán,孱chán,棎chán,湹chán,禅chán,馋chán,嬋chán,煘chán,缠chán,獑chán,蝉chán,誗chán,鋋chán,儃chán,廛chán,潹chán,潺chán,緾chán,磛chán,禪chán,毚chán,鄽chán,瀍chán,蟬chán,儳chán,劖chán,蟾chán,酁chán,壥chán,巉chán,瀺chán,纏chán,纒chán,躔chán,艬chán,讒chán,鑱chán,饞chán,繟chán,澶chán,镵chán,产chǎn,刬chǎn,旵chǎn,丳chǎn,浐chǎn,剗chǎn,谄chǎn,產chǎn,産chǎn,铲chǎn,阐chǎn,蒇chǎn,剷chǎn,嵼chǎn,摌chǎn,滻chǎn,幝chǎn,蕆chǎn,諂chǎn,閳chǎn,燀chǎn,簅chǎn,冁chǎn,醦chǎn,闡chǎn,囅chǎn,灛chǎn,讇chǎn,墠chǎn,骣chǎn,鏟chǎn,忏chàn,硟chàn,摲chàn,懴chàn,颤chàn,懺chàn,羼chàn,韂chàn,顫chàn,伥chāng,昌chāng,倀chāng,娼chāng,淐chāng,猖chāng,菖chāng,阊chāng,晿chāng,椙chāng,琩chāng,裮chāng,锠chāng,錩chāng,閶chāng,鲳chāng,鯧chāng,鼚chāng,兏cháng,肠cháng,苌cháng,尝cháng,偿cháng,常cháng,徜cháng,瓺cháng,萇cháng,甞cháng,腸cháng,嘗cháng,嫦cháng,瑺cháng,膓cháng,鋿cháng,償cháng,嚐cháng,蟐cháng,鲿cháng,鏛cháng,鱨cháng,棖cháng,尙cháng,厂chǎng,场chǎng,昶chǎng,場chǎng,敞chǎng,僘chǎng,廠chǎng,氅chǎng,鋹chǎng,惝chǎng,怅chàng,玚chàng,畅chàng,倡chàng,鬯chàng,唱chàng,悵chàng,暢chàng,畼chàng,誯chàng,韔chàng,抄chāo,弨chāo,怊chāo,欩chāo,钞chāo,焯chāo,超chāo,鈔chāo,繛chāo,樔chāo,绰chāo,綽chāo,綤chāo,牊cháo,巢cháo,巣cháo,朝cháo,鄛cháo,漅cháo,嘲cháo,潮cháo,窲cháo,罺cháo,轈cháo,晁cháo,吵chǎo,炒chǎo,眧chǎo,煼chǎo,麨chǎo,巐chǎo,粆chǎo,仦chào,耖chào,觘chào,趠chào,车chē,車chē,砗chē,唓chē,硨chē,蛼chē,莗chē,扯chě,偖chě,撦chě,彻chè,坼chè,迠chè,烢chè,聅chè,掣chè,硩chè,頙chè,徹chè,撤chè,澈chè,勶chè,瞮chè,爡chè,喢chè,賝chen,伧chen,傖chen,抻chēn,郴chēn,棽chēn,琛chēn,嗔chēn,綝chēn,諃chēn,尘chén,臣chén,忱chén,沉chén,辰chén,陈chén,茞chén,宸chén,烥chén,莐chén,陳chén,敐chén,晨chén,訦chén,谌chén,揨chén,煁chén,蔯chén,塵chén,樄chén,瘎chén,霃chén,螴chén,諶chén,麎chén,曟chén,鷐chén,薼chén,趻chěn,碜chěn,墋chěn,夦chěn,磣chěn,踸chěn,贂chěn,衬chèn,疢chèn,龀chèn,趁chèn,榇chèn,齓chèn,齔chèn,嚫chèn,谶chèn,襯chèn,讖chèn,瀋chèn,称chēng,稱chēng,阷chēng,泟chēng,柽chēng,爯chēng,棦chēng,浾chēng,偁chēng,蛏chēng,铛chēng,牚chēng,琤chēng,赪chēng,憆chēng,摚chēng,靗chēng,撐chēng,撑chēng,緽chēng,橕chēng,瞠chēng,赬chēng,頳chēng,檉chēng,竀chēng,蟶chēng,鏳chēng,鏿chēng,饓chēng,鐺chēng,丞chéng,成chéng,呈chéng,承chéng,枨chéng,诚chéng,郕chéng,乗chéng,城chéng,娍chéng,宬chéng,峸chéng,洆chéng,荿chéng,乘chéng,埕chéng,挰chéng,珹chéng,掁chéng,窚chéng,脭chéng,铖chéng,堘chéng,惩chéng,椉chéng,程chéng,筬chéng,絾chéng,裎chéng,塖chéng,溗chéng,碀chéng,誠chéng,畻chéng,酲chéng,鋮chéng,澄chéng,橙chéng,檙chéng,鯎chéng,瀓chéng,懲chéng,騬chéng,塍chéng,悜chěng,逞chěng,骋chěng,庱chěng,睈chěng,騁chěng,秤chèng,吃chī,妛chī,杘chī,侙chī,哧chī,蚩chī,鸱chī,瓻chī,眵chī,笞chī,訵chī,嗤chī,媸chī,摛chī,痴chī,瞝chī,螭chī,鴟chī,鵄chī,癡chī,魑chī,齝chī,攡chī,麶chī,彲chī,黐chī,蚳chī,摴chī,彨chī,弛chí,池chí,驰chí,迟chí,岻chí,茌chí,持chí,竾chí,淔chí,筂chí,貾chí,遅chí,馳chí,墀chí,踟chí,遲chí,篪chí,謘chí,尺chǐ,叺chǐ,呎chǐ,肔chǐ,卶chǐ,齿chǐ,垑chǐ,胣chǐ,恥chǐ,耻chǐ,蚇chǐ,豉chǐ,欼chǐ,歯chǐ,裭chǐ,鉹chǐ,褫chǐ,齒chǐ,侈chǐ,彳chì,叱chì,斥chì,灻chì,赤chì,饬chì,抶chì,勅chì,恜chì,炽chì,翄chì,翅chì,烾chì,痓chì,啻chì,湁chì,飭chì,傺chì,痸chì,腟chì,鉓chì,雴chì,憏chì,翤chì,遫chì,慗chì,瘛chì,翨chì,熾chì,懘chì,趩chì,饎chì,鶒chì,鷘chì,餝chì,歗chì,敕chì,充chōng,冲chōng,忡chōng,茺chōng,珫chōng,翀chōng,舂chōng,嘃chōng,摏chōng,憃chōng,憧chōng,衝chōng,罿chōng,艟chōng,蹖chōng,褈chōng,傭chōng,浺chōng,虫chóng,崇chóng,崈chóng,隀chóng,蟲chóng,宠chǒng,埫chǒng,寵chǒng,沖chòng,铳chòng,銃chòng,抽chōu,紬chōu,瘳chōu,篘chōu,犨chōu,犫chōu,跾chōu,掫chōu,仇chóu,俦chóu,栦chóu,惆chóu,绸chóu,菗chóu,畴chóu,絒chóu,愁chóu,皗chóu,稠chóu,筹chóu,酧chóu,酬chóu,綢chóu,踌chóu,儔chóu,雔chóu,嬦chóu,懤chóu,雠chóu,疇chóu,籌chóu,躊chóu,讎chóu,讐chóu,擣chóu,燽chóu,丑chǒu,丒chǒu,吜chǒu,杽chǒu,侴chǒu,瞅chǒu,醜chǒu,矁chǒu,魗chǒu,臭chòu,遚chòu,殠chòu,榋chu,橻chu,屮chū,出chū,岀chū,初chū,樗chū,貙chū,齣chū,刍chú,除chú,厨chú,滁chú,蒢chú,豠chú,锄chú,耡chú,蒭chú,蜍chú,趎chú,鉏chú,雏chú,犓chú,廚chú,篨chú,鋤chú,橱chú,懨chú,幮chú,櫉chú,蟵chú,躇chú,雛chú,櫥chú,蹰chú,鶵chú,躕chú,媰chú,杵chǔ,础chǔ,储chǔ,楮chǔ,禇chǔ,楚chǔ,褚chǔ,濋chǔ,儲chǔ,檚chǔ,璴chǔ,礎chǔ,齭chǔ,齼chǔ,処chǔ,椘chǔ,亍chù,处chù,竌chù,怵chù,拀chù,绌chù,豖chù,竐chù,俶chù,敊chù,珿chù,絀chù,處chù,傗chù,琡chù,搐chù,触chù,踀chù,閦chù,儊chù,憷chù,斶chù,歜chù,臅chù,黜chù,觸chù,矗chù,觕chù,畜chù,鄐chù,搋chuāi,揣chuāi,膗chuái,嘬chuài,踹chuài,膪chuài,巛chuān,川chuān,氚chuān,穿chuān,剶chuān,瑏chuān,传chuán,舡chuán,船chuán,猭chuán,遄chuán,傳chuán,椽chuán,歂chuán,暷chuán,輲chuán,甎chuán,舛chuǎn,荈chuǎn,喘chuǎn,僢chuǎn,堾chuǎn,踳chuǎn,汌chuàn,串chuàn,玔chuàn,钏chuàn,釧chuàn,賗chuàn,刅chuāng,炊chuī,龡chuī,圌chuí,垂chuí,桘chuí,陲chuí,捶chuí,菙chuí,棰chuí,槌chuí,锤chuí,箠chuí,顀chuí,錘chuí,鰆chun,旾chūn,杶chūn,春chūn,萅chūn,媋chūn,暙chūn,椿chūn,槆chūn,瑃chūn,箺chūn,蝽chūn,橁chūn,輴chūn,櫄chūn,鶞chūn,纯chún,陙chún,唇chún,浱chún,純chún,莼chún,淳chún,脣chún,犉chún,滣chún,鹑chún,漘chún,醇chún,醕chún,鯙chún,鶉chún,蒓chún,偆chǔn,萶chǔn,惷chǔn,睶chǔn,賰chǔn,蠢chǔn,踔chuō,戳chuō,啜chuò,辵chuò,娕chuò,娖chuò,惙chuò,涰chuò,逴chuò,辍chuò,酫chuò,龊chuò,擉chuò,磭chuò,歠chuò,嚽chuò,齪chuò,鑡chuò,齱chuò,婼chuò,鋜chuò,輟chuò,呲cī,玼cī,疵cī,趀cī,偨cī,縒cī,跐cī,髊cī,齹cī,枱cī,词cí,珁cí,垐cí,柌cí,祠cí,茨cí,瓷cí,詞cí,辝cí,慈cí,甆cí,辞cí,鈶cí,雌cí,鹚cí,糍cí,辤cí,飺cí,餈cí,嬨cí,濨cí,鴜cí,礠cí,辭cí,鶿cí,鷀cí,磁cí,此cǐ,佌cǐ,皉cǐ,朿cì,次cì,佽cì,刺cì,刾cì,庛cì,茦cì,栨cì,莿cì,絘cì,赐cì,螆cì,賜cì,蛓cì,嗭cis,囱cōng,匆cōng,囪cōng,苁cōng,忩cōng,枞cōng,茐cōng,怱cōng,悤cōng,棇cōng,焧cōng,葱cōng,楤cōng,漗cōng,聡cōng,蔥cōng,骢cōng,暰cōng,樅cōng,樬cōng,瑽cōng,璁cōng,聪cōng,瞛cōng,篵cōng,聰cōng,蟌cōng,繱cōng,鏦cōng,騘cōng,驄cōng,聦cōng,从cóng,從cóng,丛cóng,従cóng,婃cóng,孮cóng,徖cóng,悰cóng,淙cóng,琮cóng,漎cóng,誴cóng,賨cóng,賩cóng,樷cóng,藂cóng,叢cóng,灇cóng,欉cóng,爜cóng,憁còng,謥còng,凑còu,湊còu,楱còu,腠còu,辏còu,輳còu,粗cū,麁cū,麄cū,麤cū,徂cú,殂cú,蔖cǔ,促cù,猝cù,媨cù,瘄cù,蔟cù,誎cù,趗cù,憱cù,醋cù,瘯cù,簇cù,縬cù,鼀cù,蹴cù,蹵cù,顣cù,蹙cù,汆cuān,撺cuān,镩cuān,蹿cuān,攛cuān,躥cuān,鑹cuān,攅cuán,櫕cuán,巑cuán,攢cuán,窜cuàn,熶cuàn,篡cuàn,殩cuàn,篹cuàn,簒cuàn,竄cuàn,爨cuàn,乼cui,崔cuī,催cuī,凗cuī,墔cuī,摧cuī,榱cuī,獕cuī,磪cuī,鏙cuī,漼cuī,慛cuī,璀cuǐ,皠cuǐ,熣cuǐ,繀cuǐ,忰cuì,疩cuì,翆cuì,脃cuì,脆cuì,啐cuì,啛cuì,悴cuì,淬cuì,萃cuì,毳cuì,焠cuì,瘁cuì,粹cuì,膵cuì,膬cuì,竁cuì,臎cuì,琗cuì,粋cuì,脺cuì,翠cuì,邨cūn,村cūn,皴cūn,澊cūn,竴cūn,存cún,刌cǔn,忖cǔn,寸cùn,籿cùn,襊cuō,搓cuō,瑳cuō,遳cuō,磋cuō,撮cuō,蹉cuō,醝cuō,虘cuó,嵯cuó,痤cuó,矬cuó,蒫cuó,鹾cuó,鹺cuó,嵳cuó,脞cuǒ,剉cuò,剒cuò,厝cuò,夎cuò,挫cuò,莝cuò,莡cuò,措cuò,逪cuò,棤cuò,锉cuò,蓌cuò,错cuò,銼cuò,錯cuò,疸da,咑dā,哒dā,耷dā,畣dā,搭dā,嗒dā,噠dā,撘dā,鎝dā,笚dā,矺dā,褡dā,墶dá,达dá,迏dá,迖dá,妲dá,怛dá,垯dá,炟dá,羍dá,荅dá,荙dá,剳dá,匒dá,笪dá,逹dá,溚dá,答dá,詚dá,達dá,跶dá,瘩dá,靼dá,薘dá,鞑dá,燵dá,蟽dá,鎉dá,躂dá,鐽dá,韃dá,龖dá,龘dá,搨dá,繨dá,打dǎ,觰dǎ,大dà,亣dà,眔dà,橽dà,汏dà,呆dāi,獃dāi,懛dāi,歹dǎi,傣dǎi,逮dǎi,代dài,轪dài,侢dài,垈dài,岱dài,帒dài,甙dài,绐dài,迨dài,带dài,待dài,柋dài,殆dài,玳dài,贷dài,帯dài,軑dài,埭dài,帶dài,紿dài,蚮dài,袋dài,軚dài,貸dài,軩dài,瑇dài,廗dài,叇dài,曃dài,緿dài,鮘dài,鴏dài,戴dài,艜dài,黛dài,簤dài,蹛dài,瀻dài,霴dài,襶dài,靆dài,螮dài,蝳dài,跢dài,箉dài,骀dài,怠dài,黱dài,愖dān,丹dān,妉dān,单dān,担dān,単dān,眈dān,砃dān,耼dān,耽dān,郸dān,聃dān,躭dān,酖dān,單dān,媅dān,殚dān,瘅dān,匰dān,箪dān,褝dān,鄲dān,頕dān,儋dān,勯dān,擔dān,殫dān,癉dān,襌dān,簞dān,瓭dān,卩dān,亻dān,娊dān,噡dān,聸dān,伔dǎn,刐dǎn,狚dǎn,玬dǎn,胆dǎn,衴dǎn,紞dǎn,掸dǎn,亶dǎn,馾dǎn,撣dǎn,澸dǎn,黕dǎn,膽dǎn,丼dǎn,抌dǎn,赕dǎn,賧dǎn,黵dǎn,黮dǎn,繵dàn,譂dàn,旦dàn,但dàn,帎dàn,沊dàn,泹dàn,诞dàn,柦dàn,疍dàn,啖dàn,啗dàn,弹dàn,惮dàn,淡dàn,蛋dàn,啿dàn,氮dàn,腅dàn,蜑dàn,觛dàn,窞dàn,誕dàn,僤dàn,噉dàn,髧dàn,嘾dàn,彈dàn,憚dàn,憺dàn,澹dàn,禫dàn,餤dàn,駳dàn,鴠dàn,甔dàn,癚dàn,嚪dàn,贉dàn,霮dàn,饏dàn,蟺dàn,倓dàn,惔dàn,弾dàn,醈dàn,撢dàn,萏dàn,当dāng,珰dāng,裆dāng,筜dāng,儅dāng,噹dāng,澢dāng,璫dāng,襠dāng,簹dāng,艡dāng,蟷dāng,當dāng,挡dǎng,党dǎng,谠dǎng,擋dǎng,譡dǎng,黨dǎng,灙dǎng,欓dǎng,讜dǎng,氹dàng,凼dàng,圵dàng,宕dàng,砀dàng,垱dàng,荡dàng,档dàng,菪dàng,瓽dàng,逿dàng,潒dàng,碭dàng,瞊dàng,蕩dàng,趤dàng,壋dàng,檔dàng,璗dàng,盪dàng,礑dàng,簜dàng,蘯dàng,闣dàng,愓dàng,嵣dàng,偒dàng,雼dàng,裯dāo,刀dāo,叨dāo,屶dāo,忉dāo,氘dāo,舠dāo,釖dāo,鱽dāo,魛dāo,虭dāo,捯dáo,导dǎo,岛dǎo,陦dǎo,倒dǎo,宲dǎo,捣dǎo,祷dǎo,禂dǎo,搗dǎo,隝dǎo,嶋dǎo,嶌dǎo,槝dǎo,導dǎo,隯dǎo,壔dǎo,嶹dǎo,蹈dǎo,禱dǎo,菿dǎo,島dǎo,帱dào,幬dào,到dào,悼dào,盗dào,椡dào,盜dào,道dào,稲dào,翢dào,噵dào,稻dào,衜dào,檤dào,衟dào,翿dào,軇dào,瓙dào,纛dào,箌dào,的de,嘚dē,恴dé,得dé,淂dé,悳dé,惪dé,锝dé,徳dé,德dé,鍀dé,棏dé,揼dem,扥den,扽den,灯dēng,登dēng,豋dēng,噔dēng,嬁dēng,燈dēng,璒dēng,竳dēng,簦dēng,艠dēng,覴dēng,蹬dēng,墱dēng,戥děng,等děng,澂dèng,邓dèng,僜dèng,凳dèng,鄧dèng,隥dèng,嶝dèng,瞪dèng,磴dèng,镫dèng,櫈dèng,鐙dèng,仾dī,低dī,奃dī,彽dī,袛dī,啲dī,埞dī,羝dī,隄dī,堤dī,趆dī,嘀dī,滴dī,磾dī,鍉dī,鞮dī,氐dī,牴dī,碮dī,踧dí,镝dí,廸dí,狄dí,籴dí,苖dí,迪dí,唙dí,敌dí,涤dí,荻dí,梑dí,笛dí,觌dí,靮dí,滌dí,髢dí,嫡dí,蔋dí,蔐dí,頔dí,魡dí,敵dí,篴dí,嚁dí,藡dí,豴dí,糴dí,覿dí,鸐dí,藋dí,鬄dí,樀dí,蹢dí,鏑dí,泜dǐ,诋dǐ,邸dǐ,阺dǐ,呧dǐ,坻dǐ,底dǐ,弤dǐ,抵dǐ,拞dǐ,柢dǐ,砥dǐ,掋dǐ,菧dǐ,詆dǐ,軧dǐ,聜dǐ,骶dǐ,鯳dǐ,坘dǐ,厎dǐ,赿dì,地dì,弚dì,坔dì,弟dì,旳dì,杕dì,玓dì,怟dì,枤dì,苐dì,帝dì,埊dì,娣dì,递dì,逓dì,偙dì,啇dì,梊dì,焍dì,眱dì,祶dì,第dì,菂dì,谛dì,釱dì,媂dì,棣dì,睇dì,缔dì,蒂dì,僀dì,禘dì,腣dì,遞dì,鉪dì,馰dì,墑dì,墬dì,摕dì,碲dì,蝃dì,遰dì,慸dì,甋dì,締dì,嶳dì,諦dì,踶dì,弔dì,嵽dì,諟dì,珶dì,渧dì,蹏dì,揥dì,墆dì,疐dì,俤dì,蔕dì,嗲diǎ,敁diān,掂diān,傎diān,厧diān,嵮diān,滇diān,槙diān,瘨diān,颠diān,蹎diān,巅diān,顚diān,顛diān,癫diān,巓diān,巔diān,攧diān,癲diān,齻diān,槇diān,典diǎn,点diǎn,婰diǎn,敟diǎn,椣diǎn,碘diǎn,蒧diǎn,蕇diǎn,踮diǎn,點diǎn,痶diǎn,丶diǎn,奌diǎn,电diàn,佃diàn,甸diàn,坫diàn,店diàn,垫diàn,扂diàn,玷diàn,钿diàn,唸diàn,婝diàn,惦diàn,淀diàn,奠diàn,琔diàn,殿diàn,蜔diàn,鈿diàn,電diàn,墊diàn,橂diàn,澱diàn,靛diàn,磹diàn,癜diàn,簟diàn,驔diàn,腍diàn,橝diàn,壂diàn,刁diāo,叼diāo,汈diāo,刟diāo,凋diāo,奝diāo,弴diāo,彫diāo,蛁diāo,琱diāo,貂diāo,碉diāo,鳭diāo,殦diāo,雕diāo,鮉diāo,鲷diāo,簓diāo,鼦diāo,鯛diāo,鵰diāo,颩diāo,矵diāo,錭diāo,淍diāo,屌diǎo,鸼diǎo,鵃diǎo,扚diǎo,伄diào,吊diào,钓diào,窎diào,訋diào,调diào,掉diào,釣diào,铞diào,鈟diào,竨diào,銱diào,雿diào,調diào,瘹diào,窵diào,鋽diào,鑃diào,誂diào,嬥diào,絩diào,爹diē,跌diē,褺diē,跮dié,苵dié,迭dié,垤dié,峌dié,恎dié,绖dié,胅dié,瓞dié,眣dié,耊dié,啑dié,戜dié,谍dié,喋dié,堞dié,幉dié,惵dié,揲dié,畳dié,絰dié,耋dié,臷dié,詄dié,趃dié,叠dié,殜dié,牃dié,牒dié,镻dié,碟dié,蜨dié,褋dié,艓dié,蝶dié,諜dié,蹀dié,鲽dié,曡dié,鰈dié,疉dié,疊dié,氎dié,渉dié,崼dié,鮙dié,跕dié,鐡dié,怢dié,槢dié,挃dié,柣dié,螲dié,疂dié,眰diè,嚸dim,丁dīng,仃dīng,叮dīng,帄dīng,玎dīng,甼dīng,疔dīng,盯dīng,耵dīng,靪dīng,奵dīng,町dīng,虰dīng,酊dǐng,顶dǐng,頂dǐng,鼎dǐng,鼑dǐng,薡dǐng,鐤dǐng,顁dǐng,艼dǐng,濎dǐng,嵿dǐng,钉dìng,釘dìng,订dìng,忊dìng,饤dìng,矴dìng,定dìng,訂dìng,飣dìng,啶dìng,萣dìng,椗dìng,腚dìng,碇dìng,锭dìng,碠dìng,聢dìng,錠dìng,磸dìng,铤dìng,鋌dìng,掟dìng,丟diū,丢diū,铥diū,銩diū,东dōng,冬dōng,咚dōng,東dōng,苳dōng,昸dōng,氡dōng,倲dōng,鸫dōng,埬dōng,娻dōng,崬dōng,涷dōng,笗dōng,菄dōng,氭dōng,蝀dōng,鮗dōng,鼕dōng,鯟dōng,鶇dōng,鶫dōng,徚dōng,夂dōng,岽dōng,揰dǒng,董dǒng,墥dǒng,嬞dǒng,懂dǒng,箽dǒng,蕫dǒng,諌dǒng,湩dǒng,动dòng,冻dòng,侗dòng,垌dòng,峒dòng,峝dòng,恫dòng,挏dòng,栋dòng,洞dòng,胨dòng,迵dòng,凍dòng,戙dòng,胴dòng,動dòng,崠dòng,硐dòng,棟dòng,腖dòng,働dòng,詷dòng,駧dòng,霘dòng,狫dòng,烔dòng,絧dòng,衕dòng,勭dòng,騆dòng,姛dòng,瞗dōu,吺dōu,剅dōu,唗dōu,都dōu,兜dōu,兠dōu,蔸dōu,橷dōu,篼dōu,侸dōu,艔dóu,乧dǒu,阧dǒu,抖dǒu,枓dǒu,陡dǒu,蚪dǒu,鈄dǒu,斗dòu,豆dòu,郖dòu,浢dòu,荳dòu,逗dòu,饾dòu,鬥dòu,梪dòu,毭dòu,脰dòu,酘dòu,痘dòu,閗dòu,窦dòu,鬦dòu,鋀dòu,餖dòu,斣dòu,闘dòu,竇dòu,鬪dòu,鬭dòu,凟dòu,鬬dòu,剢dū,阇dū,嘟dū,督dū,醏dū,闍dū,厾dū,毒dú,涜dú,读dú,渎dú,椟dú,牍dú,犊dú,裻dú,読dú,獨dú,錖dú,匵dú,嬻dú,瀆dú,櫝dú,殰dú,牘dú,犢dú,瓄dú,皾dú,騳dú,讀dú,豄dú,贕dú,韣dú,髑dú,鑟dú,韇dú,韥dú,黷dú,讟dú,独dú,樚dú,襡dú,襩dú,黩dú,笃dǔ,堵dǔ,帾dǔ,琽dǔ,赌dǔ,睹dǔ,覩dǔ,賭dǔ,篤dǔ,暏dǔ,笁dǔ,陼dǔ,芏dù,妒dù,杜dù,肚dù,妬dù,度dù,荰dù,秺dù,渡dù,镀dù,螙dù,殬dù,鍍dù,蠧dù,蠹dù,剫dù,晵dù,靯dù,篅duān,偳duān,媏duān,端duān,褍duān,鍴duān,剬duān,短duǎn,段duàn,断duàn,塅duàn,缎duàn,葮duàn,椴duàn,煅duàn,瑖duàn,腶duàn,碫duàn,锻duàn,緞duàn,毈duàn,簖duàn,鍛duàn,斷duàn,躖duàn,煆duàn,籪duàn,叾dug,搥duī,鎚duī,垖duī,堆duī,塠duī,嵟duī,痽duī,磓duī,頧duī,鴭duī,鐜duī,埻duī,謉duǐ,錞duì,队duì,对duì,兊duì,兌duì,兑duì,対duì,祋duì,怼duì,陮duì,隊duì,碓duì,綐duì,對duì,憝duì,濧duì,薱duì,镦duì,懟duì,瀩duì,譈duì,譵duì,憞duì,鋭duì,杸duì,吨dūn,惇dūn,敦dūn,蜳dūn,墩dūn,墪dūn,壿dūn,撴dūn,獤dūn,噸dūn,撉dūn,橔dūn,犜dūn,礅dūn,蹲dūn,蹾dūn,驐dūn,鐓dūn,盹dǔn,趸dǔn,躉dǔn,伅dùn,囤dùn,庉dùn,沌dùn,炖dùn,盾dùn,砘dùn,逇dùn,钝dùn,遁dùn,鈍dùn,腞dùn,頓dùn,碷dùn,遯dùn,潡dùn,燉dùn,踲dùn,楯dùn,腯dùn,顿dùn,多duō,夛duō,咄duō,哆duō,茤duō,剟duō,崜duō,敠duō,毲duō,裰duō,嚉duō,掇duō,仛duó,夺duó,铎duó,敓duó,敚duó,喥duó,敪duó,鈬duó,奪duó,凙duó,踱duó,鮵duó,鐸duó,跿duó,沰duó,痥duó,奲duǒ,朵duǒ,朶duǒ,哚duǒ,垛duǒ,挅duǒ,挆duǒ,埵duǒ,缍duǒ,椯duǒ,趓duǒ,躱duǒ,躲duǒ,綞duǒ,亸duǒ,鬌duǒ,嚲duǒ,垜duǒ,橢duǒ,硾duǒ,吋duò,刴duò,剁duò,沲duò,陊duò,陏duò,饳duò,柮duò,桗duò,堕duò,舵duò,惰duò,跥duò,跺duò,飿duò,墮duò,嶞duò,憜duò,墯duò,鵽duò,隓duò,貀duò,詑duò,駄duò,媠duò,嫷duò,尮duò,呃e,妸ē,妿ē,娿ē,婀ē,匼ē,讹é,吪é,囮é,迗é,俄é,娥é,峨é,峩é,涐é,莪é,珴é,訛é,睋é,鈋é,锇é,鹅é,蛾é,磀é,誐é,鋨é,頟é,额é,魤é,額é,鵝é,鵞é,譌é,騀é,佮é,鰪é,皒é,欸ě,枙ě,砈ě,鵈ě,玀ě,閜ě,砵è,惡è,厄è,歺è,屵è,戹è,岋è,阨è,扼è,阸è,呝è,砐è,轭è,咢è,咹è,垩è,姶è,峉è,匎è,恶è,砨è,蚅è,饿è,偔è,卾è,堊è,悪è,硆è,谔è,軛è,鄂è,阏è,堮è,崿è,愕è,湂è,萼è,豟è,軶è,遏è,廅è,搤è,搹è,琧è,腭è,詻è,僫è,蝁è,锷è,鹗è,蕚è,遻è,頞è,颚è,餓è,噩è,擜è,覨è,諤è,餩è,鍔è,鳄è,歞è,顎è,櫮è,鰐è,鶚è,讍è,齶è,鱷è,齃è,啈è,搕è,礘è,魥è,蘁è,齾è,苊è,遌è,鑩è,诶ēi,誒ēi,奀ēn,恩ēn,蒽ēn,煾ēn,唔én,峎ěn,摁èn,嗯èn,鞥eng,仒eo,乻eol,旕eos,儿ér,而ér,児ér,侕ér,兒ér,陑ér,峏ér,洏ér,耏ér,荋ér,栭ér,胹ér,唲ér,袻ér,鸸ér,粫ér,聏ér,輀ér,隭ér,髵ér,鮞ér,鴯ér,轜ér,咡ér,杒ér,陾ér,輭ér,鲕ér,尒ěr,尓ěr,尔ěr,耳ěr,迩ěr,洱ěr,饵ěr,栮ěr,毦ěr,珥ěr,铒ěr,爾ěr,鉺ěr,餌ěr,駬ěr,薾ěr,邇ěr,趰ěr,嬭ěr,二èr,弍èr,弐èr,佴èr,刵èr,贰èr,衈èr,貳èr,誀èr,樲èr,髶èr,貮èr,发fā,沷fā,発fā,發fā,彂fā,髪fā,橃fā,醗fā,乏fá,伐fá,姂fá,垡fá,罚fá,阀fá,栰fá,傠fá,筏fá,瞂fá,罰fá,閥fá,罸fá,藅fá,汎fá,佱fǎ,法fǎ,鍅fǎ,灋fǎ,砝fǎ,珐fà,琺fà,髮fà,蕟fà,帆fān,忛fān,犿fān,番fān,勫fān,墦fān,嬏fān,幡fān,憣fān,旙fān,旛fān,翻fān,藩fān,轓fān,颿fān,飜fān,鱕fān,蕃fān,凡fán,凢fán,凣fán,匥fán,杋fán,柉fán,籵fán,钒fán,舤fán,烦fán,舧fán,笲fán,釩fán,棥fán,煩fán,緐fán,樊fán,橎fán,燔fán,璠fán,薠fán,繁fán,繙fán,羳fán,蹯fán,瀿fán,礬fán,蘩fán,鐇fán,蠜fán,鷭fán,氾fán,瀪fán,渢fán,伋fán,舩fán,矾fán,反fǎn,仮fǎn,辺fǎn,返fǎn,攵fǎn,犭fǎn,払fǎn,犯fàn,奿fàn,泛fàn,饭fàn,范fàn,贩fàn,畈fàn,訉fàn,軓fàn,梵fàn,盕fàn,笵fàn,販fàn,軬fàn,飯fàn,飰fàn,滼fàn,嬎fàn,範fàn,嬔fàn,婏fàn,方fāng,邡fāng,坊fāng,芳fāng,牥fāng,钫fāng,淓fāng,堏fāng,鈁fāng,錺fāng,鴋fāng,埅fāng,枋fāng,防fáng,妨fáng,房fáng,肪fáng,鲂fáng,魴fáng,仿fǎng,访fǎng,纺fǎng,昉fǎng,昘fǎng,瓬fǎng,眆fǎng,倣fǎng,旊fǎng,紡fǎng,舫fǎng,訪fǎng,髣fǎng,鶭fǎng,放fàng,飞fēi,妃fēi,非fēi,飛fēi,啡fēi,婓fēi,婔fēi,渄fēi,绯fēi,菲fēi,扉fēi,猆fēi,靟fēi,裶fēi,緋fēi,蜚fēi,霏fēi,鲱fēi,餥fēi,馡fēi,騑fēi,騛fēi,鯡fēi,飝fēi,奜fēi,肥féi,淝féi,暃féi,腓féi,蜰féi,棐féi,萉féi,蟦féi,朏fěi,胐fěi,匪fěi,诽fěi,悱fěi,斐fěi,榧fěi,翡fěi,蕜fěi,誹fěi,篚fěi,襏fèi,吠fèi,废fèi,沸fèi,狒fèi,肺fèi,昲fèi,费fèi,俷fèi,剕fèi,厞fèi,疿fèi,屝fèi,廃fèi,費fèi,痱fèi,廢fèi,曊fèi,癈fèi,鼣fèi,濷fèi,櫠fèi,鐨fèi,靅fèi,蕡fèi,芾fèi,笰fèi,紼fèi,髴fèi,柹fèi,胏fèi,镄fèi,吩fēn,帉fēn,纷fēn,芬fēn,昐fēn,氛fēn,竕fēn,紛fēn,翂fēn,棻fēn,躮fēn,酚fēn,鈖fēn,雰fēn,朆fēn,餴fēn,饙fēn,錀fēn,坟fén,妢fén,岎fén,汾fén,枌fén,梤fén,羒fén,蚠fén,蚡fén,棼fén,焚fén,蒶fén,馚fén,隫fén,墳fén,幩fén,魵fén,橨fén,燓fén,豮fén,鼢fén,羵fén,鼖fén,豶fén,轒fén,馩fén,黂fén,鐼fén,粉fěn,瞓fěn,黺fěn,分fèn,份fèn,坋fèn,弅fèn,奋fèn,忿fèn,秎fèn,偾fèn,愤fèn,粪fèn,僨fèn,憤fèn,奮fèn,膹fèn,糞fèn,鲼fèn,瀵fèn,鱝fèn,丰fēng,风fēng,仹fēng,凨fēng,凬fēng,妦fēng,沣fēng,沨fēng,枫fēng,封fēng,疯fēng,盽fēng,砜fēng,風fēng,峯fēng,峰fēng,偑fēng,桻fēng,烽fēng,琒fēng,崶fēng,溄fēng,猦fēng,葑fēng,锋fēng,楓fēng,犎fēng,蜂fēng,瘋fēng,碸fēng,僼fēng,篈fēng,鄷fēng,鋒fēng,檒fēng,豐fēng,鎽fēng,酆fēng,寷fēng,灃fēng,蘴fēng,靊fēng,飌fēng,麷fēng,豊fēng,凮fēng,鏠fēng,冯féng,捀féng,浲féng,逢féng,堸féng,馮féng,綘féng,缝féng,艂féng,縫féng,讽fěng,唪fěng,諷fěng,凤fèng,奉fèng,甮fèng,俸fèng,湗fèng,焨fèng,煈fèng,鳯fèng,鳳fèng,鴌fèng,賵fèng,蘕fèng,赗fèng,覅fiao,仏fó,佛fó,坲fó,梻fó,垺fóu,紑fóu,缶fǒu,否fǒu,缹fǒu,缻fǒu,雬fǒu,鴀fǒu,芣fǒu,夫fū,邞fū,呋fū,姇fū,枎fū,玞fū,肤fū,怤fū,砆fū,胕fū,荂fū,衭fū,娐fū,荴fū,旉fū,紨fū,趺fū,酜fū,麸fū,稃fū,跗fū,鈇fū,筟fū,綒fū,鄜fū,孵fū,豧fū,敷fū,膚fū,鳺fū,麩fū,糐fū,麬fū,麱fū,懯fū,烰fū,琈fū,粰fū,璷fū,伕fú,乀fú,伏fú,凫fú,甶fú,冹fú,刜fú,孚fú,扶fú,芙fú,咈fú,岪fú,彿fú,怫fú,拂fú,服fú,泭fú,绂fú,绋fú,苻fú,俘fú,垘fú,柫fú,氟fú,洑fú,炥fú,玸fú,祓fú,罘fú,茯fú,郛fú,韨fú,鳬fú,哹fú,栿fú,浮fú,畗fú,砩fú,蚨fú,匐fú,桴fú,涪fú,符fú,紱fú,翇fú,艴fú,菔fú,虙fú,袱fú,幅fú,棴fú,罦fú,葍fú,福fú,綍fú,艀fú,蜉fú,辐fú,鉘fú,鉜fú,颫fú,鳧fú,榑fú,稪fú,箙fú,複fú,韍fú,幞fú,澓fú,蝠fú,鴔fú,諨fú,輻fú,鮄fú,癁fú,鮲fú,黻fú,鵩fú,坿fú,汱fú,酻fú,弗fú,畉fú,絥fú,抚fǔ,甫fǔ,府fǔ,弣fǔ,拊fǔ,斧fǔ,俌fǔ,郙fǔ,俯fǔ,釜fǔ,釡fǔ,捬fǔ,辅fǔ,椨fǔ,焤fǔ,盙fǔ,腑fǔ,滏fǔ,腐fǔ,輔fǔ,撫fǔ,鬴fǔ,簠fǔ,黼fǔ,蚥fǔ,窗chuāng,窻chuāng,傸chuǎng,创chuàng,創chuàng,庄zhuāng,妝zhuāng,荘zhuāng,娤zhuāng,桩zhuāng,讣fù,付fù,妇fù,负fù,附fù,咐fù,竎fù,阜fù,驸fù,复fù,峊fù,祔fù,訃fù,負fù,赴fù,袝fù,偩fù,冨fù,副fù,婦fù,蚹fù,傅fù,媍fù,富fù,復fù,蛗fù,覄fù,詂fù,赋fù,椱fù,缚fù,腹fù,鲋fù,禣fù,褔fù,赙fù,緮fù,蕧fù,蝜fù,蝮fù,賦fù,駙fù,縛fù,鮒fù,賻fù,鍑fù,鍢fù,鳆fù,覆fù,馥fù,鰒fù,軵fù,邚fù,柎fù,父fù,萯fù,旮gā,伽gā,嘎gā,夾gā,呷gā,钆gá,尜gá,釓gá,噶gá,錷gá,嘠gá,尕gǎ,玍gǎ,尬gà,魀gà,侅gāi,该gāi,郂gāi,陔gāi,垓gāi,姟gāi,峐gāi,荄gāi,晐gāi,赅gāi,畡gāi,祴gāi,絯gāi,該gāi,豥gāi,賅gāi,賌gāi,忋gǎi,改gǎi,鎅gǎi,絠gǎi,丐gài,乢gài,匃gài,匄gài,钙gài,盖gài,摡gài,溉gài,葢gài,鈣gài,戤gài,概gài,蓋gài,槩gài,槪gài,漑gài,瓂gài,甘gān,忓gān,芉gān,迀gān,攼gān,玕gān,肝gān,坩gān,泔gān,柑gān,竿gān,疳gān,酐gān,粓gān,亁gān,凲gān,尲gān,尴gān,筸gān,漧gān,鳱gān,尶gān,尷gān,魐gān,矸gān,虷gān,釬gān,乹gān,諴gān,飦gān,苷gān,杆gǎn,仠gǎn,皯gǎn,秆gǎn,衦gǎn,赶gǎn,敢gǎn,桿gǎn,笴gǎn,稈gǎn,感gǎn,澉gǎn,趕gǎn,橄gǎn,擀gǎn,簳gǎn,鱤gǎn,篢gǎn,豃gǎn,扞gǎn,鰔gǎn,扜gǎn,鳡gǎn,干gàn,旰gàn,汵gàn,盰gàn,绀gàn,倝gàn,凎gàn,淦gàn,紺gàn,詌gàn,骭gàn,幹gàn,檊gàn,赣gàn,贛gàn,灨gàn,贑gàn,佄gàn,錎gàn,棡gang,冈gāng,罓gāng,冮gāng,刚gāng,阬gāng,纲gāng,肛gāng,岡gāng,牨gāng,疘gāng,矼gāng,钢gāng,剛gāng,罡gāng,堈gāng,釭gāng,犅gāng,堽gāng,綱gāng,罁gāng,鋼gāng,鎠gāng,頏gāng,缸gāng,岗gǎng,崗gǎng,港gǎng,犺gǎng,掆gàng,杠gàng,焵gàng,筻gàng,槓gàng,戆gàng,戇gàng,戅gàng,皋gāo,羔gāo,高gāo,皐gāo,髙gāo,臯gāo,滜gāo,睾gāo,膏gāo,槹gāo,橰gāo,篙gāo,糕gāo,餻gāo,櫜gāo,韟gāo,鷎gāo,鼛gāo,鷱gāo,獋gāo,槔gāo,夰gǎo,杲gǎo,菒gǎo,稁gǎo,搞gǎo,缟gǎo,槀gǎo,槁gǎo,獔gǎo,稾gǎo,稿gǎo,镐gǎo,縞gǎo,藁gǎo,檺gǎo,藳gǎo,鎬gǎo,筶gǎo,澔gǎo,吿gào,勂gào,诰gào,郜gào,峼gào,祮gào,祰gào,锆gào,暠gào,禞gào,誥gào,鋯gào,告gào,戈gē,圪gē,犵gē,纥gē,戓gē,肐gē,牫gē,疙gē,牱gē,紇gē,哥gē,胳gē,袼gē,鸽gē,割gē,搁gē,彁gē,歌gē,戨gē,鴐gē,鴚gē,擱gē,謌gē,鴿gē,鎶gē,咯gē,滒gē,杚gé,呄gé,匌gé,挌gé,阁gé,革gé,敋gé,格gé,鬲gé,愅gé,臵gé,裓gé,隔gé,嗝gé,塥gé,滆gé,觡gé,搿gé,膈gé,閣gé,镉gé,鞈gé,韐gé,骼gé,諽gé,鮯gé,櫊gé,鎘gé,韚gé,轕gé,鞷gé,騔gé,秴gé,詥gé,佫gé,嘅gé,猲gé,槅gé,閤gě,葛gě,哿gě,舸gě,鲄gě,个gè,各gè,虼gè,個gè,硌gè,铬gè,箇gè,鉻gè,獦gè,吤gè,给gěi,給gěi,根gēn,跟gēn,哏gén,亘gèn,艮gèn,茛gèn,揯gèn,搄gèn,亙gèn,刯gēng,庚gēng,畊gēng,浭gēng,耕gēng,掶gēng,菮gēng,椩gēng,焿gēng,絚gēng,赓gēng,鹒gēng,緪gēng,縆gēng,賡gēng,羹gēng,鶊gēng,絙gēng,郠gěng,哽gěng,埂gěng,峺gěng,挭gěng,耿gěng,莄gěng,梗gěng,鲠gěng,骾gěng,鯁gěng,郉gěng,绠gěng,更gèng,堩gèng,暅gèng,啹geu,喼gib,嗰go,工gōng,弓gōng,公gōng,厷gōng,功gōng,攻gōng,杛gōng,糼gōng,肱gōng,宫gōng,宮gōng,恭gōng,蚣gōng,躬gōng,龚gōng,匑gōng,塨gōng,愩gōng,觥gōng,躳gōng,匔gōng,碽gōng,髸gōng,觵gōng,龔gōng,魟gōng,幊gōng,巩gǒng,汞gǒng,拱gǒng,唝gǒng,拲gǒng,栱gǒng,珙gǒng,輁gǒng,鞏gǒng,嗊gǒng,銾gǒng,供gòng,共gòng,贡gòng,羾gòng,貢gòng,慐gòng,熕gòng,渱gòng,勾gōu,沟gōu,钩gōu,袧gōu,缑gōu,鈎gōu,溝gōu,鉤gōu,緱gōu,褠gōu,篝gōu,簼gōu,鞲gōu,冓gōu,搆gōu,抅gōu,泃gōu,軥gōu,鴝gōu,鸜gōu,佝gōu,岣gǒu,狗gǒu,苟gǒu,枸gǒu,玽gǒu,耇gǒu,耉gǒu,笱gǒu,耈gǒu,蚼gǒu,豿gǒu,坸gòu,构gòu,诟gòu,购gòu,垢gòu,姤gòu,够gòu,夠gòu,訽gòu,媾gòu,彀gòu,詬gòu,遘gòu,雊gòu,構gòu,煹gòu,觏gòu,撀gòu,覯gòu,購gòu,傋gòu,茩gòu,估gū,咕gū,姑gū,孤gū,沽gū,泒gū,柧gū,轱gū,唂gū,唃gū,罛gū,鸪gū,笟gū,菇gū,蛄gū,蓇gū,觚gū,軱gū,軲gū,辜gū,酤gū,毂gū,箍gū,箛gū,嫴gū,篐gū,橭gū,鮕gū,鴣gū,轂gū,苽gū,菰gū,鶻gú,鹘gǔ,古gǔ,扢gǔ,汩gǔ,诂gǔ,谷gǔ,股gǔ,峠gǔ,牯gǔ,骨gǔ,罟gǔ,逧gǔ,钴gǔ,傦gǔ,啒gǔ,淈gǔ,脵gǔ,蛊gǔ,蛌gǔ,尳gǔ,愲gǔ,焸gǔ,硲gǔ,詁gǔ,馉gǔ,榾gǔ,鈷gǔ,鼓gǔ,鼔gǔ,嘏gǔ,榖gǔ,皷gǔ,縎gǔ,糓gǔ,薣gǔ,濲gǔ,臌gǔ,餶gǔ,瀔gǔ,瞽gǔ,抇gǔ,嗀gǔ,羖gǔ,固gù,怘gù,故gù,凅gù,顾gù,堌gù,崓gù,崮gù,梏gù,牿gù,棝gù,祻gù,雇gù,痼gù,稒gù,锢gù,頋gù,僱gù,錮gù,鲴gù,鯝gù,顧gù,盬gù,瓜guā,刮guā,胍guā,鸹guā,焻guā,煱guā,颪guā,趏guā,劀guā,緺guā,銽guā,鴰guā,騧guā,呱guā,諣guā,栝guā,歄guā,冎guǎ,叧guǎ,剐guǎ,剮guǎ,啩guǎ,寡guǎ,卦guà,坬guà,诖guà,挂guà,掛guà,罣guà,絓guà,罫guà,褂guà,詿guà,乖guāi,拐guǎi,枴guǎi,柺guǎi,夬guài,叏guài,怪guài,恠guài,关guān,观guān,官guān,覌guān,倌guān,萖guān,棺guān,蒄guān,窤guān,瘝guān,癏guān,観guān,鳏guān,關guān,鰥guān,觀guān,鱞guān,馆guǎn,痯guǎn,筦guǎn,管guǎn,舘guǎn,錧guǎn,館guǎn,躀guǎn,鳤guǎn,輨guǎn,冠guàn,卝guàn,毌guàn,丱guàn,贯guàn,泴guàn,悺guàn,惯guàn,掼guàn,涫guàn,貫guàn,悹guàn,祼guàn,慣guàn,摜guàn,潅guàn,遦guàn,樌guàn,盥guàn,罆guàn,雚guàn,鏆guàn,灌guàn,爟guàn,瓘guàn,矔guàn,鹳guàn,罐guàn,鑵guàn,鸛guàn,鱹guàn,懽guàn,礶guàn,光guāng,灮guāng,侊guāng,炗guāng,炚guāng,炛guāng,咣guāng,垙guāng,姯guāng,洸guāng,茪guāng,桄guāng,烡guāng,珖guāng,胱guāng,硄guāng,僙guāng,輄guāng,銧guāng,黆guāng,欟guāng,趪guāng,挄guāng,广guǎng,広guǎng,犷guǎng,廣guǎng,臩guǎng,獷guǎng,俇guàng,逛guàng,臦guàng,撗guàng,櫎guàng,归guī,圭guī,妫guī,龟guī,规guī,邽guī,皈guī,茥guī,闺guī,帰guī,珪guī,胿guī,亀guī,硅guī,袿guī,規guī,椝guī,瑰guī,郌guī,嫢guī,摫guī,閨guī,鲑guī,嶲guī,槻guī,槼guī,璝guī,瞡guī,膭guī,鮭guī,龜guī,巂guī,歸guī,鬶guī,瓌guī,鬹guī,櫷guī,佹guī,櫰guī,螝guī,槣guī,鴂guī,鴃guī,傀guī,潙guī,雟guī,嬀guī,宄guǐ,氿guǐ,轨guǐ,庋guǐ,匦guǐ,诡guǐ,陒guǐ,垝guǐ,癸guǐ,軌guǐ,鬼guǐ,庪guǐ,匭guǐ,晷guǐ,湀guǐ,蛫guǐ,觤guǐ,詭guǐ,厬guǐ,簋guǐ,蟡guǐ,攱guǐ,朹guǐ,祪guǐ,猤guì,媯guì,刽guì,刿guì,攰guì,昋guì,柜guì,炅guì,贵guì,桂guì,椢guì,筀guì,貴guì,蓕guì,跪guì,瞆guì,劊guì,劌guì,撌guì,槶guì,瞶guì,櫃guì,襘guì,鳜guì,鞼guì,鱖guì,鱥guì,桧guì,絵guì,檜guì,赽guì,趹guì,嶡guì,禬guì,衮gǔn,惃gǔn,绲gǔn,袞gǔn,辊gǔn,滚gǔn,蓘gǔn,滾gǔn,緄gǔn,蔉gǔn,磙gǔn,輥gǔn,鲧gǔn,鮌gǔn,鯀gǔn,琯gùn,棍gùn,棞gùn,睔gùn,睴gùn,璭gùn,謴gùn,呙guō,埚guō,郭guō,啯guō,崞guō,楇guō,聒guō,鈛guō,锅guō,墎guō,瘑guō,嘓guō,彉guō,蝈guō,鍋guō,彍guō,鐹guō,矌guō,簂guó,囯guó,囶guó,囻guó,国guó,圀guó,國guó,帼guó,掴guó,腘guó,幗guó,摑guó,漍guó,聝guó,蔮guó,膕guó,虢guó,馘guó,慖guó,果guǒ,惈guǒ,淉guǒ,猓guǒ,菓guǒ,馃guǒ,椁guǒ,褁guǒ,槨guǒ,粿guǒ,綶guǒ,蜾guǒ,裹guǒ,輠guǒ,餜guǒ,錁guǒ,过guò,過guò,妎hā,铪hā,鉿hā,哈hā,蛤há,孩hái,骸hái,還hái,还hái,海hǎi,胲hǎi,烸hǎi,塰hǎi,酼hǎi,醢hǎi,亥hài,骇hài,害hài,氦hài,嗐hài,餀hài,駭hài,駴hài,嚡hài,饚hài,乤hal,兯han,爳han,顸hān,哻hān,蚶hān,酣hān,谽hān,馠hān,魽hān,鼾hān,欦hān,憨hān,榦hán,邗hán,含hán,邯hán,函hán,咁hán,肣hán,凾hán,唅hán,圅hán,娢hán,浛hán,崡hán,晗hán,梒hán,涵hán,焓hán,寒hán,嵅hán,韩hán,甝hán,筨hán,蜬hán,澏hán,鋡hán,韓hán,馯hán,椷hán,罕hǎn,浫hǎn,喊hǎn,蔊hǎn,鬫hǎn,糮hǎn,厈hǎn,汉hàn,汗hàn,旱hàn,悍hàn,捍hàn,晘hàn,涆hàn,猂hàn,莟hàn,晥hàn,焊hàn,琀hàn,菡hàn,皔hàn,睅hàn,傼hàn,蛿hàn,撖hàn,漢hàn,蜭hàn,暵hàn,熯hàn,銲hàn,鋎hàn,憾hàn,撼hàn,翰hàn,螒hàn,頷hàn,顄hàn,駻hàn,譀hàn,雗hàn,瀚hàn,鶾hàn,澣hàn,颔hàn,魧hāng,苀háng,迒háng,斻háng,杭háng,垳háng,绗háng,笐háng,蚢háng,颃háng,貥háng,筕háng,絎háng,行háng,航háng,沆hàng,茠hāo,蒿hāo,嚆hāo,薅hāo,竓háo,蚝háo,毫háo,椃háo,嗥háo,獆háo,噑háo,豪háo,嘷háo,儫háo,曍háo,嚎háo,壕háo,濠háo,籇háo,蠔háo,譹háo,虠háo,諕háo,呺háo,郝hǎo,好hǎo,号hào,昊hào,昦hào,哠hào,恏hào,悎hào,浩hào,耗hào,晧hào,淏hào,傐hào,皓hào,滈hào,聕hào,號hào,暤hào,暭hào,皜hào,皞hào,皡hào,薃hào,皥hào,颢hào,灏hào,顥hào,鰝hào,灝hào,鄗hào,藃hào,诃hē,呵hē,抲hē,欱hē,喝hē,訶hē,嗬hē,蠚hē,禾hé,合hé,何hé,劾hé,咊hé,和hé,姀hé,河hé,峆hé,曷hé,柇hé,盇hé,籺hé,阂hé,饸hé,哬hé,敆hé,核hé,盉hé,盍hé,啝hé,涸hé,渮hé,盒hé,菏hé,萂hé,龁hé,惒hé,粭hé,訸hé,颌hé,楁hé,鉌hé,阖hé,熆hé,鹖hé,麧hé,澕hé,頜hé,篕hé,翮hé,螛hé,礉hé,闔hé,鞨hé,齕hé,覈hé,鶡hé,皬hé,鑉hé,龢hé,餄hé,荷hé,魺hé,垎hè,贺hè,隺hè,寉hè,焃hè,湼hè,賀hè,嗃hè,煂hè,碋hè,熇hè,褐hè,赫hè,鹤hè,翯hè,壑hè,癋hè,燺hè,爀hè,靍hè,靎hè,鸖hè,靏hè,鶮hè,謞hè,鶴hè,嗨hēi,黒hēi,黑hēi,嘿hēi,潶hēi,嬒hèi,噷hēn,拫hén,痕hén,鞎hén,佷hěn,很hěn,狠hěn,詪hěn,恨hèn,亨hēng,哼hēng,悙hēng,涥hēng,脝hēng,姮héng,恆héng,恒héng,桁héng,烆héng,珩héng,胻héng,横héng,橫héng,衡héng,鴴héng,鵆héng,蘅héng,鑅héng,鸻héng,堼hèng,叿hōng,灴hōng,轰hōng,訇hōng,烘hōng,軣hōng,揈hōng,渹hōng,焢hōng,硡hōng,薨hōng,輷hōng,嚝hōng,鍧hōng,轟hōng,仜hóng,妅hóng,红hóng,吰hóng,宏hóng,汯hóng,玒hóng,纮hóng,闳hóng,宖hóng,泓hóng,玜hóng,苰hóng,垬hóng,娂hóng,洪hóng,竑hóng,紅hóng,荭hóng,虹hóng,浤hóng,紘hóng,翃hóng,耾hóng,硔hóng,紭hóng,谹hóng,鸿hóng,竤hóng,粠hóng,葓hóng,鈜hóng,閎hóng,綋hóng,翝hóng,谼hóng,潂hóng,鉷hóng,鞃hóng,篊hóng,鋐hóng,彋hóng,蕻hóng,霐hóng,黉hóng,霟hóng,鴻hóng,黌hóng,舼hóng,瓨hóng,弘hóng,葒hóng,哄hǒng,晎hǒng,讧hòng,訌hòng,閧hòng,撔hòng,澋hòng,澒hòng,闀hòng,闂hòng,腄hóu,侯hóu,矦hóu,喉hóu,帿hóu,猴hóu,葔hóu,瘊hóu,睺hóu,銗hóu,篌hóu,糇hóu,翭hóu,骺hóu,鍭hóu,餱hóu,鯸hóu,翵hóu,吼hǒu,犼hǒu,呴hǒu,后hòu,郈hòu,厚hòu,垕hòu,後hòu,洉hòu,逅hòu,候hòu,鄇hòu,堠hòu,鲎hòu,鲘hòu,鮜hòu,鱟hòu,豞hòu,鋘hu,乎hū,匢hū,呼hū,垀hū,忽hū,昒hū,曶hū,泘hū,苸hū,烀hū,轷hū,匫hū,唿hū,惚hū,淴hū,虖hū,軤hū,雽hū,嘑hū,寣hū,滹hū,雐hū,歑hū,謼hū,芔hū,戯hū,戱hū,鹄hú,鵠hú,囫hú,弧hú,狐hú,瓳hú,胡hú,壶hú,壷hú,斛hú,焀hú,喖hú,壺hú,媩hú,湖hú,猢hú,絗hú,葫hú,楜hú,煳hú,瑚hú,嘝hú,蔛hú,鹕hú,槲hú,箶hú,糊hú,蝴hú,衚hú,縠hú,螜hú,醐hú,頶hú,觳hú,鍸hú,餬hú,瀫hú,鬍hú,鰗hú,鶘hú,鶦hú,沍hú,礐hú,瓡hú,俿hǔ,虍hǔ,乕hǔ,汻hǔ,虎hǔ,浒hǔ,唬hǔ,萀hǔ,琥hǔ,虝hǔ,滸hǔ,箎hǔ,錿hǔ,鯱hǔ,互hù,弖hù,戶hù,户hù,戸hù,冴hù,芐hù,帍hù,护hù,沪hù,岵hù,怙hù,戽hù,昈hù,枑hù,祜hù,笏hù,粐hù,婟hù,扈hù,瓠hù,綔hù,鄠hù,嫭hù,嫮hù,摢hù,滬hù,蔰hù,槴hù,熩hù,鳸hù,簄hù,鍙hù,護hù,鳠hù,韄hù,頀hù,鱯hù,鸌hù,濩hù,穫hù,觷hù,魱hù,冱hù,鹱hù,花huā,芲huā,埖huā,婲huā,椛huā,硴huā,糀huā,誮huā,錵huā,蘤huā,蕐huā,砉huā,华huá,哗huá,姡huá,骅huá,華huá,铧huá,滑huá,猾huá,嘩huá,撶huá,璍huá,螖huá,鏵huá,驊huá,鷨huá,划huá,化huà,杹huà,画huà,话huà,崋huà,桦huà,婳huà,畫huà,嬅huà,畵huà,觟huà,話huà,劃huà,摦huà,槬huà,樺huà,嫿huà,澅huà,諙huà,黊huà,繣huà,舙huà,蘳huà,譮huà,檴huà,怀huái,淮huái,槐huái,褢huái,踝huái,懐huái,褱huái,懷huái,耲huái,蘹huái,佪huái,徊huái,坏huài,咶huài,壊huài,壞huài,蘾huài,欢huān,歓huān,鴅huān,懁huān,鵍huān,酄huān,嚾huān,獾huān,歡huān,貛huān,讙huān,驩huān,貆huān,环huán,峘huán,洹huán,狟huán,荁huán,桓huán,萈huán,萑huán,堚huán,寏huán,雈huán,綄huán,羦huán,锾huán,阛huán,寰huán,澴huán,缳huán,環huán,豲huán,鍰huán,镮huán,鹮huán,糫huán,繯huán,轘huán,鐶huán,鬟huán,瞏huán,鉮huán,圜huán,闤huán,睆huǎn,缓huǎn,緩huǎn,攌huǎn,幻huàn,奂huàn,肒huàn,奐huàn,宦huàn,唤huàn,换huàn,浣huàn,涣huàn,烉huàn,患huàn,梙huàn,焕huàn,逭huàn,喚huàn,嵈huàn,愌huàn,換huàn,渙huàn,痪huàn,煥huàn,豢huàn,漶huàn,瘓huàn,槵huàn,鲩huàn,擐huàn,瞣huàn,藧huàn,鯇huàn,鯶huàn,鰀huàn,圂huàn,蠸huàn,瑍huàn,巟huāng,肓huāng,荒huāng,衁huāng,塃huāng,慌huāng,皇huáng,偟huáng,凰huáng,隍huáng,黃huáng,黄huáng,喤huáng,堭huáng,媓huáng,崲huáng,徨huáng,湟huáng,葟huáng,遑huáng,楻huáng,煌huáng,瑝huáng,墴huáng,潢huáng,獚huáng,锽huáng,熿huáng,璜huáng,篁huáng,艎huáng,蝗huáng,癀huáng,磺huáng,穔huáng,諻huáng,簧huáng,蟥huáng,鍠huáng,餭huáng,鳇huáng,鐄huáng,騜huáng,鰉huáng,鷬huáng,惶huáng,鱑huáng,怳huǎng,恍huǎng,炾huǎng,宺huǎng,晃huǎng,晄huǎng,奛huǎng,谎huǎng,幌huǎng,愰huǎng,詤huǎng,縨huǎng,謊huǎng,皩huǎng,兤huǎng,滉huàng,榥huàng,曂huàng,皝huàng,鎤huàng,鰴hui,灰huī,灳huī,诙huī,咴huī,恢huī,拻huī,挥huī,虺huī,晖huī,烣huī,珲huī,豗huī,婎huī,媈huī,揮huī,翚huī,辉huī,暉huī,楎huī,琿huī,禈huī,詼huī,幑huī,睳huī,噅huī,噕huī,翬huī,輝huī,麾huī,徽huī,隳huī,瀈huī,洃huī,煇huí,囘huí,回huí,囬huí,廻huí,廽huí,恛huí,洄huí,茴huí,迴huí,烠huí,逥huí,痐huí,蛔huí,蛕huí,蜖huí,鮰huí,藱huí,悔huǐ,毇huǐ,檓huǐ,燬huǐ,譭huǐ,泋huǐ,毁huǐ,烜huǐ,卉huì,屷huì,汇huì,会huì,讳huì,浍huì,绘huì,荟huì,诲huì,恚huì,恵huì,烩huì,贿huì,彗huì,晦huì,秽huì,喙huì,惠huì,缋huì,翙huì,阓huì,匯huì,彙huì,彚huì,會huì,毀huì,滙huì,詯huì,賄huì,嘒huì,蔧huì,誨huì,圚huì,寭huì,慧huì,憓huì,暳huì,槥huì,潓huì,蕙huì,徻huì,橞huì,澮huì,獩huì,璤huì,薈huì,薉huì,諱huì,檅huì,燴huì,篲huì,餯huì,嚖huì,瞺huì,穢huì,繢huì,蟪huì,櫘huì,繪huì,翽huì,譓huì,儶huì,鏸huì,闠huì,孈huì,鐬huì,靧huì,韢huì,譿huì,顪huì,銊huì,叀huì,僡huì,懳huì,昏hūn,昬hūn,荤hūn,婚hūn,惛hūn,涽hūn,阍hūn,惽hūn,棔hūn,葷hūn,睧hūn,閽hūn,焄hūn,蔒hūn,睯hūn,忶hún,浑hún,馄hún,渾hún,魂hún,餛hún,繉hún,轋hún,鼲hún,混hún,梱hún,湷hún,诨hùn,俒hùn,倱hùn,掍hùn,焝hùn,溷hùn,慁hùn,觨hùn,諢hùn,吙huō,耠huō,锪huō,劐huō,鍃huō,豁huō,攉huō,騞huō,搉huō,佸huó,秮huó,活huó,火huǒ,伙huǒ,邩huǒ,钬huǒ,鈥huǒ,夥huǒ,沎huò,或huò,货huò,咟huò,俰huò,捇huò,眓huò,获huò,閄huò,剨huò,掝huò,祸huò,貨huò,惑huò,旤huò,湱huò,禍huò,奯huò,獲huò,霍huò,謋huò,镬huò,嚯huò,瀖huò,耯huò,藿huò,蠖huò,嚿huò,曤huò,臛huò,癨huò,矐huò,鑊huò,靃huò,謔huò,篧huò,擭huò,夻hwa,丌jī,讥jī,击jī,刉jī,叽jī,饥jī,乩jī,圾jī,机jī,玑jī,肌jī,芨jī,矶jī,鸡jī,枅jī,咭jī,剞jī,唧jī,姬jī,屐jī,积jī,笄jī,飢jī,基jī,喞jī,嵆jī,嵇jī,攲jī,敧jī,犄jī,筓jī,缉jī,赍jī,嗘jī,稘jī,跻jī,鳮jī,僟jī,毄jī,箕jī,銈jī,嘰jī,撃jī,樭jī,畿jī,稽jī,緝jī,觭jī,賫jī,躸jī,齑jī,墼jī,憿jī,機jī,激jī,璣jī,禨jī,積jī,錤jī,隮jī,擊jī,磯jī,簊jī,羁jī,賷jī,鄿jī,櫅jī,耭jī,雞jī,譏jī,韲jī,鶏jī,譤jī,鐖jī,癪jī,躋jī,鞿jī,鷄jī,齎jī,羇jī,虀jī,鑇jī,覉jī,鑙jī,齏jī,羈jī,鸄jī,覊jī,庴jī,垍jī,諅jī,踦jī,璂jī,踑jī,谿jī,刏jī,畸jī,簎jí,諔jí,堲jí,蠀jí,亼jí,及jí,吉jí,彶jí,忣jí,汲jí,级jí,即jí,极jí,亟jí,佶jí,郆jí,卽jí,叝jí,姞jí,急jí,狤jí,皍jí,笈jí,級jí,揤jí,疾jí,觙jí,偮jí,卙jí,楖jí,焏jí,脨jí,谻jí,戢jí,棘jí,極jí,湒jí,集jí,塉jí,嫉jí,愱jí,楫jí,蒺jí,蝍jí,趌jí,辑jí,槉jí,耤jí,膌jí,銡jí,嶯jí,潗jí,瘠jí,箿jí,蕀jí,蕺jí,踖jí,鞊jí,鹡jí,橶jí,檝jí,濈jí,螏jí,輯jí,襋jí,蹐jí,艥jí,籍jí,轚jí,鏶jí,霵jí,鶺jí,鷑jí,躤jí,雦jí,雧jí,嵴jí,尐jí,淁jí,吇jí,莋jí,岌jí,殛jí,鍓jí,颳jǐ,几jǐ,己jǐ,丮jǐ,妀jǐ,犱jǐ,泲jǐ,虮jǐ,挤jǐ,脊jǐ,掎jǐ,鱾jǐ,幾jǐ,戟jǐ,麂jǐ,魢jǐ,撠jǐ,擠jǐ,穖jǐ,蟣jǐ,済jǐ,畟jì,迹jì,绩jì,勣jì,彑jì,旡jì,计jì,记jì,伎jì,纪jì,坖jì,妓jì,忌jì,技jì,芰jì,芶jì,际jì,剂jì,季jì,哜jì,峜jì,既jì,洎jì,济jì,紀jì,茍jì,計jì,剤jì,紒jì,继jì,觊jì,記jì,偈jì,寄jì,徛jì,悸jì,旣jì,梞jì,祭jì,萕jì,惎jì,臮jì,葪jì,蔇jì,兾jì,痵jì,継jì,蓟jì,裚jì,跡jì,際jì,墍jì,暨jì,漃jì,漈jì,禝jì,稩jì,穊jì,誋jì,跽jì,霁jì,鲚jì,稷jì,鲫jì,冀jì,劑jì,曁jì,穄jì,縘jì,薊jì,襀jì,髻jì,嚌jì,檕jì,濟jì,繋jì,罽jì,覬jì,鮆jì,檵jì,璾jì,蹟jì,鯽jì,鵋jì,齌jì,廭jì,懻jì,癠jì,穧jì,糭jì,繫jì,骥jì,鯚jì,瀱jì,繼jì,蘮jì,鱀jì,蘻jì,霽jì,鰶jì,鰿jì,鱭jì,驥jì,訐jì,魝jì,櫭jì,帺jì,褀jì,鬾jì,懠jì,蟿jì,汥jì,鯯jì,齍jì,績jì,寂jì,暩jì,蘎jì,筴jiā,加jiā,抸jiā,佳jiā,泇jiā,迦jiā,枷jiā,毠jiā,浃jiā,珈jiā,埉jiā,家jiā,浹jiā,痂jiā,梜jiā,耞jiā,袈jiā,猳jiā,葭jiā,跏jiā,犌jiā,腵jiā,鉫jiā,嘉jiā,镓jiā,糘jiā,豭jiā,貑jiā,鎵jiā,麚jiā,椵jiā,挟jiā,挾jiā,笳jiā,夹jiá,袷jiá,裌jiá,圿jiá,扴jiá,郏jiá,荚jiá,郟jiá,唊jiá,恝jiá,莢jiá,戛jiá,脥jiá,铗jiá,蛱jiá,颊jiá,蛺jiá,跲jiá,鋏jiá,頬jiá,頰jiá,鴶jiá,鵊jiá,忦jiá,戞jiá,岬jiǎ,甲jiǎ,叚jiǎ,玾jiǎ,胛jiǎ,斚jiǎ,贾jiǎ,钾jiǎ,婽jiǎ,徦jiǎ,斝jiǎ,賈jiǎ,鉀jiǎ,榎jiǎ,槚jiǎ,瘕jiǎ,檟jiǎ,夓jiǎ,假jiǎ,价jià,驾jià,架jià,嫁jià,幏jià,榢jià,價jià,稼jià,駕jià,戋jiān,奸jiān,尖jiān,幵jiān,坚jiān,歼jiān,间jiān,冿jiān,戔jiān,肩jiān,艰jiān,姦jiān,姧jiān,兼jiān,监jiān,堅jiān,惤jiān,猏jiān,笺jiān,菅jiān,菺jiān,牋jiān,犍jiān,缄jiān,葌jiān,葏jiān,間jiān,靬jiān,搛jiān,椾jiān,煎jiān,瑊jiān,睷jiān,碊jiān,缣jiān,蒹jiān,監jiān,箋jiān,樫jiān,熞jiān,緘jiān,蕑jiān,蕳jiān,鲣jiān,鳽jiān,鹣jiān,熸jiān,篯jiān,縑jiān,艱jiān,鞬jiān,餰jiān,馢jiān,麉jiān,瀐jiān,鞯jiān,鳒jiān,殱jiān,礛jiān,覸jiān,鵳jiān,瀸jiān,櫼jiān,殲jiān,譼jiān,鰜jiān,鶼jiān,籛jiān,韀jiān,鰹jiān,囏jiān,虃jiān,鑯jiān,韉jiān,揃jiān,鐗jiān,鐧jiān,閒jiān,黚jiān,傔jiān,攕jiān,纎jiān,钘jiān,鈃jiān,銒jiān,籈jiān,湔jiān,囝jiǎn,拣jiǎn,枧jiǎn,俭jiǎn,茧jiǎn,倹jiǎn,挸jiǎn,捡jiǎn,笕jiǎn,减jiǎn,剪jiǎn,帴jiǎn,梘jiǎn,检jiǎn,湕jiǎn,趼jiǎn,揀jiǎn,検jiǎn,減jiǎn,睑jiǎn,硷jiǎn,裥jiǎn,詃jiǎn,锏jiǎn,弿jiǎn,瑐jiǎn,筧jiǎn,简jiǎn,絸jiǎn,谫jiǎn,彅jiǎn,戩jiǎn,碱jiǎn,儉jiǎn,翦jiǎn,撿jiǎn,檢jiǎn,藆jiǎn,襇jiǎn,襉jiǎn,謇jiǎn,蹇jiǎn,瞼jiǎn,礆jiǎn,簡jiǎn,繭jiǎn,謭jiǎn,鬋jiǎn,鰎jiǎn,鹸jiǎn,瀽jiǎn,蠒jiǎn,鹻jiǎn,譾jiǎn,襺jiǎn,鹼jiǎn,堿jiǎn,偂jiǎn,銭jiǎn,醎jiǎn,鹹jiǎn,涀jiǎn,橏jiǎn,柬jiǎn,戬jiǎn,见jiàn,件jiàn,見jiàn,侟jiàn,饯jiàn,剑jiàn,洊jiàn,牮jiàn,荐jiàn,贱jiàn,俴jiàn,健jiàn,剣jiàn,栫jiàn,涧jiàn,珔jiàn,舰jiàn,剱jiàn,徤jiàn,渐jiàn,袸jiàn,谏jiàn,釼jiàn,寋jiàn,旔jiàn,楗jiàn,毽jiàn,溅jiàn,腱jiàn,臶jiàn,葥jiàn,践jiàn,鉴jiàn,键jiàn,僭jiàn,榗jiàn,漸jiàn,劍jiàn,劎jiàn,墹jiàn,澗jiàn,箭jiàn,糋jiàn,諓jiàn,賤jiàn,趝jiàn,踐jiàn,踺jiàn,劒jiàn,劔jiàn,橺jiàn,薦jiàn,諫jiàn,鍵jiàn,餞jiàn,瞯jiàn,瞷jiàn,磵jiàn,礀jiàn,螹jiàn,鍳jiàn,濺jiàn,繝jiàn,瀳jiàn,鏩jiàn,艦jiàn,轞jiàn,鑑jiàn,鑒jiàn,鑬jiàn,鑳jiàn,鐱jiàn,揵jiàn,蔪jiàn,橌jiàn,廴jiàn,譖jiàn,鋻jiàn,建jiàn,賎jiàn,擶jiàn,江jiāng,姜jiāng,将jiāng,茳jiāng,浆jiāng,畕jiāng,豇jiāng,葁jiāng,摪jiāng,翞jiāng,僵jiāng,漿jiāng,螀jiāng,壃jiāng,彊jiāng,缰jiāng,薑jiāng,殭jiāng,螿jiāng,鳉jiāng,疅jiāng,礓jiāng,疆jiāng,繮jiāng,韁jiāng,鱂jiāng,將jiāng,畺jiāng,糡jiāng,橿jiāng,讲jiǎng,奖jiǎng,桨jiǎng,蒋jiǎng,勥jiǎng,奨jiǎng,奬jiǎng,蔣jiǎng,槳jiǎng,獎jiǎng,耩jiǎng,膙jiǎng,講jiǎng,顜jiǎng,塂jiǎng,匞jiàng,匠jiàng,夅jiàng,弜jiàng,杢jiàng,降jiàng,绛jiàng,弶jiàng,袶jiàng,絳jiàng,酱jiàng,摾jiàng,滰jiàng,嵹jiàng,犟jiàng,醤jiàng,糨jiàng,醬jiàng,櫤jiàng,謽jiàng,蔃jiàng,洚jiàng,艽jiāo,芁jiāo,交jiāo,郊jiāo,姣jiāo,娇jiāo,峧jiāo,浇jiāo,茭jiāo,骄jiāo,胶jiāo,椒jiāo,焳jiāo,蛟jiāo,跤jiāo,僬jiāo,嘄jiāo,鲛jiāo,嬌jiāo,嶕jiāo,嶣jiāo,憍jiāo,澆jiāo,膠jiāo,蕉jiāo,燋jiāo,膲jiāo,礁jiāo,穚jiāo,鮫jiāo,鹪jiāo,簥jiāo,蟭jiāo,轇jiāo,鐎jiāo,驕jiāo,鷦jiāo,鷮jiāo,儌jiāo,撟jiāo,挍jiāo,教jiāo,骹jiāo,嫶jiāo,萩jiāo,嘐jiāo,憢jiāo,焦jiāo,櫵jiáo,嚼jiáo,臫jiǎo,佼jiǎo,挢jiǎo,狡jiǎo,绞jiǎo,饺jiǎo,晈jiǎo,笅jiǎo,皎jiǎo,矫jiǎo,脚jiǎo,铰jiǎo,搅jiǎo,筊jiǎo,絞jiǎo,剿jiǎo,勦jiǎo,敫jiǎo,湬jiǎo,煍jiǎo,腳jiǎo,賋jiǎo,摷jiǎo,暞jiǎo,踋jiǎo,鉸jiǎo,劋jiǎo,撹jiǎo,徼jiǎo,敽jiǎo,敿jiǎo,缴jiǎo,曒jiǎo,璬jiǎo,矯jiǎo,皦jiǎo,蟜jiǎo,鵤jiǎo,繳jiǎo,譑jiǎo,孂jiǎo,纐jiǎo,攪jiǎo,灚jiǎo,鱎jiǎo,潐jiǎo,糸jiǎo,蹻jiǎo,釥jiǎo,纟jiǎo,恔jiǎo,角jiǎo,餃jiǎo,叫jiào,呌jiào,訆jiào,珓jiào,轿jiào,较jiào,窖jiào,滘jiào,較jiào,嘂jiào,嘦jiào,斠jiào,漖jiào,酵jiào,噍jiào,噭jiào,嬓jiào,獥jiào,藠jiào,趭jiào,轎jiào,醮jiào,譥jiào,皭jiào,釂jiào,觉jiào,覐jiào,覚jiào,覺jiào,趫jiào,敎jiào,阶jiē,疖jiē,皆jiē,接jiē,掲jiē,痎jiē,秸jiē,菨jiē,喈jiē,嗟jiē,堦jiē,媘jiē,嫅jiē,揭jiē,椄jiē,湝jiē,脻jiē,街jiē,煯jiē,稭jiē,鞂jiē,蝔jiē,擑jiē,癤jiē,鶛jiē,节jiē,節jiē,袓jiē,謯jiē,階jiē,卪jié,孑jié,讦jié,刦jié,刧jié,劫jié,岊jié,昅jié,刼jié,劼jié,疌jié,衱jié,诘jié,拮jié,洁jié,结jié,迼jié,倢jié,桀jié,桝jié,莭jié,偼jié,婕jié,崨jié,捷jié,袺jié,傑jié,媫jié,結jié,蛣jié,颉jié,嵥jié,楬jié,楶jié,滐jié,睫jié,蜐jié,詰jié,截jié,榤jié,碣jié,竭jié,蓵jié,鲒jié,潔jié,羯jié,誱jié,踕jié,頡jié,幯jié,擳jié,嶻jié,擮jié,礍jié,鍻jié,鮚jié,巀jié,蠞jié,蠘jié,蠽jié,洯jié,絜jié,搩jié,杰jié,鉣jié,姐jiě,毑jiě,媎jiě,解jiě,觧jiě,檞jiě,飷jiě,丯jiè,介jiè,岕jiè,庎jiè,戒jiè,芥jiè,屆jiè,届jiè,斺jiè,玠jiè,界jiè,畍jiè,疥jiè,砎jiè,衸jiè,诫jiè,借jiè,蚧jiè,徣jiè,堺jiè,楐jiè,琾jiè,蛶jiè,骱jiè,犗jiè,誡jiè,魪jiè,藉jiè,繲jiè,雃jiè,嶰jiè,唶jiè,褯jiè,巾jīn,今jīn,斤jīn,钅jīn,兓jīn,金jīn,釒jīn,津jīn,矜jīn,砛jīn,荕jīn,衿jīn,觔jīn,埐jīn,珒jīn,紟jīn,惍jīn,琎jīn,堻jīn,琻jīn,筋jīn,嶜jīn,璡jīn,鹶jīn,黅jīn,襟jīn,濜jīn,仅jǐn,巹jǐn,紧jǐn,堇jǐn,菫jǐn,僅jǐn,厪jǐn,谨jǐn,锦jǐn,嫤jǐn,廑jǐn,漌jǐn,緊jǐn,蓳jǐn,馑jǐn,槿jǐn,瑾jǐn,錦jǐn,謹jǐn,饉jǐn,儘jǐn,婜jǐn,斳jǐn,卺jǐn,笒jìn,盡jìn,劤jìn,尽jìn,劲jìn,妗jìn,近jìn,进jìn,侭jìn,枃jìn,勁jìn,荩jìn,晉jìn,晋jìn,浸jìn,烬jìn,赆jìn,祲jìn,進jìn,煡jìn,缙jìn,寖jìn,搢jìn,溍jìn,禁jìn,靳jìn,墐jìn,慬jìn,瑨jìn,僸jìn,凚jìn,歏jìn,殣jìn,觐jìn,噤jìn,濅jìn,縉jìn,賮jìn,嚍jìn,壗jìn,藎jìn,燼jìn,璶jìn,覲jìn,贐jìn,齽jìn,馸jìn,臸jìn,浕jìn,嬧jìn,坕jīng,坙jīng,巠jīng,京jīng,泾jīng,经jīng,茎jīng,亰jīng,秔jīng,荆jīng,荊jīng,涇jīng,莖jīng,婛jīng,惊jīng,旌jīng,旍jīng,猄jīng,経jīng,菁jīng,晶jīng,稉jīng,腈jīng,粳jīng,經jīng,兢jīng,精jīng,聙jīng,橸jīng,鲸jīng,鵛jīng,鯨jīng,鶁jīng,麖jīng,鼱jīng,驚jīng,麠jīng,徑jīng,仱jīng,靑jīng,睛jīng,井jǐng,阱jǐng,刭jǐng,坓jǐng,宑jǐng,汫jǐng,汬jǐng,肼jǐng,剄jǐng,穽jǐng,颈jǐng,景jǐng,儆jǐng,幜jǐng,璄jǐng,憼jǐng,暻jǐng,燝jǐng,璟jǐng,璥jǐng,頸jǐng,蟼jǐng,警jǐng,擏jǐng,憬jǐng,妌jìng,净jìng,弪jìng,径jìng,迳jìng,浄jìng,胫jìng,凈jìng,弳jìng,痉jìng,竞jìng,逕jìng,婙jìng,婧jìng,桱jìng,梷jìng,淨jìng,竫jìng,脛jìng,敬jìng,痙jìng,竧jìng,傹jìng,靖jìng,境jìng,獍jìng,誩jìng,静jìng,頚jìng,曔jìng,镜jìng,靜jìng,瀞jìng,鏡jìng,競jìng,竸jìng,葝jìng,儬jìng,陘jìng,竟jìng,冋jiōng,扃jiōng,埛jiōng,絅jiōng,駉jiōng,駫jiōng,冏jiōng,浻jiōng,扄jiōng,銄jiōng,囧jiǒng,迥jiǒng,侰jiǒng,炯jiǒng,逈jiǒng,烱jiǒng,煚jiǒng,窘jiǒng,颎jiǒng,綗jiǒng,僒jiǒng,煛jiǒng,熲jiǒng,澃jiǒng,燛jiǒng,褧jiǒng,顈jiǒng,蘔jiǒng,宭jiǒng,蘏jiǒng,丩jiū,勼jiū,纠jiū,朻jiū,究jiū,糺jiū,鸠jiū,赳jiū,阄jiū,萛jiū,啾jiū,揪jiū,揫jiū,鳩jiū,摎jiū,鬏jiū,鬮jiū,稵jiū,糾jiū,九jiǔ,久jiǔ,乆jiǔ,乣jiǔ,奺jiǔ,汣jiǔ,杦jiǔ,灸jiǔ,玖jiǔ,舏jiǔ,韭jiǔ,紤jiǔ,酒jiǔ,镹jiǔ,韮jiǔ,匛jiù,旧jiù,臼jiù,疚jiù,柩jiù,柾jiù,倃jiù,桕jiù,厩jiù,救jiù,就jiù,廄jiù,匓jiù,舅jiù,僦jiù,廏jiù,廐jiù,慦jiù,殧jiù,舊jiù,鹫jiù,麔jiù,匶jiù,齨jiù,鷲jiù,咎jiù,欍jou,鶪ju,伡jū,俥jū,凥jū,匊jū,居jū,狙jū,苴jū,驹jū,倶jū,挶jū,捄jū,疽jū,痀jū,眗jū,砠jū,罝jū,陱jū,娵jū,婅jū,婮jū,崌jū,掬jū,梮jū,涺jū,椐jū,琚jū,腒jū,趄jū,跔jū,锔jū,裾jū,雎jū,艍jū,蜛jū,踘jū,鋦jū,駒jū,鮈jū,鴡jū,鞠jū,鞫jū,鶋jū,臄jū,揟jū,拘jū,諊jū,局jú,泦jú,侷jú,狊jú,桔jú,毩jú,淗jú,焗jú,菊jú,郹jú,椈jú,毱jú,湨jú,犑jú,輂jú,粷jú,蓻jú,趜jú,躹jú,閰jú,檋jú,駶jú,鵙jú,蹫jú,鵴jú,巈jú,蘜jú,鼰jú,鼳jú,驧jú,趉jú,郥jú,橘jú,咀jǔ,弆jǔ,沮jǔ,举jǔ,矩jǔ,莒jǔ,挙jǔ,椇jǔ,筥jǔ,榉jǔ,榘jǔ,蒟jǔ,龃jǔ,聥jǔ,舉jǔ,踽jǔ,擧jǔ,櫸jǔ,齟jǔ,襷jǔ,籧jǔ,郰jǔ,欅jǔ,句jù,巨jù,讵jù,姖jù,岠jù,怇jù,拒jù,洰jù,苣jù,邭jù,具jù,怚jù,拠jù,昛jù,歫jù,炬jù,秬jù,钜jù,俱jù,倨jù,冣jù,剧jù,粔jù,耟jù,蚷jù,埧jù,埾jù,惧jù,詎jù,距jù,焣jù,犋jù,跙jù,鉅jù,飓jù,虡jù,豦jù,锯jù,愳jù,窭jù,聚jù,駏jù,劇jù,勮jù,屦jù,踞jù,鮔jù,壉jù,懅jù,據jù,澽jù,遽jù,鋸jù,屨jù,颶jù,簴jù,躆jù,醵jù,懼jù,鐻jù,爠jù,坥jù,螶jù,忂jù,葅jù,蒩jù,珇jù,据jù,姢juān,娟juān,捐juān,涓juān,脧juān,裐juān,鹃juān,勬juān,鋑juān,鋗juān,镌juān,鎸juān,鵑juān,鐫juān,蠲juān,勌juān,瓹juān,梋juān,鞙juān,朘juān,呟juǎn,帣juǎn,埍juǎn,捲juǎn,菤juǎn,锩juǎn,臇juǎn,錈juǎn,埢juǎn,踡juǎn,蕋juǎn,卷juàn,劵juàn,弮juàn,倦juàn,桊juàn,狷juàn,绢juàn,淃juàn,眷juàn,鄄juàn,睊juàn,絭juàn,罥juàn,睠juàn,絹juàn,慻juàn,蔨juàn,餋juàn,獧juàn,羂juàn,圏juàn,棬juàn,惓juàn,韏juàn,讂juàn,縳juàn,襈juàn,奆juàn,噘juē,撅juē,撧juē,屩juē,屫juē,繑juē,亅jué,孓jué,决jué,刔jué,氒jué,诀jué,抉jué,決jué,芵jué,泬jué,玦jué,玨jué,挗jué,珏jué,砄jué,绝jué,虳jué,捔jué,欮jué,蚗jué,崛jué,掘jué,斍jué,桷jué,殌jué,焆jué,觖jué,逫jué,傕jué,厥jué,絕jué,絶jué,鈌jué,劂jué,勪jué,瑴jué,谲jué,嶥jué,憰jué,潏jué,熦jué,爴jué,獗jué,瘚jué,蕝jué,蕨jué,憠jué,橛jué,镼jué,爵jué,镢jué,蟨jué,蟩jué,爑jué,譎jué,蹷jué,鶌jué,矍jué,鐝jué,灍jué,爝jué,觼jué,彏jué,戄jué,攫jué,玃jué,鷢jué,欔jué,矡jué,龣jué,貜jué,躩jué,钁jué,璚jué,匷jué,啳jué,吷jué,疦jué,弡jué,穱jué,孒jué,訣jué,橜jué,蹶juě,倔juè,誳juè,君jūn,均jūn,汮jūn,姰jūn,袀jūn,軍jūn,钧jūn,莙jūn,蚐jūn,桾jūn,皲jūn,菌jūn,鈞jūn,碅jūn,筠jūn,皸jūn,皹jūn,覠jūn,銁jūn,銞jūn,鲪jūn,麇jūn,鍕jūn,鮶jūn,麏jūn,麕jūn,军jūn,隽jùn,雋jùn,呁jùn,俊jùn,郡jùn,陖jùn,峻jùn,捃jùn,晙jùn,馂jùn,骏jùn,焌jùn,珺jùn,畯jùn,竣jùn,箘jùn,箟jùn,蜠jùn,儁jùn,寯jùn,懏jùn,餕jùn,燇jùn,駿jùn,鵔jùn,鵕jùn,鵘jùn,葰jùn,埈jùn,咔kā,咖kā,喀kā,衉kā,哢kā,呿kā,卡kǎ,佧kǎ,垰kǎ,裃kǎ,鉲kǎ,胩kǎ,开kāi,奒kāi,揩kāi,锎kāi,開kāi,鐦kāi,凯kǎi,剀kǎi,垲kǎi,恺kǎi,闿kǎi,铠kǎi,凱kǎi,慨kǎi,蒈kǎi,塏kǎi,愷kǎi,楷kǎi,輆kǎi,暟kǎi,锴kǎi,鍇kǎi,鎧kǎi,闓kǎi,颽kǎi,喫kài,噄kài,忾kài,烗kài,勓kài,愾kài,鎎kài,愒kài,欯kài,炌kài,乫kal,刊kān,栞kān,勘kān,龛kān,堪kān,嵁kān,戡kān,龕kān,槛kǎn,檻kǎn,冚kǎn,坎kǎn,侃kǎn,砍kǎn,莰kǎn,偘kǎn,埳kǎn,惂kǎn,欿kǎn,塪kǎn,輡kǎn,竷kǎn,轗kǎn,衎kǎn,看kàn,崁kàn,墈kàn,阚kàn,瞰kàn,磡kàn,闞kàn,矙kàn,輱kàn,忼kāng,砊kāng,粇kāng,康kāng,嫝kāng,嵻kāng,慷kāng,漮kāng,槺kāng,穅kāng,糠kāng,躿kāng,鏮kāng,鱇kāng,闶kāng,閌kāng,扛káng,摃káng,亢kàng,伉kàng,匟kàng,囥kàng,抗kàng,炕kàng,钪kàng,鈧kàng,邟kàng,尻kāo,髛kāo,嵪kāo,訄kāo,薧kǎo,攷kǎo,考kǎo,拷kǎo,洘kǎo,栲kǎo,烤kǎo,铐kào,犒kào,銬kào,鲓kào,靠kào,鮳kào,鯌kào,焅kào,屙kē,蚵kē,苛kē,柯kē,牁kē,珂kē,胢kē,轲kē,疴kē,趷kē,钶kē,嵙kē,棵kē,痾kē,萪kē,軻kē,颏kē,犐kē,稞kē,窠kē,鈳kē,榼kē,薖kē,颗kē,樖kē,瞌kē,磕kē,蝌kē,頦kē,醘kē,顆kē,髁kē,礚kē,嗑kē,窼kē,簻kē,科kē,壳ké,咳ké,揢ké,翗ké,嶱ké,殼ké,毼kě,磆kě,坷kě,可kě,岢kě,炣kě,渇kě,嵑kě,敤kě,渴kě,袔kè,悈kè,歁kè,克kè,刻kè,剋kè,勀kè,勊kè,客kè,恪kè,娔kè,尅kè,课kè,堁kè,氪kè,骒kè,缂kè,愙kè,溘kè,锞kè,碦kè,課kè,礊kè,騍kè,硞kè,艐kè,緙kè,肎kěn,肯kěn,肻kěn,垦kěn,恳kěn,啃kěn,豤kěn,貇kěn,墾kěn,錹kěn,懇kěn,頎kěn,掯kèn,裉kèn,褃kèn,硍kèn,妔kēng,踁kēng,劥kēng,吭kēng,坈kēng,坑kēng,挳kēng,硁kēng,牼kēng,硜kēng,铿kēng,硻kēng,誙kēng,銵kēng,鏗kēng,摼kēng,殸kēng,揁kēng,鍞kēng,巪keo,乬keol,唟keos,厼keum,怾ki,空kōng,倥kōng,埪kōng,崆kōng,悾kōng,硿kōng,箜kōng,躻kōng,錓kōng,鵼kōng,椌kōng,宆kōng,孔kǒng,恐kǒng,控kòng,鞚kòng,羫kòng,廤kos,抠kōu,芤kōu,眍kōu,剾kōu,彄kōu,摳kōu,瞘kōu,劶kǒu,竘kǒu,口kǒu,叩kòu,扣kòu,怐kòu,敂kòu,冦kòu,宼kòu,寇kòu,釦kòu,窛kòu,筘kòu,滱kòu,蔲kòu,蔻kòu,瞉kòu,簆kòu,鷇kòu,搰kū,刳kū,矻kū,郀kū,枯kū,哭kū,桍kū,堀kū,崫kū,圐kū,跍kū,窟kū,骷kū,泏kū,窋kū,狜kǔ,苦kǔ,楛kǔ,齁kù,捁kù,库kù,俈kù,绔kù,庫kù,秙kù,袴kù,喾kù,絝kù,裤kù,瘔kù,酷kù,褲kù,嚳kù,鮬kù,恗kuā,夸kuā,姱kuā,晇kuā,舿kuā,誇kuā,侉kuǎ,咵kuǎ,垮kuǎ,銙kuǎ,顝kuǎ,挎kuà,胯kuà,跨kuà,骻kuà,擓kuai,蒯kuǎi,璯kuài,駃kuài,巜kuài,凷kuài,圦kuài,块kuài,快kuài,侩kuài,郐kuài,哙kuài,狯kuài,脍kuài,塊kuài,筷kuài,鲙kuài,儈kuài,鄶kuài,噲kuài,廥kuài,獪kuài,膾kuài,旝kuài,糩kuài,鱠kuài,蕢kuài,宽kuān,寛kuān,寬kuān,髋kuān,鑧kuān,髖kuān,欵kuǎn,款kuǎn,歀kuǎn,窽kuǎn,窾kuǎn,梡kuǎn,匡kuāng,劻kuāng,诓kuāng,邼kuāng,匩kuāng,哐kuāng,恇kuāng,洭kuāng,筐kuāng,筺kuāng,誆kuāng,軭kuāng,狂kuáng,狅kuáng,诳kuáng,軖kuáng,軠kuáng,誑kuáng,鵟kuáng,夼kuǎng,儣kuǎng,懭kuǎng,爌kuǎng,邝kuàng,圹kuàng,况kuàng,旷kuàng,岲kuàng,況kuàng,矿kuàng,昿kuàng,贶kuàng,框kuàng,眖kuàng,砿kuàng,眶kuàng,絋kuàng,絖kuàng,貺kuàng,軦kuàng,鉱kuàng,鋛kuàng,鄺kuàng,壙kuàng,黋kuàng,懬kuàng,曠kuàng,礦kuàng,穬kuàng,纊kuàng,鑛kuàng,纩kuàng,亏kuī,刲kuī,悝kuī,盔kuī,窥kuī,聧kuī,窺kuī,虧kuī,闚kuī,巋kuī,蘬kuī,岿kuī,奎kuí,晆kuí,逵kuí,鄈kuí,頄kuí,馗kuí,喹kuí,揆kuí,葵kuí,骙kuí,戣kuí,暌kuí,楏kuí,楑kuí,魁kuí,睽kuí,蝰kuí,頯kuí,櫆kuí,藈kuí,鍷kuí,騤kuí,夔kuí,蘷kuí,虁kuí,躨kuí,鍨kuí,卼kuǐ,煃kuǐ,跬kuǐ,頍kuǐ,蹞kuǐ,尯kuǐ,匮kuì,欳kuì,喟kuì,媿kuì,愦kuì,愧kuì,溃kuì,蒉kuì,馈kuì,匱kuì,嘳kuì,嬇kuì,憒kuì,潰kuì,聩kuì,聭kuì,樻kuì,殨kuì,餽kuì,簣kuì,聵kuì,籄kuì,鐀kuì,饋kuì,鑎kuì,篑kuì,坤kūn,昆kūn,晜kūn,堃kūn,堒kūn,婫kūn,崐kūn,崑kūn,猑kūn,菎kūn,裈kūn,焜kūn,琨kūn,髠kūn,裩kūn,锟kūn,髡kūn,尡kūn,潉kūn,蜫kūn,褌kūn,髨kūn,熴kūn,瑻kūn,醌kūn,錕kūn,鲲kūn,臗kūn,騉kūn,鯤kūn,鵾kūn,鶤kūn,鹍kūn,悃kǔn,捆kǔn,阃kǔn,壸kǔn,祵kǔn,硱kǔn,稇kǔn,裍kǔn,壼kǔn,稛kǔn,綑kǔn,閫kǔn,閸kǔn,困kùn,睏kùn,涃kùn,秳kuò,漷kuò,扩kuò,拡kuò,括kuò,桰kuò,筈kuò,萿kuò,葀kuò,蛞kuò,阔kuò,廓kuò,頢kuò,擴kuò,濶kuò,闊kuò,鞟kuò,韕kuò,懖kuò,霩kuò,鞹kuò,鬠kuò,穒kweok,鞡la,垃lā,拉lā,柆lā,啦lā,菈lā,搚lā,邋lā,磖lā,翋lā,旯lá,砬lá,揦lá,喇lǎ,藞lǎ,嚹lǎ,剌là,溂là,腊là,揧là,楋là,瘌là,牎chuāng,床chuáng,漺chuǎng,怆chuàng,愴chuàng,莊zhuāng,粧zhuāng,装zhuāng,裝zhuāng,樁zhuāng,蜡là,蝋là,辢là,辣là,蝲là,臈là,攋là,爉là,臘là,鬎là,櫴là,瓎là,镴là,鯻là,鑞là,儠là,擸là,鱲là,蠟là,来lái,來lái,俫lái,倈lái,崃lái,徕lái,涞lái,莱lái,郲lái,婡lái,崍lái,庲lái,徠lái,梾lái,淶lái,猍lái,萊lái,逨lái,棶lái,琜lái,筙lái,铼lái,箂lái,錸lái,騋lái,鯠lái,鶆lái,麳lái,顂lái,勑lài,誺lài,赉lài,睐lài,睞lài,赖lài,賚lài,濑lài,賴lài,頼lài,癞lài,鵣lài,瀨lài,瀬lài,籁lài,藾lài,癩lài,襰lài,籟lài,唻lài,暕lán,兰lán,岚lán,拦lán,栏lán,婪lán,嵐lán,葻lán,阑lán,蓝lán,谰lán,厱lán,褴lán,儖lán,斓lán,篮lán,懢lán,燣lán,藍lán,襕lán,镧lán,闌lán,璼lán,襤lán,譋lán,幱lán,攔lán,瀾lán,灆lán,籃lán,繿lán,蘭lán,斕lán,欄lán,礷lán,襴lán,囒lán,灡lán,籣lán,欗lán,讕lán,躝lán,鑭lán,钄lán,韊lán,惏lán,澜lán,襽lán,览lǎn,浨lǎn,揽lǎn,缆lǎn,榄lǎn,漤lǎn,罱lǎn,醂lǎn,壈lǎn,懒lǎn,覧lǎn,擥lǎn,懶lǎn,孄lǎn,覽lǎn,孏lǎn,攬lǎn,欖lǎn,爦lǎn,纜lǎn,灠lǎn,顲lǎn,蘫làn,嬾làn,烂làn,滥làn,燗làn,嚂làn,壏làn,濫làn,爛làn,爤làn,瓓làn,糷làn,湅làn,煉làn,爁làn,唥lang,啷lāng,羮láng,勆láng,郎láng,郞láng,欴láng,狼láng,嫏láng,廊láng,桹láng,琅láng,蓈láng,榔láng,瑯láng,硠láng,稂láng,锒láng,筤láng,艆láng,蜋láng,郒láng,螂láng,躴láng,鋃láng,鎯láng,阆láng,閬láng,哴láng,悢lǎng,朗lǎng,朖lǎng,烺lǎng,塱lǎng,蓢lǎng,樃lǎng,誏lǎng,朤lǎng,俍lǎng,脼lǎng,莨làng,埌làng,浪làng,蒗làng,捞lāo,粩lāo,撈lāo,劳láo,労láo,牢láo,窂láo,哰láo,崂láo,浶láo,勞láo,痨láo,僗láo,嶗láo,憥láo,朥láo,癆láo,磱láo,簩láo,蟧láo,醪láo,鐒láo,顟láo,髝láo,轑láo,嫪láo,憦láo,铹láo,耂lǎo,老lǎo,佬lǎo,咾lǎo,姥lǎo,恅lǎo,荖lǎo,栳lǎo,珯lǎo,硓lǎo,铑lǎo,蛯lǎo,銠lǎo,橑lǎo,鮱lǎo,唠lào,嘮lào,烙lào,嗠lào,耢lào,酪lào,澇lào,橯lào,耮lào,軂lào,涝lào,饹le,了le,餎le,牞lè,仂lè,阞lè,乐lè,叻lè,忇lè,扐lè,氻lè,艻lè,玏lè,泐lè,竻lè,砳lè,勒lè,楽lè,韷lè,樂lè,簕lè,鳓lè,鰳lè,頛lei,嘞lei,雷léi,嫘léi,缧léi,蔂léi,樏léi,畾léi,檑léi,縲léi,镭léi,櫑léi,瓃léi,羸léi,礧léi,罍léi,蘲léi,鐳léi,轠léi,壨léi,鑘léi,靁léi,虆léi,鱩léi,欙léi,纝léi,鼺léi,磥léi,攂léi,腂lěi,瘣lěi,厽lěi,耒lěi,诔lěi,垒lěi,絫lěi,傫lěi,誄lěi,磊lěi,蕌lěi,蕾lěi,儡lěi,壘lěi,癗lěi,藟lěi,櫐lěi,矋lěi,礨lěi,灅lěi,蠝lěi,蘽lěi,讄lěi,儽lěi,鑸lěi,鸓lěi,洡lěi,礌lěi,塁lěi,纍lèi,肋lèi,泪lèi,类lèi,涙lèi,淚lèi,累lèi,酹lèi,銇lèi,頪lèi,擂lèi,錑lèi,颣lèi,類lèi,纇lèi,蘱lèi,禷lèi,祱lèi,塄léng,棱léng,楞léng,碐léng,稜léng,踜léng,薐léng,輘léng,冷lěng,倰lèng,堎lèng,愣lèng,睖lèng,瓈li,唎lī,粚lí,刕lí,厘lí,剓lí,梨lí,狸lí,荲lí,骊lí,悡lí,梸lí,犁lí,菞lí,喱lí,棃lí,犂lí,鹂lí,剺lí,漓lí,睝lí,筣lí,缡lí,艃lí,蓠lí,蜊lí,嫠lí,孷lí,樆lí,璃lí,盠lí,竰lí,氂lí,犛lí,糎lí,蔾lí,鋫lí,鲡lí,黎lí,篱lí,縭lí,罹lí,錅lí,蟍lí,謧lí,醨lí,嚟lí,藜lí,邌lí,釐lí,離lí,鯏lí,鏫lí,鯬lí,鵹lí,黧lí,囄lí,灕lí,蘺lí,蠡lí,蠫lí,孋lí,廲lí,劙lí,鑗lí,籬lí,驪lí,鱺lí,鸝lí,婯lí,儷lí,矖lí,纚lí,离lí,褵lí,穲lí,礼lǐ,李lǐ,里lǐ,俚lǐ,峛lǐ,哩lǐ,娌lǐ,峲lǐ,浬lǐ,逦lǐ,理lǐ,裡lǐ,锂lǐ,粴lǐ,裏lǐ,鋰lǐ,鲤lǐ,澧lǐ,禮lǐ,鯉lǐ,蟸lǐ,醴lǐ,鳢lǐ,邐lǐ,鱧lǐ,欐lǐ,欚lǐ,銐lì,脷lì,莉lì,力lì,历lì,厉lì,屴lì,立lì,吏lì,朸lì,丽lì,利lì,励lì,呖lì,坜lì,沥lì,苈lì,例lì,岦lì,戾lì,枥lì,沴lì,疠lì,苙lì,隶lì,俐lì,俪lì,栃lì,栎lì,疬lì,砅lì,茘lì,荔lì,轹lì,郦lì,娳lì,悧lì,栗lì,栛lì,栵lì,涖lì,猁lì,珕lì,砺lì,砾lì,秝lì,莅lì,唳lì,悷lì,琍lì,笠lì,粒lì,粝lì,蚸lì,蛎lì,傈lì,凓lì,厤lì,棙lì,痢lì,蛠lì,詈lì,雳lì,塛lì,慄lì,搮lì,溧lì,蒚lì,蒞lì,鉝lì,鳨lì,厯lì,厲lì,暦lì,歴lì,瑮lì,綟lì,蜧lì,勵lì,曆lì,歷lì,篥lì,隷lì,鴗lì,巁lì,檪lì,濿lì,癘lì,磿lì,隸lì,鬁lì,儮lì,櫔lì,爄lì,犡lì,禲lì,蠇lì,嚦lì,壢lì,攊lì,櫟lì,瀝lì,瓅lì,礪lì,藶lì,麗lì,櫪lì,爏lì,瓑lì,皪lì,盭lì,礫lì,糲lì,蠣lì,癧lì,礰lì,酈lì,鷅lì,麜lì,囇lì,攦lì,轢lì,讈lì,轣lì,攭lì,瓥lì,靂lì,鱱lì,靋lì,觻lì,鱳lì,叓lì,蝷lì,赲lì,曞lì,嫾liān,奁lián,连lián,帘lián,怜lián,涟lián,莲lián,連lián,梿lián,联lián,裢lián,亷lián,嗹lián,廉lián,慩lián,溓lián,漣lián,蓮lián,奩lián,熑lián,覝lián,劆lián,匳lián,噒lián,憐lián,磏lián,聨lián,聫lián,褳lián,鲢lián,濂lián,濓lián,縺lián,翴lián,聮lián,薕lián,螊lián,櫣lián,燫lián,聯lián,臁lián,蹥lián,謰lián,鎌lián,镰lián,簾lián,蠊lián,譧lián,鐮lián,鰱lián,籢lián,籨lián,槤lián,僆lián,匲lián,鬑lián,敛liǎn,琏liǎn,脸liǎn,裣liǎn,摙liǎn,璉liǎn,蔹liǎn,嬚liǎn,斂liǎn,歛liǎn,臉liǎn,鄻liǎn,襝liǎn,羷liǎn,蘝liǎn,蘞liǎn,薟liǎn,练liàn,炼liàn,恋liàn,浰liàn,殓liàn,堜liàn,媡liàn,链liàn,楝liàn,瑓liàn,潋liàn,稴liàn,練liàn,澰liàn,錬liàn,殮liàn,鍊liàn,鏈liàn,瀲liàn,鰊liàn,戀liàn,纞liàn,孌liàn,攣liàn,萰liàn,簗liāng,良liáng,凉liáng,梁liáng,涼liáng,椋liáng,辌liáng,粮liáng,粱liáng,墚liáng,綡liáng,輬liáng,糧liáng,駺liáng,樑liáng,冫liǎng,俩liǎng,倆liǎng,両liǎng,两liǎng,兩liǎng,唡liǎng,啢liǎng,掚liǎng,裲liǎng,緉liǎng,蜽liǎng,魉liǎng,魎liǎng,倞liàng,靓liàng,靚liàng,踉liàng,亮liàng,谅liàng,辆liàng,喨liàng,晾liàng,湸liàng,量liàng,煷liàng,輌liàng,諒liàng,輛liàng,鍄liàng,蹽liāo,樛liáo,潦liáo,辽liáo,疗liáo,僚liáo,寥liáo,嵺liáo,憀liáo,漻liáo,膋liáo,嘹liáo,嫽liáo,寮liáo,嶚liáo,嶛liáo,憭liáo,撩liáo,敹liáo,獠liáo,缭liáo,遼liáo,暸liáo,燎liáo,璙liáo,窷liáo,膫liáo,療liáo,竂liáo,鹩liáo,屪liáo,廫liáo,簝liáo,蟟liáo,豂liáo,賿liáo,蹘liáo,爎liáo,髎liáo,飉liáo,鷯liáo,镽liáo,尞liáo,镠liáo,鏐liáo,僇liáo,聊liáo,繚liáo,钌liǎo,釕liǎo,鄝liǎo,蓼liǎo,爒liǎo,瞭liǎo,廖liào,镣liào,鐐liào,尥liào,炓liào,料liào,撂liào,蟉liào,鴷lie,咧liě,毟liě,挘liě,埓liě,忚liě,列liè,劣liè,冽liè,姴liè,峢liè,挒liè,洌liè,茢liè,迾liè,埒liè,浖liè,烈liè,烮liè,捩liè,猎liè,猟liè,脟liè,蛚liè,裂liè,煭liè,睙liè,聗liè,趔liè,巤liè,颲liè,鮤liè,獵liè,犣liè,躐liè,鬛liè,哷liè,劦liè,奊liè,劽liè,鬣liè,拎līn,邻lín,林lín,临lín,啉lín,崊lín,淋lín,晽lín,琳lín,粦lín,痳lín,碄lín,箖lín,粼lín,鄰lín,隣lín,嶙lín,潾lín,獜lín,遴lín,斴lín,暽lín,燐lín,璘lín,辚lín,霖lín,瞵lín,磷lín,繗lín,翷lín,麐lín,轔lín,壣lín,瀶lín,鏻lín,鳞lín,驎lín,麟lín,鱗lín,疄lín,蹸lín,魿lín,涁lín,臨lín,菻lǐn,亃lǐn,僯lǐn,凛lǐn,凜lǐn,撛lǐn,廩lǐn,廪lǐn,懍lǐn,懔lǐn,澟lǐn,檁lǐn,檩lǐn,伈lǐn,吝lìn,恡lìn,赁lìn,焛lìn,賃lìn,蔺lìn,橉lìn,甐lìn,膦lìn,閵lìn,藺lìn,躏lìn,躙lìn,躪lìn,轥lìn,悋lìn,伶líng,刢líng,灵líng,囹líng,坽líng,夌líng,姈líng,岺líng,彾líng,泠líng,狑líng,苓líng,昤líng,柃líng,玲líng,瓴líng,凌líng,皊líng,砱líng,秢líng,竛líng,铃líng,陵líng,鸰líng,婈líng,崚líng,掕líng,棂líng,淩líng,琌líng,笭líng,紷líng,绫líng,羚líng,翎líng,聆líng,舲líng,菱líng,蛉líng,衑líng,祾líng,詅líng,跉líng,蓤líng,裬líng,鈴líng,閝líng,零líng,龄líng,綾líng,蔆líng,霊líng,駖líng,澪líng,蕶líng,錂líng,霗líng,鲮líng,鴒líng,鹷líng,燯líng,霛líng,霝líng,齢líng,瀮líng,酃líng,鯪líng,孁líng,蘦líng,齡líng,櫺líng,靈líng,欞líng,爧líng,麢líng,龗líng,阾líng,袊líng,靇líng,朎líng,軨líng,醽líng,岭lǐng,领lǐng,領lǐng,嶺lǐng,令lìng,另lìng,呤lìng,炩lìng,溜liū,熘liū,澑liū,蹓liū,刘liú,沠liú,畄liú,浏liú,流liú,留liú,旈liú,琉liú,畱liú,硫liú,裗liú,媹liú,嵧liú,旒liú,蓅liú,遛liú,馏liú,骝liú,榴liú,瑠liú,飗liú,劉liú,瑬liú,瘤liú,磂liú,镏liú,駠liú,鹠liú,橊liú,璢liú,疁liú,癅liú,駵liú,嚠liú,懰liú,瀏liú,藰liú,鎏liú,鎦liú,餾liú,麍liú,鐂liú,騮liú,飅liú,鰡liú,鶹liú,驑liú,蒥liú,飀liú,柳liǔ,栁liǔ,桞liǔ,珋liǔ,桺liǔ,绺liǔ,锍liǔ,綹liǔ,熮liǔ,罶liǔ,鋶liǔ,橮liǔ,羀liǔ,嬼liǔ,畂liù,六liù,翏liù,塯liù,廇liù,磟liù,鹨liù,霤liù,雡liù,鬸liù,鷚liù,飂liù,囖lō,谾lóng,龙lóng,屸lóng,咙lóng,泷lóng,茏lóng,昽lóng,栊lóng,珑lóng,胧lóng,眬lóng,砻lóng,笼lóng,聋lóng,隆lóng,湰lóng,嶐lóng,槞lóng,漋lóng,蕯lóng,癃lóng,窿lóng,篭lóng,龍lóng,巃lóng,巄lóng,瀧lóng,蘢lóng,鏧lóng,霳lóng,曨lóng,櫳lóng,爖lóng,瓏lóng,矓lóng,礱lóng,礲lóng,襱lóng,籠lóng,聾lóng,蠪lóng,蠬lóng,龓lóng,豅lóng,躘lóng,鑨lóng,驡lóng,鸗lóng,滝lóng,嚨lóng,朧lǒng,陇lǒng,垄lǒng,垅lǒng,儱lǒng,隴lǒng,壟lǒng,壠lǒng,攏lǒng,竉lǒng,徿lǒng,拢lǒng,梇lòng,衖lòng,贚lòng,喽lou,嘍lou,窶lóu,娄lóu,婁lóu,溇lóu,蒌lóu,楼lóu,廔lóu,慺lóu,蔞lóu,遱lóu,樓lóu,熡lóu,耧lóu,蝼lóu,艛lóu,螻lóu,謱lóu,軁lóu,髅lóu,鞻lóu,髏lóu,漊lóu,屚lóu,膢lóu,耬lóu,嵝lǒu,搂lǒu,塿lǒu,嶁lǒu,摟lǒu,甊lǒu,篓lǒu,簍lǒu,陋lòu,漏lòu,瘘lòu,镂lòu,瘺lòu,鏤lòu,氌lu,氇lu,噜lū,撸lū,嚕lū,擼lū,卢lú,芦lú,垆lú,枦lú,泸lú,炉lú,栌lú,胪lú,轳lú,舮lú,鸬lú,玈lú,舻lú,颅lú,鈩lú,鲈lú,魲lú,盧lú,嚧lú,壚lú,廬lú,攎lú,瀘lú,獹lú,蘆lú,櫨lú,爐lú,瓐lú,臚lú,矑lú,纑lú,罏lú,艫lú,蠦lú,轤lú,鑪lú,顱lú,髗lú,鱸lú,鸕lú,黸lú,鹵lú,塷lú,庐lú,籚lú,卤lǔ,虏lǔ,挔lǔ,捛lǔ,掳lǔ,硵lǔ,鲁lǔ,虜lǔ,滷lǔ,蓾lǔ,樐lǔ,澛lǔ,魯lǔ,擄lǔ,橹lǔ,磠lǔ,镥lǔ,櫓lǔ,艣lǔ,鏀lǔ,艪lǔ,鐪lǔ,鑥lǔ,瀂lǔ,露lù,圥lù,甪lù,陆lù,侓lù,坴lù,彔lù,录lù,峍lù,勎lù,赂lù,辂lù,陸lù,娽lù,淕lù,淥lù,渌lù,硉lù,菉lù,逯lù,鹿lù,椂lù,琭lù,祿lù,剹lù,勠lù,盝lù,睩lù,碌lù,稑lù,賂lù,路lù,輅lù,塶lù,廘lù,摝lù,漉lù,箓lù,粶lù,蔍lù,戮lù,膟lù,觮lù,趢lù,踛lù,辘lù,醁lù,潞lù,穋lù,錄lù,録lù,錴lù,璐lù,簏lù,螰lù,鴼lù,簶lù,蹗lù,轆lù,騄lù,鹭lù,簬lù,簵lù,鯥lù,鵦lù,鵱lù,麓lù,鏴lù,騼lù,籙lù,虂lù,鷺lù,緑lù,攄lù,禄lù,蕗lù,娈luán,孪luán,峦luán,挛luán,栾luán,鸾luán,脔luán,滦luán,銮luán,鵉luán,奱luán,孿luán,巒luán,曫luán,欒luán,灓luán,羉luán,臠luán,圞luán,灤luán,虊luán,鑾luán,癴luán,癵luán,鸞luán,圝luán,卵luǎn,乱luàn,釠luàn,亂luàn,乿luàn,掠luě,稤luě,略luè,畧luè,锊luè,圙luè,鋝luè,鋢luè,剠luè,擽luè,抡lún,掄lún,仑lún,伦lún,囵lún,沦lún,纶lún,轮lún,倫lún,陯lún,圇lún,婨lún,崘lún,崙lún,惀lún,淪lún,菕lún,棆lún,腀lún,碖lún,綸lún,蜦lún,踚lún,輪lún,磮lún,鯩lún,耣lún,稐lǔn,埨lǔn,侖lùn,溣lùn,論lùn,论lùn,頱luō,囉luō,啰luō,罗luó,猡luó,脶luó,萝luó,逻luó,椤luó,腡luó,锣luó,箩luó,骡luó,镙luó,螺luó,羅luó,覶luó,鏍luó,儸luó,覼luó,騾luó,蘿luó,邏luó,欏luó,鸁luó,鑼luó,饠luó,驘luó,攞luó,籮luó,剆luǒ,倮luǒ,砢luǒ,蓏luǒ,裸luǒ,躶luǒ,瘰luǒ,蠃luǒ,臝luǒ,曪luǒ,癳luǒ,茖luò,蛒luò,硦luò,泺luò,峈luò,洛luò,络luò,荦luò,骆luò,洜luò,珞luò,笿luò,絡luò,落luò,摞luò,漯luò,犖luò,雒luò,鮥luò,鵅luò,濼luò,纙luò,挼luò,跞luò,駱luò,瞜lǘ,瘻lǘ,驴lǘ,闾lǘ,榈lǘ,馿lǘ,氀lǘ,櫚lǘ,藘lǘ,曥lǘ,鷜lǘ,驢lǘ,閭lǘ,偻lǚ,僂lǚ,吕lǚ,呂lǚ,侣lǚ,郘lǚ,侶lǚ,旅lǚ,梠lǚ,焒lǚ,祣lǚ,稆lǚ,铝lǚ,屡lǚ,絽lǚ,缕lǚ,屢lǚ,膂lǚ,膐lǚ,褛lǚ,鋁lǚ,履lǚ,褸lǚ,儢lǚ,縷lǚ,穭lǚ,捋lǚ,穞lǚ,寠lǜ,滤lǜ,濾lǜ,寽lǜ,垏lǜ,律lǜ,虑lǜ,率lǜ,绿lǜ,嵂lǜ,氯lǜ,葎lǜ,綠lǜ,慮lǜ,箻lǜ,勴lǜ,繂lǜ,櫖lǜ,爈lǜ,鑢lǜ,卛lǜ,亇ma,吗ma,嗎ma,嘛ma,妈mā,媽mā,痲mā,孖mā,麻má,嫲má,蔴má,犘má,蟆má,蟇má,尛má,马mǎ,犸mǎ,玛mǎ,码mǎ,蚂mǎ,馬mǎ,溤mǎ,獁mǎ,遤mǎ,瑪mǎ,碼mǎ,螞mǎ,鷌mǎ,鰢mǎ,傌mǎ,榪mǎ,鎷mǎ,杩mà,祃mà,閁mà,骂mà,睰mà,嘜mà,禡mà,罵mà,駡mà,礣mà,鬕mà,貍mái,埋mái,霾mái,买mǎi,荬mǎi,買mǎi,嘪mǎi,蕒mǎi,鷶mǎi,唛mài,劢mài,佅mài,売mài,麦mài,卖mài,脈mài,麥mài,衇mài,勱mài,賣mài,邁mài,霡mài,霢mài,迈mài,颟mān,顢mān,姏mán,悗mán,蛮mán,慲mán,摱mán,馒mán,槾mán,樠mán,瞒mán,瞞mán,鞔mán,饅mán,鳗mán,鬗mán,鬘mán,蠻mán,矕mán,僈mán,屘mǎn,満mǎn,睌mǎn,满mǎn,滿mǎn,螨mǎn,襔mǎn,蟎mǎn,鏋mǎn,曼màn,谩màn,墁màn,幔màn,慢màn,漫màn,獌màn,缦màn,蔄màn,蔓màn,熳màn,澷màn,镘màn,縵màn,蟃màn,鏝màn,蘰màn,鰻màn,謾màn,牤māng,朚máng,龒máng,邙máng,吂máng,忙máng,汒máng,芒máng,尨máng,杗máng,杧máng,盲máng,厖máng,恾máng,笀máng,茫máng,哤máng,娏máng,浝máng,狵máng,牻máng,硭máng,釯máng,铓máng,痝máng,鋩máng,駹máng,蘉máng,氓máng,甿máng,庬máng,鹲máng,鸏máng,莽mǎng,茻mǎng,壾mǎng,漭mǎng,蟒mǎng,蠎mǎng,莾mǎng,匁mangmi,猫māo,貓māo,毛máo,矛máo,枆máo,牦máo,茅máo,旄máo,渵máo,軞máo,酕máo,堥máo,锚máo,緢máo,髦máo,髳máo,錨máo,蟊máo,鶜máo,茆máo,罞máo,鉾máo,冇mǎo,戼mǎo,峁mǎo,泖mǎo,昴mǎo,铆mǎo,笷mǎo,蓩mǎo,鉚mǎo,卯mǎo,秏mào,冃mào,皃mào,芼mào,冐mào,茂mào,冒mào,贸mào,耄mào,袤mào,覒mào,媢mào,帽mào,貿mào,鄚mào,愗mào,暓mào,楙mào,毷mào,瑁mào,貌mào,鄮mào,蝐mào,懋mào,霿mào,獏mào,毣mào,萺mào,瞀mào,唜mas,么me,嚜me,麼me,麽me,庅mē,嚒mē,孭mē,濹mè,嚰mè,沒méi,没méi,枚méi,玫méi,苺méi,栂méi,眉méi,脄méi,莓méi,梅méi,珻méi,脢méi,郿méi,堳méi,媒méi,嵋méi,湄méi,湈méi,睂méi,葿méi,楣méi,楳méi,煤méi,瑂méi,禖méi,腜méi,塺méi,槑méi,酶méi,镅méi,鹛méi,鋂méi,霉méi,徾méi,鎇méi,矀méi,攗méi,蘪méi,鶥méi,攟méi,黴méi,坆méi,猸méi,羙měi,毎měi,每měi,凂měi,美měi,挴měi,浼měi,媄měi,渼měi,媺měi,镁měi,嬍měi,燘měi,躾měi,鎂měi,黣měi,嵄měi,眊mèi,妹mèi,抺mèi,沬mèi,昧mèi,祙mèi,袂mèi,眛mèi,媚mèi,寐mèi,痗mèi,跊mèi,鬽mèi,煝mèi,睸mèi,魅mèi,篃mèi,蝞mèi,櫗mèi,氼mèi,们men,們men,椚mēn,门mén,扪mén,钔mén,門mén,閅mén,捫mén,菛mén,璊mén,穈mén,鍆mén,虋mén,怋mén,玣mén,殙mèn,闷mèn,焖mèn,悶mèn,暪mèn,燜mèn,懑mèn,懣mèn,掹mēng,擝mēng,懞mēng,虻méng,冡méng,莔méng,萌méng,萠méng,盟méng,甍méng,儚méng,橗méng,瞢méng,蕄méng,蝱méng,鄳méng,鄸méng,幪méng,濛méng,獴méng,曚méng,朦méng,檬méng,氋méng,礞méng,鯍méng,艨méng,矒méng,靀méng,饛méng,顭méng,蒙méng,鼆méng,夣méng,懜méng,溕méng,矇měng,勐měng,猛měng,锰měng,艋měng,蜢měng,錳měng,懵měng,蠓měng,鯭měng,黽měng,瓾měng,夢mèng,孟mèng,梦mèng,霥mèng,踎meo,咪mī,瞇mī,眯mī,冞mí,弥mí,祢mí,迷mí,袮mí,猕mí,谜mí,蒾mí,詸mí,謎mí,醚mí,彌mí,糜mí,縻mí,麊mí,麋mí,禰mí,靡mí,獼mí,麛mí,爢mí,瓕mí,蘼mí,镾mí,醾mí,醿mí,鸍mí,釄mí,檷mí,籋mí,罙mí,擟mí,米mǐ,羋mǐ,芈mǐ,侎mǐ,沵mǐ,弭mǐ,洣mǐ,敉mǐ,粎mǐ,脒mǐ,葞mǐ,蝆mǐ,蔝mǐ,銤mǐ,瀰mǐ,孊mǐ,灖mǐ,渳mǐ,哋mì,汨mì,沕mì,宓mì,泌mì,觅mì,峚mì,宻mì,秘mì,密mì,淧mì,覓mì,覔mì,幂mì,谧mì,塓mì,幎mì,覛mì,嘧mì,榓mì,漞mì,熐mì,蔤mì,蜜mì,鼏mì,冪mì,樒mì,幦mì,濗mì,藌mì,謐mì,櫁mì,簚mì,羃mì,鑖mì,蓂mì,滵mì,芇mián,眠mián,婂mián,绵mián,媔mián,棉mián,綿mián,緜mián,蝒mián,嬵mián,檰mián,櫋mián,矈mián,矊mián,蠠mián,矏mián,厸miǎn,丏miǎn,汅miǎn,免miǎn,沔miǎn,黾miǎn,俛miǎn,勉miǎn,眄miǎn,娩miǎn,偭miǎn,冕miǎn,勔miǎn,喕miǎn,愐miǎn,湎miǎn,缅miǎn,葂miǎn,腼miǎn,緬miǎn,鮸miǎn,渑miǎn,澠miǎn,靦miǎn,靣miàn,面miàn,糆miàn,麪miàn,麫miàn,麺miàn,麵miàn,喵miāo,苗miáo,媌miáo,瞄miáo,鹋miáo,嫹miáo,鶓miáo,鱙miáo,描miáo,訬miǎo,仯miǎo,杪miǎo,眇miǎo,秒miǎo,淼miǎo,渺miǎo,缈miǎo,篎miǎo,緲miǎo,藐miǎo,邈miǎo,妙miào,庙miào,竗miào,庿miào,廟miào,吀miē,咩miē,哶miē,灭miè,搣miè,滅miè,薎miè,幭miè,懱miè,篾miè,蠛miè,衊miè,鱴miè,蔑miè,民mín,垊mín,姄mín,岷mín,旻mín,旼mín,玟mín,苠mín,珉mín,盿mín,冧mín,罠mín,崏mín,捪mín,琘mín,琝mín,暋mín,瑉mín,痻mín,碈mín,鈱mín,賯mín,錉mín,鍲mín,缗mín,湏mǐn,緍mǐn,緡mǐn,皿mǐn,冺mǐn,刡mǐn,闵mǐn,抿mǐn,泯mǐn,勄mǐn,敃mǐn,闽mǐn,悯mǐn,敏mǐn,笢mǐn,笽mǐn,湣mǐn,閔mǐn,愍mǐn,敯mǐn,閩mǐn,慜mǐn,憫mǐn,潣mǐn,簢mǐn,鳘mǐn,鰵mǐn,僶mǐn,名míng,明míng,鸣míng,洺míng,眀míng,茗míng,冥míng,朙míng,眳míng,铭míng,鄍míng,嫇míng,溟míng,猽míng,暝míng,榠míng,銘míng,鳴míng,瞑míng,螟míng,覭míng,佲mǐng,凕mǐng,慏mǐng,酩mǐng,姳mǐng,命mìng,掵mìng,詺mìng,谬miù,缪miù,繆miù,謬miù,摸mō,嚤mō,嬤mó,嬷mó,戂mó,攠mó,谟mó,嫫mó,馍mó,摹mó,模mó,膜mó,摩mó,魹mó,橅mó,磨mó,糢mó,謨mó,謩mó,擵mó,饃mó,蘑mó,髍mó,魔mó,劘mó,饝mó,嚩mó,懡mǒ,麿mǒ,狢mò,貈mò,貉mò,脉mò,瀎mò,抹mò,末mò,劰mò,圽mò,妺mò,怽mò,歿mò,殁mò,沫mò,茉mò,陌mò,帞mò,昩mò,枺mò,皌mò,眜mò,眿mò,砞mò,秣mò,莈mò,眽mò,粖mò,絈mò,蛨mò,貃mò,嗼mò,塻mò,寞mò,漠mò,蓦mò,貊mò,銆mò,墨mò,嫼mò,暯mò,瘼mò,瞐mò,瞙mò,镆mò,魩mò,黙mò,縸mò,默mò,貘mò,藦mò,蟔mò,鏌mò,爅mò,礳mò,纆mò,耱mò,艒mò,莫mò,驀mò,乮mol,哞mōu,呣móu,蛑móu,蝥móu,牟móu,侔móu,劺móu,恈móu,洠móu,眸móu,谋móu,謀móu,鍪móu,鴾móu,麰móu,鞪móu,某mǒu,呒mú,嘸mú,毪mú,氁mú,母mǔ,亩mǔ,牡mǔ,姆mǔ,拇mǔ,牳mǔ,畆mǔ,畒mǔ,胟mǔ,畝mǔ,畞mǔ,砪mǔ,畮mǔ,鉧mǔ,踇mǔ,坶mǔ,峔mǔ,朷mù,木mù,仫mù,目mù,凩mù,沐mù,狇mù,炑mù,牧mù,苜mù,莯mù,蚞mù,钼mù,募mù,雮mù,墓mù,幕mù,慔mù,楘mù,睦mù,鉬mù,慕mù,暮mù,樢mù,霂mù,穆mù,幙mù,旀myeo,椧myeong,秅ná,拏ná,拿ná,挐ná,誽ná,镎ná,鎿ná,乸ná,詉ná,蒘ná,訤ná,哪nǎ,雫nǎ,郍nǎ,那nà,吶nà,妠nà,纳nà,肭nà,娜nà,钠nà,納nà,袦nà,捺nà,笝nà,豽nà,軜nà,鈉nà,嗱nà,蒳nà,靹nà,魶nà,呐nà,內nà,篛nà,衲nà,腉nái,熋nái,摨nái,孻nái,螚nái,搱nái,乃nǎi,奶nǎi,艿nǎi,氖nǎi,疓nǎi,妳nǎi,廼nǎi,迺nǎi,倷nǎi,釢nǎi,奈nài,柰nài,萘nài,渿nài,鼐nài,褦nài,錼nài,耐nài,囡nān,男nán,抩nán,枏nán,枬nán,侽nán,南nán,柟nán,娚nán,畘nán,莮nán,难nán,喃nán,遖nán,暔nán,楠nán,煵nán,諵nán,難nán,萳nán,嫨nǎn,赧nǎn,揇nǎn,湳nǎn,腩nǎn,戁nǎn,蝻nǎn,婻nàn,囔nāng,涳náng,乪náng,嚢náng,囊náng,蠰náng,鬞náng,馕náng,欜náng,饢náng,搑náng,崀nǎng,擃nǎng,曩nǎng,攮nǎng,灢nǎng,瀼nǎng,儾nàng,齉nàng,孬nāo,檂nāo,巙náo,呶náo,怓náo,挠náo,峱náo,硇náo,铙náo,猱náo,蛲náo,碙náo,撓náo,獶náo,蟯náo,夒náo,譊náo,鐃náo,巎náo,獿náo,憹náo,蝚náo,嶩náo,垴nǎo,恼nǎo,悩nǎo,脑nǎo,匘nǎo,脳nǎo,堖nǎo,惱nǎo,嫐nǎo,瑙nǎo,腦nǎo,碯nǎo,闹nào,婥nào,淖nào,閙nào,鬧nào,臑nào,呢ne,讷nè,抐nè,眲nè,訥nè,娞něi,馁něi,腇něi,餒něi,鮾něi,鯘něi,浽něi,内nèi,氝nèi,焾nem,嫩nèn,媆nèn,嫰nèn,竜néng,能néng,莻neus,鈪ngag,銰ngai,啱ngam,妮nī,尼ní,坭ní,怩ní,泥ní,籾ní,倪ní,屔ní,秜ní,郳ní,铌ní,埿ní,婗ní,猊ní,蚭ní,棿ní,跜ní,鈮ní,蜺ní,觬ní,貎ní,霓ní,鲵ní,鯢ní,麑ní,齯ní,臡ní,抳ní,蛪ní,腝ní,淣ní,聻nǐ,濔nǐ,伱nǐ,你nǐ,拟nǐ,狔nǐ,苨nǐ,柅nǐ,旎nǐ,晲nǐ,孴nǐ,鉨nǐ,馜nǐ,隬nǐ,擬nǐ,薿nǐ,鑈nǐ,儞nǐ,伲nì,迡nì,昵nì,胒nì,逆nì,匿nì,痆nì,眤nì,堄nì,惄nì,嫟nì,愵nì,溺nì,睨nì,腻nì,暱nì,縌nì,膩nì,嬺nì,灄nì,孨nì,拈niān,蔫niān,年nián,秊nián,哖nián,秥nián,鮎nián,鲶nián,鵇nián,黏nián,鯰nián,姩nián,鲇nián,跈niǎn,涊niǎn,捻niǎn,淰niǎn,辇niǎn,撚niǎn,撵niǎn,碾niǎn,輦niǎn,簐niǎn,攆niǎn,蹨niǎn,躎niǎn,辗niǎn,輾niǎn,卄niàn,廿niàn,念niàn,埝niàn,艌niàn,娘niáng,嬢niáng,醸niáng,酿niàng,釀niàng,茮niǎo,尦niǎo,鸟niǎo,袅niǎo,鳥niǎo,嫋niǎo,裊niǎo,蔦niǎo,嬝niǎo,褭niǎo,嬲niǎo,茑niǎo,尿niào,脲niào,捏niē,揑niē,乜niè,帇niè,圼niè,苶niè,枿niè,陧niè,涅niè,聂niè,臬niè,啮niè,惗niè,菍niè,隉niè,喦niè,敜niè,嗫niè,嵲niè,踂niè,摰niè,槷niè,踗niè,踙niè,镊niè,镍niè,嶭niè,篞niè,臲niè,錜niè,颞niè,蹑niè,嚙niè,聶niè,鎳niè,闑niè,孼niè,孽niè,櫱niè,蘖niè,囁niè,齧niè,巕niè,糱niè,糵niè,蠥niè,囓niè,躡niè,鑷niè,顳niè,諗niè,囐niè,銸niè,鋷niè,讘niè,脌nīn,囜nín,您nín,恁nín,拰nǐn,宁níng,咛níng,狞níng,柠níng,聍níng,寍níng,寕níng,寜níng,寧níng,儜níng,凝níng,嚀níng,嬣níng,獰níng,薴níng,檸níng,聹níng,鑏níng,鬡níng,鸋níng,甯níng,濘níng,鬤níng,拧nǐng,擰nǐng,矃nǐng,橣nǐng,佞nìng,侫nìng,泞nìng,寗nìng,澝nìng,妞niū,牛niú,牜niú,忸niǔ,扭niǔ,沑niǔ,狃niǔ,纽niǔ,杻niǔ,炄niǔ,钮niǔ,紐niǔ,莥niǔ,鈕niǔ,靵niǔ,拗niù,莀nóng,农nóng,侬nóng,哝nóng,浓nóng,脓nóng,秾nóng,儂nóng,辳nóng,噥nóng,濃nóng,蕽nóng,禯nóng,膿nóng,穠nóng,襛nóng,醲nóng,欁nóng,癑nóng,農nóng,繷nǒng,廾nòng,弄nòng,挊nòng,挵nòng,齈nòng,羺nóu,譨nóu,啂nǒu,槈nòu,耨nòu,獳nòu,檽nòu,鎒nòu,鐞nòu,譳nòu,嬬nòu,奴nú,驽nú,笯nú,駑nú,砮nú,孥nú,伮nǔ,努nǔ,弩nǔ,胬nǔ,怒nù,傉nù,搙nù,奻nuán,渜nuán,暖nuǎn,煗nuǎn,餪nuǎn,疟nuè,虐nuè,瘧nuè,硸nuè,黁nun,燶nung,挪nuó,梛nuó,傩nuó,搻nuó,儺nuó,橠nuó,袲nuǒ,诺nuò,喏nuò,掿nuò,逽nuò,搦nuò,锘nuò,榒nuò,稬nuò,諾nuò,蹃nuò,糑nuò,懦nuò,懧nuò,糥nuò,穤nuò,糯nuò,堧nuò,耎nuò,愞nuò,女nǚ,钕nǚ,籹nǚ,釹nǚ,衂nǜ,恧nǜ,朒nǜ,衄nǜ,筽o,噢ō,哦ò,夞oes,乯ol,鞰on,吽ōu,讴ōu,欧ōu,殴ōu,瓯ōu,鸥ōu,塸ōu,歐ōu,毆ōu,熰ōu,甌ōu,膒ōu,鴎ōu,櫙ōu,藲ōu,謳ōu,鏂ōu,鷗ōu,沤ōu,蓲ōu,敺ōu,醧ōu,漚ōu,齵óu,澫ǒu,吘ǒu,呕ǒu,偶ǒu,腢ǒu,嘔ǒu,耦ǒu,蕅ǒu,藕ǒu,怄òu,慪òu,妑pā,趴pā,舥pā,啪pā,葩pā,帊pā,杷pá,爬pá,耙pá,掱pá,琶pá,筢pá,潖pá,跁pá,帕pà,怕pà,袙pà,拍pāi,俳pái,徘pái,排pái,猅pái,牌pái,輫pái,簰pái,犤pái,哌pài,派pài,蒎pài,鎃pài,湃pài,磗pak,眅pān,畨pān,潘pān,攀pān,膰pán,爿pán,柈pán,盘pán,媻pán,幋pán,蒰pán,槃pán,盤pán,磐pán,縏pán,蹒pán,瀊pán,蟠pán,蹣pán,鎜pán,鞶pán,踫pán,宷pán,洀pán,闆pǎn,坢pǎn,盻pǎn,眫pàn,冸pàn,判pàn,沜pàn,泮pàn,叛pàn,牉pàn,盼pàn,畔pàn,袢pàn,詊pàn,溿pàn,頖pàn,鋬pàn,鵥pàn,襻pàn,鑻pàn,炍pàn,乓pāng,汸pāng,沗pāng,肨pāng,胮pāng,雱pāng,滂pāng,膖pāng,霶pāng,磅páng,趽páng,彷páng,夆páng,厐páng,庞páng,逄páng,旁páng,舽páng,篣páng,螃páng,鳑páng,龐páng,鰟páng,蠭páng,髈páng,龎páng,耪pǎng,覫pǎng,炐pàng,胖pàng,抛pāo,拋pāo,脬pāo,刨páo,咆páo,垉páo,庖páo,狍páo,炰páo,爮páo,袍páo,匏páo,軳páo,鞄páo,褜páo,麅páo,颮páo,跑pǎo,窌pào,炮pào,奅pào,泡pào,皰pào,砲pào,萢pào,麭pào,礟pào,礮pào,犥pào,疱pào,妚pēi,呸pēi,怌pēi,肧pēi,胚pēi,衃pēi,醅pēi,抷pēi,阫péi,陪péi,陫péi,培péi,毰péi,赔péi,锫péi,裴péi,裵péi,賠péi,錇péi,駍péi,婄péi,俖pěi,茷pèi,攈pèi,伂pèi,沛pèi,佩pèi,帔pèi,姵pèi,旆pèi,浿pèi,珮pèi,配pèi,笩pèi,蓜pèi,辔pèi,馷pèi,嶏pèi,霈pèi,轡pèi,斾pèi,喷pēn,噴pēn,濆pēn,歕pēn,衯pén,瓫pén,盆pén,湓pén,葐pén,呠pěn,翸pěn,匉pēng,怦pēng,抨pēng,泙pēng,恲pēng,胓pēng,砰pēng,烹pēng,硑pēng,軯pēng,閛pēng,漰pēng,嘭pēng,磞pēng,弸pēng,荓pēng,軿pēng,輧pēng,梈pēng,芃péng,朋péng,竼péng,倗péng,莑péng,堋péng,彭péng,棚péng,椖péng,塜péng,塳péng,漨péng,硼péng,稝péng,蓬péng,鹏péng,槰péng,樥péng,憉péng,澎péng,輣péng,篷péng,膨péng,韸péng,髼péng,蟚péng,蟛péng,鬅péng,纄péng,韼péng,鵬péng,鬔péng,鑝péng,淜péng,熢péng,摓pěng,捧pěng,淎pěng,皏pěng,剻pěng,掽pèng,椪pèng,碰pèng,浌peol,巼phas,闏phdeng,乶phoi,喸phos,榌pi,伓pī,伾pī,批pī,纰pī,邳pī,坯pī,披pī,炋pī,狉pī,狓pī,砒pī,秛pī,秠pī,紕pī,耚pī,豾pī,釽pī,鉟pī,銔pī,劈pī,磇pī,駓pī,噼pī,錃pī,魾pī,憵pī,礔pī,礕pī,霹pī,鲏pī,鮍pī,丕pī,髬pī,铍pí,鈹pí,皮pí,阰pí,芘pí,岯pí,枇pí,毞pí,毗pí,毘pí,疲pí,蚍pí,郫pí,陴pí,啤pí,埤pí,蚽pí,豼pí,焷pí,脾pí,腗pí,罴pí,膍pí,蜱pí,隦pí,壀pí,篺pí,螷pí,貔pí,簲pí,羆pí,鵧pí,朇pí,鼙pí,蠯pí,猈pí,琵pí,匹pǐ,庀pǐ,仳pǐ,圮pǐ,苉pǐ,脴pǐ,痞pǐ,銢pǐ,鴄pǐ,噽pǐ,癖pǐ,嚭pǐ,顖pǐ,擗pǐ,辟pì,鈲pì,闢pì,屁pì,淠pì,渒pì,揊pì,媲pì,嫓pì,睤pì,睥pì,潎pì,僻pì,澼pì,嚊pì,甓pì,疈pì,譬pì,鷿pì,囨piān,偏piān,媥piān,犏piān,篇piān,翩piān,骈pián,胼pián,楄pián,楩pián,賆pián,諚pián,骿pián,蹁pián,駢pián,騈pián,徧pián,腁pián,覑piǎn,谝piǎn,貵piǎn,諞piǎn,片piàn,骗piàn,魸piàn,騗piàn,騙piàn,剽piāo,彯piāo,漂piāo,缥piāo,飘piāo,磦piāo,旚piāo,縹piāo,翲piāo,螵piāo,飄piāo,魒piāo,薸piáo,闝piáo,嫖piáo,瓢piáo,莩piǎo,殍piǎo,瞟piǎo,醥piǎo,皫piǎo,顠piǎo,飃piào,票piào,勡piào,嘌piào,慓piào,覕piē,氕piē,撆piē,暼piē,瞥piē,撇piě,丿piě,苤piě,鐅piě,嫳piè,拚pīn,姘pīn,拼pīn,礗pīn,穦pīn,馪pīn,驞pīn,贫pín,貧pín,嫔pín,频pín,頻pín,嬪pín,薲pín,嚬pín,矉pín,颦pín,顰pín,蘋pín,玭pín,品pǐn,榀pǐn,朩pìn,牝pìn,汖pìn,聘pìn,娉pīng,乒pīng,甹pīng,俜pīng,涄pīng,砯pīng,艵pīng,竮pīng,頩pīng,冖píng,平píng,评píng,凭píng,坪píng,岼píng,苹píng,郱píng,屏píng,帡píng,枰píng,洴píng,玶píng,娦píng,瓶píng,屛píng,帲píng,萍píng,蚲píng,塀píng,幈píng,焩píng,甁píng,缾píng,聠píng,蓱píng,蛢píng,評píng,鲆píng,凴píng,慿píng,憑píng,鮃píng,簈píng,呯píng,箳píng,鏺po,钋pō,坡pō,岥pō,泼pō,釙pō,颇pō,溌pō,酦pō,潑pō,醱pō,頗pō,攴pō,巿pó,婆pó,嘙pó,鄱pó,皤pó,謈pó,櫇pó,叵pǒ,尀pǒ,钷pǒ,笸pǒ,鉕pǒ,駊pǒ,屰pò,廹pò,岶pò,迫pò,敀pò,昢pò,洦pò,珀pò,烞pò,破pò,砶pò,粕pò,奤pò,蒪pò,魄pò,皛pò,頮pōu,剖pōu,颒pōu,抙pōu,捊pōu,抔póu,掊póu,裒póu,咅pǒu,哣pǒu,犃pǒu,兺ppun,哛ppun,巬pu,巭pu,扑pū,炇pū,痡pū,駇pū,噗pū,撲pū,鋪pū,潽pū,襆pú,脯pú,蜅pú,仆pú,圤pú,匍pú,莆pú,菩pú,菐pú,葡pú,蒱pú,蒲pú,僕pú,酺pú,墣pú,璞pú,瞨pú,穙pú,镤pú,贌pú,纀pú,鏷pú,襥pú,濮pú,朴pǔ,圃pǔ,埔pǔ,浦pǔ,烳pǔ,普pǔ,圑pǔ,溥pǔ,暜pǔ,谱pǔ,樸pǔ,氆pǔ,諩pǔ,檏pǔ,镨pǔ,譜pǔ,蹼pǔ,鐠pǔ,铺pù,舖pù,舗pù,曝pù,七qī,沏qī,妻qī,恓qī,柒qī,倛qī,凄qī,栖qī,桤qī,缼qī,郪qī,娸qī,戚qī,捿qī,桼qī,淒qī,萋qī,朞qī,期qī,棲qī,欺qī,紪qī,褄qī,僛qī,嘁qī,慽qī,榿qī,漆qī,緀qī,磎qī,諆qī,諿qī,霋qī,蹊qī,魌qī,鏚qī,鶈qī,碕qī,螇qī,傶qī,迉qī,軙qí,荎qí,饑qí,亓qí,祁qí,齐qí,圻qí,岐qí,岓qí,忯qí,芪qí,亝qí,其qí,奇qí,斉qí,歧qí,祇qí,祈qí,肵qí,疧qí,竒qí,剘qí,斊qí,旂qí,脐qí,蚑qí,蚔qí,蚚qí,颀qí,埼qí,崎qí,掑qí,淇qí,渏qí,猉qí,畦qí,萁qí,跂qí,軝qí,釮qí,骐qí,骑qí,嵜qí,棊qí,棋qí,琦qí,琪qí,祺qí,蛴qí,愭qí,碁qí,鬿qí,旗qí,粸qí,綥qí,綦qí,綨qí,緕qí,蜝qí,蜞qí,齊qí,禥qí,蕲qí,螧qí,鲯qí,濝qí,藄qí,檱qí,櫀qí,簱qí,臍qí,騎qí,騏qí,鳍qí,蘄qí,鵸qí,鶀qí,麒qí,籏qí,纃qí,艩qí,蠐qí,鬐qí,騹qí,魕qí,鰭qí,玂qí,麡qí,荠qí,薺qí,扺qí,耆qí,鯕qí,袳qǐ,乞qǐ,邔qǐ,企qǐ,屺qǐ,岂qǐ,芑qǐ,启qǐ,呇qǐ,杞qǐ,玘qǐ,盀qǐ,唘qǐ,豈qǐ,起qǐ,啓qǐ,啔qǐ,啟qǐ,绮qǐ,棨qǐ,綮qǐ,綺qǐ,諬qǐ,簯qǐ,闙qǐ,梩qǐ,婍qǐ,鼜qì,悽qì,槭qì,气qì,讫qì,気qì,汔qì,迄qì,弃qì,汽qì,芞qì,呮qì,泣qì,炁qì,盵qì,咠qì,契qì,砌qì,栔qì,氣qì,訖qì,唭qì,夡qì,棄qì,湆qì,湇qì,葺qì,碛qì,摖qì,暣qì,甈qì,碶qì,噐qì,憇qì,器qì,憩qì,磜qì,磧qì,磩qì,罊qì,趞qì,洓qì,慼qì,欫qì,掐qiā,葜qiā,愘qiā,搳qiā,拤qiá,跒qiǎ,酠qiǎ,鞐qiǎ,圶qià,冾qià,恰qià,洽qià,殎qià,硈qià,髂qià,磍qià,帢qià,千qiān,仟qiān,阡qiān,圱qiān,圲qiān,奷qiān,扦qiān,汘qiān,芊qiān,迁qiān,佥qiān,岍qiān,杄qiān,汧qiān,茾qiān,竏qiān,臤qiān,钎qiān,拪qiān,牵qiān,粁qiān,悭qiān,蚈qiān,铅qiān,牽qiān,釺qiān,谦qiān,鈆qiān,僉qiān,愆qiān,签qiān,鉛qiān,骞qiān,鹐qiān,慳qiān,搴qiān,撁qiān,箞qiān,諐qiān,遷qiān,褰qiān,謙qiān,顅qiān,檶qiān,攐qiān,攑qiān,櫏qiān,簽qiān,鵮qiān,攓qiān,騫qiān,鬜qiān,鬝qiān,籤qiān,韆qiān,鋟qiān,扡qiān,杴qiān,孅qiān,藖qiān,谸qiān,鏲qiān,朁qián,岒qián,忴qián,扲qián,拑qián,前qián,荨qián,钤qián,歬qián,虔qián,钱qián,钳qián,乾qián,掮qián,軡qián,媊qián,鈐qián,鉗qián,榩qián,箝qián,潜qián,羬qián,橬qián,錢qián,黔qián,鎆qián,騝qián,濳qián,騚qián,灊qián,籖qián,鰬qián,潛qián,蚙qián,煔qián,燂qián,葴qián,鍼qián,墘qián,浅qiǎn,肷qiǎn,淺qiǎn,嵰qiǎn,遣qiǎn,槏qiǎn,膁qiǎn,蜸qiǎn,谴qiǎn,缱qiǎn,譴qiǎn,鑓qiǎn,繾qiǎn,欠qiàn,刋qiàn,伣qiàn,芡qiàn,俔qiàn,茜qiàn,倩qiàn,悓qiàn,堑qiàn,嵌qiàn,棈qiàn,椠qiàn,嗛qiàn,皘qiàn,蒨qiàn,塹qiàn,歉qiàn,綪qiàn,蔳qiàn,儙qiàn,槧qiàn,篏qiàn,輤qiàn,篟qiàn,壍qiàn,嬱qiàn,縴qiàn,廞qiàn,鸧qiāng,鶬qiāng,羌qiāng,戕qiāng,戗qiāng,斨qiāng,枪qiāng,玱qiāng,猐qiāng,琷qiāng,跄qiāng,嗴qiāng,獇qiāng,腔qiāng,溬qiāng,蜣qiāng,锖qiāng,嶈qiāng,戧qiāng,槍qiāng,牄qiāng,瑲qiāng,锵qiāng,篬qiāng,錆qiāng,蹌qiāng,镪qiāng,蹡qiāng,鏘qiāng,鏹qiāng,啌qiāng,鎗qiāng,強qiáng,强qiáng,墙qiáng,嫱qiáng,蔷qiáng,樯qiáng,漒qiáng,墻qiáng,嬙qiáng,廧qiáng,薔qiáng,檣qiáng,牆qiáng,謒qiáng,艢qiáng,蘠qiáng,抢qiǎng,羟qiǎng,搶qiǎng,羥qiǎng,墏qiǎng,摤qiǎng,繈qiǎng,襁qiǎng,繦qiǎng,嗆qiàng,炝qiàng,唴qiàng,羻qiàng,呛qiàng,熗qiàng,悄qiāo,硗qiāo,郻qiāo,跷qiāo,鄡qiāo,鄥qiāo,劁qiāo,敲qiāo,踍qiāo,锹qiāo,碻qiāo,頝qiāo,墽qiāo,幧qiāo,橇qiāo,燆qiāo,缲qiāo,鍫qiāo,鍬qiāo,繰qiāo,趬qiāo,鐰qiāo,鞽qiāo,塙qiāo,毃qiāo,鏒qiāo,橾qiāo,喿qiāo,蹺qiāo,峤qiáo,嶠qiáo,乔qiáo,侨qiáo,荍qiáo,荞qiáo,桥qiáo,硚qiáo,菬qiáo,喬qiáo,睄qiáo,僑qiáo,槗qiáo,谯qiáo,嘺qiáo,憔qiáo,蕎qiáo,鞒qiáo,樵qiáo,橋qiáo,犞qiáo,癄qiáo,瞧qiáo,礄qiáo,藮qiáo,譙qiáo,鐈qiáo,墧qiáo,顦qiáo,磽qiǎo,巧qiǎo,愀qiǎo,髜qiǎo,偢qiào,墝qiào,俏qiào,诮qiào,陗qiào,峭qiào,帩qiào,窍qiào,翘qiào,誚qiào,髚qiào,僺qiào,撬qiào,鞘qiào,韒qiào,竅qiào,翹qiào,鞩qiào,躈qiào,踃qiào,切qiē,苆qiē,癿qié,茄qié,聺qié,且qiě,詧qiè,慊qiè,厒qiè,怯qiè,匧qiè,窃qiè,倿qiè,悏qiè,挈qiè,惬qiè,笡qiè,愜qiè,朅qiè,箧qiè,緁qiè,锲qiè,篋qiè,踥qiè,穕qiè,藒qiè,鍥qiè,鯜qiè,鐑qiè,竊qiè,籡qiè,帹qiè,郄qiè,郤qiè,稧qiè,妾qiè,亲qīn,侵qīn,钦qīn,衾qīn,菳qīn,媇qīn,嵚qīn,綅qīn,誛qīn,嶔qīn,親qīn,顉qīn,駸qīn,鮼qīn,寴qīn,欽qīn,骎qīn,鈂qín,庈qín,芩qín,芹qín,埁qín,珡qín,矝qín,秦qín,耹qín,菦qín,捦qín,琴qín,琹qín,禽qín,鈙qín,雂qín,勤qín,嗪qín,嫀qín,靲qín,噙qín,擒qín,鳹qín,懄qín,檎qín,澿qín,瘽qín,螓qín,懃qín,蠄qín,鬵qín,溱qín,坅qǐn,昑qǐn,笉qǐn,梫qǐn,赾qǐn,寑qǐn,锓qǐn,寝qǐn,寢qǐn,螼qǐn,儭qìn,櫬qìn,吢qìn,吣qìn,抋qìn,沁qìn,唚qìn,菣qìn,搇qìn,撳qìn,瀙qìn,藽qìn,鈊qìn,揿qìn,鶄qīng,青qīng,氢qīng,轻qīng,倾qīng,卿qīng,郬qīng,圊qīng,埥qīng,氫qīng,淸qīng,清qīng,軽qīng,傾qīng,廎qīng,蜻qīng,輕qīng,鲭qīng,鯖qīng,鑋qīng,庼qīng,漀qīng,靘qīng,夝qíng,甠qíng,勍qíng,情qíng,硘qíng,晴qíng,棾qíng,氰qíng,暒qíng,樈qíng,擎qíng,檠qíng,黥qíng,殑qíng,苘qǐng,顷qǐng,请qǐng,頃qǐng,請qǐng,檾qǐng,謦qǐng,庆qìng,摐chuāng,牀chuáng,磢chuǎng,刱chuàng,吹chuī,糚zhuāng,庒zhuāng,漴zhuàng,丬zhuàng,壮zhuàng,凊qìng,掅qìng,碃qìng,箐qìng,慶qìng,磬qìng,罄qìng,櫦qìng,濪qìng,藭qiong,跫qióng,銎qióng,卭qióng,邛qióng,穷qióng,穹qióng,茕qióng,桏qióng,笻qióng,筇qióng,赹qióng,惸qióng,焪qióng,焭qióng,琼qióng,蛩qióng,蛬qióng,煢qióng,熍qióng,睘qióng,窮qióng,儝qióng,憌qióng,橩qióng,瓊qióng,竆qióng,嬛qióng,琁qióng,藑qióng,湫qiū,丘qiū,丠qiū,邱qiū,坵qiū,恘qiū,秋qiū,秌qiū,寈qiū,蚯qiū,媝qiū,楸qiū,鹙qiū,篍qiū,緧qiū,蝵qiū,穐qiū,趥qiū,鳅qiū,蟗qiū,鞦qiū,鞧qiū,蘒qiū,鰌qiū,鰍qiū,鱃qiū,龝qiū,逎qiū,櫹qiū,鶖qiū,叴qiú,囚qiú,扏qiú,犰qiú,玌qiú,肍qiú,求qiú,虬qiú,泅qiú,虯qiú,俅qiú,觓qiú,訅qiú,酋qiú,唒qiú,浗qiú,紌qiú,莍qiú,逑qiú,釚qiú,梂qiú,殏qiú,毬qiú,球qiú,釻qiú,崷qiú,巯qiú,湭qiú,皳qiú,盚qiú,遒qiú,煪qiú,絿qiú,蛷qiú,裘qiú,巰qiú,觩qiú,賕qiú,璆qiú,銶qiú,醔qiú,鮂qiú,鼽qiú,鯄qiú,鵭qiú,蠤qiú,鰽qiú,厹qiú,赇qiú,搝qiǔ,糗qiǔ,趍qū,匚qū,区qū,伹qū,匤qū,岖qū,诎qū,阹qū,驱qū,屈qū,岨qū,岴qū,抾qū,浀qū,祛qū,胠qū,袪qū,區qū,蛆qū,躯qū,筁qū,粬qū,蛐qū,詘qū,趋qū,嶇qū,駆qū,憈qū,駈qū,麹qū,髷qū,趨qū,麯qū,軀qū,麴qū,黢qū,驅qū,鰸qū,鱋qū,紶qū,厺qū,佉qū,跼qú,瞿qú,佢qú,劬qú,斪qú,朐qú,胊qú,菃qú,衐qú,鸲qú,淭qú,渠qú,絇qú,葋qú,蕖qú,璖qú,磲qú,璩qú,鼩qú,蘧qú,灈qú,戵qú,欋qú,氍qú,臞qú,癯qú,蠷qú,衢qú,躣qú,蠼qú,鑺qú,臒qú,蟝qú,曲qǔ,取qǔ,娶qǔ,詓qǔ,竬qǔ,龋qǔ,齲qǔ,去qù,刞qù,耝qù,阒qù,觑qù,趣qù,閴qù,麮qù,闃qù,覰qù,覷qù,鼁qù,覻qù,迲qù,峑quān,恮quān,悛quān,圈quān,駩quān,騡quān,鐉quān,腃quān,全quán,权quán,佺quán,诠quán,姾quán,泉quán,洤quán,荃quán,拳quán,辁quán,婘quán,痊quán,硂quán,铨quán,湶quán,犈quán,筌quán,絟quán,葲quán,搼quán,楾quán,瑔quán,觠quán,詮quán,跧quán,輇quán,蜷quán,銓quán,権quán,縓quán,醛quán,闎quán,鳈quán,鬈quán,巏quán,鰁quán,權quán,齤quán,颧quán,顴quán,灥quán,譔quán,牷quán,孉quán,犬quǎn,甽quǎn,畎quǎn,烇quǎn,绻quǎn,綣quǎn,虇quǎn,劝quàn,券quàn,巻quàn,牶quàn,椦quàn,勧quàn,勸quàn,炔quē,缺quē,蒛quē,瘸qué,却què,卻què,崅què,悫què,雀què,确què,阕què,皵què,碏què,阙què,鹊què,愨què,榷què,慤què,確què,燩què,闋què,闕què,鵲què,礭què,殻què,埆què,踆qūn,夋qūn,囷qūn,峮qūn,逡qūn,帬qún,裙qún,羣qún,群qún,裠qún,亽ra,罖ra,囕ram,呥rán,肰rán,衻rán,袇rán,蚦rán,袡rán,蚺rán,然rán,髥rán,嘫rán,髯rán,燃rán,繎rán,冄rán,冉rǎn,姌rǎn,苒rǎn,染rǎn,珃rǎn,媣rǎn,蒅rǎn,孃ráng,穣ráng,獽ráng,禳ráng,瓤ráng,穰ráng,躟ráng,壌rǎng,嚷rǎng,壤rǎng,攘rǎng,爙rǎng,让ràng,懹ràng,譲ràng,讓ràng,荛ráo,饶ráo,桡ráo,橈ráo,襓ráo,饒ráo,犪ráo,嬈ráo,娆ráo,扰rǎo,隢rǎo,擾rǎo,遶rǎo,绕rào,繞rào,惹rě,热rè,熱rè,渃rè,綛ren,人rén,仁rén,壬rén,忈rén,朲rén,忎rén,秂rén,芢rén,鈓rén,魜rén,銋rén,鵀rén,姙rén,忍rěn,荏rěn,栠rěn,栣rěn,荵rěn,秹rěn,稔rěn,躵rěn,刃rèn,刄rèn,认rèn,仞rèn,仭rèn,讱rèn,任rèn,屻rèn,扨rèn,纫rèn,妊rèn,牣rèn,纴rèn,肕rèn,轫rèn,韧rèn,饪rèn,紉rèn,衽rèn,紝rèn,訒rèn,軔rèn,梕rèn,袵rèn,絍rèn,靭rèn,靱rèn,韌rèn,飪rèn,認rèn,餁rèn,扔rēng,仍réng,辸réng,礽réng,芿réng,日rì,驲rì,囸rì,釰rì,鈤rì,馹rì,戎róng,肜róng,栄róng,狨róng,绒róng,茙róng,茸róng,荣róng,容róng,峵róng,毧róng,烿róng,嵘róng,絨róng,羢róng,嫆róng,搈róng,摉róng,榵róng,溶róng,蓉róng,榕róng,榮róng,熔róng,瑢róng,穁róng,蝾róng,褣róng,镕róng,氄róng,縙róng,融róng,螎róng,駥róng,嬫róng,嶸róng,爃róng,鎔róng,瀜róng,蠑róng,媶róng,曧róng,冗rǒng,宂rǒng,傇rǒng,穃ròng,禸róu,柔róu,粈róu,媃róu,揉róu,渘róu,葇róu,瑈róu,腬róu,糅róu,蹂róu,輮róu,鍒róu,鞣róu,瓇róu,騥róu,鰇róu,鶔róu,楺rǒu,煣rǒu,韖rǒu,肉ròu,宍ròu,嶿rū,如rú,侞rú,帤rú,茹rú,桇rú,袽rú,铷rú,渪rú,筎rú,銣rú,蕠rú,儒rú,鴑rú,嚅rú,孺rú,濡rú,薷rú,鴽rú,曘rú,燸rú,襦rú,蠕rú,颥rú,醹rú,顬rú,偄rú,鱬rú,汝rǔ,肗rǔ,乳rǔ,辱rǔ,鄏rǔ,擩rǔ,入rù,扖rù,込rù,杁rù,洳rù,嗕rù,媷rù,溽rù,缛rù,蓐rù,鳰rù,褥rù,縟rù,壖ruán,阮ruǎn,朊ruǎn,软ruǎn,軟ruǎn,碝ruǎn,緛ruǎn,蝡ruǎn,瓀ruǎn,礝ruǎn,瑌ruǎn,撋ruí,桵ruí,甤ruí,緌ruí,蕤ruí,蕊ruǐ,橤ruǐ,繠ruǐ,蘂ruǐ,蘃ruǐ,惢ruǐ,芮ruì,枘ruì,蚋ruì,锐ruì,瑞ruì,睿ruì,銳ruì,叡ruì,壡ruì,润rùn,閏rùn,閠rùn,潤rùn,橍rùn,闰rùn,叒ruò,若ruò,偌ruò,弱ruò,鄀ruò,焫ruò,楉ruò,嵶ruò,蒻ruò,箬ruò,爇ruò,鰙ruò,鰯ruò,鶸ruò,仨sā,桬sā,撒sā,洒sǎ,訯sǎ,靸sǎ,灑sǎ,卅sà,飒sà,脎sà,萨sà,隡sà,馺sà,颯sà,薩sà,櫒sà,栍saeng,毢sāi,塞sāi,毸sāi,腮sāi,嘥sāi,噻sāi,鳃sāi,顋sāi,鰓sāi,嗮sǎi,赛sài,僿sài,賽sài,簺sài,虄sal,厁san,壭san,三sān,弎sān,叁sān,毵sān,毶sān,毿sān,犙sān,鬖sān,糂sān,糝sān,糣sān,彡sān,氵sān,伞sǎn,傘sǎn,馓sǎn,橵sǎn,糤sǎn,繖sǎn,饊sǎn,散sàn,俕sàn,閐sàn,潵sàn,桒sāng,桑sāng,槡sāng,嗓sǎng,搡sǎng,褬sǎng,颡sǎng,鎟sǎng,顙sǎng,磉sǎng,丧sàng,喪sàng,掻sāo,搔sāo,溞sāo,骚sāo,缫sāo,繅sāo,鳋sāo,颾sāo,騒sāo,騷sāo,鰠sāo,鱢sāo,扫sǎo,掃sǎo,嫂sǎo,臊sào,埽sào,瘙sào,氉sào,矂sào,髞sào,色sè,涩sè,啬sè,渋sè,铯sè,歮sè,嗇sè,瑟sè,歰sè,銫sè,澁sè,懎sè,擌sè,濇sè,濏sè,瘷sè,穑sè,澀sè,璱sè,瀒sè,穡sè,繬sè,穯sè,轖sè,鏼sè,譅sè,飋sè,愬sè,鎍sè,溹sè,栜sè,裇sed,聓sei,森sēn,僧sēng,鬙sēng,閪seo,縇seon,杀shā,沙shā,纱shā,乷shā,刹shā,砂shā,唦shā,挱shā,殺shā,猀shā,紗shā,莎shā,铩shā,痧shā,硰shā,蔱shā,裟shā,樧shā,魦shā,鲨shā,閷shā,鯊shā,鯋shā,繺shā,賖shā,啥shá,傻shǎ,儍shǎ,繌shǎ,倽shà,唼shà,萐shà,歃shà,煞shà,翜shà,翣shà,閯shà,霎shà,厦shà,廈shà,筛shāi,篩shāi,簁shāi,簛shāi,酾shāi,釃shāi,摋shǎi,晒shài,曬shài,纔shān,穇shān,凵shān,襂shān,山shān,邖shān,圸shān,删shān,杉shān,杣shān,芟shān,姍shān,姗shān,衫shān,钐shān,埏shān,狦shān,珊shān,舢shān,痁shān,軕shān,笘shān,釤shān,閊shān,跚shān,剼shān,搧shān,嘇shān,幓shān,煽shān,潸shān,澘shān,曑shān,檆shān,膻shān,鯅shān,羴shān,羶shān,炶shān,苫shān,柵shān,栅shān,刪shān,闪shǎn,陕shǎn,陝shǎn,閃shǎn,晱shǎn,睒shǎn,熌shǎn,覢shǎn,曏shǎn,笧shàn,讪shàn,汕shàn,疝shàn,扇shàn,訕shàn,赸shàn,傓shàn,善shàn,椫shàn,銏shàn,骟shàn,僐shàn,鄯shàn,缮shàn,嬗shàn,擅shàn,敾shàn,樿shàn,膳shàn,磰shàn,謆shàn,赡shàn,繕shàn,蟮shàn,譱shàn,贍shàn,鐥shàn,饍shàn,騸shàn,鳝shàn,灗shàn,鱔shàn,鱣shàn,墡shàn,裳shang,塲shāng,伤shāng,殇shāng,商shāng,觞shāng,傷shāng,墒shāng,慯shāng,滳shāng,蔏shāng,殤shāng,熵shāng,螪shāng,觴shāng,謪shāng,鬺shāng,坰shǎng,垧shǎng,晌shǎng,赏shǎng,賞shǎng,鑜shǎng,丄shàng,上shàng,仩shàng,尚shàng,恦shàng,绱shàng,緔shàng,弰shāo,捎shāo,梢shāo,烧shāo,焼shāo,稍shāo,筲shāo,艄shāo,蛸shāo,輎shāo,蕱shāo,燒shāo,髾shāo,鮹shāo,娋shāo,旓shāo,杓sháo,勺sháo,芍sháo,柖sháo,玿sháo,韶sháo,少shǎo,劭shào,卲shào,邵shào,绍shào,哨shào,袑shào,紹shào,潲shào,奢shē,猞shē,赊shē,輋shē,賒shē,檨shē,畲shē,舌shé,佘shé,蛇shé,蛥shé,磼shé,折shé,舍shě,捨shě,厍shè,设shè,社shè,舎shè,厙shè,射shè,涉shè,涻shè,設shè,赦shè,弽shè,慑shè,摄shè,滠shè,慴shè,摵shè,蔎shè,韘shè,騇shè,懾shè,攝shè,麝shè,欇shè,挕shè,蠂shè,堔shen,叄shēn,糁shēn,申shēn,屾shēn,扟shēn,伸shēn,身shēn,侁shēn,呻shēn,妽shēn,籶shēn,绅shēn,诜shēn,柛shēn,氠shēn,珅shēn,穼shēn,籸shēn,娠shēn,峷shēn,甡shēn,眒shēn,砷shēn,深shēn,紳shēn,兟shēn,椮shēn,葠shēn,裑shēn,訷shēn,罧shēn,蓡shēn,詵shēn,甧shēn,蔘shēn,燊shēn,薓shēn,駪shēn,鲹shēn,鯓shēn,鵢shēn,鯵shēn,鰺shēn,莘shēn,叅shēn,神shén,榊shén,鰰shén,棯shěn,槮shěn,邥shěn,弞shěn,沈shěn,审shěn,矤shěn,矧shěn,谂shěn,谉shěn,婶shěn,渖shěn,訠shěn,審shěn,頣shěn,魫shěn,曋shěn,瞫shěn,嬸shěn,覾shěn,讅shěn,哂shěn,肾shèn,侺shèn,昚shèn,甚shèn,胂shèn,眘shèn,渗shèn,祳shèn,脤shèn,腎shèn,愼shèn,慎shèn,瘆shèn,蜃shèn,滲shèn,鋠shèn,瘮shèn,葚shèn,升shēng,生shēng,阩shēng,呏shēng,声shēng,斘shēng,昇shēng,枡shēng,泩shēng,苼shēng,殅shēng,牲shēng,珄shēng,竔shēng,陞shēng,曻shēng,陹shēng,笙shēng,湦shēng,焺shēng,甥shēng,鉎shēng,聲shēng,鍟shēng,鵿shēng,鼪shēng,绳shéng,縄shéng,憴shéng,繩shéng,譝shéng,省shěng,眚shěng,偗shěng,渻shěng,胜shèng,圣shèng,晟shèng,晠shèng,剰shèng,盛shèng,剩shèng,勝shèng,貹shèng,嵊shèng,聖shèng,墭shèng,榺shèng,蕂shèng,橳shèng,賸shèng,鳾shi,觢shi,尸shī,师shī,呞shī,虱shī,诗shī,邿shī,鸤shī,屍shī,施shī,浉shī,狮shī,師shī,絁shī,湤shī,湿shī,葹shī,溮shī,溼shī,獅shī,蒒shī,蓍shī,詩shī,瑡shī,鳲shī,蝨shī,鲺shī,濕shī,鍦shī,鯴shī,鰤shī,鶳shī,襹shī,籭shī,魳shī,失shī,褷shī,匙shí,十shí,什shí,石shí,辻shí,佦shí,时shí,竍shí,识shí,实shí,実shí,旹shí,飠shí,峕shí,拾shí,炻shí,祏shí,蚀shí,食shí,埘shí,寔shí,湜shí,遈shí,塒shí,嵵shí,溡shí,鉐shí,實shí,榯shí,蝕shí,鉽shí,篒shí,鲥shí,鮖shí,鼫shí,識shí,鼭shí,鰣shí,時shí,史shǐ,矢shǐ,乨shǐ,豕shǐ,使shǐ,始shǐ,驶shǐ,兘shǐ,屎shǐ,榁shǐ,鉂shǐ,駛shǐ,笶shǐ,饣shì,莳shì,蒔shì,士shì,氏shì,礻shì,世shì,丗shì,仕shì,市shì,示shì,卋shì,式shì,事shì,侍shì,势shì,呩shì,视shì,试shì,饰shì,冟shì,室shì,恀shì,恃shì,拭shì,枾shì,柿shì,眂shì,贳shì,适shì,栻shì,烒shì,眎shì,眡shì,舐shì,轼shì,逝shì,铈shì,視shì,釈shì,弑shì,揓shì,谥shì,貰shì,释shì,勢shì,嗜shì,弒shì,煶shì,睗shì,筮shì,試shì,軾shì,鈰shì,鉃shì,飾shì,舓shì,誓shì,適shì,奭shì,噬shì,嬕shì,澨shì,諡shì,遾shì,螫shì,簭shì,籂shì,襫shì,釋shì,鰘shì,佀shì,鎩shì,是shì,収shōu,收shōu,手shǒu,守shǒu,垨shǒu,首shǒu,艏shǒu,醻shòu,寿shòu,受shòu,狩shòu,兽shòu,售shòu,授shòu,绶shòu,痩shòu,膄shòu,壽shòu,瘦shòu,綬shòu,夀shòu,獣shòu,獸shòu,鏉shòu,书shū,殳shū,抒shū,纾shū,叔shū,枢shū,姝shū,柕shū,倏shū,倐shū,書shū,殊shū,紓shū,掓shū,梳shū,淑shū,焂shū,菽shū,軗shū,鄃shū,疎shū,疏shū,舒shū,摅shū,毹shū,毺shū,綀shū,输shū,踈shū,樞shū,蔬shū,輸shū,鮛shū,瀭shū,鵨shū,陎shū,尗shú,秫shú,婌shú,孰shú,赎shú,塾shú,熟shú,璹shú,贖shú,暑shǔ,黍shǔ,署shǔ,鼠shǔ,鼡shǔ,蜀shǔ,潻shǔ,薯shǔ,曙shǔ,癙shǔ,糬shǔ,籔shǔ,蠴shǔ,鱰shǔ,属shǔ,屬shǔ,鱪shǔ,丨shù,术shù,戍shù,束shù,沭shù,述shù,怷shù,树shù,竖shù,荗shù,恕shù,庶shù,庻shù,絉shù,蒁shù,術shù,裋shù,数shù,竪shù,腧shù,墅shù,漱shù,潄shù,數shù,豎shù,樹shù,濖shù,錰shù,鏣shù,鶐shù,虪shù,捒shù,忄shù,澍shù,刷shuā,唰shuā,耍shuǎ,誜shuà,缞shuāi,縗shuāi,衰shuāi,摔shuāi,甩shuǎi,帅shuài,帥shuài,蟀shuài,闩shuān,拴shuān,閂shuān,栓shuān,涮shuàn,腨shuàn,双shuāng,脽shuí,誰shuí,水shuǐ,氺shuǐ,閖shuǐ,帨shuì,涗shuì,涚shuì,稅shuì,税shuì,裞shuì,説shuì,睡shuì,吮shǔn,顺shùn,舜shùn,順shùn,蕣shùn,橓shùn,瞚shùn,瞤shùn,瞬shùn,鬊shùn,说shuō,說shuō,妁shuò,烁shuò,朔shuò,铄shuò,欶shuò,硕shuò,矟shuò,搠shuò,蒴shuò,槊shuò,碩shuò,爍shuò,鑠shuò,洬shuò,燿shuò,鎙shuò,愢sī,厶sī,丝sī,司sī,糹sī,私sī,咝sī,泀sī,俬sī,思sī,恖sī,鸶sī,媤sī,斯sī,絲sī,缌sī,蛳sī,楒sī,禗sī,鉰sī,飔sī,凘sī,厮sī,榹sī,禠sī,罳sī,锶sī,嘶sī,噝sī,廝sī,撕sī,澌sī,緦sī,蕬sī,螄sī,鍶sī,蟖sī,蟴sī,颸sī,騦sī,鐁sī,鷥sī,鼶sī,鷉sī,銯sī,死sǐ,灬sì,巳sì,亖sì,四sì,罒sì,寺sì,汜sì,伺sì,似sì,姒sì,泤sì,祀sì,価sì,孠sì,泗sì,饲sì,驷sì,俟sì,娰sì,柶sì,牭sì,洍sì,涘sì,肂sì,飤sì,笥sì,耜sì,釲sì,竢sì,覗sì,嗣sì,肆sì,貄sì,鈻sì,飼sì,禩sì,駟sì,儩sì,瀃sì,兕sì,蕼sì,螦so,乺sol,忪sōng,松sōng,枀sōng,枩sōng,娀sōng,柗sōng,倯sōng,凇sōng,梥sōng,崧sōng,庺sōng,淞sōng,菘sōng,嵩sōng,硹sōng,蜙sōng,憽sōng,檧sōng,濍sōng,怂sǒng,悚sǒng,耸sǒng,竦sǒng,愯sǒng,嵷sǒng,慫sǒng,聳sǒng,駷sǒng,鬆sòng,讼sòng,宋sòng,诵sòng,送sòng,颂sòng,訟sòng,頌sòng,誦sòng,餸sòng,鎹sòng,凁sōu,捜sōu,鄋sōu,嗖sōu,廀sōu,廋sōu,搜sōu,溲sōu,獀sōu,蒐sōu,蓃sōu,馊sōu,飕sōu,摗sōu,锼sōu,螋sōu,醙sōu,鎪sōu,餿sōu,颼sōu,騪sōu,叜sōu,艘sōu,叟sǒu,傁sǒu,嗾sǒu,瞍sǒu,擞sǒu,薮sǒu,擻sǒu,藪sǒu,櫢sǒu,嗽sòu,瘶sòu,苏sū,甦sū,酥sū,稣sū,窣sū,穌sū,鯂sū,蘇sū,蘓sū,櫯sū,囌sū,卹sū,俗sú,玊sù,诉sù,泝sù,肃sù,涑sù,珟sù,素sù,速sù,殐sù,粛sù,骕sù,傃sù,粟sù,訴sù,谡sù,嗉sù,塐sù,塑sù,嫊sù,愫sù,溯sù,溸sù,肅sù,遡sù,鹔sù,僳sù,榡sù,蔌sù,觫sù,趚sù,遬sù,憟sù,樎sù,樕sù,潥sù,鋉sù,餗sù,縤sù,璛sù,簌sù,藗sù,謖sù,蹜sù,驌sù,鱐sù,鷫sù,埣sù,夙sù,膆sù,狻suān,痠suān,酸suān,匴suǎn,祘suàn,笇suàn,筭suàn,蒜suàn,算suàn,夊suī,芕suī,虽suī,倠suī,哸suī,荽suī,荾suī,眭suī,滖suī,睢suī,濉suī,鞖suī,雖suī,簑suī,绥suí,隋suí,随suí,遀suí,綏suí,隨suí,瓍suí,遂suí,瀡suǐ,髄suǐ,髓suǐ,亗suì,岁suì,砕suì,谇suì,歲suì,歳suì,煫suì,碎suì,隧suì,嬘suì,澻suì,穂suì,誶suì,賥suì,檖suì,燧suì,璲suì,禭suì,穗suì,穟suì,襚suì,邃suì,旞suì,繐suì,繸suì,鐆suì,鐩suì,祟suì,譢suì,孙sūn,狲sūn,荪sūn,孫sūn,飧sūn,搎sūn,猻sūn,蓀sūn,槂sūn,蕵sūn,薞sūn,畃sún,损sǔn,笋sǔn,隼sǔn,筍sǔn,損sǔn,榫sǔn,箰sǔn,鎨sǔn,巺sùn,潠sùn,嗍suō,唆suō,娑suō,莏suō,傞suō,桫suō,梭suō,睃suō,嗦suō,羧suō,蓑suō,摍suō,缩suō,趖suō,簔suō,縮suō,髿suō,鮻suō,挲suō,所suǒ,唢suǒ,索suǒ,琐suǒ,琑suǒ,锁suǒ,嗩suǒ,暛suǒ,溑suǒ,瑣suǒ,鎖suǒ,鎻suǒ,鏁suǒ,嵗suò,蜶suò,逤suò,侤ta,澾ta,她tā,他tā,它tā,祂tā,咜tā,趿tā,铊tā,塌tā,榙tā,溻tā,鉈tā,褟tā,遢tā,蹹tá,塔tǎ,墖tǎ,獭tǎ,鳎tǎ,獺tǎ,鰨tǎ,沓tà,挞tà,狧tà,闼tà,崉tà,涾tà,遝tà,阘tà,榻tà,毾tà,禢tà,撻tà,誻tà,踏tà,嚃tà,錔tà,嚺tà,濌tà,蹋tà,鞜tà,闒tà,鞳tà,闥tà,譶tà,躢tà,傝tà,襨tae,漦tāi,咍tāi,囼tāi,孡tāi,胎tāi,駘tāi,檯tāi,斄tái,台tái,邰tái,坮tái,苔tái,炱tái,炲tái,菭tái,跆tái,鲐tái,箈tái,臺tái,颱tái,儓tái,鮐tái,嬯tái,擡tái,薹tái,籉tái,抬tái,呔tǎi,忕tài,太tài,冭tài,夳tài,忲tài,汰tài,态tài,肽tài,钛tài,泰tài,粏tài,舦tài,酞tài,鈦tài,溙tài,燤tài,態tài,坍tān,贪tān,怹tān,啴tān,痑tān,舑tān,貪tān,摊tān,滩tān,嘽tān,潬tān,瘫tān,擹tān,攤tān,灘tān,癱tān,镡tán,蕁tán,坛tán,昙tán,谈tán,郯tán,婒tán,覃tán,榃tán,痰tán,锬tán,谭tán,墵tán,憛tán,潭tán,談tán,壇tán,曇tán,錟tán,檀tán,顃tán,罈tán,藫tán,壜tán,譚tán,貚tán,醰tán,譠tán,罎tán,鷤tán,埮tán,鐔tán,墰tán,忐tǎn,坦tǎn,袒tǎn,钽tǎn,菼tǎn,毯tǎn,鉭tǎn,嗿tǎn,憳tǎn,憻tǎn,醓tǎn,璮tǎn,襢tǎn,緂tǎn,暺tǎn,叹tàn,炭tàn,探tàn,湠tàn,僋tàn,嘆tàn,碳tàn,舕tàn,歎tàn,汤tāng,铴tāng,湯tāng,嘡tāng,劏tāng,羰tāng,蝪tāng,薚tāng,蹚tāng,鐋tāng,鞺tāng,闛tāng,耥tāng,鼞tāng,镗táng,鏜táng,饧táng,坣táng,唐táng,堂táng,傏táng,啺táng,棠táng,鄌táng,塘táng,搪táng,溏táng,蓎táng,隚táng,榶táng,漟táng,煻táng,瑭táng,禟táng,膅táng,樘táng,磄táng,糃táng,膛táng,橖táng,篖táng,糖táng,螗táng,踼táng,糛táng,赯táng,醣táng,餳táng,鎕táng,餹táng,饄táng,鶶táng,螳táng,攩tǎng,伖tǎng,帑tǎng,倘tǎng,淌tǎng,傥tǎng,躺tǎng,镋tǎng,鎲tǎng,儻tǎng,戃tǎng,曭tǎng,爣tǎng,矘tǎng,钂tǎng,烫tàng,摥tàng,趟tàng,燙tàng,漡tàng,焘tāo,轁tāo,涭tāo,仐tāo,弢tāo,绦tāo,掏tāo,絛tāo,詜tāo,嫍tāo,幍tāo,慆tāo,搯tāo,滔tāo,槄tāo,瑫tāo,韬tāo,飸tāo,縚tāo,縧tāo,濤tāo,謟tāo,鞱tāo,韜tāo,饕tāo,饀tāo,燾tāo,涛tāo,迯táo,咷táo,洮táo,逃táo,桃táo,陶táo,啕táo,梼táo,淘táo,萄táo,祹táo,裪táo,綯táo,蜪táo,鞀táo,醄táo,鞉táo,鋾táo,駣táo,檮táo,騊táo,鼗táo,绹táo,讨tǎo,討tǎo,套tào,畓tap,忑tè,特tè,貣tè,脦tè,犆tè,铽tè,慝tè,鋱tè,蟘tè,螣tè,鰧teng,膯tēng,鼟tēng,疼téng,痋téng,幐téng,腾téng,誊téng,漛téng,滕téng,邆téng,縢téng,駦téng,謄téng,儯téng,藤téng,騰téng,籐téng,籘téng,虅téng,驣téng,霯tèng,唞teo,朰teul,剔tī,梯tī,锑tī,踢tī,銻tī,鷈tī,鵜tī,躰tī,骵tī,軆tī,擿tī,姼tí,褆tí,扌tí,虒tí,磃tí,绨tí,偍tí,啼tí,媞tí,崹tí,惿tí,提tí,稊tí,缇tí,罤tí,遆tí,鹈tí,嗁tí,瑅tí,綈tí,徲tí,漽tí,緹tí,蕛tí,蝭tí,题tí,趧tí,蹄tí,醍tí,謕tí,鍗tí,題tí,鮷tí,騠tí,鯷tí,鶗tí,鶙tí,穉tí,厗tí,鳀tí,徥tǐ,体tǐ,挮tǐ,體tǐ,衹tǐ,戻tì,屉tì,剃tì,洟tì,倜tì,悌tì,涕tì,逖tì,屜tì,悐tì,惕tì,掦tì,逷tì,惖tì,替tì,裼tì,褅tì,歒tì,殢tì,髰tì,薙tì,嚏tì,鬀tì,嚔tì,瓋tì,籊tì,鐟tì,楴tì,天tiān,兲tiān,婖tiān,添tiān,酟tiān,靔tiān,黇tiān,靝tiān,呑tiān,瞋tián,田tián,屇tián,沺tián,恬tián,畋tián,畑tián,盷tián,胋tián,甛tián,甜tián,菾tián,湉tián,塡tián,填tián,搷tián,阗tián,碵tián,磌tián,窴tián,鴫tián,璳tián,闐tián,鷆tián,鷏tián,餂tián,寘tián,畠tián,鍩tiǎn,忝tiǎn,殄tiǎn,倎tiǎn,唺tiǎn,悿tiǎn,捵tiǎn,淟tiǎn,晪tiǎn,琠tiǎn,腆tiǎn,觍tiǎn,睓tiǎn,覥tiǎn,賟tiǎn,錪tiǎn,娗tiǎn,铦tiǎn,銛tiǎn,紾tiǎn,舔tiǎn,掭tiàn,瑱tiàn,睼tiàn,舚tiàn,旫tiāo,佻tiāo,庣tiāo,挑tiāo,祧tiāo,聎tiāo,苕tiáo,萔tiáo,芀tiáo,条tiáo,岧tiáo,岹tiáo,迢tiáo,祒tiáo,條tiáo,笤tiáo,蓚tiáo,蓨tiáo,龆tiáo,樤tiáo,蜩tiáo,鋚tiáo,髫tiáo,鲦tiáo,螩tiáo,鯈tiáo,鎥tiáo,齠tiáo,鰷tiáo,趒tiáo,銚tiáo,儵tiáo,鞗tiáo,宨tiǎo,晀tiǎo,朓tiǎo,脁tiǎo,窕tiǎo,窱tiǎo,眺tiào,粜tiào,覜tiào,跳tiào,頫tiào,糶tiào,怗tiē,贴tiē,萜tiē,聑tiē,貼tiē,帖tiē,蛈tiě,僣tiě,鴩tiě,鐵tiě,驖tiě,铁tiě,呫tiè,飻tiè,餮tiè,厅tīng,庁tīng,汀tīng,听tīng,耓tīng,厛tīng,烃tīng,烴tīng,綎tīng,鞓tīng,聴tīng,聼tīng,廰tīng,聽tīng,渟tīng,廳tīng,邒tíng,廷tíng,亭tíng,庭tíng,莛tíng,停tíng,婷tíng,嵉tíng,筳tíng,葶tíng,蜓tíng,楟tíng,榳tíng,閮tíng,霆tíng,聤tíng,蝏tíng,諪tíng,鼮tíng,珵tǐng,侱tǐng,圢tǐng,侹tǐng,挺tǐng,涏tǐng,梃tǐng,烶tǐng,珽tǐng,脡tǐng,颋tǐng,誔tǐng,頲tǐng,艇tǐng,乭tol,囲tōng,炵tōng,通tōng,痌tōng,嗵tōng,蓪tōng,樋tōng,熥tōng,爞tóng,冂tóng,燑tóng,仝tóng,同tóng,佟tóng,彤tóng,峂tóng,庝tóng,哃tóng,狪tóng,茼tóng,晍tóng,桐tóng,浵tóng,砼tóng,蚒tóng,秱tóng,铜tóng,童tóng,粡tóng,赨tóng,酮tóng,鉖tóng,僮tóng,鉵tóng,銅tóng,餇tóng,鲖tóng,潼tóng,獞tóng,曈tóng,朣tóng,橦tóng,氃tóng,犝tóng,膧tóng,瞳tóng,穜tóng,鮦tóng,眮tóng,统tǒng,捅tǒng,桶tǒng,筒tǒng,綂tǒng,統tǒng,恸tòng,痛tòng,慟tòng,憅tòng,偷tōu,偸tōu,鍮tōu,头tóu,投tóu,骰tóu,緰tóu,頭tóu,钭tǒu,妵tǒu,紏tǒu,敨tǒu,斢tǒu,黈tǒu,蘣tǒu,埱tòu,透tòu,綉tòu,宊tū,瑹tū,凸tū,禿tū,秃tū,突tū,涋tū,捸tū,堗tū,湥tū,痜tū,葖tū,嶀tū,鋵tū,鵚tū,鼵tū,唋tū,図tú,图tú,凃tú,峹tú,庩tú,徒tú,捈tú,涂tú,荼tú,途tú,屠tú,梌tú,揬tú,稌tú,塗tú,嵞tú,瘏tú,筡tú,鈯tú,圖tú,圗tú,廜tú,潳tú,酴tú,馟tú,鍎tú,駼tú,鵌tú,鶟tú,鷋tú,鷵tú,兎tú,菟tú,蒤tú,土tǔ,圡tǔ,吐tǔ,汢tǔ,钍tǔ,釷tǔ,迌tù,兔tù,莵tù,堍tù,鵵tù,湍tuān,猯tuān,煓tuān,蓴tuán,团tuán,団tuán,抟tuán,剸tuán,團tuán,塼tuán,慱tuán,摶tuán,槫tuán,漙tuán,篿tuán,檲tuán,鏄tuán,糰tuán,鷒tuán,鷻tuán,嫥tuán,鱄tuán,圕tuǎn,疃tuǎn,畽tuǎn,彖tuàn,湪tuàn,褖tuàn,貒tuàn,忒tuī,推tuī,蓷tuī,藬tuī,焞tuī,騩tuí,墤tuí,颓tuí,隤tuí,尵tuí,頹tuí,頺tuí,魋tuí,穨tuí,蘈tuí,蹪tuí,僓tuí,頽tuí,俀tuǐ,脮tuǐ,腿tuǐ,蹆tuǐ,骽tuǐ,退tuì,娧tuì,煺tuì,蛻tuì,蜕tuì,褪tuì,駾tuì,噋tūn,汭tūn,吞tūn,旽tūn,啍tūn,朜tūn,暾tūn,黗tūn,屯tún,忳tún,芚tún,饨tún,豚tún,軘tún,飩tún,鲀tún,魨tún,霕tún,臀tún,臋tún,坉tún,豘tún,氽tǔn,舃tuō,乇tuō,讬tuō,托tuō,汑tuō,饦tuō,杔tuō,侂tuō,咃tuō,拕tuō,拖tuō,侻tuō,挩tuō,捝tuō,莌tuō,袥tuō,託tuō,涶tuō,脱tuō,飥tuō,馲tuō,魠tuō,驝tuō,棁tuō,脫tuō,鱓tuó,鋖tuó,牠tuó,驮tuó,佗tuó,陀tuó,陁tuó,坨tuó,岮tuó,沱tuó,驼tuó,柁tuó,砣tuó,砤tuó,袉tuó,鸵tuó,紽tuó,堶tuó,跎tuó,酡tuó,碢tuó,馱tuó,槖tuó,踻tuó,駞tuó,橐tuó,鮀tuó,鴕tuó,鼧tuó,騨tuó,鼍tuó,驒tuó,鼉tuó,迆tuó,駝tuó,軃tuǒ,妥tuǒ,毤tuǒ,庹tuǒ,椭tuǒ,楕tuǒ,鵎tuǒ,拓tuò,柝tuò,唾tuò,萚tuò,跅tuò,毻tuò,箨tuò,蘀tuò,籜tuò,哇wa,窐wā,劸wā,徍wā,挖wā,洼wā,娲wā,畖wā,窊wā,媧wā,嗗wā,蛙wā,搲wā,溛wā,漥wā,窪wā,鼃wā,攨wā,屲wā,姽wá,譁wá,娃wá,瓦wǎ,佤wǎ,邷wǎ,咓wǎ,瓲wǎ,砙wǎ,韎wà,帓wà,靺wà,袜wà,聉wà,嗢wà,腽wà,膃wà,韈wà,韤wà,襪wà,咼wāi,瀤wāi,歪wāi,喎wāi,竵wāi,崴wǎi,外wài,顡wài,関wān,闗wān,夘wān,乛wān,弯wān,剜wān,婠wān,帵wān,塆wān,湾wān,睕wān,蜿wān,潫wān,豌wān,彎wān,壪wān,灣wān,埦wān,捥wān,丸wán,刓wán,汍wán,纨wán,芄wán,完wán,岏wán,忨wán,玩wán,笂wán,紈wán,捖wán,顽wán,烷wán,琓wán,貦wán,頑wán,蚖wán,抏wán,邜wǎn,宛wǎn,倇wǎn,唍wǎn,挽wǎn,晚wǎn,盌wǎn,莞wǎn,婉wǎn,惋wǎn,晩wǎn,梚wǎn,绾wǎn,脘wǎn,菀wǎn,晼wǎn,椀wǎn,琬wǎn,皖wǎn,碗wǎn,綩wǎn,綰wǎn,輓wǎn,鋔wǎn,鍐wǎn,莬wǎn,惌wǎn,魭wǎn,夗wǎn,畹wǎn,輐wàn,鄤wàn,孯wàn,掔wàn,万wàn,卍wàn,卐wàn,妧wàn,杤wàn,腕wàn,萬wàn,翫wàn,鋄wàn,薍wàn,錽wàn,贃wàn,鎫wàn,贎wàn,脕wàn,尩wāng,尪wāng,尫wāng,汪wāng,瀇wāng,亡wáng,仼wáng,彺wáng,莣wáng,蚟wáng,王wáng,抂wǎng,网wǎng,忹wǎng,往wǎng,徃wǎng,枉wǎng,罔wǎng,惘wǎng,菵wǎng,暀wǎng,棢wǎng,焹wǎng,蛧wǎng,辋wǎng,網wǎng,蝄wǎng,誷wǎng,輞wǎng,魍wǎng,迬wǎng,琞wàng,妄wàng,忘wàng,迋wàng,旺wàng,盳wàng,望wàng,朢wàng,威wēi,烓wēi,偎wēi,逶wēi,隇wēi,隈wēi,喴wēi,媁wēi,媙wēi,愄wēi,揋wēi,揻wēi,渨wēi,煀wēi,葨wēi,葳wēi,微wēi,椳wēi,楲wēi,溦wēi,煨wēi,詴wēi,縅wēi,蝛wēi,覣wēi,嶶wēi,薇wēi,燰wēi,鳂wēi,癐wēi,鰃wēi,鰄wēi,嵔wēi,蜲wēi,危wēi,巍wēi,恑wéi,撝wéi,囗wéi,为wéi,韦wéi,围wéi,帏wéi,沩wéi,违wéi,闱wéi,峗wéi,峞wéi,洈wéi,為wéi,韋wéi,桅wéi,涠wéi,唯wéi,帷wéi,惟wéi,维wéi,喡wéi,圍wéi,嵬wéi,幃wéi,湋wéi,溈wéi,琟wéi,潍wéi,維wéi,蓶wéi,鄬wéi,潿wéi,醀wéi,濰wéi,鍏wéi,闈wéi,鮠wéi,癓wéi,覹wéi,犩wéi,霺wéi,僞wéi,寪wéi,觹wéi,觽wéi,觿wéi,欈wéi,違wéi,趡wěi,磈wěi,瓗wěi,膸wěi,撱wěi,鰖wěi,伟wěi,伪wěi,尾wěi,纬wěi,芛wěi,苇wěi,委wěi,炜wěi,玮wěi,洧wěi,娓wěi,捤wěi,浘wěi,诿wěi,偉wěi,偽wěi,崣wěi,梶wěi,硊wěi,萎wěi,隗wěi,骩wěi,廆wěi,徫wěi,愇wěi,猥wěi,葦wěi,蒍wěi,骪wěi,骫wěi,暐wěi,椲wěi,煒wěi,瑋wěi,痿wěi,腲wěi,艉wěi,韪wěi,碨wěi,鲔wěi,緯wěi,蔿wěi,諉wěi,踓wěi,韑wěi,頠wěi,薳wěi,儰wěi,濻wěi,鍡wěi,鮪wěi,壝wěi,韙wěi,颹wěi,瀢wěi,韡wěi,亹wěi,斖wěi,茟wěi,蜹wèi,爲wèi,卫wèi,未wèi,位wèi,味wèi,苿wèi,畏wèi,胃wèi,叞wèi,軎wèi,尉wèi,菋wèi,谓wèi,喂wèi,媦wèi,渭wèi,猬wèi,煟wèi,墛wèi,蔚wèi,慰wèi,熭wèi,犚wèi,磑wèi,緭wèi,蝟wèi,衛wèi,懀wèi,濊wèi,璏wèi,罻wèi,衞wèi,謂wèi,錗wèi,餧wèi,鮇wèi,螱wèi,褽wèi,餵wèi,魏wèi,藯wèi,鏏wèi,霨wèi,鳚wèi,蘶wèi,饖wèi,讆wèi,躗wèi,讏wèi,躛wèi,荱wèi,蜼wèi,硙wèi,轊wèi,昷wēn,塭wēn,温wēn,榅wēn,殟wēn,溫wēn,瑥wēn,辒wēn,榲wēn,瘟wēn,豱wēn,輼wēn,鳁wēn,鎾wēn,饂wēn,鰛wēn,鰮wēn,褞wēn,缊wēn,緼wēn,蕰wēn,縕wēn,薀wēn,藴wēn,鴖wén,亠wén,文wén,彣wén,纹wén,炆wén,砇wén,闻wén,紋wén,蚉wén,蚊wén,珳wén,阌wén,鈫wén,雯wén,瘒wén,聞wén,馼wén,魰wén,鳼wén,鴍wén,螡wén,閺wén,閿wén,蟁wén,闅wén,鼤wén,闦wén,芠wén,呅wěn,忞wěn,歾wěn,刎wěn,吻wěn,呚wěn,忟wěn,抆wěn,呡wěn,紊wěn,桽wěn,脗wěn,稳wěn,穏wěn,穩wěn,肳wěn,问wèn,妏wèn,汶wèn,問wèn,渂wèn,搵wèn,絻wèn,顐wèn,璺wèn,翁wēng,嗡wēng,鹟wēng,螉wēng,鎓wēng,鶲wēng,滃wēng,奣wěng,塕wěng,嵡wěng,蓊wěng,瞈wěng,聬wěng,暡wěng,瓮wèng,蕹wèng,甕wèng,罋wèng,齆wèng,堝wō,濄wō,薶wō,捼wō,挝wō,倭wō,涡wō,莴wō,唩wō,涹wō,渦wō,猧wō,萵wō,喔wō,窝wō,窩wō,蜗wō,撾wō,蝸wō,踒wō,涴wó,我wǒ,婐wǒ,婑wǒ,捰wǒ,龏wò,蒦wò,嚄wò,雘wò,艧wò,踠wò,仴wò,沃wò,肟wò,臥wò,偓wò,捾wò,媉wò,幄wò,握wò,渥wò,硪wò,楃wò,腛wò,斡wò,瞃wò,濣wò,瓁wò,龌wò,齷wò,枂wò,馧wò,卧wò,扝wū,乌wū,圬wū,弙wū,污wū,邬wū,呜wū,杇wū,巫wū,屋wū,洿wū,钨wū,烏wū,趶wū,剭wū,窏wū,釫wū,鄔wū,嗚wū,誈wū,誣wū,箼wū,螐wū,鴮wū,鎢wū,鰞wū,兀wū,杅wū,诬wū,幠wú,譕wú,蟱wú,墲wú,亾wú,兦wú,无wú,毋wú,吳wú,吴wú,吾wú,呉wú,芜wú,郚wú,娪wú,梧wú,洖wú,浯wú,茣wú,珸wú,祦wú,鹀wú,無wú,禑wú,蜈wú,蕪wú,璑wú,鵐wú,鯃wú,鼯wú,鷡wú,俉wú,憮wú,橆wú,铻wú,鋙wú,莁wú,陚wǔ,瞴wǔ,娒wǔ,乄wǔ,五wǔ,午wǔ,仵wǔ,伍wǔ,妩wǔ,庑wǔ,忤wǔ,怃wǔ,迕wǔ,旿wǔ,武wǔ,玝wǔ,侮wǔ,倵wǔ,捂wǔ,娬wǔ,牾wǔ,珷wǔ,摀wǔ,熓wǔ,碔wǔ,鹉wǔ,瑦wǔ,舞wǔ,嫵wǔ,廡wǔ,潕wǔ,錻wǔ,儛wǔ,甒wǔ,鵡wǔ,躌wǔ,逜wǔ,膴wǔ,啎wǔ,噁wù,雺wù,渞wù,揾wù,坞wù,塢wù,勿wù,务wù,戊wù,阢wù,伆wù,屼wù,扤wù,岉wù,杌wù,忢wù,物wù,矹wù,敄wù,误wù,務wù,悞wù,悟wù,悮wù,粅wù,晤wù,焐wù,婺wù,嵍wù,痦wù,隖wù,靰wù,骛wù,奦wù,嵨wù,溩wù,雾wù,寤wù,熃wù,誤wù,鹜wù,鋈wù,窹wù,鼿wù,霧wù,齀wù,騖wù,鶩wù,芴wù,霚wù,扱xī,糦xī,宩xī,獡xī,蜤xī,燍xī,夕xī,兮xī,汐xī,西xī,覀xī,吸xī,希xī,扸xī,卥xī,昔xī,析xī,矽xī,穸xī,肹xī,俙xī,徆xī,怸xī,郗xī,饻xī,唏xī,奚xī,屖xī,息xī,悕xī,晞xī,氥xī,浠xī,牺xī,狶xī,莃xī,唽xī,悉xī,惜xī,桸xī,欷xī,淅xī,渓xī,烯xī,焁xī,焈xī,琋xī,硒xī,菥xī,赥xī,釸xī,傒xī,惁xī,晰xī,晳xī,焟xī,犀xī,睎xī,稀xī,粞xī,翕xī,翖xī,舾xī,鄎xī,厀xī,嵠xī,徯xī,溪xī,煕xī,皙xī,蒠xī,锡xī,僖xī,榽xī,熄xī,熙xī,緆xī,蜥xī,豨xī,餏xī,嘻xī,噏xī,嬆xī,嬉xī,膝xī,餙xī,凞xī,樨xī,橀xī,歙xī,熹xī,熺xī,熻xī,窸xī,羲xī,螅xī,錫xī,燨xī,犠xī,瞦xī,礂xī,蟋xī,豀xī,豯xī,貕xī,繥xī,鯑xī,鵗xī,譆xī,鏭xī,隵xī,巇xī,曦xī,爔xī,犧xī,酅xī,鼷xī,蠵xī,鸂xī,鑴xī,憘xī,暿xī,鱚xī,咥xī,訢xī,娭xī,瘜xī,醯xī,雭xí,习xí,郋xí,席xí,習xí,袭xí,觋xí,媳xí,椺xí,蒵xí,蓆xí,嶍xí,漝xí,覡xí,趘xí,薂xí,檄xí,謵xí,鎴xí,霫xí,鳛xí,飁xí,騱xí,騽xí,襲xí,鰼xí,驨xí,隰xí,囍xǐ,杫xǐ,枲xǐ,洗xǐ,玺xǐ,徙xǐ,铣xǐ,喜xǐ,葈xǐ,葸xǐ,鈢xǐ,屣xǐ,漇xǐ,蓰xǐ,銑xǐ,憙xǐ,橲xǐ,禧xǐ,諰xǐ,壐xǐ,縰xǐ,謑xǐ,蟢xǐ,蹝xǐ,璽xǐ,躧xǐ,鉩xǐ,欪xì,钑xì,鈒xì,匸xì,卌xì,戏xì,屃xì,系xì,饩xì,呬xì,忥xì,怬xì,细xì,係xì,恄xì,绤xì,釳xì,阋xì,塈xì,椞xì,舄xì,趇xì,隙xì,慀xì,滊xì,禊xì,綌xì,赩xì,隟xì,熂xì,犔xì,潟xì,澙xì,蕮xì,覤xì,黖xì,戲xì,磶xì,虩xì,餼xì,鬩xì,嚱xì,霼xì,衋xì,細xì,闟xì,虾xiā,谺xiā,傄xiā,閕xiā,敮xiā,颬xiā,瞎xiā,蝦xiā,鰕xiā,魻xiā,郃xiá,匣xiá,侠xiá,狎xiá,俠xiá,峡xiá,柙xiá,炠xiá,狭xiá,陜xiá,峽xiá,烚xiá,狹xiá,珨xiá,祫xiá,硖xiá,舺xiá,陿xiá,溊xiá,硤xiá,遐xiá,暇xiá,瑕xiá,筪xiá,碬xiá,舝xiá,辖xiá,縀xiá,蕸xiá,縖xiá,赮xiá,轄xiá,鍜xiá,霞xiá,鎋xiá,黠xiá,騢xiá,鶷xiá,睱xiá,翈xiá,昰xià,丅xià,下xià,吓xià,圷xià,夏xià,梺xià,嚇xià,懗xià,罅xià,鏬xià,疜xià,姺xiān,仙xiān,仚xiān,屳xiān,先xiān,奾xiān,纤xiān,佡xiān,忺xiān,氙xiān,祆xiān,秈xiān,苮xiān,枮xiān,籼xiān,珗xiān,莶xiān,掀xiān,酰xiān,锨xiān,僊xiān,僲xiān,嘕xiān,鲜xiān,暹xiān,韯xiān,憸xiān,鍁xiān,繊xiān,褼xiān,韱xiān,鮮xiān,馦xiān,蹮xiān,廯xiān,譣xiān,鶱xiān,襳xiān,躚xiān,纖xiān,鱻xiān,縿xiān,跹xiān,咞xián,闲xián,妶xián,弦xián,贤xián,咸xián,挦xián,涎xián,胘xián,娴xián,娹xián,婱xián,舷xián,蚿xián,衔xián,啣xián,痫xián,蛝xián,閑xián,鹇xián,嫌xián,甉xián,銜xián,嫺xián,嫻xián,憪xián,澖xián,誸xián,賢xián,癇xián,癎xián,礥xián,贒xián,鑦xián,鷳xián,鷴xián,鷼xián,伭xián,冼xiǎn,狝xiǎn,显xiǎn,险xiǎn,毨xiǎn,烍xiǎn,猃xiǎn,蚬xiǎn,険xiǎn,赻xiǎn,筅xiǎn,尟xiǎn,尠xiǎn,禒xiǎn,蜆xiǎn,跣xiǎn,箲xiǎn,險xiǎn,獫xiǎn,獮xiǎn,藓xiǎn,鍌xiǎn,燹xiǎn,顕xiǎn,幰xiǎn,攇xiǎn,櫶xiǎn,蘚xiǎn,玁xiǎn,韅xiǎn,顯xiǎn,灦xiǎn,搟xiǎn,县xiàn,岘xiàn,苋xiàn,现xiàn,线xiàn,臽xiàn,限xiàn,姭xiàn,宪xiàn,陥xiàn,哯xiàn,垷xiàn,娨xiàn,峴xiàn,晛xiàn,莧xiàn,陷xiàn,現xiàn,馅xiàn,睍xiàn,絤xiàn,缐xiàn,羡xiàn,献xiàn,粯xiàn,羨xiàn,腺xiàn,僩xiàn,僴xiàn,綫xiàn,誢xiàn,撊xiàn,線xiàn,鋧xiàn,憲xiàn,餡xiàn,豏xiàn,瀗xiàn,臔xiàn,獻xiàn,鏾xiàn,霰xiàn,鼸xiàn,脇xiàn,軐xiàn,県xiàn,縣xiàn,儴xiāng,勷xiāng,蘘xiāng,纕xiāng,乡xiāng,芗xiāng,香xiāng,郷xiāng,厢xiāng,鄉xiāng,鄊xiāng,廂xiāng,湘xiāng,缃xiāng,葙xiāng,鄕xiāng,楿xiāng,薌xiāng,箱xiāng,緗xiāng,膷xiāng,忀xiāng,骧xiāng,麘xiāng,欀xiāng,瓖xiāng,镶xiāng,鱜xiāng,鑲xiāng,驤xiāng,襄xiāng,佭xiáng,详xiáng,庠xiáng,栙xiáng,祥xiáng,絴xiáng,翔xiáng,詳xiáng,跭xiáng,享xiǎng,亯xiǎng,响xiǎng,蚃xiǎng,饷xiǎng,晑xiǎng,飨xiǎng,想xiǎng,餉xiǎng,鲞xiǎng,蠁xiǎng,鮝xiǎng,鯗xiǎng,響xiǎng,饗xiǎng,饟xiǎng,鱶xiǎng,傢xiàng,相xiàng,向xiàng,姠xiàng,巷xiàng,项xiàng,珦xiàng,象xiàng,缿xiàng,萫xiàng,項xiàng,像xiàng,勨xiàng,嶑xiàng,橡xiàng,襐xiàng,蟓xiàng,鐌xiàng,鱌xiàng,鋞xiàng,鬨xiàng,嚮xiàng,鵁xiāo,莦xiāo,颵xiāo,箾xiāo,潚xiāo,橚xiāo,灱xiāo,灲xiāo,枭xiāo,侾xiāo,哓xiāo,枵xiāo,骁xiāo,宯xiāo,宵xiāo,庨xiāo,恷xiāo,消xiāo,绡xiāo,虓xiāo,逍xiāo,鸮xiāo,啋xiāo,婋xiāo,梟xiāo,焇xiāo,猇xiāo,萧xiāo,痚xiāo,痟xiāo,硝xiāo,硣xiāo,窙xiāo,翛xiāo,萷xiāo,销xiāo,揱xiāo,綃xiāo,歊xiāo,箫xiāo,嘵xiāo,撨xiāo,獢xiāo,銷xiāo,霄xiāo,彇xiāo,膮xiāo,蕭xiāo,魈xiāo,鴞xiāo,穘xiāo,簘xiāo,蟂xiāo,蟏xiāo,鴵xiāo,嚣xiāo,瀟xiāo,簫xiāo,蟰xiāo,髇xiāo,囂xiāo,髐xiāo,鷍xiāo,驍xiāo,毊xiāo,虈xiāo,肖xiāo,哮xiāo,烋xiāo,潇xiāo,蠨xiāo,洨xiáo,崤xiáo,淆xiáo,誵xiáo,笹xiǎo,小xiǎo,晓xiǎo,暁xiǎo,筱xiǎo,筿xiǎo,曉xiǎo,篠xiǎo,謏xiǎo,皢xiǎo,孝xiào,効xiào,咲xiào,俲xiào,效xiào,校xiào,涍xiào,笑xiào,傚xiào,敩xiào,滧xiào,詨xiào,嘋xiào,嘨xiào,誟xiào,嘯xiào,熽xiào,斅xiào,斆xiào,澩xiào,啸xiào,些xiē,楔xiē,歇xiē,蝎xiē,蠍xiē,协xié,旪xié,邪xié,協xié,胁xié,垥xié,恊xié,拹xié,脋xié,衺xié,偕xié,斜xié,谐xié,翓xié,嗋xié,愶xié,携xié,瑎xié,綊xié,熁xié,膎xié,勰xié,撷xié,擕xié,緳xié,缬xié,蝢xié,鞋xié,諧xié,燲xié,擷xié,鞵xié,襭xié,攜xié,讗xié,龤xié,魼xié,脅xié,纈xié,写xiě,冩xiě,寫xiě,藛xiě,烲xiè,榝xiè,齛xiè,碿xiè,伳xiè,灺xiè,泄xiè,泻xiè,祄xiè,绁xiè,缷xiè,卸xiè,洩xiè,炧xiè,炨xiè,卨xiè,娎xiè,屑xiè,屓xiè,偰xiè,徢xiè,械xiè,焎xiè,禼xiè,亵xiè,媟xiè,屟xiè,渫xiè,絬xiè,谢xiè,僁xiè,塮xiè,榍xiè,榭xiè,褉xiè,噧xiè,屧xiè,暬xiè,韰xiè,廨xiè,懈xiè,澥xiè,獬xiè,糏xiè,薢xiè,薤xiè,邂xiè,燮xiè,褻xiè,謝xiè,夑xiè,瀉xiè,鞢xiè,瀣xiè,蟹xiè,蠏xiè,齘xiè,齥xiè,齂xiè,躠xiè,屭xiè,躞xiè,蝑xiè,揳xiè,爕xiè,噺xin,心xīn,邤xīn,妡xīn,忻xīn,芯xīn,辛xīn,昕xīn,杺xīn,欣xīn,盺xīn,俽xīn,惞xīn,锌xīn,新xīn,歆xīn,鋅xīn,嬜xīn,薪xīn,馨xīn,鑫xīn,馫xīn,枔xín,襑xín,潃xǐn,阠xìn,伩xìn,囟xìn,孞xìn,炘xìn,信xìn,脪xìn,衅xìn,訫xìn,焮xìn,舋xìn,釁xìn,狌xīng,星xīng,垶xīng,骍xīng,猩xīng,煋xīng,鷞shuāng,骦shuāng,縔shuǎng,艭shuāng,塽shuǎng,壯zhuàng,状zhuàng,狀zhuàng,壵zhuàng,梉zhuàng,瑆xīng,腥xīng,蛵xīng,觪xīng,箵xīng,篂xīng,謃xīng,鮏xīng,曐xīng,觲xīng,騂xīng,皨xīng,鯹xīng,嬹xīng,惺xīng,刑xíng,邢xíng,形xíng,陉xíng,侀xíng,哘xíng,型xíng,洐xíng,娙xíng,硎xíng,铏xíng,鉶xíng,裄xíng,睲xǐng,醒xǐng,擤xǐng,兴xìng,興xìng,杏xìng,姓xìng,幸xìng,性xìng,荇xìng,倖xìng,莕xìng,婞xìng,悻xìng,涬xìng,緈xìng,臖xìng,凶xiōng,兄xiōng,兇xiōng,匈xiōng,芎xiōng,讻xiōng,忷xiōng,汹xiōng,恟xiōng,洶xiōng,胷xiōng,胸xiōng,訩xiōng,詾xiōng,哅xiōng,雄xióng,熊xióng,诇xiòng,詗xiòng,敻xiòng,休xiū,俢xiū,修xiū,咻xiū,庥xiū,烌xiū,羞xiū,脙xiū,鸺xiū,臹xiū,貅xiū,馐xiū,樇xiū,銝xiū,髤xiū,髹xiū,鮴xiū,鵂xiū,饈xiū,鏅xiū,飍xiū,鎀xiū,苬xiú,宿xiǔ,朽xiǔ,綇xiǔ,滫xiǔ,糔xiǔ,臰xiù,秀xiù,岫xiù,珛xiù,绣xiù,袖xiù,琇xiù,锈xiù,溴xiù,璓xiù,螑xiù,繍xiù,繡xiù,鏥xiù,鏽xiù,齅xiù,嗅xiù,蓿xu,繻xū,圩xū,旴xū,疞xū,盱xū,欨xū,胥xū,须xū,顼xū,虗xū,虚xū,谞xū,媭xū,幁xū,欻xū,虛xū,須xū,楈xū,窢xū,頊xū,嘘xū,稰xū,需xū,魆xū,噓xū,墟xū,嬃xū,歔xū,縃xū,歘xū,諝xū,譃xū,魖xū,驉xū,鑐xū,鬚xū,姁xū,偦xū,戌xū,蕦xū,俆xú,徐xú,蒣xú,訏xǔ,许xǔ,诩xǔ,冔xǔ,栩xǔ,珝xǔ,許xǔ,湑xǔ,暊xǔ,詡xǔ,鄦xǔ,糈xǔ,醑xǔ,盨xǔ,滀xù,嘼xù,鉥xù,旭xù,伵xù,序xù,侐xù,沀xù,叙xù,恤xù,昫xù,洫xù,垿xù,欰xù,殈xù,烅xù,珬xù,勖xù,勗xù,敍xù,敘xù,烼xù,绪xù,续xù,酗xù,喣xù,壻xù,婿xù,朂xù,溆xù,絮xù,訹xù,慉xù,続xù,蓄xù,賉xù,槒xù,漵xù,潊xù,盢xù,瞁xù,緒xù,聟xù,稸xù,緖xù,瞲xù,藚xù,續xù,怴xù,芧xù,汿xù,煦xù,煖xuān,吅xuān,轩xuān,昍xuān,咺xuān,宣xuān,晅xuān,軒xuān,谖xuān,喧xuān,媗xuān,愃xuān,愋xuān,揎xuān,萱xuān,萲xuān,暄xuān,煊xuān,瑄xuān,蓒xuān,睻xuān,儇xuān,禤xuān,箮xuān,翧xuān,蝖xuān,蕿xuān,諠xuān,諼xuān,鍹xuān,駽xuān,矎xuān,翾xuān,藼xuān,蘐xuān,蠉xuān,譞xuān,鰚xuān,塇xuān,玹xuán,痃xuán,悬xuán,旋xuán,蜁xuán,嫙xuán,漩xuán,暶xuán,璇xuán,檈xuán,璿xuán,懸xuán,玆xuán,玄xuán,选xuǎn,選xuǎn,癣xuǎn,癬xuǎn,絃xuàn,夐xuàn,怰xuàn,泫xuàn,昡xuàn,炫xuàn,绚xuàn,眩xuàn,袨xuàn,铉xuàn,琄xuàn,眴xuàn,衒xuàn,絢xuàn,楦xuàn,鉉xuàn,碹xuàn,蔙xuàn,镟xuàn,颴xuàn,縼xuàn,繏xuàn,鏇xuàn,贙xuàn,駨xuàn,渲xuàn,疶xuē,蒆xuē,靴xuē,薛xuē,鞾xuē,削xuē,噱xué,穴xué,斈xué,乴xué,坹xué,学xué,岤xué,峃xué,茓xué,泶xué,袕xué,鸴xué,學xué,嶨xué,燢xué,雤xué,鷽xué,踅xué,雪xuě,樰xuě,膤xuě,艝xuě,轌xuě,鳕xuě,鱈xuě,血xuè,泧xuè,狘xuè,桖xuè,烕xuè,谑xuè,趐xuè,瀥xuè,坃xūn,勋xūn,埙xūn,塤xūn,熏xūn,窨xūn,勲xūn,勳xūn,薫xūn,嚑xūn,壎xūn,獯xūn,薰xūn,曛xūn,燻xūn,臐xūn,矄xūn,蘍xūn,壦xūn,爋xūn,纁xūn,醺xūn,勛xūn,郇xún,咰xún,寻xún,巡xún,旬xún,杊xún,询xún,峋xún,恂xún,浔xún,紃xún,荀xún,栒xún,桪xún,毥xún,珣xún,偱xún,尋xún,循xún,揗xún,詢xún,鄩xún,鲟xún,噚xún,潯xún,攳xún,樳xún,燅xún,燖xún,璕xún,蟳xún,鱏xún,鱘xún,侚xún,彐xún,撏xún,洵xún,浚xùn,濬xùn,鶽xùn,驯xùn,馴xùn,卂xùn,训xùn,伨xùn,汛xùn,迅xùn,徇xùn,狥xùn,迿xùn,逊xùn,殉xùn,訊xùn,訓xùn,訙xùn,奞xùn,巽xùn,殾xùn,遜xùn,愻xùn,賐xùn,噀xùn,蕈xùn,顨xùn,鑂xùn,稄xùn,讯xùn,呀ya,圧yā,丫yā,压yā,庘yā,押yā,鸦yā,桠yā,鸭yā,铔yā,椏yā,鴉yā,錏yā,鴨yā,壓yā,鵶yā,鐚yā,唖yā,亜yā,垭yā,俹yā,埡yā,孲yā,拁yá,疨yá,牙yá,伢yá,岈yá,芽yá,厓yá,枒yá,琊yá,笌yá,蚜yá,堐yá,崕yá,崖yá,涯yá,猚yá,瑘yá,睚yá,衙yá,漄yá,齖yá,庌yá,顔yá,釾yá,疋yǎ,厊yǎ,啞yǎ,痖yǎ,雅yǎ,瘂yǎ,蕥yǎ,挜yǎ,掗yǎ,哑yǎ,呾yà,輵yà,潝yà,劜yà,圠yà,亚yà,穵yà,襾yà,讶yà,犽yà,迓yà,亞yà,玡yà,娅yà,砑yà,氩yà,婭yà,訝yà,揠yà,氬yà,猰yà,圔yà,稏yà,窫yà,椻yà,鼼yà,聐yà,淊yān,咽yān,恹yān,剦yān,烟yān,珚yān,胭yān,偣yān,崦yān,淹yān,焉yān,菸yān,阉yān,湮yān,腌yān,傿yān,煙yān,鄢yān,嫣yān,漹yān,嶖yān,樮yān,醃yān,閹yān,嬮yān,篶yān,臙yān,黫yān,弇yān,硽yān,慇yān,黰yān,橪yān,阽yán,炏yán,挻yán,厃yán,唌yán,廵yán,讠yán,円yán,延yán,闫yán,严yán,妍yán,言yán,訁yán,岩yán,昖yán,沿yán,炎yán,郔yán,姸yán,娫yán,狿yán,研yán,莚yán,娮yán,盐yán,琂yán,硏yán,訮yán,閆yán,阎yán,嵒yán,嵓yán,綖yán,蜒yán,塩yán,揅yán,楌yán,詽yán,碞yán,蔅yán,颜yán,虤yán,閻yán,厳yán,檐yán,顏yán,嚴yán,壛yán,巌yán,簷yán,櫩yán,麙yán,壧yán,孍yán,巖yán,巗yán,巚yán,欕yán,礹yán,鹽yán,麣yán,黬yán,偐yán,贗yán,菴yǎn,剡yǎn,嬐yǎn,崄yǎn,嶮yǎn,抁yǎn,沇yǎn,乵yǎn,兖yǎn,奄yǎn,俨yǎn,兗yǎn,匽yǎn,衍yǎn,偃yǎn,厣yǎn,掩yǎn,眼yǎn,萒yǎn,郾yǎn,酓yǎn,嵃yǎn,愝yǎn,扊yǎn,揜yǎn,棪yǎn,渰yǎn,渷yǎn,琰yǎn,隒yǎn,椼yǎn,罨yǎn,演yǎn,褗yǎn,蝘yǎn,魇yǎn,噞yǎn,躽yǎn,檿yǎn,黡yǎn,厴yǎn,甗yǎn,鰋yǎn,鶠yǎn,黤yǎn,齞yǎn,儼yǎn,黭yǎn,顩yǎn,鼴yǎn,巘yǎn,曮yǎn,魘yǎn,鼹yǎn,齴yǎn,黶yǎn,掞yǎn,隁yǎn,喭yǎn,酀yǎn,龂yǎn,齗yǎn,阭yǎn,夵yǎn,裺yǎn,溎yàn,豜yàn,豣yàn,烻yàn,湺yàn,麲yàn,厌yàn,妟yàn,牪yàn,姲yàn,彥yàn,彦yàn,砚yàn,唁yàn,宴yàn,晏yàn,艳yàn,覎yàn,验yàn,焔yàn,谚yàn,堰yàn,敥yàn,焰yàn,焱yàn,猒yàn,硯yàn,葕yàn,雁yàn,滟yàn,鳫yàn,厭yàn,墕yàn,熖yàn,酽yàn,嬊yàn,谳yàn,餍yàn,鴈yàn,燄yàn,燕yàn,諺yàn,赝yàn,鬳yàn,曕yàn,騐yàn,験yàn,嚥yàn,嬿yàn,艶yàn,贋yàn,軅yàn,爓yàn,醶yàn,騴yàn,鷃yàn,灔yàn,觾yàn,讌yàn,饜yàn,驗yàn,鷰yàn,艷yàn,灎yàn,釅yàn,驠yàn,灧yàn,讞yàn,豓yàn,豔yàn,灩yàn,顑yàn,懕yàn,筵yàn,觃yàn,暥yàn,醼yàn,歍yāng,央yāng,咉yāng,姎yāng,抰yāng,泱yāng,殃yāng,胦yāng,眏yāng,秧yāng,鸯yāng,鉠yāng,雵yāng,鞅yāng,鍈yāng,鴦yāng,佒yāng,霙yāng,瑒yáng,婸yáng,扬yáng,羊yáng,阦yáng,旸yáng,杨yáng,炀yáng,佯yáng,劷yáng,氜yáng,疡yáng,钖yáng,飏yáng,垟yáng,徉yáng,昜yáng,洋yáng,羏yáng,烊yáng,珜yáng,眻yáng,陽yáng,崵yáng,崸yáng,揚yáng,蛘yáng,敭yáng,暘yáng,楊yáng,煬yáng,禓yáng,瘍yáng,諹yáng,輰yáng,鴹yáng,颺yáng,鐊yáng,鰑yáng,霷yáng,鸉yáng,阳yáng,鍚yáng,飬yǎng,勜yǎng,仰yǎng,坱yǎng,奍yǎng,岟yǎng,养yǎng,炴yǎng,氧yǎng,痒yǎng,紻yǎng,傟yǎng,楧yǎng,軮yǎng,慃yǎng,氱yǎng,羪yǎng,養yǎng,駚yǎng,懩yǎng,攁yǎng,瀁yǎng,癢yǎng,礢yǎng,柍yǎng,恙yàng,样yàng,羕yàng,詇yàng,様yàng,漾yàng,樣yàng,怏yàng,玅yāo,撽yāo,幺yāo,夭yāo,吆yāo,妖yāo,枖yāo,祅yāo,訞yāo,喓yāo,葽yāo,楆yāo,腰yāo,邀yāo,宎yāo,侥yáo,僥yáo,蕘yáo,匋yáo,恌yáo,铫yáo,爻yáo,尧yáo,尭yáo,肴yáo,垚yáo,姚yáo,峣yáo,轺yáo,倄yáo,珧yáo,窑yáo,傜yáo,堯yáo,揺yáo,殽yáo,谣yáo,軺yáo,嗂yáo,媱yáo,徭yáo,愮yáo,搖yáo,摇yáo,猺yáo,遙yáo,遥yáo,摿yáo,暚yáo,榣yáo,瑤yáo,瑶yáo,飖yáo,餆yáo,嶢yáo,嶤yáo,徺yáo,磘yáo,窯yáo,餚yáo,繇yáo,謠yáo,謡yáo,鎐yáo,鳐yáo,颻yáo,蘨yáo,顤yáo,鰩yáo,鷂yáo,踰yáo,烑yáo,窰yáo,噛yǎo,仸yǎo,岆yǎo,抭yǎo,杳yǎo,殀yǎo,狕yǎo,苭yǎo,咬yǎo,柼yǎo,窅yǎo,窈yǎo,舀yǎo,偠yǎo,婹yǎo,崾yǎo,溔yǎo,蓔yǎo,榚yǎo,闄yǎo,騕yǎo,齩yǎo,鷕yǎo,穾yǎo,鴢yǎo,烄yào,药yào,要yào,袎yào,窔yào,筄yào,葯yào,詏yào,熎yào,覞yào,靿yào,獟yào,鹞yào,薬yào,曜yào,艞yào,藥yào,矅yào,曣yào,耀yào,纅yào,讑yào,鑰yào,怮yào,箹yào,钥yào,籥yào,亪ye,椰yē,暍yē,噎yē,潱yē,蠮yē,耶yē,吔yē,倻yē,峫yé,爷yé,捓yé,揶yé,铘yé,爺yé,鋣yé,鎁yé,擨yé,蠱yě,虵yě,也yě,冶yě,埜yě,野yě,嘢yě,漜yě,壄yě,瓛yè,熀yè,殕yè,啘yè,鐷yè,緤yè,业yè,叶yè,曳yè,页yè,邺yè,夜yè,亱yè,枼yè,洂yè,頁yè,捙yè,晔yè,枽yè,烨yè,偞yè,掖yè,液yè,谒yè,殗yè,腋yè,葉yè,鄓yè,墷yè,楪yè,業yè,馌yè,僷yè,曄yè,曅yè,歋yè,燁yè,擖yè,擛yè,皣yè,瞱yè,靥yè,嶪yè,嶫yè,澲yè,謁yè,餣yè,嚈yè,擫yè,曗yè,瞸yè,鍱yè,擪yè,爗yè,礏yè,鎑yè,饁yè,鵺yè,靨yè,驜yè,鸈yè,黦yè,煠yè,抴yè,鄴yè,膶yen,岃yen,袆yī,褘yī,一yī,弌yī,辷yī,衤yī,伊yī,衣yī,医yī,吚yī,依yī,祎yī,咿yī,洢yī,猗yī,畩yī,郼yī,铱yī,壹yī,揖yī,欹yī,蛜yī,禕yī,嫛yī,漪yī,稦yī,銥yī,嬄yī,噫yī,夁yī,瑿yī,鹥yī,繄yī,檹yī,毉yī,醫yī,黟yī,譩yī,鷖yī,黳yī,悘yī,壱yī,耛yí,拸yí,訑yí,釶yí,鉇yí,箷yí,戺yí,珆yí,鴺yí,銕yí,狏yí,迱yí,彵yí,熈yí,仪yí,匜yí,圯yí,夷yí,冝yí,宐yí,杝yí,沂yí,诒yí,侇yí,宜yí,怡yí,沶yí,狋yí,衪yí,饴yí,咦yí,姨yí,峓yí,弬yí,恞yí,柂yí,瓵yí,荑yí,贻yí,迻yí,宧yí,巸yí,扅yí,桋yí,眙yí,胰yí,袘yí,痍yí,移yí,萓yí,媐yí,椬yí,羠yí,蛦yí,詒yí,貽yí,遗yí,暆yí,椸yí,誃yí,跠yí,頉yí,颐yí,飴yí,疑yí,儀yí,熪yí,遺yí,嶬yí,彛yí,彜yí,螔yí,頥yí,寲yí,嶷yí,簃yí,顊yí,鮧yí,彝yí,彞yí,謻yí,鏔yí,籎yí,觺yí,讉yí,鸃yí,貤yí,乁yí,栘yí,頤yí,钀yǐ,錡yǐ,裿yǐ,迤yǐ,酏yǐ,乙yǐ,已yǐ,以yǐ,钇yǐ,佁yǐ,攺yǐ,矣yǐ,苡yǐ,苢yǐ,庡yǐ,舣yǐ,蚁yǐ,釔yǐ,倚yǐ,扆yǐ,逘yǐ,偯yǐ,崺yǐ,旑yǐ,椅yǐ,鈘yǐ,鉯yǐ,鳦yǐ,旖yǐ,輢yǐ,敼yǐ,螘yǐ,檥yǐ,礒yǐ,艤yǐ,蟻yǐ,顗yǐ,轙yǐ,齮yǐ,肊yǐ,陭yǐ,嬟yǐ,醷yǐ,阤yǐ,叕yǐ,锜yǐ,歖yǐ,笖yǐ,昳yì,睪yì,欥yì,輗yì,掜yì,儗yì,謚yì,紲yì,絏yì,辥yì,义yì,亿yì,弋yì,刈yì,忆yì,艺yì,仡yì,匇yì,议yì,亦yì,伇yì,屹yì,异yì,忔yì,芅yì,伿yì,佚yì,劮yì,呓yì,坄yì,役yì,抑yì,曵yì,杙yì,耴yì,苅yì,译yì,邑yì,佾yì,呭yì,呹yì,妷yì,峄yì,怈yì,怿yì,易yì,枍yì,泆yì,炈yì,绎yì,诣yì,驿yì,俋yì,奕yì,帟yì,帠yì,弈yì,枻yì,浂yì,玴yì,疫yì,羿yì,衵yì,轶yì,唈yì,垼yì,悒yì,挹yì,栧yì,栺yì,欭yì,浥yì,浳yì,益yì,袣yì,谊yì,勚yì,埸yì,悥yì,殹yì,異yì,羛yì,翊yì,翌yì,萟yì,訲yì,訳yì,豙yì,豛yì,逸yì,釴yì,隿yì,幆yì,敡yì,晹yì,棭yì,殔yì,湙yì,焲yì,蛡yì,詍yì,跇yì,軼yì,鈠yì,骮yì,亄yì,意yì,溢yì,獈yì,痬yì,竩yì,缢yì,義yì,肄yì,裔yì,裛yì,詣yì,勩yì,嫕yì,廙yì,榏yì,潩yì,瘗yì,膉yì,蓺yì,蜴yì,靾yì,駅yì,億yì,撎yì,槸yì,毅yì,熠yì,熤yì,熼yì,瘞yì,镒yì,鹝yì,鹢yì,黓yì,劓yì,圛yì,墿yì,嬑yì,嶧yì,憶yì,懌yì,曀yì,殪yì,澺yì,燚yì,瘱yì,瞖yì,穓yì,縊yì,艗yì,薏yì,螠yì,褹yì,寱yì,斁yì,曎yì,檍yì,歝yì,燡yì,翳yì,翼yì,臆yì,貖yì,鮨yì,癔yì,藙yì,藝yì,贀yì,鎰yì,镱yì,繶yì,繹yì,豷yì,霬yì,鯣yì,鶂yì,鶃yì,鶍yì,瀷yì,蘙yì,譯yì,議yì,醳yì,饐yì,囈yì,鐿yì,鷁yì,鷊yì,襼yì,驛yì,鷧yì,虉yì,鷾yì,讛yì,齸yì,襗yì,樴yì,癦yì,焬yì,阣yì,兿yì,誼yì,燱yì,懿yì,鮣yin,乚yīn,囙yīn,因yīn,阥yīn,阴yīn,侌yīn,垔yīn,姻yīn,洇yīn,茵yīn,荫yīn,音yīn,骃yīn,栶yīn,殷yīn,氤yīn,陰yīn,凐yīn,秵yīn,裀yīn,铟yīn,陻yīn,堙yīn,婣yīn,愔yīn,筃yīn,絪yīn,歅yīn,溵yīn,禋yīn,蒑yīn,蔭yīn,瘖yīn,銦yīn,磤yīn,緸yīn,鞇yīn,諲yīn,霒yīn,駰yīn,噾yīn,濦yīn,闉yīn,霠yīn,韾yīn,喑yīn,玪yín,伒yín,乑yín,吟yín,犾yín,苂yín,斦yín,泿yín,圁yín,峾yín,烎yín,狺yín,珢yín,粌yín,荶yín,訔yín,唫yín,婬yín,寅yín,崟yín,崯yín,淫yín,訡yín,银yín,鈝yín,滛yín,碒yín,鄞yín,夤yín,蔩yín,訚yín,誾yín,銀yín,龈yín,噖yín,殥yín,嚚yín,檭yín,蟫yín,霪yín,齦yín,鷣yín,螾yín,垠yín,璌yín,赺yǐn,縯yǐn,尹yǐn,引yǐn,吲yǐn,饮yǐn,蚓yǐn,隐yǐn,淾yǐn,釿yǐn,鈏yǐn,飲yǐn,隠yǐn,靷yǐn,飮yǐn,朄yǐn,趛yǐn,檃yǐn,瘾yǐn,隱yǐn,嶾yǐn,濥yǐn,蘟yǐn,癮yǐn,讔yǐn,輑yǐn,櫽yǐn,堷yìn,梀yìn,隂yìn,印yìn,茚yìn,洕yìn,胤yìn,垽yìn,湚yìn,猌yìn,廕yìn,酳yìn,慭yìn,癊yìn,憖yìn,憗yìn,懚yìn,檼yìn,韹yīng,焽yīng,旲yīng,应yīng,応yīng,英yīng,偀yīng,桜yīng,珱yīng,莺yīng,啨yīng,婴yīng,媖yīng,愥yīng,渶yīng,朠yīng,煐yīng,瑛yīng,嫈yīng,碤yīng,锳yīng,嘤yīng,撄yīng,甇yīng,緓yīng,缨yīng,罂yīng,蝧yīng,賏yīng,樱yīng,璎yīng,噟yīng,罃yīng,褮yīng,鴬yīng,鹦yīng,嬰yīng,應yīng,膺yīng,韺yīng,甖yīng,鹰yīng,嚶yīng,孆yīng,孾yīng,攖yīng,瀴yīng,罌yīng,蘡yīng,櫻yīng,瓔yīng,礯yīng,譻yīng,鶯yīng,鑍yīng,纓yīng,蠳yīng,鷪yīng,軈yīng,鷹yīng,鸎yīng,鸚yīng,謍yīng,譍yīng,绬yīng,鶧yīng,夃yíng,俓yíng,泂yíng,嵤yíng,桯yíng,滎yíng,鎣yíng,盁yíng,迎yíng,茔yíng,盈yíng,荥yíng,荧yíng,莹yíng,萤yíng,营yíng,萦yíng,営yíng,溁yíng,溋yíng,萾yíng,僌yíng,塋yíng,楹yíng,滢yíng,蓥yíng,潆yíng,熒yíng,蝇yíng,瑩yíng,蝿yíng,嬴yíng,營yíng,縈yíng,螢yíng,濙yíng,濚yíng,濴yíng,藀yíng,覮yíng,赢yíng,巆yíng,攍yíng,攚yíng,瀛yíng,瀠yíng,蠅yíng,櫿yíng,灐yíng,籝yíng,灜yíng,贏yíng,籯yíng,耺yíng,蛍yíng,瀯yíng,瀅yíng,矨yǐng,郢yǐng,浧yǐng,梬yǐng,颍yǐng,颕yǐng,颖yǐng,摬yǐng,影yǐng,潁yǐng,瘿yǐng,穎yǐng,頴yǐng,巊yǐng,廮yǐng,鐛yǐng,癭yǐng,鱦yìng,映yìng,暎yìng,硬yìng,媵yìng,膡yìng,鞕yìng,嚛yo,哟yō,唷yō,喲yō,拥yōng,痈yōng,邕yōng,庸yōng,嗈yōng,鄘yōng,雍yōng,墉yōng,嫞yōng,慵yōng,滽yōng,槦yōng,牅yōng,銿yōng,噰yōng,壅yōng,擁yōng,澭yōng,郺yōng,镛yōng,臃yōng,癕yōng,雝yōng,鏞yōng,廱yōng,灉yōng,饔yōng,鱅yōng,鷛yōng,癰yōng,鳙yōng,揘yóng,喁yóng,鰫yóng,嵱yóng,筩yǒng,永yǒng,甬yǒng,咏yǒng,怺yǒng,泳yǒng,俑yǒng,勇yǒng,勈yǒng,栐yǒng,埇yǒng,悀yǒng,柡yǒng,涌yǒng,恿yǒng,傛yǒng,惥yǒng,愑yǒng,湧yǒng,硧yǒng,詠yǒng,彮yǒng,愹yǒng,蛹yǒng,慂yǒng,踊yǒng,禜yǒng,鲬yǒng,踴yǒng,鯒yǒng,塎yǒng,佣yòng,用yòng,苚yòng,砽yòng,醟yòng,妋yōu,优yōu,忧yōu,攸yōu,呦yōu,幽yōu,悠yōu,麀yōu,滺yōu,憂yōu,優yōu,鄾yōu,嚘yōu,懮yōu,瀀yōu,纋yōu,耰yōu,逌yōu,泈yōu,櫌yōu,蓧yóu,蚘yóu,揂yóu,汼yóu,汓yóu,蝤yóu,尣yóu,冘yóu,尢yóu,尤yóu,由yóu,沋yóu,犹yóu,邮yóu,怞yóu,油yóu,肬yóu,怣yóu,斿yóu,疣yóu,峳yóu,浟yóu,秞yóu,莜yóu,莤yóu,莸yóu,郵yóu,铀yóu,偤yóu,蚰yóu,訧yóu,逰yóu,游yóu,猶yóu,鱿yóu,楢yóu,猷yóu,鈾yóu,鲉yóu,輏yóu,駀yóu,蕕yóu,蝣yóu,魷yóu,輶yóu,鮋yóu,櫾yóu,邎yóu,庮yóu,甴yóu,遊yóu,羗yǒu,脩yǒu,戭yǒu,友yǒu,有yǒu,丣yǒu,卣yǒu,苃yǒu,酉yǒu,羑yǒu,羐yǒu,莠yǒu,梄yǒu,聈yǒu,脜yǒu,铕yǒu,湵yǒu,蒏yǒu,蜏yǒu,銪yǒu,槱yǒu,牖yǒu,牗yǒu,黝yǒu,栯yǒu,禉yǒu,痏yòu,褎yòu,褏yòu,銹yòu,柚yòu,又yòu,右yòu,幼yòu,佑yòu,侑yòu,孧yòu,狖yòu,糿yòu,哊yòu,囿yòu,姷yòu,宥yòu,峟yòu,牰yòu,祐yòu,诱yòu,迶yòu,唀yòu,蚴yòu,亴yòu,貁yòu,釉yòu,酭yòu,鼬yòu,誘yòu,纡yū,迂yū,迃yū,穻yū,陓yū,紆yū,虶yū,唹yū,淤yū,盓yū,瘀yū,箊yū,亐yū,丂yú,桙yú,婾yú,媮yú,悇yú,汙yú,汚yú,鱮yú,颙yú,顒yú,渝yú,于yú,邘yú,伃yú,余yú,妤yú,扵yú,欤yú,玗yú,玙yú,於yú,盂yú,臾yú,鱼yú,俞yú,兪yú,禺yú,竽yú,舁yú,茰yú,荢yú,娛yú,娯yú,娱yú,狳yú,谀yú,酑yú,馀yú,渔yú,萸yú,釪yú,隃yú,隅yú,雩yú,魚yú,堣yú,堬yú,崳yú,嵎yú,嵛yú,愉yú,揄yú,楰yú,畬yú,畭yú,硢yú,腴yú,逾yú,骬yú,愚yú,楡yú,榆yú,歈yú,牏yú,瑜yú,艅yú,虞yú,觎yú,漁yú,睮yú,窬yú,舆yú,褕yú,歶yú,羭yú,蕍yú,蝓yú,諛yú,雓yú,餘yú,魣yú,嬩yú,懙yú,覦yú,歟yú,璵yú,螸yú,輿yú,鍝yú,礖yú,謣yú,髃yú,鮽yú,旟yú,籅yú,騟yú,鯲yú,鰅yú,鷠yú,鸆yú,萮yú,芌yú,喩yú,媀yú,貗yú,衧yú,湡yú,澞yú,頨yǔ,蝺yǔ,藇yǔ,予yǔ,与yǔ,伛yǔ,宇yǔ,屿yǔ,羽yǔ,雨yǔ,俁yǔ,俣yǔ,挧yǔ,禹yǔ,语yǔ,圄yǔ,祤yǔ,偊yǔ,匬yǔ,圉yǔ,庾yǔ,敔yǔ,鄅yǔ,萭yǔ,傴yǔ,寙yǔ,斞yǔ,楀yǔ,瑀yǔ,瘐yǔ,與yǔ,語yǔ,窳yǔ,龉yǔ,噳yǔ,嶼yǔ,貐yǔ,斔yǔ,麌yǔ,蘌yǔ,齬yǔ,穥yǔ,峿yǔ,閼yù,穀yù,蟈yù,僪yù,鐍yù,肀yù,翑yù,衘yù,獝yù,玉yù,驭yù,圫yù,聿yù,芋yù,妪yù,忬yù,饫yù,育yù,郁yù,彧yù,昱yù,狱yù,秗yù,俼yù,峪yù,浴yù,砡yù,钰yù,预yù,喐yù,域yù,堉yù,悆yù,惐yù,欲yù,淢yù,淯yù,袬yù,逳yù,阈yù,喅yù,喻yù,寓yù,庽yù,御yù,棛yù,棜yù,棫yù,焴yù,琙yù,矞yù,裕yù,遇yù,飫yù,馭yù,鹆yù,愈yù,滪yù,煜yù,稢yù,罭yù,蒮yù,蓣yù,誉yù,鈺yù,預yù,嶎yù,戫yù,毓yù,獄yù,瘉yù,緎yù,蜟yù,蜮yù,輍yù,銉yù,隩yù,噊yù,慾yù,稶yù,蓹yù,薁yù,豫yù,遹yù,鋊yù,鳿yù,澦yù,燏yù,燠yù,蕷yù,諭yù,錥yù,閾yù,鴥yù,鴧yù,鴪yù,礇yù,禦yù,魊yù,鹬yù,癒yù,礜yù,篽yù,繘yù,鵒yù,櫲yù,饇yù,蘛yù,譽yù,轝yù,鐭yù,霱yù,欎yù,驈yù,鬻yù,籞yù,鱊yù,鷸yù,鸒yù,欝yù,軉yù,鬰yù,鬱yù,灪yù,爩yù,灹yù,吁yù,谕yù,嫗yù,儥yù,籲yù,裷yuān,嫚yuān,囦yuān,鸢yuān,剈yuān,冤yuān,弲yuān,悁yuān,眢yuān,鸳yuān,寃yuān,渁yuān,渆yuān,渊yuān,渕yuān,淵yuān,葾yuān,棩yuān,蒬yuān,蜎yuān,鹓yuān,箢yuān,鳶yuān,蜵yuān,駌yuān,鋺yuān,鴛yuān,嬽yuān,鵷yuān,灁yuān,鼝yuān,蝝yuān,鼘yuān,喛yuán,楥yuán,芫yuán,元yuán,贠yuán,邧yuán,员yuán,园yuán,沅yuán,杬yuán,垣yuán,爰yuán,貟yuán,原yuán,員yuán,圆yuán,笎yuán,袁yuán,厡yuán,酛yuán,圎yuán,援yuán,湲yuán,猨yuán,缘yuán,鈨yuán,鼋yuán,園yuán,圓yuán,塬yuán,媴yuán,源yuán,溒yuán,猿yuán,獂yuán,蒝yuán,榞yuán,榬yuán,辕yuán,緣yuán,縁yuán,蝯yuán,橼yuán,羱yuán,薗yuán,螈yuán,謜yuán,轅yuán,黿yuán,鎱yuán,櫞yuán,邍yuán,騵yuán,鶢yuán,鶰yuán,厵yuán,傆yuán,媛yuán,褑yuán,褤yuán,嫄yuán,远yuǎn,盶yuǎn,遠yuǎn,逺yuǎn,肙yuàn,妴yuàn,苑yuàn,怨yuàn,院yuàn,垸yuàn,衏yuàn,掾yuàn,瑗yuàn,禐yuàn,愿yuàn,裫yuàn,噮yuàn,願yuàn,哕yue,噦yuē,曰yuē,曱yuē,约yuē,約yuē,矱yuē,彟yuē,彠yuē,矆yuè,妜yuè,髺yuè,哾yuè,趯yuè,月yuè,戉yuè,汋yuè,岄yuè,抈yuè,礿yuè,岳yuè,玥yuè,恱yuè,悅yuè,悦yuè,蚎yuè,蚏yuè,軏yuè,钺yuè,阅yuè,捳yuè,跀yuè,跃yuè,粤yuè,越yuè,鈅yuè,粵yuè,鉞yuè,閱yuè,閲yuè,嬳yuè,樾yuè,篗yuè,嶽yuè,籆yuè,瀹yuè,蘥yuè,爚yuè,禴yuè,躍yuè,鸑yuè,籰yuè,龥yuè,鸙yuè,躒yuè,刖yuè,龠yuè,涒yūn,轀yūn,蒀yūn,煴yūn,蒕yūn,熅yūn,奫yūn,赟yūn,頵yūn,贇yūn,氲yūn,氳yūn,晕yūn,暈yūn,云yún,勻yún,匀yún,伝yún,呍yún,囩yún,妘yún,抣yún,纭yún,芸yún,昀yún,畇yún,眃yún,秐yún,郧yún,涢yún,紜yún,耘yún,鄖yún,雲yún,愪yún,溳yún,筼yún,蒷yún,熉yún,澐yún,蕓yún,鋆yún,橒yún,篔yún,縜yún,繧yún,荺yún,沄yún,允yǔn,夽yǔn,狁yǔn,玧yǔn,陨yǔn,殒yǔn,喗yǔn,鈗yǔn,隕yǔn,殞yǔn,馻yǔn,磒yǔn,霣yǔn,齫yǔn,齳yǔn,抎yǔn,緷yùn,孕yùn,运yùn,枟yùn,郓yùn,恽yùn,鄆yùn,酝yùn,傊yùn,惲yùn,愠yùn,運yùn,慍yùn,韫yùn,韵yùn,熨yùn,蕴yùn,賱yùn,醖yùn,醞yùn,餫yùn,韗yùn,韞yùn,蘊yùn,韻yùn,腪yùn,噈zā,帀zā,匝zā,沞zā,咂zā,拶zā,沯zā,桚zā,紮zā,鉔zā,臜zā,臢zā,砸zá,韴zá,雑zá,襍zá,雜zá,雥zá,囋zá,杂zá,咋zǎ,災zāi,灾zāi,甾zāi,哉zāi,栽zāi,烖zāi,渽zāi,溨zāi,睵zāi,賳zāi,宰zǎi,载zǎi,崽zǎi,載zǎi,仔zǎi,再zài,在zài,扗zài,洅zài,傤zài,酨zài,儎zài,篸zān,兂zān,糌zān,簪zān,簮zān,鐕zān,撍zān,咱zán,偺zán,喒zǎn,昝zǎn,寁zǎn,儧zǎn,攒zǎn,儹zǎn,趱zǎn,趲zǎn,揝zǎn,穳zàn,暂zàn,暫zàn,賛zàn,赞zàn,錾zàn,鄼zàn,濽zàn,蹔zàn,酂zàn,瓉zàn,贊zàn,鏨zàn,瓒zàn,灒zàn,讃zàn,瓚zàn,禶zàn,襸zàn,讚zàn,饡zàn,酇zàn,匨zāng,蔵zāng,牂zāng,羘zāng,赃zāng,賍zāng,臧zāng,賘zāng,贓zāng,髒zāng,贜zāng,脏zāng,驵zǎng,駔zǎng,奘zàng,弉zàng,塟zàng,葬zàng,銺zàng,臓zàng,臟zàng,傮zāo,遭zāo,糟zāo,醩zāo,蹧zāo,凿záo,鑿záo,早zǎo,枣zǎo,栆zǎo,蚤zǎo,棗zǎo,璅zǎo,澡zǎo,璪zǎo,薻zǎo,藻zǎo,灶zào,皁zào,皂zào,唕zào,唣zào,造zào,梍zào,慥zào,煰zào,艁zào,噪zào,簉zào,燥zào,竃zào,譟zào,趮zào,竈zào,躁zào,啫zē,伬zé,则zé,択zé,沢zé,择zé,泎zé,泽zé,责zé,迮zé,則zé,啧zé,帻zé,笮zé,舴zé,責zé,溭zé,嘖zé,嫧zé,幘zé,箦zé,蔶zé,樍zé,歵zé,諎zé,赜zé,擇zé,皟zé,瞔zé,礋zé,謮zé,賾zé,蠌zé,齚zé,齰zé,鸅zé,讁zé,葃zé,澤zé,仄zè,夨zè,庂zè,汄zè,昃zè,昗zè,捑zè,崱zè,贼zéi,賊zéi,鲗zéi,蠈zéi,鰂zéi,鱡zéi,怎zěn,谮zèn,囎zèn,譛zèn,曽zēng,増zēng,鄫zēng,增zēng,憎zēng,缯zēng,橧zēng,熷zēng,璔zēng,矰zēng,磳zēng,罾zēng,繒zēng,譄zēng,鱛zēng,縡zēng,鬷zěng,锃zèng,鋥zèng,甑zèng,赠zèng,贈zèng,馇zha,餷zha,蹅zhā,紥zhā,迊zhā,抯zhā,挓zhā,柤zhā,哳zhā,偧zhā,揸zhā,渣zhā,溠zhā,楂zhā,劄zhā,皶zhā,箚zhā,樝zhā,皻zhā,譇zhā,齄zhā,齇zhā,扎zhā,摣zhā,藸zhā,囃zhā,喳zhā,箑zhá,耫zhá,札zhá,轧zhá,軋zhá,闸zhá,蚻zhá,铡zhá,牐zhá,閘zhá,霅zhá,鍘zhá,譗zhá,挿zhǎ,揷zhǎ,厏zhǎ,苲zhǎ,砟zhǎ,鲊zhǎ,鲝zhǎ,踷zhǎ,鮓zhǎ,鮺zhǎ,眨zhǎ,吒zhà,乍zhà,诈zhà,咤zhà,奓zhà,炸zhà,宱zhà,痄zhà,蚱zhà,詐zhà,搾zhà,榨zhà,醡zhà,拃zhà,柞zhà,夈zhāi,粂zhāi,捚zhāi,斋zhāi,斎zhāi,榸zhāi,齋zhāi,摘zhāi,檡zhái,宅zhái,翟zhái,窄zhǎi,鉙zhǎi,骴zhài,簀zhài,债zhài,砦zhài,債zhài,寨zhài,瘵zhài,沾zhān,毡zhān,旃zhān,栴zhān,粘zhān,蛅zhān,惉zhān,詀zhān,趈zhān,詹zhān,閚zhān,谵zhān,嶦zhān,薝zhān,邅zhān,霑zhān,氊zhān,瞻zhān,鹯zhān,旜zhān,譫zhān,饘zhān,鳣zhān,驙zhān,魙zhān,鸇zhān,覱zhān,氈zhān,讝zhán,斩zhǎn,飐zhǎn,展zhǎn,盏zhǎn,崭zhǎn,斬zhǎn,琖zhǎn,搌zhǎn,盞zhǎn,嶃zhǎn,嶄zhǎn,榐zhǎn,颭zhǎn,嫸zhǎn,醆zhǎn,蹍zhǎn,欃zhàn,占zhàn,佔zhàn,战zhàn,栈zhàn,桟zhàn,站zhàn,偡zhàn,绽zhàn,菚zhàn,棧zhàn,湛zhàn,戦zhàn,綻zhàn,嶘zhàn,輚zhàn,戰zhàn,虥zhàn,虦zhàn,轏zhàn,蘸zhàn,驏zhàn,张zhāng,張zhāng,章zhāng,鄣zhāng,嫜zhāng,彰zhāng,慞zhāng,漳zhāng,獐zhāng,粻zhāng,蔁zhāng,遧zhāng,暲zhāng,樟zhāng,璋zhāng,餦zhāng,蟑zhāng,鏱zhāng,騿zhāng,鱆zhāng,麞zhāng,涱zhāng,傽zhāng,长zhǎng,仧zhǎng,長zhǎng,镸zhǎng,仉zhǎng,涨zhǎng,掌zhǎng,漲zhǎng,幥zhǎng,礃zhǎng,鞝zhǎng,鐣zhǎng,丈zhàng,仗zhàng,扙zhàng,杖zhàng,胀zhàng,账zhàng,粀zhàng,帳zhàng,脹zhàng,痮zhàng,障zhàng,墇zhàng,嶂zhàng,幛zhàng,賬zhàng,瘬zhàng,瘴zhàng,瞕zhàng,帐zhàng,鼌zhāo,鼂zhāo,謿zhāo,皽zhāo,佋zhāo,钊zhāo,妱zhāo,巶zhāo,招zhāo,昭zhāo,炤zhāo,盄zhāo,釗zhāo,鉊zhāo,駋zhāo,鍣zhāo,爫zhǎo,沼zhǎo,瑵zhǎo,爪zhǎo,找zhǎo,召zhào,兆zhào,诏zhào,枛zhào,垗zhào,狣zhào,赵zhào,笊zhào,肁zhào,旐zhào,棹zhào,罀zhào,詔zhào,照zhào,罩zhào,肇zhào,肈zhào,趙zhào,曌zhào,燳zhào,鮡zhào,櫂zhào,瞾zhào,羄zhào,啅zhào,龑yan,著zhe,着zhe,蜇zhē,嫬zhē,遮zhē,嗻zhē,摂zhé,歽zhé,砓zhé,籷zhé,虴zhé,哲zhé,埑zhé,粍zhé,袩zhé,啠zhé,悊zhé,晢zhé,晣zhé,辄zhé,喆zhé,蛰zhé,詟zhé,谪zhé,摺zhé,輒zhé,磔zhé,輙zhé,辙zhé,蟄zhé,嚞zhé,謫zhé,鮿zhé,轍zhé,襵zhé,讋zhé,厇zhé,謺zhé,者zhě,锗zhě,赭zhě,褶zhě,鍺zhě,这zhè,柘zhè,浙zhè,這zhè,淛zhè,蔗zhè,樜zhè,鹧zhè,蟅zhè,鷓zhè,趂zhēn,贞zhēn,针zhēn,侦zhēn,浈zhēn,珍zhēn,珎zhēn,貞zhēn,帪zhēn,栕zhēn,眞zhēn,真zhēn,砧zhēn,祯zhēn,針zhēn,偵zhēn,敒zhēn,桭zhēn,酙zhēn,寊zhēn,湞zhēn,遉zhēn,搸zhēn,斟zhēn,楨zhēn,獉zhēn,甄zhēn,禎zhēn,蒖zhēn,蓁zhēn,鉁zhēn,靕zhēn,榛zhēn,殝zhēn,瑧zhēn,禛zhēn,潧zhēn,樼zhēn,澵zhēn,臻zhēn,薽zhēn,錱zhēn,轃zhēn,鍖zhēn,鱵zhēn,胗zhēn,侲zhēn,揕zhēn,鎭zhēn,帧zhēn,幀zhēn,朾zhēn,椹zhēn,桢zhēn,箴zhēn,屒zhén,诊zhěn,抮zhěn,枕zhěn,姫zhěn,弫zhěn,昣zhěn,轸zhěn,畛zhěn,疹zhěn,眕zhěn,袗zhěn,聄zhěn,萙zhěn,裖zhěn,覙zhěn,診zhěn,軫zhěn,缜zhěn,稹zhěn,駗zhěn,縝zhěn,縥zhěn,辴zhěn,鬒zhěn,嫃zhěn,謓zhèn,迧zhèn,圳zhèn,阵zhèn,纼zhèn,挋zhèn,陣zhèn,鸩zhèn,振zhèn,朕zhèn,栚zhèn,紖zhèn,眹zhèn,赈zhèn,塦zhèn,絼zhèn,蜄zhèn,敶zhèn,誫zhèn,賑zhèn,鋴zhèn,镇zhèn,鴆zhèn,鎮zhèn,震zhèn,嶒zhēng,脀zhēng,凧zhēng,争zhēng,佂zhēng,姃zhēng,征zhēng,怔zhēng,爭zhēng,峥zhēng,炡zhēng,狰zhēng,烝zhēng,眐zhēng,钲zhēng,埩zhēng,崝zhēng,崢zhēng,猙zhēng,睁zhēng,聇zhēng,铮zhēng,媜zhēng,筝zhēng,徰zhēng,蒸zhēng,鉦zhēng,箏zhēng,徵zhēng,踭zhēng,篜zhēng,錚zhēng,鬇zhēng,癥zhēng,糽zhēng,睜zhēng,氶zhěng,抍zhěng,拯zhěng,塣zhěng,晸zhěng,愸zhěng,撜zhěng,整zhěng,憕zhèng,徎zhèng,挣zhèng,掙zhèng,正zhèng,证zhèng,诤zhèng,郑zhèng,政zhèng,症zhèng,証zhèng,鄭zhèng,鴊zhèng,證zhèng,諍zhèng,之zhī,支zhī,卮zhī,汁zhī,芝zhī,巵zhī,枝zhī,知zhī,织zhī,肢zhī,徔zhī,栀zhī,祗zhī,秓zhī,秖zhī,胑zhī,胝zhī,衼zhī,倁zhī,疷zhī,祬zhī,秪zhī,脂zhī,隻zhī,梔zhī,椥zhī,搘zhī,禔zhī,綕zhī,榰zhī,蜘zhī,馶zhī,鳷zhī,謢zhī,鴲zhī,織zhī,蘵zhī,鼅zhī,禵zhī,只zhī,鉄zhí,执zhí,侄zhí,坧zhí,直zhí,姪zhí,値zhí,值zhí,聀zhí,釞zhí,埴zhí,執zhí,职zhí,植zhí,殖zhí,絷zhí,跖zhí,墌zhí,摭zhí,馽zhí,嬂zhí,慹zhí,漐zhí,踯zhí,膱zhí,縶zhí,職zhí,蟙zhí,蹠zhí,軄zhí,躑zhí,秇zhí,埶zhí,戠zhí,禃zhí,茝zhǐ,絺zhǐ,觝zhǐ,徴zhǐ,止zhǐ,凪zhǐ,劧zhǐ,旨zhǐ,阯zhǐ,址zhǐ,坁zhǐ,帋zhǐ,沚zhǐ,纸zhǐ,芷zhǐ,抧zhǐ,祉zhǐ,茋zhǐ,咫zhǐ,恉zhǐ,指zhǐ,枳zhǐ,洔zhǐ,砋zhǐ,轵zhǐ,淽zhǐ,疻zhǐ,紙zhǐ,訨zhǐ,趾zhǐ,軹zhǐ,黹zhǐ,酯zhǐ,藢zhǐ,襧zhǐ,汦zhǐ,胵zhì,歭zhì,遟zhì,迣zhì,鶨zhì,亊zhì,銴zhì,至zhì,芖zhì,志zhì,忮zhì,扻zhì,豸zhì,厔zhì,垁zhì,帙zhì,帜zhì,治zhì,炙zhì,质zhì,郅zhì,俧zhì,峙zhì,庢zhì,庤zhì,栉zhì,洷zhì,祑zhì,陟zhì,娡zhì,徏zhì,挚zhì,晊zhì,桎zhì,狾zhì,秩zhì,致zhì,袟zhì,贽zhì,轾zhì,徝zhì,掷zhì,梽zhì,猘zhì,畤zhì,痔zhì,秲zhì,秷zhì,窒zhì,紩zhì,翐zhì,袠zhì,觗zhì,貭zhì,铚zhì,鸷zhì,傂zhì,崻zhì,彘zhì,智zhì,滞zhì,痣zhì,蛭zhì,骘zhì,廌zhì,滍zhì,稙zhì,稚zhì,置zhì,跱zhì,輊zhì,锧zhì,雉zhì,槜zhì,滯zhì,潌zhì,瘈zhì,製zhì,覟zhì,誌zhì,銍zhì,幟zhì,憄zhì,摯zhì,潪zhì,熫zhì,稺zhì,膣zhì,觯zhì,質zhì,踬zhì,鋕zhì,旘zhì,瀄zhì,緻zhì,隲zhì,鴙zhì,儨zhì,劕zhì,懥zhì,擲zhì,櫛zhì,懫zhì,贄zhì,櫍zhì,瓆zhì,觶zhì,騭zhì,礩zhì,豑zhì,騺zhì,驇zhì,躓zhì,鷙zhì,鑕zhì,豒zhì,制zhì,偫zhì,筫zhì,駤zhì,徸zhōng,蝩zhōng,中zhōng,伀zhōng,汷zhōng,刣zhōng,妐zhōng,彸zhōng,忠zhōng,炂zhōng,终zhōng,柊zhōng,盅zhōng,衳zhōng,钟zhōng,舯zhōng,衷zhōng,終zhōng,鈡zhōng,幒zhōng,蔠zhōng,锺zhōng,螤zhōng,鴤zhōng,螽zhōng,鍾zhōng,鼨zhōng,蹱zhōng,鐘zhōng,籦zhōng,衆zhōng,迚zhōng,肿zhǒng,种zhǒng,冢zhǒng,喠zhǒng,尰zhǒng,塚zhǒng,歱zhǒng,腫zhǒng,瘇zhǒng,種zhǒng,踵zhǒng,煄zhǒng,緟zhòng,仲zhòng,众zhòng,妕zhòng,狆zhòng,祌zhòng,茽zhòng,衶zhòng,重zhòng,蚛zhòng,偅zhòng,眾zhòng,堹zhòng,媑zhòng,筗zhòng,諥zhòng,啁zhōu,州zhōu,舟zhōu,诌zhōu,侜zhōu,周zhōu,洲zhōu,炿zhōu,诪zhōu,珘zhōu,辀zhōu,郮zhōu,婤zhōu,徟zhōu,矪zhōu,週zhōu,喌zhōu,粥zhōu,赒zhōu,輈zhōu,銂zhōu,賙zhōu,輖zhōu,霌zhōu,駲zhōu,嚋zhōu,盩zhōu,謅zhōu,譸zhōu,僽zhōu,諏zhōu,烐zhōu,妯zhóu,轴zhóu,軸zhóu,碡zhóu,肘zhǒu,帚zhǒu,菷zhǒu,晭zhǒu,睭zhǒu,箒zhǒu,鯞zhǒu,疛zhǒu,椆zhòu,詶zhòu,薵zhòu,纣zhòu,伷zhòu,呪zhòu,咒zhòu,宙zhòu,绉zhòu,冑zhòu,咮zhòu,昼zhòu,紂zhòu,胄zhòu,荮zhòu,晝zhòu,皱zhòu,酎zhòu,粙zhòu,葤zhòu,詋zhòu,甃zhòu,皺zhòu,駎zhòu,噣zhòu,縐zhòu,骤zhòu,籕zhòu,籒zhòu,驟zhòu,籀zhòu,蕏zhū,藷zhū,朱zhū,劯zhū,侏zhū,诛zhū,邾zhū,洙zhū,茱zhū,株zhū,珠zhū,诸zhū,猪zhū,硃zhū,袾zhū,铢zhū,絑zhū,蛛zhū,誅zhū,跦zhū,槠zhū,潴zhū,蝫zhū,銖zhū,橥zhū,諸zhū,豬zhū,駯zhū,鮢zhū,瀦zhū,櫧zhū,櫫zhū,鼄zhū,鯺zhū,蠩zhū,秼zhū,騶zhū,鴸zhū,薥zhú,鸀zhú,朮zhú,竹zhú,竺zhú,炢zhú,茿zhú,烛zhú,逐zhú,笜zhú,舳zhú,瘃zhú,蓫zhú,燭zhú,蠋zhú,躅zhú,鱁zhú,劚zhú,孎zhú,灟zhú,斸zhú,曯zhú,欘zhú,蠾zhú,钃zhú,劅zhú,斀zhú,爥zhú,主zhǔ,宔zhǔ,拄zhǔ,砫zhǔ,罜zhǔ,渚zhǔ,煑zhǔ,煮zhǔ,詝zhǔ,嘱zhǔ,濐zhǔ,麈zhǔ,瞩zhǔ,囑zhǔ,矚zhǔ,尌zhù,伫zhù,佇zhù,住zhù,助zhù,纻zhù,苎zhù,坾zhù,杼zhù,苧zhù,贮zhù,驻zhù,壴zhù,柱zhù,柷zhù,殶zhù,炷zhù,祝zhù,疰zhù,眝zhù,祩zhù,竚zhù,莇zhù,紵zhù,紸zhù,羜zhù,蛀zhù,嵀zhù,筑zhù,註zhù,貯zhù,跓zhù,軴zhù,铸zhù,筯zhù,鉒zhù,馵zhù,墸zhù,箸zhù,翥zhù,樦zhù,鋳zhù,駐zhù,築zhù,篫zhù,霔zhù,麆zhù,鑄zhù,櫡zhù,注zhù,飳zhù,抓zhuā,檛zhuā,膼zhuā,髽zhuā,跩zhuǎi,睉zhuài,拽zhuài,耑zhuān,专zhuān,専zhuān,砖zhuān,專zhuān,鄟zhuān,瑼zhuān,膞zhuān,磚zhuān,諯zhuān,蟤zhuān,顓zhuān,颛zhuān,转zhuǎn,転zhuǎn,竱zhuǎn,轉zhuǎn,簨zhuàn,灷zhuàn,啭zhuàn,堟zhuàn,蒃zhuàn,瑑zhuàn,僎zhuàn,撰zhuàn,篆zhuàn,馔zhuàn,饌zhuàn,囀zhuàn,籑zhuàn,僝zhuàn,妆zhuāng,追zhuī,骓zhuī,椎zhuī,锥zhuī,錐zhuī,騅zhuī,鵻zhuī,沝zhuǐ,倕zhuì,埀zhuì,腏zhuì,笍zhuì,娷zhuì,缀zhuì,惴zhuì,甀zhuì,缒zhuì,畷zhuì,膇zhuì,墜zhuì,綴zhuì,赘zhuì,縋zhuì,諈zhuì,醊zhuì,錣zhuì,餟zhuì,礈zhuì,贅zhuì,轛zhuì,鑆zhuì,坠zhuì,湻zhūn,宒zhūn,迍zhūn,肫zhūn,窀zhūn,谆zhūn,諄zhūn,衠zhūn,訰zhūn,准zhǔn,準zhǔn,綧zhǔn,稕zhǔn,凖zhǔn,鐯zhuo,拙zhuō,炪zhuō,倬zhuō,捉zhuō,桌zhuō,涿zhuō,棳zhuō,琸zhuō,窧zhuō,槕zhuō,蠿zhuō,矠zhuó,卓zhuó,圴zhuó,犳zhuó,灼zhuó,妰zhuó,茁zhuó,斫zhuó,浊zhuó,丵zhuó,浞zhuó,诼zhuó,酌zhuó,啄zhuó,娺zhuó,梲zhuó,斮zhuó,晫zhuó,椓zhuó,琢zhuó,斱zhuó,硺zhuó,窡zhuó,罬zhuó,撯zhuó,擆zhuó,斲zhuó,禚zhuó,諁zhuó,諑zhuó,濁zhuó,擢zhuó,斵zhuó,濯zhuó,镯zhuó,鵫zhuó,灂zhuó,蠗zhuó,鐲zhuó,籗zhuó,鷟zhuó,籱zhuó,烵zhuó,謶zhuó,薋zī,菑zī,吱zī,孜zī,茊zī,兹zī,咨zī,姕zī,姿zī,茲zī,栥zī,紎zī,赀zī,资zī,崰zī,淄zī,秶zī,缁zī,谘zī,赼zī,嗞zī,嵫zī,椔zī,湽zī,滋zī,粢zī,葘zī,辎zī,鄑zī,孶zī,禌zī,觜zī,貲zī,資zī,趑zī,锱zī,緇zī,鈭zī,镃zī,龇zī,輜zī,鼒zī,澬zī,諮zī,趦zī,輺zī,錙zī,髭zī,鲻zī,鍿zī,頾zī,頿zī,鯔zī,鶅zī,鰦zī,齜zī,訾zī,訿zī,芓zī,孳zī,鎡zī,茈zǐ,泚zǐ,籽zǐ,子zǐ,姉zǐ,姊zǐ,杍zǐ,矷zǐ,秄zǐ,呰zǐ,秭zǐ,耔zǐ,虸zǐ,笫zǐ,梓zǐ,釨zǐ,啙zǐ,紫zǐ,滓zǐ,榟zǐ,橴zǐ,自zì,茡zì,倳zì,剚zì,恣zì,牸zì,渍zì,眥zì,眦zì,胔zì,胾zì,漬zì,字zì,唨zo,潨zōng,宗zōng,倧zōng,综zōng,骔zōng,堫zōng,嵏zōng,嵕zōng,惾zōng,棕zōng,猣zōng,腙zōng,葼zōng,朡zōng,椶zōng,嵸zōng,稯zōng,緃zōng,熧zōng,緵zōng,翪zōng,蝬zōng,踨zōng,踪zōng,磫zōng,豵zōng,蹤zōng,騌zōng,鬃zōng,騣zōng,鬉zōng,鯮zōng,鯼zōng,鑁zōng,綜zōng,潀zóng,潈zóng,蓯zǒng,熜zǒng,緫zǒng,总zǒng,偬zǒng,捴zǒng,惣zǒng,愡zǒng,揔zǒng,搃zǒng,傯zǒng,蓗zǒng,摠zǒng,総zǒng,燪zǒng,總zǒng,鍯zǒng,鏓zǒng,縦zǒng,縂zǒng,纵zòng,昮zòng,疭zòng,倊zòng,猔zòng,碂zòng,粽zòng,糉zòng,瘲zòng,錝zòng,縱zòng,邹zōu,驺zōu,诹zōu,陬zōu,菆zōu,棷zōu,棸zōu,鄒zōu,緅zōu,鄹zōu,鯫zōu,黀zōu,齺zōu,芻zōu,鲰zōu,辶zǒu,赱zǒu,走zǒu,鯐zǒu,搊zǒu,奏zòu,揍zòu,租zū,菹zū,錊zū,伜zú,倅zú,紣zú,綷zú,顇zú,卆zú,足zú,卒zú,哫zú,崒zú,崪zú,族zú,稡zú,箤zú,踤zú,踿zú,镞zú,鏃zú,诅zǔ,阻zǔ,俎zǔ,爼zǔ,祖zǔ,組zǔ,詛zǔ,靻zǔ,鎺zǔ,组zǔ,鉆zuān,劗zuān,躜zuān,鑚zuān,躦zuān,繤zuǎn,缵zuǎn,纂zuǎn,纉zuǎn,籫zuǎn,纘zuǎn,欑zuàn,赚zuàn,賺zuàn,鑽zuàn,钻zuàn,攥zuàn,厜zuī,嗺zuī,樶zuī,蟕zuī,纗zuī,嶉zuǐ,槯zuǐ,嶊zuǐ,噿zuǐ,濢zuǐ,璻zuǐ,嘴zuǐ,睟zuì,枠zuì,栬zuì,絊zuì,酔zuì,晬zuì,最zuì,祽zuì,罪zuì,辠zuì,蕞zuì,醉zuì,嶵zuì,檇zuì,檌zuì,穝zuì,墫zūn,尊zūn,嶟zūn,遵zūn,樽zūn,繜zūn,罇zūn,鶎zūn,鐏zūn,鱒zūn,鷷zūn,鳟zūn,僔zǔn,噂zǔn,撙zǔn,譐zǔn,拵zùn,捘zùn,銌zùn,咗zuo,昨zuó,秨zuó,捽zuó,椊zuó,稓zuó,筰zuó,鈼zuó,阝zuǒ,左zuǒ,佐zuǒ,繓zuǒ,酢zuò,作zuò,坐zuò,阼zuò,岝zuò,岞zuò,怍zuò,侳zuò,祚zuò,胙zuò,唑zuò,座zuò,袏zuò,做zuò,葄zuò,蓙zuò,飵zuò,糳zuò,疮chuāng,牕chuāng,噇chuáng,闖chuǎng,剏chuàng,霜shuāng,欆shuāng,驦shuāng,慡shuǎng,灀shuàng,窓chuāng,瘡chuāng,闯chuǎng,仺chuàng,剙chuàng,雙shuāng,礵shuāng,鸘shuāng,樉shuǎng,谁shuí,鹴shuāng,爽shuǎng,鏯shuǎng,孀shuāng,孇shuāng,騻shuāng,焋zhuàng,幢zhuàng,撞zhuàng,隹zhuī,傱shuǎn,"; diff --git a/examples/assets/scripts/pinyin/hanziPinyinWithoutYin.js b/examples/assets/scripts/pinyin/hanziPinyinWithoutYin.js deleted file mode 100644 index c8f827c04..000000000 --- a/examples/assets/scripts/pinyin/hanziPinyinWithoutYin.js +++ /dev/null @@ -1 +0,0 @@ -exports.hzpy="吖a,阿a,啊a,锕a,錒a,嗄a,厑ae,哎ai,哀ai,唉ai,埃ai,挨ai,溾ai,锿ai,鎄ai,啀ai,捱ai,皑ai,凒ai,嵦ai,溰ai,嘊ai,敱ai,敳ai,皚ai,癌ai,娾ai,隑ai,剴ai,騃ai,毐ai,昹ai,矮ai,蔼ai,躷ai,濭ai,藹ai,譪ai,霭ai,靄ai,鯦ai,噯ai,艾ai,伌ai,爱ai,砹ai,硋ai,隘ai,嗌ai,塧ai,嫒ai,愛ai,碍ai,叆ai,暧ai,瑷ai,僾ai,壒ai,嬡ai,懓ai,薆ai,懝ai,曖ai,賹ai,餲ai,鴱ai,皧ai,瞹ai,馤ai,礙ai,譺ai,鑀ai,鱫ai,靉ai,閡ai,欬ai,焥ai,堨ai,乂ai,嗳ai,璦ai,安an,侒an,峖an,桉an,氨an,庵an,谙an,媕an,萻an,葊an,痷an,腤an,鹌an,蓭an,誝an,鞌an,鞍an,盦an,闇an,馣an,鮟an,盫an,鵪an,韽an,鶕an,啽an,厰an,鴳an,諳an,玵an,雸an,儑an,垵an,俺an,唵an,埯an,铵an,隌an,揞an,晻an,罯an,銨an,碪an,犴an,岸an,按an,洝an,荌an,案an,胺an,豻an,堓an,婩an,貋an,錌an,黯an,頇an,屽an,垾an,遃an,暗an,肮ang,骯ang,岇ang,昂ang,昻ang,卬ang,枊ang,盎ang,醠ang,凹ao,垇ao,柪ao,軪ao,爊ao,熝ao,眑ao,泑ao,梎ao,敖ao,厫ao,隞ao,嗷ao,嗸ao,嶅ao,廒ao,滶ao,獒ao,獓ao,遨ao,摮ao,璈ao,蔜ao,磝ao,翱ao,聱ao,螯ao,翶ao,謷ao,翺ao,鳌ao,鏖ao,鰲ao,鷔ao,鼇ao,慠ao,鏕ao,嚻ao,熬ao,抝ao,芺ao,袄ao,媪ao,镺ao,媼ao,襖ao,郩ao,鴁ao,蝹ao,坳ao,岙ao,扷ao,岰ao,傲ao,奡ao,奥ao,嫯ao,奧ao,澚ao,墺ao,嶴ao,澳ao,懊ao,擙ao,謸ao,鏊ao,驁ao,骜ao,吧ba,八ba,仈ba,巴ba,叭ba,扒ba,朳ba,玐ba,夿ba,岜ba,芭ba,疤ba,哵ba,捌ba,笆ba,粑ba,紦ba,羓ba,蚆ba,釟ba,鲃ba,魞ba,鈀ba,柭ba,丷ba,峇ba,豝ba,叐ba,犮ba,抜ba,坺ba,妭ba,拔ba,茇ba,炦ba,癹ba,胈ba,釛ba,菝ba,詙ba,跋ba,軷ba,颰ba,魃ba,墢ba,鼥ba,把ba,钯ba,靶ba,坝ba,弝ba,爸ba,罢ba,鲅ba,罷ba,鮁ba,覇ba,矲ba,霸ba,壩ba,灞ba,欛ba,鲌ba,鮊ba,皅ba,挀bai,掰bai,白bai,百bai,佰bai,柏bai,栢bai,捭bai,竡bai,粨bai,絔bai,摆bai,擺bai,襬bai,庍bai,拝bai,败bai,拜bai,敗bai,稗bai,粺bai,鞁bai,薭bai,贁bai,韛bai,扳ban,攽ban,朌ban,班ban,般ban,颁ban,斑ban,搬ban,斒ban,頒ban,瘢ban,螁ban,螌ban,褩ban,癍ban,辬ban,籓ban,肦ban,鳻ban,搫ban,阪ban,坂ban,岅ban,昄ban,板ban,版ban,钣ban,粄ban,舨ban,鈑ban,蝂ban,魬ban,覂ban,瓪ban,办ban,半ban,伴ban,扮ban,姅ban,怑ban,拌ban,绊ban,秚ban,湴ban,絆ban,鉡ban,靽ban,辦ban,瓣ban,跘ban,邦bang,峀bang,垹bang,帮bang,捠bang,梆bang,浜bang,邫bang,幚bang,縍bang,幫bang,鞤bang,幇bang,绑bang,綁bang,榜bang,牓bang,膀bang,騯bang,玤bang,蚌bang,傍bang,棒bang,棓bang,硥bang,谤bang,塝bang,徬bang,稖bang,蒡bang,蜯bang,镑bang,艕bang,謗bang,鎊bang,埲bang,蚄bang,蛖bang,嫎bang,勹bao,包bao,佨bao,孢bao,胞bao,剝bao,笣bao,煲bao,龅bao,蕔bao,褒bao,闁bao,襃bao,齙bao,剥bao,枹bao,裦bao,苞bao,窇bao,嫑bao,雹bao,铇bao,薄bao,宝bao,怉bao,饱bao,保bao,鸨bao,珤bao,堡bao,堢bao,媬bao,葆bao,寚bao,飹bao,飽bao,褓bao,駂bao,鳵bao,緥bao,賲bao,藵bao,寳bao,寶bao,靌bao,宀bao,鴇bao,勽bao,报bao,抱bao,豹bao,菢bao,袌bao,報bao,鉋bao,鲍bao,靤bao,骲bao,暴bao,髱bao,虣bao,鮑bao,儤bao,曓bao,爆bao,忁bao,鑤bao,蚫bao,瀑bao,萡be,呗bei,唄bei,陂bei,卑bei,盃bei,桮bei,悲bei,揹bei,碑bei,鹎bei,藣bei,鵯bei,柸bei,錍bei,椑bei,諀bei,杯bei,喺bei,北bei,鉳bei,垻bei,贝bei,狈bei,貝bei,邶bei,备bei,昁bei,牬bei,苝bei,背bei,钡bei,俻bei,倍bei,悖bei,狽bei,被bei,偝bei,偹bei,梖bei,珼bei,備bei,僃bei,惫bei,焙bei,琲bei,軰bei,辈bei,愂bei,碚bei,禙bei,蓓bei,蛽bei,犕bei,褙bei,誖bei,骳bei,輩bei,鋇bei,憊bei,糒bei,鞴bei,鐾bei,鐴bei,杮bei,韝bei,棑bei,哱bei,鄁bei,奔ben,泍ben,贲ben,倴ben,渀ben,逩ben,犇ben,賁ben,錛ben,喯ben,锛ben,本ben,苯ben,奙ben,畚ben,楍ben,翉ben,夲ben,坌ben,捹ben,桳ben,笨ben,撪ben,獖ben,輽ben,炃ben,燌ben,夯ben,伻beng,祊beng,奟beng,崩beng,绷beng,絣beng,閍beng,嵭beng,痭beng,嘣beng,綳beng,繃beng,嗙beng,挷beng,傰beng,搒beng,甭beng,埄beng,菶beng,琣beng,鞛beng,琫beng,泵beng,迸beng,逬beng,跰beng,塴beng,甏beng,镚beng,蹦beng,鏰beng,錋beng,皀bi,屄bi,偪bi,毴bi,逼bi,豍bi,螕bi,鲾bi,鎞bi,鵖bi,鰏bi,悂bi,鈚bi,柲bi,荸bi,鼻bi,嬶bi,匕bi,比bi,夶bi,朼bi,佊bi,妣bi,沘bi,疕bi,彼bi,柀bi,秕bi,俾bi,笔bi,粃bi,粊bi,舭bi,啚bi,筆bi,鄙bi,聛bi,貏bi,箄bi,崥bi,魮bi,娝bi,箃bi,吡bi,匂bi,币bi,必bi,毕bi,闭bi,佖bi,坒bi,庇bi,诐bi,邲bi,妼bi,怭bi,枈bi,畀bi,苾bi,哔bi,毖bi,珌bi,疪bi,胇bi,荜bi,陛bi,毙bi,狴bi,畢bi,袐bi,铋bi,婢bi,庳bi,敝bi,梐bi,萆bi,萞bi,閇bi,閉bi,堛bi,弻bi,弼bi,愊bi,愎bi,湢bi,皕bi,禆bi,筚bi,貱bi,赑bi,嗶bi,彃bi,楅bi,滗bi,滭bi,煏bi,痹bi,痺bi,腷bi,蓖bi,蓽bi,蜌bi,裨bi,跸bi,鉍bi,閟bi,飶bi,幣bi,弊bi,熚bi,獙bi,碧bi,稫bi,箅bi,箆bi,綼bi,蔽bi,馝bi,幤bi,潷bi,獘bi,罼bi,襅bi,駜bi,髲bi,壁bi,嬖bi,廦bi,篦bi,篳bi,縪bi,薜bi,觱bi,避bi,鮅bi,斃bi,濞bi,臂bi,蹕bi,鞞bi,髀bi,奰bi,璧bi,鄨bi,饆bi,繴bi,襞bi,鏎bi,鞸bi,韠bi,躃bi,躄bi,魓bi,贔bi,驆bi,鷝bi,鷩bi,鼊bi,咇bi,鮩bi,畐bi,踾bi,鶝bi,闬bi,閈bi,祕bi,鴓bi,怶bi,旇bi,翍bi,肶bi,笓bi,鸊bi,肸bi,畁bi,詖bi,鄪bi,襣bi,边bian,砭bian,笾bian,猵bian,编bian,萹bian,煸bian,牑bian,甂bian,箯bian,編bian,蝙bian,獱bian,邉bian,鍽bian,鳊bian,邊bian,鞭bian,鯿bian,籩bian,糄bian,揙bian,臱bian,鯾bian,炞bian,贬bian,扁bian,窆bian,匾bian,貶bian,惼bian,碥bian,稨bian,褊bian,鴘bian,藊bian,釆bian,辧bian,疺bian,覵bian,鶣bian,卞bian,弁bian,忭bian,抃bian,汳bian,汴bian,苄bian,峅bian,便bian,变bian,変bian,昪bian,覍bian,缏bian,遍bian,閞bian,辡bian,緶bian,艑bian,辨bian,辩bian,辫bian,辮bian,辯bian,變bian,彪biao,标biao,飑biao,骉biao,髟biao,淲biao,猋biao,脿biao,墂biao,幖biao,滮biao,蔈biao,骠biao,標biao,熛biao,膘biao,麃biao,瘭biao,镖biao,飙biao,飚biao,儦biao,颷biao,瀌biao,藨biao,謤biao,爂biao,臕biao,贆biao,鏢biao,穮biao,镳biao,飆biao,飇biao,飈biao,飊biao,驃biao,鑣biao,驫biao,摽biao,膔biao,篻biao,僄biao,徱biao,表biao,婊biao,裱biao,褾biao,錶biao,檦biao,諘biao,俵biao,鳔biao,鰾biao,憋bie,鳖bie,鱉bie,鼈bie,虌bie,龞bie,蟞bie,別bie,别bie,莂bie,蛂bie,徶bie,襒bie,蹩bie,穪bie,瘪bie,癟bie,彆bie,汃bin,邠bin,砏bin,宾bin,彬bin,斌bin,椕bin,滨bin,缤bin,槟bin,瑸bin,豩bin,賓bin,賔bin,镔bin,儐bin,濒bin,濱bin,濵bin,虨bin,豳bin,璸bin,瀕bin,霦bin,繽bin,蠙bin,鑌bin,顮bin,檳bin,玢bin,訜bin,傧bin,氞bin,摈bin,殡bin,膑bin,髩bin,擯bin,鬂bin,臏bin,髌bin,鬓bin,髕bin,鬢bin,殯bin,仌bing,氷bing,冰bing,兵bing,栟bing,掤bing,梹bing,鋲bing,幷bing,丙bing,邴bing,陃bing,怲bing,抦bing,秉bing,苪bing,昞bing,昺bing,柄bing,炳bing,饼bing,眪bing,窉bing,蛃bing,禀bing,鈵bing,鉼bing,鞆bing,餅bing,餠bing,燷bing,庰bing,偋bing,寎bing,綆bing,稟bing,癛bing,癝bing,琕bing,棅bing,并bing,並bing,併bing,垪bing,倂bing,栤bing,病bing,竝bing,傡bing,摒bing,誁bing,靐bing,疒bing,啵bo,蔔bo,卜bo,噃bo,趵bo,癶bo,拨bo,波bo,玻bo,袚bo,袯bo,钵bo,饽bo,紴bo,缽bo,菠bo,碆bo,鉢bo,僠bo,嶓bo,撥bo,播bo,餑bo,磻bo,蹳bo,驋bo,鱍bo,帗bo,盋bo,脖bo,仢bo,伯bo,孛bo,犻bo,驳bo,帛bo,泊bo,狛bo,苩bo,侼bo,勃bo,胉bo,郣bo,亳bo,挬bo,浡bo,瓟bo,秡bo,钹bo,铂bo,桲bo,淿bo,舶bo,博bo,渤bo,湐bo,葧bo,鹁bo,愽bo,搏bo,猼bo,鈸bo,鉑bo,馎bo,僰bo,煿bo,箔bo,膊bo,艊bo,馛bo,駁bo,踣bo,鋍bo,镈bo,壆bo,馞bo,駮bo,豰bo,嚗bo,懪bo,礡bo,簙bo,鎛bo,餺bo,鵓bo,犦bo,髆bo,髉bo,欂bo,襮bo,礴bo,鑮bo,肑bo,茀bo,袹bo,穛bo,彴bo,瓝bo,牔bo,蚾bo,箥bo,跛bo,簸bo,孹bo,擘bo,檗bo,糪bo,譒bo,蘗bo,襎bo,檘bo,蔢bo,峬bu,庯bu,逋bu,钸bu,晡bu,鈽bu,誧bu,餔bu,鵏bu,秿bu,陠bu,鯆bu,轐bu,醭bu,不bu,輹bu,卟bu,补bu,哺bu,捕bu,補bu,鳪bu,獛bu,鸔bu,擈bu,佈bu,吥bu,步bu,咘bu,怖bu,歨bu,歩bu,钚bu,勏bu,埗bu,悑bu,捗bu,荹bu,部bu,埠bu,瓿bu,鈈bu,廍bu,蔀bu,踄bu,郶bu,篰bu,餢bu,簿bu,尃bu,箁bu,抪bu,柨bu,布bu,擦ca,攃ca,礤ca,礸ca,遪ca,偲cai,猜cai,揌cai,才cai,材cai,财cai,財cai,戝cai,裁cai,采cai,倸cai,埰cai,婇cai,寀cai,彩cai,採cai,睬cai,跴cai,綵cai,踩cai,菜cai,棌cai,蔡cai,縩cai,乲cal,参can,參can,飡can,骖can,喰can,湌can,傪can,嬠can,餐can,驂can,嵾can,飱can,残can,蚕can,惭can,殘can,慚can,蝅can,慙can,蠶can,蠺can,惨can,慘can,噆can,憯can,黪can,黲can,灿can,粲can,儏can,澯can,薒can,燦can,璨can,爘can,謲can,仓cang,沧cang,苍cang,倉cang,舱cang,凔cang,嵢cang,滄cang,獊cang,蒼cang,濸cang,艙cang,螥cang,罉cang,藏cang,欌cang,鑶cang,賶cang,撡cao,操cao,糙cao,曺cao,嘈cao,嶆cao,漕cao,蓸cao,槽cao,褿cao,艚cao,螬cao,鏪cao,慒cao,曹cao,艹cao,艸cao,草cao,愺cao,懆cao,騲cao,慅cao,肏cao,鄵cao,襙cao,冊ce,册ce,侧ce,厕ce,恻ce,拺ce,测ce,荝ce,敇ce,側ce,粣ce,萗ce,廁ce,惻ce,測ce,策ce,萴ce,筞ce,蓛ce,墄ce,箣ce,憡ce,刂ce,厠ce,膥cen,岑cen,梣cen,涔cen,硶cen,噌ceng,层ceng,層ceng,竲ceng,驓ceng,曾ceng,蹭ceng,硛ceok,硳ceok,岾ceom,猠ceon,乽ceor,嚓cha,叉cha,扠cha,芆cha,杈cha,肞cha,臿cha,訍cha,偛cha,嗏cha,插cha,銟cha,锸cha,艖cha,疀cha,鍤cha,鎈cha,垞cha,查cha,査cha,茬cha,茶cha,嵖cha,猹cha,靫cha,槎cha,察cha,碴cha,褨cha,檫cha,搽cha,衩cha,镲cha,鑔cha,奼cha,汊cha,岔cha,侘cha,诧cha,剎cha,姹cha,差cha,紁cha,詫cha,拆chai,钗chai,釵chai,犲chai,侪chai,柴chai,祡chai,豺chai,儕chai,喍chai,虿chai,袃chai,瘥chai,蠆chai,囆chai,辿chan,觇chan,梴chan,掺chan,搀chan,覘chan,裧chan,摻chan,鋓chan,幨chan,襜chan,攙chan,嚵chan,脠chan,婵chan,谗chan,孱chan,棎chan,湹chan,禅chan,馋chan,嬋chan,煘chan,缠chan,獑chan,蝉chan,誗chan,鋋chan,儃chan,廛chan,潹chan,潺chan,緾chan,磛chan,禪chan,毚chan,鄽chan,瀍chan,蟬chan,儳chan,劖chan,蟾chan,酁chan,壥chan,巉chan,瀺chan,纏chan,纒chan,躔chan,艬chan,讒chan,鑱chan,饞chan,繟chan,澶chan,镵chan,产chan,刬chan,旵chan,丳chan,浐chan,剗chan,谄chan,產chan,産chan,铲chan,阐chan,蒇chan,剷chan,嵼chan,摌chan,滻chan,幝chan,蕆chan,諂chan,閳chan,燀chan,簅chan,冁chan,醦chan,闡chan,囅chan,灛chan,讇chan,墠chan,骣chan,鏟chan,忏chan,硟chan,摲chan,懴chan,颤chan,懺chan,羼chan,韂chan,顫chan,伥chang,昌chang,倀chang,娼chang,淐chang,猖chang,菖chang,阊chang,晿chang,椙chang,琩chang,裮chang,锠chang,錩chang,閶chang,鲳chang,鯧chang,鼚chang,兏chang,肠chang,苌chang,尝chang,偿chang,常chang,徜chang,瓺chang,萇chang,甞chang,腸chang,嘗chang,嫦chang,瑺chang,膓chang,鋿chang,償chang,嚐chang,蟐chang,鲿chang,鏛chang,鱨chang,棖chang,尙chang,厂chang,场chang,昶chang,場chang,敞chang,僘chang,廠chang,氅chang,鋹chang,惝chang,怅chang,玚chang,畅chang,倡chang,鬯chang,唱chang,悵chang,暢chang,畼chang,誯chang,韔chang,抄chao,弨chao,怊chao,欩chao,钞chao,焯chao,超chao,鈔chao,繛chao,樔chao,绰chao,綽chao,綤chao,牊chao,巢chao,巣chao,朝chao,鄛chao,漅chao,嘲chao,潮chao,窲chao,罺chao,轈chao,晁chao,吵chao,炒chao,眧chao,煼chao,麨chao,巐chao,粆chao,仦chao,耖chao,觘chao,趠chao,车che,車che,砗che,唓che,硨che,蛼che,莗che,扯che,偖che,撦che,彻che,坼che,迠che,烢che,聅che,掣che,硩che,頙che,徹che,撤che,澈che,勶che,瞮che,爡che,喢che,賝chen,伧chen,傖chen,抻chen,郴chen,棽chen,琛chen,嗔chen,綝chen,諃chen,尘chen,臣chen,忱chen,沉chen,辰chen,陈chen,茞chen,宸chen,烥chen,莐chen,陳chen,敐chen,晨chen,訦chen,谌chen,揨chen,煁chen,蔯chen,塵chen,樄chen,瘎chen,霃chen,螴chen,諶chen,麎chen,曟chen,鷐chen,薼chen,趻chen,碜chen,墋chen,夦chen,磣chen,踸chen,贂chen,衬chen,疢chen,龀chen,趁chen,榇chen,齓chen,齔chen,嚫chen,谶chen,襯chen,讖chen,瀋chen,称cheng,稱cheng,阷cheng,泟cheng,柽cheng,爯cheng,棦cheng,浾cheng,偁cheng,蛏cheng,铛cheng,牚cheng,琤cheng,赪cheng,憆cheng,摚cheng,靗cheng,撐cheng,撑cheng,緽cheng,橕cheng,瞠cheng,赬cheng,頳cheng,檉cheng,竀cheng,蟶cheng,鏳cheng,鏿cheng,饓cheng,鐺cheng,丞cheng,成cheng,呈cheng,承cheng,枨cheng,诚cheng,郕cheng,乗cheng,城cheng,娍cheng,宬cheng,峸cheng,洆cheng,荿cheng,乘cheng,埕cheng,挰cheng,珹cheng,掁cheng,窚cheng,脭cheng,铖cheng,堘cheng,惩cheng,椉cheng,程cheng,筬cheng,絾cheng,裎cheng,塖cheng,溗cheng,碀cheng,誠cheng,畻cheng,酲cheng,鋮cheng,澄cheng,橙cheng,檙cheng,鯎cheng,瀓cheng,懲cheng,騬cheng,塍cheng,悜cheng,逞cheng,骋cheng,庱cheng,睈cheng,騁cheng,秤cheng,吃chi,妛chi,杘chi,侙chi,哧chi,蚩chi,鸱chi,瓻chi,眵chi,笞chi,訵chi,嗤chi,媸chi,摛chi,痴chi,瞝chi,螭chi,鴟chi,鵄chi,癡chi,魑chi,齝chi,攡chi,麶chi,彲chi,黐chi,蚳chi,摴chi,彨chi,弛chi,池chi,驰chi,迟chi,岻chi,茌chi,持chi,竾chi,淔chi,筂chi,貾chi,遅chi,馳chi,墀chi,踟chi,遲chi,篪chi,謘chi,尺chi,叺chi,呎chi,肔chi,卶chi,齿chi,垑chi,胣chi,恥chi,耻chi,蚇chi,豉chi,欼chi,歯chi,裭chi,鉹chi,褫chi,齒chi,侈chi,彳chi,叱chi,斥chi,灻chi,赤chi,饬chi,抶chi,勅chi,恜chi,炽chi,翄chi,翅chi,烾chi,痓chi,啻chi,湁chi,飭chi,傺chi,痸chi,腟chi,鉓chi,雴chi,憏chi,翤chi,遫chi,慗chi,瘛chi,翨chi,熾chi,懘chi,趩chi,饎chi,鶒chi,鷘chi,餝chi,歗chi,敕chi,充chong,冲chong,忡chong,茺chong,珫chong,翀chong,舂chong,嘃chong,摏chong,憃chong,憧chong,衝chong,罿chong,艟chong,蹖chong,褈chong,傭chong,浺chong,虫chong,崇chong,崈chong,隀chong,蟲chong,宠chong,埫chong,寵chong,沖chong,铳chong,銃chong,抽chou,紬chou,瘳chou,篘chou,犨chou,犫chou,跾chou,掫chou,仇chou,俦chou,栦chou,惆chou,绸chou,菗chou,畴chou,絒chou,愁chou,皗chou,稠chou,筹chou,酧chou,酬chou,綢chou,踌chou,儔chou,雔chou,嬦chou,懤chou,雠chou,疇chou,籌chou,躊chou,讎chou,讐chou,擣chou,燽chou,丑chou,丒chou,吜chou,杽chou,侴chou,瞅chou,醜chou,矁chou,魗chou,臭chou,遚chou,殠chou,榋chu,橻chu,屮chu,出chu,岀chu,初chu,樗chu,貙chu,齣chu,刍chu,除chu,厨chu,滁chu,蒢chu,豠chu,锄chu,耡chu,蒭chu,蜍chu,趎chu,鉏chu,雏chu,犓chu,廚chu,篨chu,鋤chu,橱chu,懨chu,幮chu,櫉chu,蟵chu,躇chu,雛chu,櫥chu,蹰chu,鶵chu,躕chu,媰chu,杵chu,础chu,储chu,楮chu,禇chu,楚chu,褚chu,濋chu,儲chu,檚chu,璴chu,礎chu,齭chu,齼chu,処chu,椘chu,亍chu,处chu,竌chu,怵chu,拀chu,绌chu,豖chu,竐chu,俶chu,敊chu,珿chu,絀chu,處chu,傗chu,琡chu,搐chu,触chu,踀chu,閦chu,儊chu,憷chu,斶chu,歜chu,臅chu,黜chu,觸chu,矗chu,觕chu,畜chu,鄐chu,搋chuai,揣chuai,膗chuai,嘬chuai,踹chuai,膪chuai,巛chuan,川chuan,氚chuan,穿chuan,剶chuan,瑏chuan,传chuan,舡chuan,船chuan,猭chuan,遄chuan,傳chuan,椽chuan,歂chuan,暷chuan,輲chuan,甎chuan,舛chuan,荈chuan,喘chuan,僢chuan,堾chuan,踳chuan,汌chuan,串chuan,玔chuan,钏chuan,釧chuan,賗chuan,刅chuang,炊chui,龡chui,圌chui,垂chui,桘chui,陲chui,捶chui,菙chui,棰chui,槌chui,锤chui,箠chui,顀chui,錘chui,鰆chun,旾chun,杶chun,春chun,萅chun,媋chun,暙chun,椿chun,槆chun,瑃chun,箺chun,蝽chun,橁chun,輴chun,櫄chun,鶞chun,纯chun,陙chun,唇chun,浱chun,純chun,莼chun,淳chun,脣chun,犉chun,滣chun,鹑chun,漘chun,醇chun,醕chun,鯙chun,鶉chun,蒓chun,偆chun,萶chun,惷chun,睶chun,賰chun,蠢chun,踔chuo,戳chuo,啜chuo,辵chuo,娕chuo,娖chuo,惙chuo,涰chuo,逴chuo,辍chuo,酫chuo,龊chuo,擉chuo,磭chuo,歠chuo,嚽chuo,齪chuo,鑡chuo,齱chuo,婼chuo,鋜chuo,輟chuo,呲ci,玼ci,疵ci,趀ci,偨ci,縒ci,跐ci,髊ci,齹ci,枱ci,词ci,珁ci,垐ci,柌ci,祠ci,茨ci,瓷ci,詞ci,辝ci,慈ci,甆ci,辞ci,鈶ci,雌ci,鹚ci,糍ci,辤ci,飺ci,餈ci,嬨ci,濨ci,鴜ci,礠ci,辭ci,鶿ci,鷀ci,磁ci,此ci,佌ci,皉ci,朿ci,次ci,佽ci,刺ci,刾ci,庛ci,茦ci,栨ci,莿ci,絘ci,赐ci,螆ci,賜ci,蛓ci,嗭cis,囱cong,匆cong,囪cong,苁cong,忩cong,枞cong,茐cong,怱cong,悤cong,棇cong,焧cong,葱cong,楤cong,漗cong,聡cong,蔥cong,骢cong,暰cong,樅cong,樬cong,瑽cong,璁cong,聪cong,瞛cong,篵cong,聰cong,蟌cong,繱cong,鏦cong,騘cong,驄cong,聦cong,从cong,從cong,丛cong,従cong,婃cong,孮cong,徖cong,悰cong,淙cong,琮cong,漎cong,誴cong,賨cong,賩cong,樷cong,藂cong,叢cong,灇cong,欉cong,爜cong,憁cong,謥cong,凑cou,湊cou,楱cou,腠cou,辏cou,輳cou,粗cu,麁cu,麄cu,麤cu,徂cu,殂cu,蔖cu,促cu,猝cu,媨cu,瘄cu,蔟cu,誎cu,趗cu,憱cu,醋cu,瘯cu,簇cu,縬cu,鼀cu,蹴cu,蹵cu,顣cu,蹙cu,汆cuan,撺cuan,镩cuan,蹿cuan,攛cuan,躥cuan,鑹cuan,攅cuan,櫕cuan,巑cuan,攢cuan,窜cuan,熶cuan,篡cuan,殩cuan,篹cuan,簒cuan,竄cuan,爨cuan,乼cui,崔cui,催cui,凗cui,墔cui,摧cui,榱cui,獕cui,磪cui,鏙cui,漼cui,慛cui,璀cui,皠cui,熣cui,繀cui,忰cui,疩cui,翆cui,脃cui,脆cui,啐cui,啛cui,悴cui,淬cui,萃cui,毳cui,焠cui,瘁cui,粹cui,膵cui,膬cui,竁cui,臎cui,琗cui,粋cui,脺cui,翠cui,邨cun,村cun,皴cun,澊cun,竴cun,存cun,刌cun,忖cun,寸cun,籿cun,襊cuo,搓cuo,瑳cuo,遳cuo,磋cuo,撮cuo,蹉cuo,醝cuo,虘cuo,嵯cuo,痤cuo,矬cuo,蒫cuo,鹾cuo,鹺cuo,嵳cuo,脞cuo,剉cuo,剒cuo,厝cuo,夎cuo,挫cuo,莝cuo,莡cuo,措cuo,逪cuo,棤cuo,锉cuo,蓌cuo,错cuo,銼cuo,錯cuo,疸da,咑da,哒da,耷da,畣da,搭da,嗒da,噠da,撘da,鎝da,笚da,矺da,褡da,墶da,达da,迏da,迖da,妲da,怛da,垯da,炟da,羍da,荅da,荙da,剳da,匒da,笪da,逹da,溚da,答da,詚da,達da,跶da,瘩da,靼da,薘da,鞑da,燵da,蟽da,鎉da,躂da,鐽da,韃da,龖da,龘da,搨da,繨da,打da,觰da,大da,亣da,眔da,橽da,汏da,呆dai,獃dai,懛dai,歹dai,傣dai,逮dai,代dai,轪dai,侢dai,垈dai,岱dai,帒dai,甙dai,绐dai,迨dai,带dai,待dai,柋dai,殆dai,玳dai,贷dai,帯dai,軑dai,埭dai,帶dai,紿dai,蚮dai,袋dai,軚dai,貸dai,軩dai,瑇dai,廗dai,叇dai,曃dai,緿dai,鮘dai,鴏dai,戴dai,艜dai,黛dai,簤dai,蹛dai,瀻dai,霴dai,襶dai,靆dai,螮dai,蝳dai,跢dai,箉dai,骀dai,怠dai,黱dai,愖dan,丹dan,妉dan,单dan,担dan,単dan,眈dan,砃dan,耼dan,耽dan,郸dan,聃dan,躭dan,酖dan,單dan,媅dan,殚dan,瘅dan,匰dan,箪dan,褝dan,鄲dan,頕dan,儋dan,勯dan,擔dan,殫dan,癉dan,襌dan,簞dan,瓭dan,卩dan,亻dan,娊dan,噡dan,聸dan,伔dan,刐dan,狚dan,玬dan,胆dan,衴dan,紞dan,掸dan,亶dan,馾dan,撣dan,澸dan,黕dan,膽dan,丼dan,抌dan,赕dan,賧dan,黵dan,黮dan,繵dan,譂dan,旦dan,但dan,帎dan,沊dan,泹dan,诞dan,柦dan,疍dan,啖dan,啗dan,弹dan,惮dan,淡dan,蛋dan,啿dan,氮dan,腅dan,蜑dan,觛dan,窞dan,誕dan,僤dan,噉dan,髧dan,嘾dan,彈dan,憚dan,憺dan,澹dan,禫dan,餤dan,駳dan,鴠dan,甔dan,癚dan,嚪dan,贉dan,霮dan,饏dan,蟺dan,倓dan,惔dan,弾dan,醈dan,撢dan,萏dan,当dang,珰dang,裆dang,筜dang,儅dang,噹dang,澢dang,璫dang,襠dang,簹dang,艡dang,蟷dang,當dang,挡dang,党dang,谠dang,擋dang,譡dang,黨dang,灙dang,欓dang,讜dang,氹dang,凼dang,圵dang,宕dang,砀dang,垱dang,荡dang,档dang,菪dang,瓽dang,逿dang,潒dang,碭dang,瞊dang,蕩dang,趤dang,壋dang,檔dang,璗dang,盪dang,礑dang,簜dang,蘯dang,闣dang,愓dang,嵣dang,偒dang,雼dang,裯dao,刀dao,叨dao,屶dao,忉dao,氘dao,舠dao,釖dao,鱽dao,魛dao,虭dao,捯dao,导dao,岛dao,陦dao,倒dao,宲dao,捣dao,祷dao,禂dao,搗dao,隝dao,嶋dao,嶌dao,槝dao,導dao,隯dao,壔dao,嶹dao,蹈dao,禱dao,菿dao,島dao,帱dao,幬dao,到dao,悼dao,盗dao,椡dao,盜dao,道dao,稲dao,翢dao,噵dao,稻dao,衜dao,檤dao,衟dao,翿dao,軇dao,瓙dao,纛dao,箌dao,的de,嘚de,恴de,得de,淂de,悳de,惪de,锝de,徳de,德de,鍀de,棏de,揼dem,扥den,扽den,灯deng,登deng,豋deng,噔deng,嬁deng,燈deng,璒deng,竳deng,簦deng,艠deng,覴deng,蹬deng,墱deng,戥deng,等deng,澂deng,邓deng,僜deng,凳deng,鄧deng,隥deng,嶝deng,瞪deng,磴deng,镫deng,櫈deng,鐙deng,仾di,低di,奃di,彽di,袛di,啲di,埞di,羝di,隄di,堤di,趆di,嘀di,滴di,磾di,鍉di,鞮di,氐di,牴di,碮di,踧di,镝di,廸di,狄di,籴di,苖di,迪di,唙di,敌di,涤di,荻di,梑di,笛di,觌di,靮di,滌di,髢di,嫡di,蔋di,蔐di,頔di,魡di,敵di,篴di,嚁di,藡di,豴di,糴di,覿di,鸐di,藋di,鬄di,樀di,蹢di,鏑di,泜di,诋di,邸di,阺di,呧di,坻di,底di,弤di,抵di,拞di,柢di,砥di,掋di,菧di,詆di,軧di,聜di,骶di,鯳di,坘di,厎di,赿di,地di,弚di,坔di,弟di,旳di,杕di,玓di,怟di,枤di,苐di,帝di,埊di,娣di,递di,逓di,偙di,啇di,梊di,焍di,眱di,祶di,第di,菂di,谛di,釱di,媂di,棣di,睇di,缔di,蒂di,僀di,禘di,腣di,遞di,鉪di,馰di,墑di,墬di,摕di,碲di,蝃di,遰di,慸di,甋di,締di,嶳di,諦di,踶di,弔di,嵽di,諟di,珶di,渧di,蹏di,揥di,墆di,疐di,俤di,蔕di,嗲dia,敁dian,掂dian,傎dian,厧dian,嵮dian,滇dian,槙dian,瘨dian,颠dian,蹎dian,巅dian,顚dian,顛dian,癫dian,巓dian,巔dian,攧dian,癲dian,齻dian,槇dian,典dian,点dian,婰dian,敟dian,椣dian,碘dian,蒧dian,蕇dian,踮dian,點dian,痶dian,丶dian,奌dian,电dian,佃dian,甸dian,坫dian,店dian,垫dian,扂dian,玷dian,钿dian,唸dian,婝dian,惦dian,淀dian,奠dian,琔dian,殿dian,蜔dian,鈿dian,電dian,墊dian,橂dian,澱dian,靛dian,磹dian,癜dian,簟dian,驔dian,腍dian,橝dian,壂dian,刁diao,叼diao,汈diao,刟diao,凋diao,奝diao,弴diao,彫diao,蛁diao,琱diao,貂diao,碉diao,鳭diao,殦diao,雕diao,鮉diao,鲷diao,簓diao,鼦diao,鯛diao,鵰diao,颩diao,矵diao,錭diao,淍diao,屌diao,鸼diao,鵃diao,扚diao,伄diao,吊diao,钓diao,窎diao,訋diao,调diao,掉diao,釣diao,铞diao,鈟diao,竨diao,銱diao,雿diao,調diao,瘹diao,窵diao,鋽diao,鑃diao,誂diao,嬥diao,絩diao,爹die,跌die,褺die,跮die,苵die,迭die,垤die,峌die,恎die,绖die,胅die,瓞die,眣die,耊die,啑die,戜die,谍die,喋die,堞die,幉die,惵die,揲die,畳die,絰die,耋die,臷die,詄die,趃die,叠die,殜die,牃die,牒die,镻die,碟die,蜨die,褋die,艓die,蝶die,諜die,蹀die,鲽die,曡die,鰈die,疉die,疊die,氎die,渉die,崼die,鮙die,跕die,鐡die,怢die,槢die,挃die,柣die,螲die,疂die,眰die,嚸dim,丁ding,仃ding,叮ding,帄ding,玎ding,甼ding,疔ding,盯ding,耵ding,靪ding,奵ding,町ding,虰ding,酊ding,顶ding,頂ding,鼎ding,鼑ding,薡ding,鐤ding,顁ding,艼ding,濎ding,嵿ding,钉ding,釘ding,订ding,忊ding,饤ding,矴ding,定ding,訂ding,飣ding,啶ding,萣ding,椗ding,腚ding,碇ding,锭ding,碠ding,聢ding,錠ding,磸ding,铤ding,鋌ding,掟ding,丟diu,丢diu,铥diu,銩diu,东dong,冬dong,咚dong,東dong,苳dong,昸dong,氡dong,倲dong,鸫dong,埬dong,娻dong,崬dong,涷dong,笗dong,菄dong,氭dong,蝀dong,鮗dong,鼕dong,鯟dong,鶇dong,鶫dong,徚dong,夂dong,岽dong,揰dong,董dong,墥dong,嬞dong,懂dong,箽dong,蕫dong,諌dong,湩dong,动dong,冻dong,侗dong,垌dong,峒dong,峝dong,恫dong,挏dong,栋dong,洞dong,胨dong,迵dong,凍dong,戙dong,胴dong,動dong,崠dong,硐dong,棟dong,腖dong,働dong,詷dong,駧dong,霘dong,狫dong,烔dong,絧dong,衕dong,勭dong,騆dong,姛dong,瞗dou,吺dou,剅dou,唗dou,都dou,兜dou,兠dou,蔸dou,橷dou,篼dou,侸dou,艔dou,乧dou,阧dou,抖dou,枓dou,陡dou,蚪dou,鈄dou,斗dou,豆dou,郖dou,浢dou,荳dou,逗dou,饾dou,鬥dou,梪dou,毭dou,脰dou,酘dou,痘dou,閗dou,窦dou,鬦dou,鋀dou,餖dou,斣dou,闘dou,竇dou,鬪dou,鬭dou,凟dou,鬬dou,剢du,阇du,嘟du,督du,醏du,闍du,厾du,毒du,涜du,读du,渎du,椟du,牍du,犊du,裻du,読du,獨du,錖du,匵du,嬻du,瀆du,櫝du,殰du,牘du,犢du,瓄du,皾du,騳du,讀du,豄du,贕du,韣du,髑du,鑟du,韇du,韥du,黷du,讟du,独du,樚du,襡du,襩du,黩du,笃du,堵du,帾du,琽du,赌du,睹du,覩du,賭du,篤du,暏du,笁du,陼du,芏du,妒du,杜du,肚du,妬du,度du,荰du,秺du,渡du,镀du,螙du,殬du,鍍du,蠧du,蠹du,剫du,晵du,靯du,篅duan,偳duan,媏duan,端duan,褍duan,鍴duan,剬duan,短duan,段duan,断duan,塅duan,缎duan,葮duan,椴duan,煅duan,瑖duan,腶duan,碫duan,锻duan,緞duan,毈duan,簖duan,鍛duan,斷duan,躖duan,煆duan,籪duan,叾dug,搥dui,鎚dui,垖dui,堆dui,塠dui,嵟dui,痽dui,磓dui,頧dui,鴭dui,鐜dui,埻dui,謉dui,錞dui,队dui,对dui,兊dui,兌dui,兑dui,対dui,祋dui,怼dui,陮dui,隊dui,碓dui,綐dui,對dui,憝dui,濧dui,薱dui,镦dui,懟dui,瀩dui,譈dui,譵dui,憞dui,鋭dui,杸dui,吨dun,惇dun,敦dun,蜳dun,墩dun,墪dun,壿dun,撴dun,獤dun,噸dun,撉dun,橔dun,犜dun,礅dun,蹲dun,蹾dun,驐dun,鐓dun,盹dun,趸dun,躉dun,伅dun,囤dun,庉dun,沌dun,炖dun,盾dun,砘dun,逇dun,钝dun,遁dun,鈍dun,腞dun,頓dun,碷dun,遯dun,潡dun,燉dun,踲dun,楯dun,腯dun,顿dun,多duo,夛duo,咄duo,哆duo,茤duo,剟duo,崜duo,敠duo,毲duo,裰duo,嚉duo,掇duo,仛duo,夺duo,铎duo,敓duo,敚duo,喥duo,敪duo,鈬duo,奪duo,凙duo,踱duo,鮵duo,鐸duo,跿duo,沰duo,痥duo,奲duo,朵duo,朶duo,哚duo,垛duo,挅duo,挆duo,埵duo,缍duo,椯duo,趓duo,躱duo,躲duo,綞duo,亸duo,鬌duo,嚲duo,垜duo,橢duo,硾duo,吋duo,刴duo,剁duo,沲duo,陊duo,陏duo,饳duo,柮duo,桗duo,堕duo,舵duo,惰duo,跥duo,跺duo,飿duo,墮duo,嶞duo,憜duo,墯duo,鵽duo,隓duo,貀duo,詑duo,駄duo,媠duo,嫷duo,尮duo,呃e,妸e,妿e,娿e,婀e,匼e,讹e,吪e,囮e,迗e,俄e,娥e,峨e,峩e,涐e,莪e,珴e,訛e,睋e,鈋e,锇e,鹅e,蛾e,磀e,誐e,鋨e,頟e,额e,魤e,額e,鵝e,鵞e,譌e,騀e,佮e,鰪e,皒e,欸e,枙e,砈e,鵈e,玀e,閜e,砵e,惡e,厄e,歺e,屵e,戹e,岋e,阨e,扼e,阸e,呝e,砐e,轭e,咢e,咹e,垩e,姶e,峉e,匎e,恶e,砨e,蚅e,饿e,偔e,卾e,堊e,悪e,硆e,谔e,軛e,鄂e,阏e,堮e,崿e,愕e,湂e,萼e,豟e,軶e,遏e,廅e,搤e,搹e,琧e,腭e,詻e,僫e,蝁e,锷e,鹗e,蕚e,遻e,頞e,颚e,餓e,噩e,擜e,覨e,諤e,餩e,鍔e,鳄e,歞e,顎e,櫮e,鰐e,鶚e,讍e,齶e,鱷e,齃e,啈e,搕e,礘e,魥e,蘁e,齾e,苊e,遌e,鑩e,诶ei,誒ei,奀en,恩en,蒽en,煾en,唔en,峎en,摁en,嗯en,鞥eng,仒eo,乻eol,旕eos,儿er,而er,児er,侕er,兒er,陑er,峏er,洏er,耏er,荋er,栭er,胹er,唲er,袻er,鸸er,粫er,聏er,輀er,隭er,髵er,鮞er,鴯er,轜er,咡er,杒er,陾er,輭er,鲕er,尒er,尓er,尔er,耳er,迩er,洱er,饵er,栮er,毦er,珥er,铒er,爾er,鉺er,餌er,駬er,薾er,邇er,趰er,嬭er,二er,弍er,弐er,佴er,刵er,贰er,衈er,貳er,誀er,樲er,髶er,貮er,发fa,沷fa,発fa,發fa,彂fa,髪fa,橃fa,醗fa,乏fa,伐fa,姂fa,垡fa,罚fa,阀fa,栰fa,傠fa,筏fa,瞂fa,罰fa,閥fa,罸fa,藅fa,汎fa,佱fa,法fa,鍅fa,灋fa,砝fa,珐fa,琺fa,髮fa,蕟fa,帆fan,忛fan,犿fan,番fan,勫fan,墦fan,嬏fan,幡fan,憣fan,旙fan,旛fan,翻fan,藩fan,轓fan,颿fan,飜fan,鱕fan,蕃fan,凡fan,凢fan,凣fan,匥fan,杋fan,柉fan,籵fan,钒fan,舤fan,烦fan,舧fan,笲fan,釩fan,棥fan,煩fan,緐fan,樊fan,橎fan,燔fan,璠fan,薠fan,繁fan,繙fan,羳fan,蹯fan,瀿fan,礬fan,蘩fan,鐇fan,蠜fan,鷭fan,氾fan,瀪fan,渢fan,伋fan,舩fan,矾fan,反fan,仮fan,辺fan,返fan,攵fan,犭fan,払fan,犯fan,奿fan,泛fan,饭fan,范fan,贩fan,畈fan,訉fan,軓fan,梵fan,盕fan,笵fan,販fan,軬fan,飯fan,飰fan,滼fan,嬎fan,範fan,嬔fan,婏fan,方fang,邡fang,坊fang,芳fang,牥fang,钫fang,淓fang,堏fang,鈁fang,錺fang,鴋fang,埅fang,枋fang,防fang,妨fang,房fang,肪fang,鲂fang,魴fang,仿fang,访fang,纺fang,昉fang,昘fang,瓬fang,眆fang,倣fang,旊fang,紡fang,舫fang,訪fang,髣fang,鶭fang,放fang,飞fei,妃fei,非fei,飛fei,啡fei,婓fei,婔fei,渄fei,绯fei,菲fei,扉fei,猆fei,靟fei,裶fei,緋fei,蜚fei,霏fei,鲱fei,餥fei,馡fei,騑fei,騛fei,鯡fei,飝fei,奜fei,肥fei,淝fei,暃fei,腓fei,蜰fei,棐fei,萉fei,蟦fei,朏fei,胐fei,匪fei,诽fei,悱fei,斐fei,榧fei,翡fei,蕜fei,誹fei,篚fei,襏fei,吠fei,废fei,沸fei,狒fei,肺fei,昲fei,费fei,俷fei,剕fei,厞fei,疿fei,屝fei,廃fei,費fei,痱fei,廢fei,曊fei,癈fei,鼣fei,濷fei,櫠fei,鐨fei,靅fei,蕡fei,芾fei,笰fei,紼fei,髴fei,柹fei,胏fei,镄fei,吩fen,帉fen,纷fen,芬fen,昐fen,氛fen,竕fen,紛fen,翂fen,棻fen,躮fen,酚fen,鈖fen,雰fen,朆fen,餴fen,饙fen,錀fen,坟fen,妢fen,岎fen,汾fen,枌fen,梤fen,羒fen,蚠fen,蚡fen,棼fen,焚fen,蒶fen,馚fen,隫fen,墳fen,幩fen,魵fen,橨fen,燓fen,豮fen,鼢fen,羵fen,鼖fen,豶fen,轒fen,馩fen,黂fen,鐼fen,粉fen,瞓fen,黺fen,分fen,份fen,坋fen,弅fen,奋fen,忿fen,秎fen,偾fen,愤fen,粪fen,僨fen,憤fen,奮fen,膹fen,糞fen,鲼fen,瀵fen,鱝fen,丰feng,风feng,仹feng,凨feng,凬feng,妦feng,沣feng,沨feng,枫feng,封feng,疯feng,盽feng,砜feng,風feng,峯feng,峰feng,偑feng,桻feng,烽feng,琒feng,崶feng,溄feng,猦feng,葑feng,锋feng,楓feng,犎feng,蜂feng,瘋feng,碸feng,僼feng,篈feng,鄷feng,鋒feng,檒feng,豐feng,鎽feng,酆feng,寷feng,灃feng,蘴feng,靊feng,飌feng,麷feng,豊feng,凮feng,鏠feng,冯feng,捀feng,浲feng,逢feng,堸feng,馮feng,綘feng,缝feng,艂feng,縫feng,讽feng,唪feng,諷feng,凤feng,奉feng,甮feng,俸feng,湗feng,焨feng,煈feng,鳯feng,鳳feng,鴌feng,賵feng,蘕feng,赗feng,覅fiao,仏fo,佛fo,坲fo,梻fo,垺fou,紑fou,缶fou,否fou,缹fou,缻fou,雬fou,鴀fou,芣fou,夫fu,邞fu,呋fu,姇fu,枎fu,玞fu,肤fu,怤fu,砆fu,胕fu,荂fu,衭fu,娐fu,荴fu,旉fu,紨fu,趺fu,酜fu,麸fu,稃fu,跗fu,鈇fu,筟fu,綒fu,鄜fu,孵fu,豧fu,敷fu,膚fu,鳺fu,麩fu,糐fu,麬fu,麱fu,懯fu,烰fu,琈fu,粰fu,璷fu,伕fu,乀fu,伏fu,凫fu,甶fu,冹fu,刜fu,孚fu,扶fu,芙fu,咈fu,岪fu,彿fu,怫fu,拂fu,服fu,泭fu,绂fu,绋fu,苻fu,俘fu,垘fu,柫fu,氟fu,洑fu,炥fu,玸fu,祓fu,罘fu,茯fu,郛fu,韨fu,鳬fu,哹fu,栿fu,浮fu,畗fu,砩fu,蚨fu,匐fu,桴fu,涪fu,符fu,紱fu,翇fu,艴fu,菔fu,虙fu,袱fu,幅fu,棴fu,罦fu,葍fu,福fu,綍fu,艀fu,蜉fu,辐fu,鉘fu,鉜fu,颫fu,鳧fu,榑fu,稪fu,箙fu,複fu,韍fu,幞fu,澓fu,蝠fu,鴔fu,諨fu,輻fu,鮄fu,癁fu,鮲fu,黻fu,鵩fu,坿fu,汱fu,酻fu,弗fu,畉fu,絥fu,抚fu,甫fu,府fu,弣fu,拊fu,斧fu,俌fu,郙fu,俯fu,釜fu,釡fu,捬fu,辅fu,椨fu,焤fu,盙fu,腑fu,滏fu,腐fu,輔fu,撫fu,鬴fu,簠fu,黼fu,蚥fu,窗chuang,窻chuang,傸chuang,创chuang,創chuang,庄zhuang,妝zhuang,荘zhuang,娤zhuang,桩zhuang,讣fu,付fu,妇fu,负fu,附fu,咐fu,竎fu,阜fu,驸fu,复fu,峊fu,祔fu,訃fu,負fu,赴fu,袝fu,偩fu,冨fu,副fu,婦fu,蚹fu,傅fu,媍fu,富fu,復fu,蛗fu,覄fu,詂fu,赋fu,椱fu,缚fu,腹fu,鲋fu,禣fu,褔fu,赙fu,緮fu,蕧fu,蝜fu,蝮fu,賦fu,駙fu,縛fu,鮒fu,賻fu,鍑fu,鍢fu,鳆fu,覆fu,馥fu,鰒fu,軵fu,邚fu,柎fu,父fu,萯fu,旮ga,伽ga,嘎ga,夾ga,呷ga,钆ga,尜ga,釓ga,噶ga,錷ga,嘠ga,尕ga,玍ga,尬ga,魀ga,侅gai,该gai,郂gai,陔gai,垓gai,姟gai,峐gai,荄gai,晐gai,赅gai,畡gai,祴gai,絯gai,該gai,豥gai,賅gai,賌gai,忋gai,改gai,鎅gai,絠gai,丐gai,乢gai,匃gai,匄gai,钙gai,盖gai,摡gai,溉gai,葢gai,鈣gai,戤gai,概gai,蓋gai,槩gai,槪gai,漑gai,瓂gai,甘gan,忓gan,芉gan,迀gan,攼gan,玕gan,肝gan,坩gan,泔gan,柑gan,竿gan,疳gan,酐gan,粓gan,亁gan,凲gan,尲gan,尴gan,筸gan,漧gan,鳱gan,尶gan,尷gan,魐gan,矸gan,虷gan,釬gan,乹gan,諴gan,飦gan,苷gan,杆gan,仠gan,皯gan,秆gan,衦gan,赶gan,敢gan,桿gan,笴gan,稈gan,感gan,澉gan,趕gan,橄gan,擀gan,簳gan,鱤gan,篢gan,豃gan,扞gan,鰔gan,扜gan,鳡gan,干gan,旰gan,汵gan,盰gan,绀gan,倝gan,凎gan,淦gan,紺gan,詌gan,骭gan,幹gan,檊gan,赣gan,贛gan,灨gan,贑gan,佄gan,錎gan,棡gang,冈gang,罓gang,冮gang,刚gang,阬gang,纲gang,肛gang,岡gang,牨gang,疘gang,矼gang,钢gang,剛gang,罡gang,堈gang,釭gang,犅gang,堽gang,綱gang,罁gang,鋼gang,鎠gang,頏gang,缸gang,岗gang,崗gang,港gang,犺gang,掆gang,杠gang,焵gang,筻gang,槓gang,戆gang,戇gang,戅gang,皋gao,羔gao,高gao,皐gao,髙gao,臯gao,滜gao,睾gao,膏gao,槹gao,橰gao,篙gao,糕gao,餻gao,櫜gao,韟gao,鷎gao,鼛gao,鷱gao,獋gao,槔gao,夰gao,杲gao,菒gao,稁gao,搞gao,缟gao,槀gao,槁gao,獔gao,稾gao,稿gao,镐gao,縞gao,藁gao,檺gao,藳gao,鎬gao,筶gao,澔gao,吿gao,勂gao,诰gao,郜gao,峼gao,祮gao,祰gao,锆gao,暠gao,禞gao,誥gao,鋯gao,告gao,戈ge,圪ge,犵ge,纥ge,戓ge,肐ge,牫ge,疙ge,牱ge,紇ge,哥ge,胳ge,袼ge,鸽ge,割ge,搁ge,彁ge,歌ge,戨ge,鴐ge,鴚ge,擱ge,謌ge,鴿ge,鎶ge,咯ge,滒ge,杚ge,呄ge,匌ge,挌ge,阁ge,革ge,敋ge,格ge,鬲ge,愅ge,臵ge,裓ge,隔ge,嗝ge,塥ge,滆ge,觡ge,搿ge,膈ge,閣ge,镉ge,鞈ge,韐ge,骼ge,諽ge,鮯ge,櫊ge,鎘ge,韚ge,轕ge,鞷ge,騔ge,秴ge,詥ge,佫ge,嘅ge,猲ge,槅ge,閤ge,葛ge,哿ge,舸ge,鲄ge,个ge,各ge,虼ge,個ge,硌ge,铬ge,箇ge,鉻ge,獦ge,吤ge,给gei,給gei,根gen,跟gen,哏gen,亘gen,艮gen,茛gen,揯gen,搄gen,亙gen,刯geng,庚geng,畊geng,浭geng,耕geng,掶geng,菮geng,椩geng,焿geng,絚geng,赓geng,鹒geng,緪geng,縆geng,賡geng,羹geng,鶊geng,絙geng,郠geng,哽geng,埂geng,峺geng,挭geng,耿geng,莄geng,梗geng,鲠geng,骾geng,鯁geng,郉geng,绠geng,更geng,堩geng,暅geng,啹geu,喼gib,嗰go,工gong,弓gong,公gong,厷gong,功gong,攻gong,杛gong,糼gong,肱gong,宫gong,宮gong,恭gong,蚣gong,躬gong,龚gong,匑gong,塨gong,愩gong,觥gong,躳gong,匔gong,碽gong,髸gong,觵gong,龔gong,魟gong,幊gong,巩gong,汞gong,拱gong,唝gong,拲gong,栱gong,珙gong,輁gong,鞏gong,嗊gong,銾gong,供gong,共gong,贡gong,羾gong,貢gong,慐gong,熕gong,渱gong,勾gou,沟gou,钩gou,袧gou,缑gou,鈎gou,溝gou,鉤gou,緱gou,褠gou,篝gou,簼gou,鞲gou,冓gou,搆gou,抅gou,泃gou,軥gou,鴝gou,鸜gou,佝gou,岣gou,狗gou,苟gou,枸gou,玽gou,耇gou,耉gou,笱gou,耈gou,蚼gou,豿gou,坸gou,构gou,诟gou,购gou,垢gou,姤gou,够gou,夠gou,訽gou,媾gou,彀gou,詬gou,遘gou,雊gou,構gou,煹gou,觏gou,撀gou,覯gou,購gou,傋gou,茩gou,估gu,咕gu,姑gu,孤gu,沽gu,泒gu,柧gu,轱gu,唂gu,唃gu,罛gu,鸪gu,笟gu,菇gu,蛄gu,蓇gu,觚gu,軱gu,軲gu,辜gu,酤gu,毂gu,箍gu,箛gu,嫴gu,篐gu,橭gu,鮕gu,鴣gu,轂gu,苽gu,菰gu,鶻gu,鹘gu,古gu,扢gu,汩gu,诂gu,谷gu,股gu,峠gu,牯gu,骨gu,罟gu,逧gu,钴gu,傦gu,啒gu,淈gu,脵gu,蛊gu,蛌gu,尳gu,愲gu,焸gu,硲gu,詁gu,馉gu,榾gu,鈷gu,鼓gu,鼔gu,嘏gu,榖gu,皷gu,縎gu,糓gu,薣gu,濲gu,臌gu,餶gu,瀔gu,瞽gu,抇gu,嗀gu,羖gu,固gu,怘gu,故gu,凅gu,顾gu,堌gu,崓gu,崮gu,梏gu,牿gu,棝gu,祻gu,雇gu,痼gu,稒gu,锢gu,頋gu,僱gu,錮gu,鲴gu,鯝gu,顧gu,盬gu,瓜gua,刮gua,胍gua,鸹gua,焻gua,煱gua,颪gua,趏gua,劀gua,緺gua,銽gua,鴰gua,騧gua,呱gua,諣gua,栝gua,歄gua,冎gua,叧gua,剐gua,剮gua,啩gua,寡gua,卦gua,坬gua,诖gua,挂gua,掛gua,罣gua,絓gua,罫gua,褂gua,詿gua,乖guai,拐guai,枴guai,柺guai,夬guai,叏guai,怪guai,恠guai,关guan,观guan,官guan,覌guan,倌guan,萖guan,棺guan,蒄guan,窤guan,瘝guan,癏guan,観guan,鳏guan,關guan,鰥guan,觀guan,鱞guan,馆guan,痯guan,筦guan,管guan,舘guan,錧guan,館guan,躀guan,鳤guan,輨guan,冠guan,卝guan,毌guan,丱guan,贯guan,泴guan,悺guan,惯guan,掼guan,涫guan,貫guan,悹guan,祼guan,慣guan,摜guan,潅guan,遦guan,樌guan,盥guan,罆guan,雚guan,鏆guan,灌guan,爟guan,瓘guan,矔guan,鹳guan,罐guan,鑵guan,鸛guan,鱹guan,懽guan,礶guan,光guang,灮guang,侊guang,炗guang,炚guang,炛guang,咣guang,垙guang,姯guang,洸guang,茪guang,桄guang,烡guang,珖guang,胱guang,硄guang,僙guang,輄guang,銧guang,黆guang,欟guang,趪guang,挄guang,广guang,広guang,犷guang,廣guang,臩guang,獷guang,俇guang,逛guang,臦guang,撗guang,櫎guang,归gui,圭gui,妫gui,龟gui,规gui,邽gui,皈gui,茥gui,闺gui,帰gui,珪gui,胿gui,亀gui,硅gui,袿gui,規gui,椝gui,瑰gui,郌gui,嫢gui,摫gui,閨gui,鲑gui,嶲gui,槻gui,槼gui,璝gui,瞡gui,膭gui,鮭gui,龜gui,巂gui,歸gui,鬶gui,瓌gui,鬹gui,櫷gui,佹gui,櫰gui,螝gui,槣gui,鴂gui,鴃gui,傀gui,潙gui,雟gui,嬀gui,宄gui,氿gui,轨gui,庋gui,匦gui,诡gui,陒gui,垝gui,癸gui,軌gui,鬼gui,庪gui,匭gui,晷gui,湀gui,蛫gui,觤gui,詭gui,厬gui,簋gui,蟡gui,攱gui,朹gui,祪gui,猤gui,媯gui,刽gui,刿gui,攰gui,昋gui,柜gui,炅gui,贵gui,桂gui,椢gui,筀gui,貴gui,蓕gui,跪gui,瞆gui,劊gui,劌gui,撌gui,槶gui,瞶gui,櫃gui,襘gui,鳜gui,鞼gui,鱖gui,鱥gui,桧gui,絵gui,檜gui,赽gui,趹gui,嶡gui,禬gui,衮gun,惃gun,绲gun,袞gun,辊gun,滚gun,蓘gun,滾gun,緄gun,蔉gun,磙gun,輥gun,鲧gun,鮌gun,鯀gun,琯gun,棍gun,棞gun,睔gun,睴gun,璭gun,謴gun,呙guo,埚guo,郭guo,啯guo,崞guo,楇guo,聒guo,鈛guo,锅guo,墎guo,瘑guo,嘓guo,彉guo,蝈guo,鍋guo,彍guo,鐹guo,矌guo,簂guo,囯guo,囶guo,囻guo,国guo,圀guo,國guo,帼guo,掴guo,腘guo,幗guo,摑guo,漍guo,聝guo,蔮guo,膕guo,虢guo,馘guo,慖guo,果guo,惈guo,淉guo,猓guo,菓guo,馃guo,椁guo,褁guo,槨guo,粿guo,綶guo,蜾guo,裹guo,輠guo,餜guo,錁guo,过guo,過guo,妎ha,铪ha,鉿ha,哈ha,蛤ha,孩hai,骸hai,還hai,还hai,海hai,胲hai,烸hai,塰hai,酼hai,醢hai,亥hai,骇hai,害hai,氦hai,嗐hai,餀hai,駭hai,駴hai,嚡hai,饚hai,乤hal,兯han,爳han,顸han,哻han,蚶han,酣han,谽han,馠han,魽han,鼾han,欦han,憨han,榦han,邗han,含han,邯han,函han,咁han,肣han,凾han,唅han,圅han,娢han,浛han,崡han,晗han,梒han,涵han,焓han,寒han,嵅han,韩han,甝han,筨han,蜬han,澏han,鋡han,韓han,馯han,椷han,罕han,浫han,喊han,蔊han,鬫han,糮han,厈han,汉han,汗han,旱han,悍han,捍han,晘han,涆han,猂han,莟han,晥han,焊han,琀han,菡han,皔han,睅han,傼han,蛿han,撖han,漢han,蜭han,暵han,熯han,銲han,鋎han,憾han,撼han,翰han,螒han,頷han,顄han,駻han,譀han,雗han,瀚han,鶾han,澣han,颔han,魧hang,苀hang,迒hang,斻hang,杭hang,垳hang,绗hang,笐hang,蚢hang,颃hang,貥hang,筕hang,絎hang,行hang,航hang,沆hang,茠hao,蒿hao,嚆hao,薅hao,竓hao,蚝hao,毫hao,椃hao,嗥hao,獆hao,噑hao,豪hao,嘷hao,儫hao,曍hao,嚎hao,壕hao,濠hao,籇hao,蠔hao,譹hao,虠hao,諕hao,呺hao,郝hao,好hao,号hao,昊hao,昦hao,哠hao,恏hao,悎hao,浩hao,耗hao,晧hao,淏hao,傐hao,皓hao,滈hao,聕hao,號hao,暤hao,暭hao,皜hao,皞hao,皡hao,薃hao,皥hao,颢hao,灏hao,顥hao,鰝hao,灝hao,鄗hao,藃hao,诃he,呵he,抲he,欱he,喝he,訶he,嗬he,蠚he,禾he,合he,何he,劾he,咊he,和he,姀he,河he,峆he,曷he,柇he,盇he,籺he,阂he,饸he,哬he,敆he,核he,盉he,盍he,啝he,涸he,渮he,盒he,菏he,萂he,龁he,惒he,粭he,訸he,颌he,楁he,鉌he,阖he,熆he,鹖he,麧he,澕he,頜he,篕he,翮he,螛he,礉he,闔he,鞨he,齕he,覈he,鶡he,皬he,鑉he,龢he,餄he,荷he,魺he,垎he,贺he,隺he,寉he,焃he,湼he,賀he,嗃he,煂he,碋he,熇he,褐he,赫he,鹤he,翯he,壑he,癋he,燺he,爀he,靍he,靎he,鸖he,靏he,鶮he,謞he,鶴he,嗨hei,黒hei,黑hei,嘿hei,潶hei,嬒hei,噷hen,拫hen,痕hen,鞎hen,佷hen,很hen,狠hen,詪hen,恨hen,亨heng,哼heng,悙heng,涥heng,脝heng,姮heng,恆heng,恒heng,桁heng,烆heng,珩heng,胻heng,横heng,橫heng,衡heng,鴴heng,鵆heng,蘅heng,鑅heng,鸻heng,堼heng,叿hong,灴hong,轰hong,訇hong,烘hong,軣hong,揈hong,渹hong,焢hong,硡hong,薨hong,輷hong,嚝hong,鍧hong,轟hong,仜hong,妅hong,红hong,吰hong,宏hong,汯hong,玒hong,纮hong,闳hong,宖hong,泓hong,玜hong,苰hong,垬hong,娂hong,洪hong,竑hong,紅hong,荭hong,虹hong,浤hong,紘hong,翃hong,耾hong,硔hong,紭hong,谹hong,鸿hong,竤hong,粠hong,葓hong,鈜hong,閎hong,綋hong,翝hong,谼hong,潂hong,鉷hong,鞃hong,篊hong,鋐hong,彋hong,蕻hong,霐hong,黉hong,霟hong,鴻hong,黌hong,舼hong,瓨hong,弘hong,葒hong,哄hong,晎hong,讧hong,訌hong,閧hong,撔hong,澋hong,澒hong,闀hong,闂hong,腄hou,侯hou,矦hou,喉hou,帿hou,猴hou,葔hou,瘊hou,睺hou,銗hou,篌hou,糇hou,翭hou,骺hou,鍭hou,餱hou,鯸hou,翵hou,吼hou,犼hou,呴hou,后hou,郈hou,厚hou,垕hou,後hou,洉hou,逅hou,候hou,鄇hou,堠hou,鲎hou,鲘hou,鮜hou,鱟hou,豞hou,鋘hu,乎hu,匢hu,呼hu,垀hu,忽hu,昒hu,曶hu,泘hu,苸hu,烀hu,轷hu,匫hu,唿hu,惚hu,淴hu,虖hu,軤hu,雽hu,嘑hu,寣hu,滹hu,雐hu,歑hu,謼hu,芔hu,戯hu,戱hu,鹄hu,鵠hu,囫hu,弧hu,狐hu,瓳hu,胡hu,壶hu,壷hu,斛hu,焀hu,喖hu,壺hu,媩hu,湖hu,猢hu,絗hu,葫hu,楜hu,煳hu,瑚hu,嘝hu,蔛hu,鹕hu,槲hu,箶hu,糊hu,蝴hu,衚hu,縠hu,螜hu,醐hu,頶hu,觳hu,鍸hu,餬hu,瀫hu,鬍hu,鰗hu,鶘hu,鶦hu,沍hu,礐hu,瓡hu,俿hu,虍hu,乕hu,汻hu,虎hu,浒hu,唬hu,萀hu,琥hu,虝hu,滸hu,箎hu,錿hu,鯱hu,互hu,弖hu,戶hu,户hu,戸hu,冴hu,芐hu,帍hu,护hu,沪hu,岵hu,怙hu,戽hu,昈hu,枑hu,祜hu,笏hu,粐hu,婟hu,扈hu,瓠hu,綔hu,鄠hu,嫭hu,嫮hu,摢hu,滬hu,蔰hu,槴hu,熩hu,鳸hu,簄hu,鍙hu,護hu,鳠hu,韄hu,頀hu,鱯hu,鸌hu,濩hu,穫hu,觷hu,魱hu,冱hu,鹱hu,花hua,芲hua,埖hua,婲hua,椛hua,硴hua,糀hua,誮hua,錵hua,蘤hua,蕐hua,砉hua,华hua,哗hua,姡hua,骅hua,華hua,铧hua,滑hua,猾hua,嘩hua,撶hua,璍hua,螖hua,鏵hua,驊hua,鷨hua,划hua,化hua,杹hua,画hua,话hua,崋hua,桦hua,婳hua,畫hua,嬅hua,畵hua,觟hua,話hua,劃hua,摦hua,槬hua,樺hua,嫿hua,澅hua,諙hua,黊hua,繣hua,舙hua,蘳hua,譮hua,檴hua,怀huai,淮huai,槐huai,褢huai,踝huai,懐huai,褱huai,懷huai,耲huai,蘹huai,佪huai,徊huai,坏huai,咶huai,壊huai,壞huai,蘾huai,欢huan,歓huan,鴅huan,懁huan,鵍huan,酄huan,嚾huan,獾huan,歡huan,貛huan,讙huan,驩huan,貆huan,环huan,峘huan,洹huan,狟huan,荁huan,桓huan,萈huan,萑huan,堚huan,寏huan,雈huan,綄huan,羦huan,锾huan,阛huan,寰huan,澴huan,缳huan,環huan,豲huan,鍰huan,镮huan,鹮huan,糫huan,繯huan,轘huan,鐶huan,鬟huan,瞏huan,鉮huan,圜huan,闤huan,睆huan,缓huan,緩huan,攌huan,幻huan,奂huan,肒huan,奐huan,宦huan,唤huan,换huan,浣huan,涣huan,烉huan,患huan,梙huan,焕huan,逭huan,喚huan,嵈huan,愌huan,換huan,渙huan,痪huan,煥huan,豢huan,漶huan,瘓huan,槵huan,鲩huan,擐huan,瞣huan,藧huan,鯇huan,鯶huan,鰀huan,圂huan,蠸huan,瑍huan,巟huang,肓huang,荒huang,衁huang,塃huang,慌huang,皇huang,偟huang,凰huang,隍huang,黃huang,黄huang,喤huang,堭huang,媓huang,崲huang,徨huang,湟huang,葟huang,遑huang,楻huang,煌huang,瑝huang,墴huang,潢huang,獚huang,锽huang,熿huang,璜huang,篁huang,艎huang,蝗huang,癀huang,磺huang,穔huang,諻huang,簧huang,蟥huang,鍠huang,餭huang,鳇huang,鐄huang,騜huang,鰉huang,鷬huang,惶huang,鱑huang,怳huang,恍huang,炾huang,宺huang,晃huang,晄huang,奛huang,谎huang,幌huang,愰huang,詤huang,縨huang,謊huang,皩huang,兤huang,滉huang,榥huang,曂huang,皝huang,鎤huang,鰴hui,灰hui,灳hui,诙hui,咴hui,恢hui,拻hui,挥hui,虺hui,晖hui,烣hui,珲hui,豗hui,婎hui,媈hui,揮hui,翚hui,辉hui,暉hui,楎hui,琿hui,禈hui,詼hui,幑hui,睳hui,噅hui,噕hui,翬hui,輝hui,麾hui,徽hui,隳hui,瀈hui,洃hui,煇hui,囘hui,回hui,囬hui,廻hui,廽hui,恛hui,洄hui,茴hui,迴hui,烠hui,逥hui,痐hui,蛔hui,蛕hui,蜖hui,鮰hui,藱hui,悔hui,毇hui,檓hui,燬hui,譭hui,泋hui,毁hui,烜hui,卉hui,屷hui,汇hui,会hui,讳hui,浍hui,绘hui,荟hui,诲hui,恚hui,恵hui,烩hui,贿hui,彗hui,晦hui,秽hui,喙hui,惠hui,缋hui,翙hui,阓hui,匯hui,彙hui,彚hui,會hui,毀hui,滙hui,詯hui,賄hui,嘒hui,蔧hui,誨hui,圚hui,寭hui,慧hui,憓hui,暳hui,槥hui,潓hui,蕙hui,徻hui,橞hui,澮hui,獩hui,璤hui,薈hui,薉hui,諱hui,檅hui,燴hui,篲hui,餯hui,嚖hui,瞺hui,穢hui,繢hui,蟪hui,櫘hui,繪hui,翽hui,譓hui,儶hui,鏸hui,闠hui,孈hui,鐬hui,靧hui,韢hui,譿hui,顪hui,銊hui,叀hui,僡hui,懳hui,昏hun,昬hun,荤hun,婚hun,惛hun,涽hun,阍hun,惽hun,棔hun,葷hun,睧hun,閽hun,焄hun,蔒hun,睯hun,忶hun,浑hun,馄hun,渾hun,魂hun,餛hun,繉hun,轋hun,鼲hun,混hun,梱hun,湷hun,诨hun,俒hun,倱hun,掍hun,焝hun,溷hun,慁hun,觨hun,諢hun,吙huo,耠huo,锪huo,劐huo,鍃huo,豁huo,攉huo,騞huo,搉huo,佸huo,秮huo,活huo,火huo,伙huo,邩huo,钬huo,鈥huo,夥huo,沎huo,或huo,货huo,咟huo,俰huo,捇huo,眓huo,获huo,閄huo,剨huo,掝huo,祸huo,貨huo,惑huo,旤huo,湱huo,禍huo,奯huo,獲huo,霍huo,謋huo,镬huo,嚯huo,瀖huo,耯huo,藿huo,蠖huo,嚿huo,曤huo,臛huo,癨huo,矐huo,鑊huo,靃huo,謔huo,篧huo,擭huo,夻hwa,丌ji,讥ji,击ji,刉ji,叽ji,饥ji,乩ji,圾ji,机ji,玑ji,肌ji,芨ji,矶ji,鸡ji,枅ji,咭ji,剞ji,唧ji,姬ji,屐ji,积ji,笄ji,飢ji,基ji,喞ji,嵆ji,嵇ji,攲ji,敧ji,犄ji,筓ji,缉ji,赍ji,嗘ji,稘ji,跻ji,鳮ji,僟ji,毄ji,箕ji,銈ji,嘰ji,撃ji,樭ji,畿ji,稽ji,緝ji,觭ji,賫ji,躸ji,齑ji,墼ji,憿ji,機ji,激ji,璣ji,禨ji,積ji,錤ji,隮ji,擊ji,磯ji,簊ji,羁ji,賷ji,鄿ji,櫅ji,耭ji,雞ji,譏ji,韲ji,鶏ji,譤ji,鐖ji,癪ji,躋ji,鞿ji,鷄ji,齎ji,羇ji,虀ji,鑇ji,覉ji,鑙ji,齏ji,羈ji,鸄ji,覊ji,庴ji,垍ji,諅ji,踦ji,璂ji,踑ji,谿ji,刏ji,畸ji,簎ji,諔ji,堲ji,蠀ji,亼ji,及ji,吉ji,彶ji,忣ji,汲ji,级ji,即ji,极ji,亟ji,佶ji,郆ji,卽ji,叝ji,姞ji,急ji,狤ji,皍ji,笈ji,級ji,揤ji,疾ji,觙ji,偮ji,卙ji,楖ji,焏ji,脨ji,谻ji,戢ji,棘ji,極ji,湒ji,集ji,塉ji,嫉ji,愱ji,楫ji,蒺ji,蝍ji,趌ji,辑ji,槉ji,耤ji,膌ji,銡ji,嶯ji,潗ji,瘠ji,箿ji,蕀ji,蕺ji,踖ji,鞊ji,鹡ji,橶ji,檝ji,濈ji,螏ji,輯ji,襋ji,蹐ji,艥ji,籍ji,轚ji,鏶ji,霵ji,鶺ji,鷑ji,躤ji,雦ji,雧ji,嵴ji,尐ji,淁ji,吇ji,莋ji,岌ji,殛ji,鍓ji,颳ji,几ji,己ji,丮ji,妀ji,犱ji,泲ji,虮ji,挤ji,脊ji,掎ji,鱾ji,幾ji,戟ji,麂ji,魢ji,撠ji,擠ji,穖ji,蟣ji,済ji,畟ji,迹ji,绩ji,勣ji,彑ji,旡ji,计ji,记ji,伎ji,纪ji,坖ji,妓ji,忌ji,技ji,芰ji,芶ji,际ji,剂ji,季ji,哜ji,峜ji,既ji,洎ji,济ji,紀ji,茍ji,計ji,剤ji,紒ji,继ji,觊ji,記ji,偈ji,寄ji,徛ji,悸ji,旣ji,梞ji,祭ji,萕ji,惎ji,臮ji,葪ji,蔇ji,兾ji,痵ji,継ji,蓟ji,裚ji,跡ji,際ji,墍ji,暨ji,漃ji,漈ji,禝ji,稩ji,穊ji,誋ji,跽ji,霁ji,鲚ji,稷ji,鲫ji,冀ji,劑ji,曁ji,穄ji,縘ji,薊ji,襀ji,髻ji,嚌ji,檕ji,濟ji,繋ji,罽ji,覬ji,鮆ji,檵ji,璾ji,蹟ji,鯽ji,鵋ji,齌ji,廭ji,懻ji,癠ji,穧ji,糭ji,繫ji,骥ji,鯚ji,瀱ji,繼ji,蘮ji,鱀ji,蘻ji,霽ji,鰶ji,鰿ji,鱭ji,驥ji,訐ji,魝ji,櫭ji,帺ji,褀ji,鬾ji,懠ji,蟿ji,汥ji,鯯ji,齍ji,績ji,寂ji,暩ji,蘎ji,筴jia,加jia,抸jia,佳jia,泇jia,迦jia,枷jia,毠jia,浃jia,珈jia,埉jia,家jia,浹jia,痂jia,梜jia,耞jia,袈jia,猳jia,葭jia,跏jia,犌jia,腵jia,鉫jia,嘉jia,镓jia,糘jia,豭jia,貑jia,鎵jia,麚jia,椵jia,挟jia,挾jia,笳jia,夹jia,袷jia,裌jia,圿jia,扴jia,郏jia,荚jia,郟jia,唊jia,恝jia,莢jia,戛jia,脥jia,铗jia,蛱jia,颊jia,蛺jia,跲jia,鋏jia,頬jia,頰jia,鴶jia,鵊jia,忦jia,戞jia,岬jia,甲jia,叚jia,玾jia,胛jia,斚jia,贾jia,钾jia,婽jia,徦jia,斝jia,賈jia,鉀jia,榎jia,槚jia,瘕jia,檟jia,夓jia,假jia,价jia,驾jia,架jia,嫁jia,幏jia,榢jia,價jia,稼jia,駕jia,戋jian,奸jian,尖jian,幵jian,坚jian,歼jian,间jian,冿jian,戔jian,肩jian,艰jian,姦jian,姧jian,兼jian,监jian,堅jian,惤jian,猏jian,笺jian,菅jian,菺jian,牋jian,犍jian,缄jian,葌jian,葏jian,間jian,靬jian,搛jian,椾jian,煎jian,瑊jian,睷jian,碊jian,缣jian,蒹jian,監jian,箋jian,樫jian,熞jian,緘jian,蕑jian,蕳jian,鲣jian,鳽jian,鹣jian,熸jian,篯jian,縑jian,艱jian,鞬jian,餰jian,馢jian,麉jian,瀐jian,鞯jian,鳒jian,殱jian,礛jian,覸jian,鵳jian,瀸jian,櫼jian,殲jian,譼jian,鰜jian,鶼jian,籛jian,韀jian,鰹jian,囏jian,虃jian,鑯jian,韉jian,揃jian,鐗jian,鐧jian,閒jian,黚jian,傔jian,攕jian,纎jian,钘jian,鈃jian,銒jian,籈jian,湔jian,囝jian,拣jian,枧jian,俭jian,茧jian,倹jian,挸jian,捡jian,笕jian,减jian,剪jian,帴jian,梘jian,检jian,湕jian,趼jian,揀jian,検jian,減jian,睑jian,硷jian,裥jian,詃jian,锏jian,弿jian,瑐jian,筧jian,简jian,絸jian,谫jian,彅jian,戩jian,碱jian,儉jian,翦jian,撿jian,檢jian,藆jian,襇jian,襉jian,謇jian,蹇jian,瞼jian,礆jian,簡jian,繭jian,謭jian,鬋jian,鰎jian,鹸jian,瀽jian,蠒jian,鹻jian,譾jian,襺jian,鹼jian,堿jian,偂jian,銭jian,醎jian,鹹jian,涀jian,橏jian,柬jian,戬jian,见jian,件jian,見jian,侟jian,饯jian,剑jian,洊jian,牮jian,荐jian,贱jian,俴jian,健jian,剣jian,栫jian,涧jian,珔jian,舰jian,剱jian,徤jian,渐jian,袸jian,谏jian,釼jian,寋jian,旔jian,楗jian,毽jian,溅jian,腱jian,臶jian,葥jian,践jian,鉴jian,键jian,僭jian,榗jian,漸jian,劍jian,劎jian,墹jian,澗jian,箭jian,糋jian,諓jian,賤jian,趝jian,踐jian,踺jian,劒jian,劔jian,橺jian,薦jian,諫jian,鍵jian,餞jian,瞯jian,瞷jian,磵jian,礀jian,螹jian,鍳jian,濺jian,繝jian,瀳jian,鏩jian,艦jian,轞jian,鑑jian,鑒jian,鑬jian,鑳jian,鐱jian,揵jian,蔪jian,橌jian,廴jian,譖jian,鋻jian,建jian,賎jian,擶jian,江jiang,姜jiang,将jiang,茳jiang,浆jiang,畕jiang,豇jiang,葁jiang,摪jiang,翞jiang,僵jiang,漿jiang,螀jiang,壃jiang,彊jiang,缰jiang,薑jiang,殭jiang,螿jiang,鳉jiang,疅jiang,礓jiang,疆jiang,繮jiang,韁jiang,鱂jiang,將jiang,畺jiang,糡jiang,橿jiang,讲jiang,奖jiang,桨jiang,蒋jiang,勥jiang,奨jiang,奬jiang,蔣jiang,槳jiang,獎jiang,耩jiang,膙jiang,講jiang,顜jiang,塂jiang,匞jiang,匠jiang,夅jiang,弜jiang,杢jiang,降jiang,绛jiang,弶jiang,袶jiang,絳jiang,酱jiang,摾jiang,滰jiang,嵹jiang,犟jiang,醤jiang,糨jiang,醬jiang,櫤jiang,謽jiang,蔃jiang,洚jiang,艽jiao,芁jiao,交jiao,郊jiao,姣jiao,娇jiao,峧jiao,浇jiao,茭jiao,骄jiao,胶jiao,椒jiao,焳jiao,蛟jiao,跤jiao,僬jiao,嘄jiao,鲛jiao,嬌jiao,嶕jiao,嶣jiao,憍jiao,澆jiao,膠jiao,蕉jiao,燋jiao,膲jiao,礁jiao,穚jiao,鮫jiao,鹪jiao,簥jiao,蟭jiao,轇jiao,鐎jiao,驕jiao,鷦jiao,鷮jiao,儌jiao,撟jiao,挍jiao,教jiao,骹jiao,嫶jiao,萩jiao,嘐jiao,憢jiao,焦jiao,櫵jiao,嚼jiao,臫jiao,佼jiao,挢jiao,狡jiao,绞jiao,饺jiao,晈jiao,笅jiao,皎jiao,矫jiao,脚jiao,铰jiao,搅jiao,筊jiao,絞jiao,剿jiao,勦jiao,敫jiao,湬jiao,煍jiao,腳jiao,賋jiao,摷jiao,暞jiao,踋jiao,鉸jiao,劋jiao,撹jiao,徼jiao,敽jiao,敿jiao,缴jiao,曒jiao,璬jiao,矯jiao,皦jiao,蟜jiao,鵤jiao,繳jiao,譑jiao,孂jiao,纐jiao,攪jiao,灚jiao,鱎jiao,潐jiao,糸jiao,蹻jiao,釥jiao,纟jiao,恔jiao,角jiao,餃jiao,叫jiao,呌jiao,訆jiao,珓jiao,轿jiao,较jiao,窖jiao,滘jiao,較jiao,嘂jiao,嘦jiao,斠jiao,漖jiao,酵jiao,噍jiao,噭jiao,嬓jiao,獥jiao,藠jiao,趭jiao,轎jiao,醮jiao,譥jiao,皭jiao,釂jiao,觉jiao,覐jiao,覚jiao,覺jiao,趫jiao,敎jiao,阶jie,疖jie,皆jie,接jie,掲jie,痎jie,秸jie,菨jie,喈jie,嗟jie,堦jie,媘jie,嫅jie,揭jie,椄jie,湝jie,脻jie,街jie,煯jie,稭jie,鞂jie,蝔jie,擑jie,癤jie,鶛jie,节jie,節jie,袓jie,謯jie,階jie,卪jie,孑jie,讦jie,刦jie,刧jie,劫jie,岊jie,昅jie,刼jie,劼jie,疌jie,衱jie,诘jie,拮jie,洁jie,结jie,迼jie,倢jie,桀jie,桝jie,莭jie,偼jie,婕jie,崨jie,捷jie,袺jie,傑jie,媫jie,結jie,蛣jie,颉jie,嵥jie,楬jie,楶jie,滐jie,睫jie,蜐jie,詰jie,截jie,榤jie,碣jie,竭jie,蓵jie,鲒jie,潔jie,羯jie,誱jie,踕jie,頡jie,幯jie,擳jie,嶻jie,擮jie,礍jie,鍻jie,鮚jie,巀jie,蠞jie,蠘jie,蠽jie,洯jie,絜jie,搩jie,杰jie,鉣jie,姐jie,毑jie,媎jie,解jie,觧jie,檞jie,飷jie,丯jie,介jie,岕jie,庎jie,戒jie,芥jie,屆jie,届jie,斺jie,玠jie,界jie,畍jie,疥jie,砎jie,衸jie,诫jie,借jie,蚧jie,徣jie,堺jie,楐jie,琾jie,蛶jie,骱jie,犗jie,誡jie,魪jie,藉jie,繲jie,雃jie,嶰jie,唶jie,褯jie,巾jin,今jin,斤jin,钅jin,兓jin,金jin,釒jin,津jin,矜jin,砛jin,荕jin,衿jin,觔jin,埐jin,珒jin,紟jin,惍jin,琎jin,堻jin,琻jin,筋jin,嶜jin,璡jin,鹶jin,黅jin,襟jin,濜jin,仅jin,巹jin,紧jin,堇jin,菫jin,僅jin,厪jin,谨jin,锦jin,嫤jin,廑jin,漌jin,緊jin,蓳jin,馑jin,槿jin,瑾jin,錦jin,謹jin,饉jin,儘jin,婜jin,斳jin,卺jin,笒jin,盡jin,劤jin,尽jin,劲jin,妗jin,近jin,进jin,侭jin,枃jin,勁jin,荩jin,晉jin,晋jin,浸jin,烬jin,赆jin,祲jin,進jin,煡jin,缙jin,寖jin,搢jin,溍jin,禁jin,靳jin,墐jin,慬jin,瑨jin,僸jin,凚jin,歏jin,殣jin,觐jin,噤jin,濅jin,縉jin,賮jin,嚍jin,壗jin,藎jin,燼jin,璶jin,覲jin,贐jin,齽jin,馸jin,臸jin,浕jin,嬧jin,坕jing,坙jing,巠jing,京jing,泾jing,经jing,茎jing,亰jing,秔jing,荆jing,荊jing,涇jing,莖jing,婛jing,惊jing,旌jing,旍jing,猄jing,経jing,菁jing,晶jing,稉jing,腈jing,粳jing,經jing,兢jing,精jing,聙jing,橸jing,鲸jing,鵛jing,鯨jing,鶁jing,麖jing,鼱jing,驚jing,麠jing,徑jing,仱jing,靑jing,睛jing,井jing,阱jing,刭jing,坓jing,宑jing,汫jing,汬jing,肼jing,剄jing,穽jing,颈jing,景jing,儆jing,幜jing,璄jing,憼jing,暻jing,燝jing,璟jing,璥jing,頸jing,蟼jing,警jing,擏jing,憬jing,妌jing,净jing,弪jing,径jing,迳jing,浄jing,胫jing,凈jing,弳jing,痉jing,竞jing,逕jing,婙jing,婧jing,桱jing,梷jing,淨jing,竫jing,脛jing,敬jing,痙jing,竧jing,傹jing,靖jing,境jing,獍jing,誩jing,静jing,頚jing,曔jing,镜jing,靜jing,瀞jing,鏡jing,競jing,竸jing,葝jing,儬jing,陘jing,竟jing,冋jiong,扃jiong,埛jiong,絅jiong,駉jiong,駫jiong,冏jiong,浻jiong,扄jiong,銄jiong,囧jiong,迥jiong,侰jiong,炯jiong,逈jiong,烱jiong,煚jiong,窘jiong,颎jiong,綗jiong,僒jiong,煛jiong,熲jiong,澃jiong,燛jiong,褧jiong,顈jiong,蘔jiong,宭jiong,蘏jiong,丩jiu,勼jiu,纠jiu,朻jiu,究jiu,糺jiu,鸠jiu,赳jiu,阄jiu,萛jiu,啾jiu,揪jiu,揫jiu,鳩jiu,摎jiu,鬏jiu,鬮jiu,稵jiu,糾jiu,九jiu,久jiu,乆jiu,乣jiu,奺jiu,汣jiu,杦jiu,灸jiu,玖jiu,舏jiu,韭jiu,紤jiu,酒jiu,镹jiu,韮jiu,匛jiu,旧jiu,臼jiu,疚jiu,柩jiu,柾jiu,倃jiu,桕jiu,厩jiu,救jiu,就jiu,廄jiu,匓jiu,舅jiu,僦jiu,廏jiu,廐jiu,慦jiu,殧jiu,舊jiu,鹫jiu,麔jiu,匶jiu,齨jiu,鷲jiu,咎jiu,欍jou,鶪ju,伡ju,俥ju,凥ju,匊ju,居ju,狙ju,苴ju,驹ju,倶ju,挶ju,捄ju,疽ju,痀ju,眗ju,砠ju,罝ju,陱ju,娵ju,婅ju,婮ju,崌ju,掬ju,梮ju,涺ju,椐ju,琚ju,腒ju,趄ju,跔ju,锔ju,裾ju,雎ju,艍ju,蜛ju,踘ju,鋦ju,駒ju,鮈ju,鴡ju,鞠ju,鞫ju,鶋ju,臄ju,揟ju,拘ju,諊ju,局ju,泦ju,侷ju,狊ju,桔ju,毩ju,淗ju,焗ju,菊ju,郹ju,椈ju,毱ju,湨ju,犑ju,輂ju,粷ju,蓻ju,趜ju,躹ju,閰ju,檋ju,駶ju,鵙ju,蹫ju,鵴ju,巈ju,蘜ju,鼰ju,鼳ju,驧ju,趉ju,郥ju,橘ju,咀ju,弆ju,沮ju,举ju,矩ju,莒ju,挙ju,椇ju,筥ju,榉ju,榘ju,蒟ju,龃ju,聥ju,舉ju,踽ju,擧ju,櫸ju,齟ju,襷ju,籧ju,郰ju,欅ju,句ju,巨ju,讵ju,姖ju,岠ju,怇ju,拒ju,洰ju,苣ju,邭ju,具ju,怚ju,拠ju,昛ju,歫ju,炬ju,秬ju,钜ju,俱ju,倨ju,冣ju,剧ju,粔ju,耟ju,蚷ju,埧ju,埾ju,惧ju,詎ju,距ju,焣ju,犋ju,跙ju,鉅ju,飓ju,虡ju,豦ju,锯ju,愳ju,窭ju,聚ju,駏ju,劇ju,勮ju,屦ju,踞ju,鮔ju,壉ju,懅ju,據ju,澽ju,遽ju,鋸ju,屨ju,颶ju,簴ju,躆ju,醵ju,懼ju,鐻ju,爠ju,坥ju,螶ju,忂ju,葅ju,蒩ju,珇ju,据ju,姢juan,娟juan,捐juan,涓juan,脧juan,裐juan,鹃juan,勬juan,鋑juan,鋗juan,镌juan,鎸juan,鵑juan,鐫juan,蠲juan,勌juan,瓹juan,梋juan,鞙juan,朘juan,呟juan,帣juan,埍juan,捲juan,菤juan,锩juan,臇juan,錈juan,埢juan,踡juan,蕋juan,卷juan,劵juan,弮juan,倦juan,桊juan,狷juan,绢juan,淃juan,眷juan,鄄juan,睊juan,絭juan,罥juan,睠juan,絹juan,慻juan,蔨juan,餋juan,獧juan,羂juan,圏juan,棬juan,惓juan,韏juan,讂juan,縳juan,襈juan,奆juan,噘jue,撅jue,撧jue,屩jue,屫jue,繑jue,亅jue,孓jue,决jue,刔jue,氒jue,诀jue,抉jue,決jue,芵jue,泬jue,玦jue,玨jue,挗jue,珏jue,砄jue,绝jue,虳jue,捔jue,欮jue,蚗jue,崛jue,掘jue,斍jue,桷jue,殌jue,焆jue,觖jue,逫jue,傕jue,厥jue,絕jue,絶jue,鈌jue,劂jue,勪jue,瑴jue,谲jue,嶥jue,憰jue,潏jue,熦jue,爴jue,獗jue,瘚jue,蕝jue,蕨jue,憠jue,橛jue,镼jue,爵jue,镢jue,蟨jue,蟩jue,爑jue,譎jue,蹷jue,鶌jue,矍jue,鐝jue,灍jue,爝jue,觼jue,彏jue,戄jue,攫jue,玃jue,鷢jue,欔jue,矡jue,龣jue,貜jue,躩jue,钁jue,璚jue,匷jue,啳jue,吷jue,疦jue,弡jue,穱jue,孒jue,訣jue,橜jue,蹶jue,倔jue,誳jue,君jun,均jun,汮jun,姰jun,袀jun,軍jun,钧jun,莙jun,蚐jun,桾jun,皲jun,菌jun,鈞jun,碅jun,筠jun,皸jun,皹jun,覠jun,銁jun,銞jun,鲪jun,麇jun,鍕jun,鮶jun,麏jun,麕jun,军jun,隽jun,雋jun,呁jun,俊jun,郡jun,陖jun,峻jun,捃jun,晙jun,馂jun,骏jun,焌jun,珺jun,畯jun,竣jun,箘jun,箟jun,蜠jun,儁jun,寯jun,懏jun,餕jun,燇jun,駿jun,鵔jun,鵕jun,鵘jun,葰jun,埈jun,咔ka,咖ka,喀ka,衉ka,哢ka,呿ka,卡ka,佧ka,垰ka,裃ka,鉲ka,胩ka,开kai,奒kai,揩kai,锎kai,開kai,鐦kai,凯kai,剀kai,垲kai,恺kai,闿kai,铠kai,凱kai,慨kai,蒈kai,塏kai,愷kai,楷kai,輆kai,暟kai,锴kai,鍇kai,鎧kai,闓kai,颽kai,喫kai,噄kai,忾kai,烗kai,勓kai,愾kai,鎎kai,愒kai,欯kai,炌kai,乫kal,刊kan,栞kan,勘kan,龛kan,堪kan,嵁kan,戡kan,龕kan,槛kan,檻kan,冚kan,坎kan,侃kan,砍kan,莰kan,偘kan,埳kan,惂kan,欿kan,塪kan,輡kan,竷kan,轗kan,衎kan,看kan,崁kan,墈kan,阚kan,瞰kan,磡kan,闞kan,矙kan,輱kan,忼kang,砊kang,粇kang,康kang,嫝kang,嵻kang,慷kang,漮kang,槺kang,穅kang,糠kang,躿kang,鏮kang,鱇kang,闶kang,閌kang,扛kang,摃kang,亢kang,伉kang,匟kang,囥kang,抗kang,炕kang,钪kang,鈧kang,邟kang,尻kao,髛kao,嵪kao,訄kao,薧kao,攷kao,考kao,拷kao,洘kao,栲kao,烤kao,铐kao,犒kao,銬kao,鲓kao,靠kao,鮳kao,鯌kao,焅kao,屙ke,蚵ke,苛ke,柯ke,牁ke,珂ke,胢ke,轲ke,疴ke,趷ke,钶ke,嵙ke,棵ke,痾ke,萪ke,軻ke,颏ke,犐ke,稞ke,窠ke,鈳ke,榼ke,薖ke,颗ke,樖ke,瞌ke,磕ke,蝌ke,頦ke,醘ke,顆ke,髁ke,礚ke,嗑ke,窼ke,簻ke,科ke,壳ke,咳ke,揢ke,翗ke,嶱ke,殼ke,毼ke,磆ke,坷ke,可ke,岢ke,炣ke,渇ke,嵑ke,敤ke,渴ke,袔ke,悈ke,歁ke,克ke,刻ke,剋ke,勀ke,勊ke,客ke,恪ke,娔ke,尅ke,课ke,堁ke,氪ke,骒ke,缂ke,愙ke,溘ke,锞ke,碦ke,課ke,礊ke,騍ke,硞ke,艐ke,緙ke,肎ken,肯ken,肻ken,垦ken,恳ken,啃ken,豤ken,貇ken,墾ken,錹ken,懇ken,頎ken,掯ken,裉ken,褃ken,硍ken,妔keng,踁keng,劥keng,吭keng,坈keng,坑keng,挳keng,硁keng,牼keng,硜keng,铿keng,硻keng,誙keng,銵keng,鏗keng,摼keng,殸keng,揁keng,鍞keng,巪keo,乬keol,唟keos,厼keum,怾ki,空kong,倥kong,埪kong,崆kong,悾kong,硿kong,箜kong,躻kong,錓kong,鵼kong,椌kong,宆kong,孔kong,恐kong,控kong,鞚kong,羫kong,廤kos,抠kou,芤kou,眍kou,剾kou,彄kou,摳kou,瞘kou,劶kou,竘kou,口kou,叩kou,扣kou,怐kou,敂kou,冦kou,宼kou,寇kou,釦kou,窛kou,筘kou,滱kou,蔲kou,蔻kou,瞉kou,簆kou,鷇kou,搰ku,刳ku,矻ku,郀ku,枯ku,哭ku,桍ku,堀ku,崫ku,圐ku,跍ku,窟ku,骷ku,泏ku,窋ku,狜ku,苦ku,楛ku,齁ku,捁ku,库ku,俈ku,绔ku,庫ku,秙ku,袴ku,喾ku,絝ku,裤ku,瘔ku,酷ku,褲ku,嚳ku,鮬ku,恗kua,夸kua,姱kua,晇kua,舿kua,誇kua,侉kua,咵kua,垮kua,銙kua,顝kua,挎kua,胯kua,跨kua,骻kua,擓kuai,蒯kuai,璯kuai,駃kuai,巜kuai,凷kuai,圦kuai,块kuai,快kuai,侩kuai,郐kuai,哙kuai,狯kuai,脍kuai,塊kuai,筷kuai,鲙kuai,儈kuai,鄶kuai,噲kuai,廥kuai,獪kuai,膾kuai,旝kuai,糩kuai,鱠kuai,蕢kuai,宽kuan,寛kuan,寬kuan,髋kuan,鑧kuan,髖kuan,欵kuan,款kuan,歀kuan,窽kuan,窾kuan,梡kuan,匡kuang,劻kuang,诓kuang,邼kuang,匩kuang,哐kuang,恇kuang,洭kuang,筐kuang,筺kuang,誆kuang,軭kuang,狂kuang,狅kuang,诳kuang,軖kuang,軠kuang,誑kuang,鵟kuang,夼kuang,儣kuang,懭kuang,爌kuang,邝kuang,圹kuang,况kuang,旷kuang,岲kuang,況kuang,矿kuang,昿kuang,贶kuang,框kuang,眖kuang,砿kuang,眶kuang,絋kuang,絖kuang,貺kuang,軦kuang,鉱kuang,鋛kuang,鄺kuang,壙kuang,黋kuang,懬kuang,曠kuang,礦kuang,穬kuang,纊kuang,鑛kuang,纩kuang,亏kui,刲kui,悝kui,盔kui,窥kui,聧kui,窺kui,虧kui,闚kui,巋kui,蘬kui,岿kui,奎kui,晆kui,逵kui,鄈kui,頄kui,馗kui,喹kui,揆kui,葵kui,骙kui,戣kui,暌kui,楏kui,楑kui,魁kui,睽kui,蝰kui,頯kui,櫆kui,藈kui,鍷kui,騤kui,夔kui,蘷kui,虁kui,躨kui,鍨kui,卼kui,煃kui,跬kui,頍kui,蹞kui,尯kui,匮kui,欳kui,喟kui,媿kui,愦kui,愧kui,溃kui,蒉kui,馈kui,匱kui,嘳kui,嬇kui,憒kui,潰kui,聩kui,聭kui,樻kui,殨kui,餽kui,簣kui,聵kui,籄kui,鐀kui,饋kui,鑎kui,篑kui,坤kun,昆kun,晜kun,堃kun,堒kun,婫kun,崐kun,崑kun,猑kun,菎kun,裈kun,焜kun,琨kun,髠kun,裩kun,锟kun,髡kun,尡kun,潉kun,蜫kun,褌kun,髨kun,熴kun,瑻kun,醌kun,錕kun,鲲kun,臗kun,騉kun,鯤kun,鵾kun,鶤kun,鹍kun,悃kun,捆kun,阃kun,壸kun,祵kun,硱kun,稇kun,裍kun,壼kun,稛kun,綑kun,閫kun,閸kun,困kun,睏kun,涃kun,秳kuo,漷kuo,扩kuo,拡kuo,括kuo,桰kuo,筈kuo,萿kuo,葀kuo,蛞kuo,阔kuo,廓kuo,頢kuo,擴kuo,濶kuo,闊kuo,鞟kuo,韕kuo,懖kuo,霩kuo,鞹kuo,鬠kuo,穒kweok,鞡la,垃la,拉la,柆la,啦la,菈la,搚la,邋la,磖la,翋la,旯la,砬la,揦la,喇la,藞la,嚹la,剌la,溂la,腊la,揧la,楋la,瘌la,牎chuang,床chuang,漺chuang,怆chuang,愴chuang,莊zhuang,粧zhuang,装zhuang,裝zhuang,樁zhuang,蜡la,蝋la,辢la,辣la,蝲la,臈la,攋la,爉la,臘la,鬎la,櫴la,瓎la,镴la,鯻la,鑞la,儠la,擸la,鱲la,蠟la,来lai,來lai,俫lai,倈lai,崃lai,徕lai,涞lai,莱lai,郲lai,婡lai,崍lai,庲lai,徠lai,梾lai,淶lai,猍lai,萊lai,逨lai,棶lai,琜lai,筙lai,铼lai,箂lai,錸lai,騋lai,鯠lai,鶆lai,麳lai,顂lai,勑lai,誺lai,赉lai,睐lai,睞lai,赖lai,賚lai,濑lai,賴lai,頼lai,癞lai,鵣lai,瀨lai,瀬lai,籁lai,藾lai,癩lai,襰lai,籟lai,唻lai,暕lan,兰lan,岚lan,拦lan,栏lan,婪lan,嵐lan,葻lan,阑lan,蓝lan,谰lan,厱lan,褴lan,儖lan,斓lan,篮lan,懢lan,燣lan,藍lan,襕lan,镧lan,闌lan,璼lan,襤lan,譋lan,幱lan,攔lan,瀾lan,灆lan,籃lan,繿lan,蘭lan,斕lan,欄lan,礷lan,襴lan,囒lan,灡lan,籣lan,欗lan,讕lan,躝lan,鑭lan,钄lan,韊lan,惏lan,澜lan,襽lan,览lan,浨lan,揽lan,缆lan,榄lan,漤lan,罱lan,醂lan,壈lan,懒lan,覧lan,擥lan,懶lan,孄lan,覽lan,孏lan,攬lan,欖lan,爦lan,纜lan,灠lan,顲lan,蘫lan,嬾lan,烂lan,滥lan,燗lan,嚂lan,壏lan,濫lan,爛lan,爤lan,瓓lan,糷lan,湅lan,煉lan,爁lan,唥lang,啷lang,羮lang,勆lang,郎lang,郞lang,欴lang,狼lang,嫏lang,廊lang,桹lang,琅lang,蓈lang,榔lang,瑯lang,硠lang,稂lang,锒lang,筤lang,艆lang,蜋lang,郒lang,螂lang,躴lang,鋃lang,鎯lang,阆lang,閬lang,哴lang,悢lang,朗lang,朖lang,烺lang,塱lang,蓢lang,樃lang,誏lang,朤lang,俍lang,脼lang,莨lang,埌lang,浪lang,蒗lang,捞lao,粩lao,撈lao,劳lao,労lao,牢lao,窂lao,哰lao,崂lao,浶lao,勞lao,痨lao,僗lao,嶗lao,憥lao,朥lao,癆lao,磱lao,簩lao,蟧lao,醪lao,鐒lao,顟lao,髝lao,轑lao,嫪lao,憦lao,铹lao,耂lao,老lao,佬lao,咾lao,姥lao,恅lao,荖lao,栳lao,珯lao,硓lao,铑lao,蛯lao,銠lao,橑lao,鮱lao,唠lao,嘮lao,烙lao,嗠lao,耢lao,酪lao,澇lao,橯lao,耮lao,軂lao,涝lao,饹le,了le,餎le,牞le,仂le,阞le,乐le,叻le,忇le,扐le,氻le,艻le,玏le,泐le,竻le,砳le,勒le,楽le,韷le,樂le,簕le,鳓le,鰳le,頛lei,嘞lei,雷lei,嫘lei,缧lei,蔂lei,樏lei,畾lei,檑lei,縲lei,镭lei,櫑lei,瓃lei,羸lei,礧lei,罍lei,蘲lei,鐳lei,轠lei,壨lei,鑘lei,靁lei,虆lei,鱩lei,欙lei,纝lei,鼺lei,磥lei,攂lei,腂lei,瘣lei,厽lei,耒lei,诔lei,垒lei,絫lei,傫lei,誄lei,磊lei,蕌lei,蕾lei,儡lei,壘lei,癗lei,藟lei,櫐lei,矋lei,礨lei,灅lei,蠝lei,蘽lei,讄lei,儽lei,鑸lei,鸓lei,洡lei,礌lei,塁lei,纍lei,肋lei,泪lei,类lei,涙lei,淚lei,累lei,酹lei,銇lei,頪lei,擂lei,錑lei,颣lei,類lei,纇lei,蘱lei,禷lei,祱lei,塄leng,棱leng,楞leng,碐leng,稜leng,踜leng,薐leng,輘leng,冷leng,倰leng,堎leng,愣leng,睖leng,瓈li,唎li,粚li,刕li,厘li,剓li,梨li,狸li,荲li,骊li,悡li,梸li,犁li,菞li,喱li,棃li,犂li,鹂li,剺li,漓li,睝li,筣li,缡li,艃li,蓠li,蜊li,嫠li,孷li,樆li,璃li,盠li,竰li,氂li,犛li,糎li,蔾li,鋫li,鲡li,黎li,篱li,縭li,罹li,錅li,蟍li,謧li,醨li,嚟li,藜li,邌li,釐li,離li,鯏li,鏫li,鯬li,鵹li,黧li,囄li,灕li,蘺li,蠡li,蠫li,孋li,廲li,劙li,鑗li,籬li,驪li,鱺li,鸝li,婯li,儷li,矖li,纚li,离li,褵li,穲li,礼li,李li,里li,俚li,峛li,哩li,娌li,峲li,浬li,逦li,理li,裡li,锂li,粴li,裏li,鋰li,鲤li,澧li,禮li,鯉li,蟸li,醴li,鳢li,邐li,鱧li,欐li,欚li,銐li,脷li,莉li,力li,历li,厉li,屴li,立li,吏li,朸li,丽li,利li,励li,呖li,坜li,沥li,苈li,例li,岦li,戾li,枥li,沴li,疠li,苙li,隶li,俐li,俪li,栃li,栎li,疬li,砅li,茘li,荔li,轹li,郦li,娳li,悧li,栗li,栛li,栵li,涖li,猁li,珕li,砺li,砾li,秝li,莅li,唳li,悷li,琍li,笠li,粒li,粝li,蚸li,蛎li,傈li,凓li,厤li,棙li,痢li,蛠li,詈li,雳li,塛li,慄li,搮li,溧li,蒚li,蒞li,鉝li,鳨li,厯li,厲li,暦li,歴li,瑮li,綟li,蜧li,勵li,曆li,歷li,篥li,隷li,鴗li,巁li,檪li,濿li,癘li,磿li,隸li,鬁li,儮li,櫔li,爄li,犡li,禲li,蠇li,嚦li,壢li,攊li,櫟li,瀝li,瓅li,礪li,藶li,麗li,櫪li,爏li,瓑li,皪li,盭li,礫li,糲li,蠣li,癧li,礰li,酈li,鷅li,麜li,囇li,攦li,轢li,讈li,轣li,攭li,瓥li,靂li,鱱li,靋li,觻li,鱳li,叓li,蝷li,赲li,曞li,嫾lian,奁lian,连lian,帘lian,怜lian,涟lian,莲lian,連lian,梿lian,联lian,裢lian,亷lian,嗹lian,廉lian,慩lian,溓lian,漣lian,蓮lian,奩lian,熑lian,覝lian,劆lian,匳lian,噒lian,憐lian,磏lian,聨lian,聫lian,褳lian,鲢lian,濂lian,濓lian,縺lian,翴lian,聮lian,薕lian,螊lian,櫣lian,燫lian,聯lian,臁lian,蹥lian,謰lian,鎌lian,镰lian,簾lian,蠊lian,譧lian,鐮lian,鰱lian,籢lian,籨lian,槤lian,僆lian,匲lian,鬑lian,敛lian,琏lian,脸lian,裣lian,摙lian,璉lian,蔹lian,嬚lian,斂lian,歛lian,臉lian,鄻lian,襝lian,羷lian,蘝lian,蘞lian,薟lian,练lian,炼lian,恋lian,浰lian,殓lian,堜lian,媡lian,链lian,楝lian,瑓lian,潋lian,稴lian,練lian,澰lian,錬lian,殮lian,鍊lian,鏈lian,瀲lian,鰊lian,戀lian,纞lian,孌lian,攣lian,萰lian,簗liang,良liang,凉liang,梁liang,涼liang,椋liang,辌liang,粮liang,粱liang,墚liang,綡liang,輬liang,糧liang,駺liang,樑liang,冫liang,俩liang,倆liang,両liang,两liang,兩liang,唡liang,啢liang,掚liang,裲liang,緉liang,蜽liang,魉liang,魎liang,倞liang,靓liang,靚liang,踉liang,亮liang,谅liang,辆liang,喨liang,晾liang,湸liang,量liang,煷liang,輌liang,諒liang,輛liang,鍄liang,蹽liao,樛liao,潦liao,辽liao,疗liao,僚liao,寥liao,嵺liao,憀liao,漻liao,膋liao,嘹liao,嫽liao,寮liao,嶚liao,嶛liao,憭liao,撩liao,敹liao,獠liao,缭liao,遼liao,暸liao,燎liao,璙liao,窷liao,膫liao,療liao,竂liao,鹩liao,屪liao,廫liao,簝liao,蟟liao,豂liao,賿liao,蹘liao,爎liao,髎liao,飉liao,鷯liao,镽liao,尞liao,镠liao,鏐liao,僇liao,聊liao,繚liao,钌liao,釕liao,鄝liao,蓼liao,爒liao,瞭liao,廖liao,镣liao,鐐liao,尥liao,炓liao,料liao,撂liao,蟉liao,鴷lie,咧lie,毟lie,挘lie,埓lie,忚lie,列lie,劣lie,冽lie,姴lie,峢lie,挒lie,洌lie,茢lie,迾lie,埒lie,浖lie,烈lie,烮lie,捩lie,猎lie,猟lie,脟lie,蛚lie,裂lie,煭lie,睙lie,聗lie,趔lie,巤lie,颲lie,鮤lie,獵lie,犣lie,躐lie,鬛lie,哷lie,劦lie,奊lie,劽lie,鬣lie,拎lin,邻lin,林lin,临lin,啉lin,崊lin,淋lin,晽lin,琳lin,粦lin,痳lin,碄lin,箖lin,粼lin,鄰lin,隣lin,嶙lin,潾lin,獜lin,遴lin,斴lin,暽lin,燐lin,璘lin,辚lin,霖lin,瞵lin,磷lin,繗lin,翷lin,麐lin,轔lin,壣lin,瀶lin,鏻lin,鳞lin,驎lin,麟lin,鱗lin,疄lin,蹸lin,魿lin,涁lin,臨lin,菻lin,亃lin,僯lin,凛lin,凜lin,撛lin,廩lin,廪lin,懍lin,懔lin,澟lin,檁lin,檩lin,伈lin,吝lin,恡lin,赁lin,焛lin,賃lin,蔺lin,橉lin,甐lin,膦lin,閵lin,藺lin,躏lin,躙lin,躪lin,轥lin,悋lin,伶ling,刢ling,灵ling,囹ling,坽ling,夌ling,姈ling,岺ling,彾ling,泠ling,狑ling,苓ling,昤ling,柃ling,玲ling,瓴ling,凌ling,皊ling,砱ling,秢ling,竛ling,铃ling,陵ling,鸰ling,婈ling,崚ling,掕ling,棂ling,淩ling,琌ling,笭ling,紷ling,绫ling,羚ling,翎ling,聆ling,舲ling,菱ling,蛉ling,衑ling,祾ling,詅ling,跉ling,蓤ling,裬ling,鈴ling,閝ling,零ling,龄ling,綾ling,蔆ling,霊ling,駖ling,澪ling,蕶ling,錂ling,霗ling,鲮ling,鴒ling,鹷ling,燯ling,霛ling,霝ling,齢ling,瀮ling,酃ling,鯪ling,孁ling,蘦ling,齡ling,櫺ling,靈ling,欞ling,爧ling,麢ling,龗ling,阾ling,袊ling,靇ling,朎ling,軨ling,醽ling,岭ling,领ling,領ling,嶺ling,令ling,另ling,呤ling,炩ling,溜liu,熘liu,澑liu,蹓liu,刘liu,沠liu,畄liu,浏liu,流liu,留liu,旈liu,琉liu,畱liu,硫liu,裗liu,媹liu,嵧liu,旒liu,蓅liu,遛liu,馏liu,骝liu,榴liu,瑠liu,飗liu,劉liu,瑬liu,瘤liu,磂liu,镏liu,駠liu,鹠liu,橊liu,璢liu,疁liu,癅liu,駵liu,嚠liu,懰liu,瀏liu,藰liu,鎏liu,鎦liu,餾liu,麍liu,鐂liu,騮liu,飅liu,鰡liu,鶹liu,驑liu,蒥liu,飀liu,柳liu,栁liu,桞liu,珋liu,桺liu,绺liu,锍liu,綹liu,熮liu,罶liu,鋶liu,橮liu,羀liu,嬼liu,畂liu,六liu,翏liu,塯liu,廇liu,磟liu,鹨liu,霤liu,雡liu,鬸liu,鷚liu,飂liu,囖lo,谾long,龙long,屸long,咙long,泷long,茏long,昽long,栊long,珑long,胧long,眬long,砻long,笼long,聋long,隆long,湰long,嶐long,槞long,漋long,蕯long,癃long,窿long,篭long,龍long,巃long,巄long,瀧long,蘢long,鏧long,霳long,曨long,櫳long,爖long,瓏long,矓long,礱long,礲long,襱long,籠long,聾long,蠪long,蠬long,龓long,豅long,躘long,鑨long,驡long,鸗long,滝long,嚨long,朧long,陇long,垄long,垅long,儱long,隴long,壟long,壠long,攏long,竉long,徿long,拢long,梇long,衖long,贚long,喽lou,嘍lou,窶lou,娄lou,婁lou,溇lou,蒌lou,楼lou,廔lou,慺lou,蔞lou,遱lou,樓lou,熡lou,耧lou,蝼lou,艛lou,螻lou,謱lou,軁lou,髅lou,鞻lou,髏lou,漊lou,屚lou,膢lou,耬lou,嵝lou,搂lou,塿lou,嶁lou,摟lou,甊lou,篓lou,簍lou,陋lou,漏lou,瘘lou,镂lou,瘺lou,鏤lou,氌lu,氇lu,噜lu,撸lu,嚕lu,擼lu,卢lu,芦lu,垆lu,枦lu,泸lu,炉lu,栌lu,胪lu,轳lu,舮lu,鸬lu,玈lu,舻lu,颅lu,鈩lu,鲈lu,魲lu,盧lu,嚧lu,壚lu,廬lu,攎lu,瀘lu,獹lu,蘆lu,櫨lu,爐lu,瓐lu,臚lu,矑lu,纑lu,罏lu,艫lu,蠦lu,轤lu,鑪lu,顱lu,髗lu,鱸lu,鸕lu,黸lu,鹵lu,塷lu,庐lu,籚lu,卤lu,虏lu,挔lu,捛lu,掳lu,硵lu,鲁lu,虜lu,滷lu,蓾lu,樐lu,澛lu,魯lu,擄lu,橹lu,磠lu,镥lu,櫓lu,艣lu,鏀lu,艪lu,鐪lu,鑥lu,瀂lu,露lu,圥lu,甪lu,陆lu,侓lu,坴lu,彔lu,录lu,峍lu,勎lu,赂lu,辂lu,陸lu,娽lu,淕lu,淥lu,渌lu,硉lu,菉lu,逯lu,鹿lu,椂lu,琭lu,祿lu,剹lu,勠lu,盝lu,睩lu,碌lu,稑lu,賂lu,路lu,輅lu,塶lu,廘lu,摝lu,漉lu,箓lu,粶lu,蔍lu,戮lu,膟lu,觮lu,趢lu,踛lu,辘lu,醁lu,潞lu,穋lu,錄lu,録lu,錴lu,璐lu,簏lu,螰lu,鴼lu,簶lu,蹗lu,轆lu,騄lu,鹭lu,簬lu,簵lu,鯥lu,鵦lu,鵱lu,麓lu,鏴lu,騼lu,籙lu,虂lu,鷺lu,緑lu,攄lu,禄lu,蕗lu,娈luan,孪luan,峦luan,挛luan,栾luan,鸾luan,脔luan,滦luan,銮luan,鵉luan,奱luan,孿luan,巒luan,曫luan,欒luan,灓luan,羉luan,臠luan,圞luan,灤luan,虊luan,鑾luan,癴luan,癵luan,鸞luan,圝luan,卵luan,乱luan,釠luan,亂luan,乿luan,掠lue,稤lue,略lue,畧lue,锊lue,圙lue,鋝lue,鋢lue,剠lue,擽lue,抡lun,掄lun,仑lun,伦lun,囵lun,沦lun,纶lun,轮lun,倫lun,陯lun,圇lun,婨lun,崘lun,崙lun,惀lun,淪lun,菕lun,棆lun,腀lun,碖lun,綸lun,蜦lun,踚lun,輪lun,磮lun,鯩lun,耣lun,稐lun,埨lun,侖lun,溣lun,論lun,论lun,頱luo,囉luo,啰luo,罗luo,猡luo,脶luo,萝luo,逻luo,椤luo,腡luo,锣luo,箩luo,骡luo,镙luo,螺luo,羅luo,覶luo,鏍luo,儸luo,覼luo,騾luo,蘿luo,邏luo,欏luo,鸁luo,鑼luo,饠luo,驘luo,攞luo,籮luo,剆luo,倮luo,砢luo,蓏luo,裸luo,躶luo,瘰luo,蠃luo,臝luo,曪luo,癳luo,茖luo,蛒luo,硦luo,泺luo,峈luo,洛luo,络luo,荦luo,骆luo,洜luo,珞luo,笿luo,絡luo,落luo,摞luo,漯luo,犖luo,雒luo,鮥luo,鵅luo,濼luo,纙luo,挼luo,跞luo,駱luo,瞜lv,瘻lv,驴lv,闾lv,榈lv,馿lv,氀lv,櫚lv,藘lv,曥lv,鷜lv,驢lv,閭lv,偻lv,僂lv,吕lv,呂lv,侣lv,郘lv,侶lv,旅lv,梠lv,焒lv,祣lv,稆lv,铝lv,屡lv,絽lv,缕lv,屢lv,膂lv,膐lv,褛lv,鋁lv,履lv,褸lv,儢lv,縷lv,穭lv,捋lv,穞lv,寠lv,滤lv,濾lv,寽lv,垏lv,律lv,虑lv,率lv,绿lv,嵂lv,氯lv,葎lv,綠lv,慮lv,箻lv,勴lv,繂lv,櫖lv,爈lv,鑢lv,卛lv,亇ma,吗ma,嗎ma,嘛ma,妈ma,媽ma,痲ma,孖ma,麻ma,嫲ma,蔴ma,犘ma,蟆ma,蟇ma,尛ma,马ma,犸ma,玛ma,码ma,蚂ma,馬ma,溤ma,獁ma,遤ma,瑪ma,碼ma,螞ma,鷌ma,鰢ma,傌ma,榪ma,鎷ma,杩ma,祃ma,閁ma,骂ma,睰ma,嘜ma,禡ma,罵ma,駡ma,礣ma,鬕ma,貍mai,埋mai,霾mai,买mai,荬mai,買mai,嘪mai,蕒mai,鷶mai,唛mai,劢mai,佅mai,売mai,麦mai,卖mai,脈mai,麥mai,衇mai,勱mai,賣mai,邁mai,霡mai,霢mai,迈mai,颟man,顢man,姏man,悗man,蛮man,慲man,摱man,馒man,槾man,樠man,瞒man,瞞man,鞔man,饅man,鳗man,鬗man,鬘man,蠻man,矕man,僈man,屘man,満man,睌man,满man,滿man,螨man,襔man,蟎man,鏋man,曼man,谩man,墁man,幔man,慢man,漫man,獌man,缦man,蔄man,蔓man,熳man,澷man,镘man,縵man,蟃man,鏝man,蘰man,鰻man,謾man,牤mang,朚mang,龒mang,邙mang,吂mang,忙mang,汒mang,芒mang,尨mang,杗mang,杧mang,盲mang,厖mang,恾mang,笀mang,茫mang,哤mang,娏mang,浝mang,狵mang,牻mang,硭mang,釯mang,铓mang,痝mang,鋩mang,駹mang,蘉mang,氓mang,甿mang,庬mang,鹲mang,鸏mang,莽mang,茻mang,壾mang,漭mang,蟒mang,蠎mang,莾mang,匁mangmi,猫mao,貓mao,毛mao,矛mao,枆mao,牦mao,茅mao,旄mao,渵mao,軞mao,酕mao,堥mao,锚mao,緢mao,髦mao,髳mao,錨mao,蟊mao,鶜mao,茆mao,罞mao,鉾mao,冇mao,戼mao,峁mao,泖mao,昴mao,铆mao,笷mao,蓩mao,鉚mao,卯mao,秏mao,冃mao,皃mao,芼mao,冐mao,茂mao,冒mao,贸mao,耄mao,袤mao,覒mao,媢mao,帽mao,貿mao,鄚mao,愗mao,暓mao,楙mao,毷mao,瑁mao,貌mao,鄮mao,蝐mao,懋mao,霿mao,獏mao,毣mao,萺mao,瞀mao,唜mas,么me,嚜me,麼me,麽me,庅me,嚒me,孭me,濹me,嚰me,沒mei,没mei,枚mei,玫mei,苺mei,栂mei,眉mei,脄mei,莓mei,梅mei,珻mei,脢mei,郿mei,堳mei,媒mei,嵋mei,湄mei,湈mei,睂mei,葿mei,楣mei,楳mei,煤mei,瑂mei,禖mei,腜mei,塺mei,槑mei,酶mei,镅mei,鹛mei,鋂mei,霉mei,徾mei,鎇mei,矀mei,攗mei,蘪mei,鶥mei,攟mei,黴mei,坆mei,猸mei,羙mei,毎mei,每mei,凂mei,美mei,挴mei,浼mei,媄mei,渼mei,媺mei,镁mei,嬍mei,燘mei,躾mei,鎂mei,黣mei,嵄mei,眊mei,妹mei,抺mei,沬mei,昧mei,祙mei,袂mei,眛mei,媚mei,寐mei,痗mei,跊mei,鬽mei,煝mei,睸mei,魅mei,篃mei,蝞mei,櫗mei,氼mei,们men,們men,椚men,门men,扪men,钔men,門men,閅men,捫men,菛men,璊men,穈men,鍆men,虋men,怋men,玣men,殙men,闷men,焖men,悶men,暪men,燜men,懑men,懣men,掹meng,擝meng,懞meng,虻meng,冡meng,莔meng,萌meng,萠meng,盟meng,甍meng,儚meng,橗meng,瞢meng,蕄meng,蝱meng,鄳meng,鄸meng,幪meng,濛meng,獴meng,曚meng,朦meng,檬meng,氋meng,礞meng,鯍meng,艨meng,矒meng,靀meng,饛meng,顭meng,蒙meng,鼆meng,夣meng,懜meng,溕meng,矇meng,勐meng,猛meng,锰meng,艋meng,蜢meng,錳meng,懵meng,蠓meng,鯭meng,黽meng,瓾meng,夢meng,孟meng,梦meng,霥meng,踎meo,咪mi,瞇mi,眯mi,冞mi,弥mi,祢mi,迷mi,袮mi,猕mi,谜mi,蒾mi,詸mi,謎mi,醚mi,彌mi,糜mi,縻mi,麊mi,麋mi,禰mi,靡mi,獼mi,麛mi,爢mi,瓕mi,蘼mi,镾mi,醾mi,醿mi,鸍mi,釄mi,檷mi,籋mi,罙mi,擟mi,米mi,羋mi,芈mi,侎mi,沵mi,弭mi,洣mi,敉mi,粎mi,脒mi,葞mi,蝆mi,蔝mi,銤mi,瀰mi,孊mi,灖mi,渳mi,哋mi,汨mi,沕mi,宓mi,泌mi,觅mi,峚mi,宻mi,秘mi,密mi,淧mi,覓mi,覔mi,幂mi,谧mi,塓mi,幎mi,覛mi,嘧mi,榓mi,漞mi,熐mi,蔤mi,蜜mi,鼏mi,冪mi,樒mi,幦mi,濗mi,藌mi,謐mi,櫁mi,簚mi,羃mi,鑖mi,蓂mi,滵mi,芇mian,眠mian,婂mian,绵mian,媔mian,棉mian,綿mian,緜mian,蝒mian,嬵mian,檰mian,櫋mian,矈mian,矊mian,蠠mian,矏mian,厸mian,丏mian,汅mian,免mian,沔mian,黾mian,俛mian,勉mian,眄mian,娩mian,偭mian,冕mian,勔mian,喕mian,愐mian,湎mian,缅mian,葂mian,腼mian,緬mian,鮸mian,渑mian,澠mian,靦mian,靣mian,面mian,糆mian,麪mian,麫mian,麺mian,麵mian,喵miao,苗miao,媌miao,瞄miao,鹋miao,嫹miao,鶓miao,鱙miao,描miao,訬miao,仯miao,杪miao,眇miao,秒miao,淼miao,渺miao,缈miao,篎miao,緲miao,藐miao,邈miao,妙miao,庙miao,竗miao,庿miao,廟miao,吀mie,咩mie,哶mie,灭mie,搣mie,滅mie,薎mie,幭mie,懱mie,篾mie,蠛mie,衊mie,鱴mie,蔑mie,民min,垊min,姄min,岷min,旻min,旼min,玟min,苠min,珉min,盿min,冧min,罠min,崏min,捪min,琘min,琝min,暋min,瑉min,痻min,碈min,鈱min,賯min,錉min,鍲min,缗min,湏min,緍min,緡min,皿min,冺min,刡min,闵min,抿min,泯min,勄min,敃min,闽min,悯min,敏min,笢min,笽min,湣min,閔min,愍min,敯min,閩min,慜min,憫min,潣min,簢min,鳘min,鰵min,僶min,名ming,明ming,鸣ming,洺ming,眀ming,茗ming,冥ming,朙ming,眳ming,铭ming,鄍ming,嫇ming,溟ming,猽ming,暝ming,榠ming,銘ming,鳴ming,瞑ming,螟ming,覭ming,佲ming,凕ming,慏ming,酩ming,姳ming,命ming,掵ming,詺ming,谬miu,缪miu,繆miu,謬miu,摸mo,嚤mo,嬤mo,嬷mo,戂mo,攠mo,谟mo,嫫mo,馍mo,摹mo,模mo,膜mo,摩mo,魹mo,橅mo,磨mo,糢mo,謨mo,謩mo,擵mo,饃mo,蘑mo,髍mo,魔mo,劘mo,饝mo,嚩mo,懡mo,麿mo,狢mo,貈mo,貉mo,脉mo,瀎mo,抹mo,末mo,劰mo,圽mo,妺mo,怽mo,歿mo,殁mo,沫mo,茉mo,陌mo,帞mo,昩mo,枺mo,皌mo,眜mo,眿mo,砞mo,秣mo,莈mo,眽mo,粖mo,絈mo,蛨mo,貃mo,嗼mo,塻mo,寞mo,漠mo,蓦mo,貊mo,銆mo,墨mo,嫼mo,暯mo,瘼mo,瞐mo,瞙mo,镆mo,魩mo,黙mo,縸mo,默mo,貘mo,藦mo,蟔mo,鏌mo,爅mo,礳mo,纆mo,耱mo,艒mo,莫mo,驀mo,乮mol,哞mou,呣mou,蛑mou,蝥mou,牟mou,侔mou,劺mou,恈mou,洠mou,眸mou,谋mou,謀mou,鍪mou,鴾mou,麰mou,鞪mou,某mou,呒mu,嘸mu,毪mu,氁mu,母mu,亩mu,牡mu,姆mu,拇mu,牳mu,畆mu,畒mu,胟mu,畝mu,畞mu,砪mu,畮mu,鉧mu,踇mu,坶mu,峔mu,朷mu,木mu,仫mu,目mu,凩mu,沐mu,狇mu,炑mu,牧mu,苜mu,莯mu,蚞mu,钼mu,募mu,雮mu,墓mu,幕mu,慔mu,楘mu,睦mu,鉬mu,慕mu,暮mu,樢mu,霂mu,穆mu,幙mu,旀myeo,椧myeong,秅na,拏na,拿na,挐na,誽na,镎na,鎿na,乸na,詉na,蒘na,訤na,哪na,雫na,郍na,那na,吶na,妠na,纳na,肭na,娜na,钠na,納na,袦na,捺na,笝na,豽na,軜na,鈉na,嗱na,蒳na,靹na,魶na,呐na,內na,篛na,衲na,腉nai,熋nai,摨nai,孻nai,螚nai,搱nai,乃nai,奶nai,艿nai,氖nai,疓nai,妳nai,廼nai,迺nai,倷nai,釢nai,奈nai,柰nai,萘nai,渿nai,鼐nai,褦nai,錼nai,耐nai,囡nan,男nan,抩nan,枏nan,枬nan,侽nan,南nan,柟nan,娚nan,畘nan,莮nan,难nan,喃nan,遖nan,暔nan,楠nan,煵nan,諵nan,難nan,萳nan,嫨nan,赧nan,揇nan,湳nan,腩nan,戁nan,蝻nan,婻nan,囔nang,涳nang,乪nang,嚢nang,囊nang,蠰nang,鬞nang,馕nang,欜nang,饢nang,搑nang,崀nang,擃nang,曩nang,攮nang,灢nang,瀼nang,儾nang,齉nang,孬nao,檂nao,巙nao,呶nao,怓nao,挠nao,峱nao,硇nao,铙nao,猱nao,蛲nao,碙nao,撓nao,獶nao,蟯nao,夒nao,譊nao,鐃nao,巎nao,獿nao,憹nao,蝚nao,嶩nao,垴nao,恼nao,悩nao,脑nao,匘nao,脳nao,堖nao,惱nao,嫐nao,瑙nao,腦nao,碯nao,闹nao,婥nao,淖nao,閙nao,鬧nao,臑nao,呢ne,讷ne,抐ne,眲ne,訥ne,娞nei,馁nei,腇nei,餒nei,鮾nei,鯘nei,浽nei,内nei,氝nei,焾nem,嫩nen,媆nen,嫰nen,竜neng,能neng,莻neus,鈪ngag,銰ngai,啱ngam,妮ni,尼ni,坭ni,怩ni,泥ni,籾ni,倪ni,屔ni,秜ni,郳ni,铌ni,埿ni,婗ni,猊ni,蚭ni,棿ni,跜ni,鈮ni,蜺ni,觬ni,貎ni,霓ni,鲵ni,鯢ni,麑ni,齯ni,臡ni,抳ni,蛪ni,腝ni,淣ni,聻ni,濔ni,伱ni,你ni,拟ni,狔ni,苨ni,柅ni,旎ni,晲ni,孴ni,鉨ni,馜ni,隬ni,擬ni,薿ni,鑈ni,儞ni,伲ni,迡ni,昵ni,胒ni,逆ni,匿ni,痆ni,眤ni,堄ni,惄ni,嫟ni,愵ni,溺ni,睨ni,腻ni,暱ni,縌ni,膩ni,嬺ni,灄ni,孨ni,拈nian,蔫nian,年nian,秊nian,哖nian,秥nian,鮎nian,鲶nian,鵇nian,黏nian,鯰nian,姩nian,鲇nian,跈nian,涊nian,捻nian,淰nian,辇nian,撚nian,撵nian,碾nian,輦nian,簐nian,攆nian,蹨nian,躎nian,辗nian,輾nian,卄nian,廿nian,念nian,埝nian,艌nian,娘niang,嬢niang,醸niang,酿niang,釀niang,茮niao,尦niao,鸟niao,袅niao,鳥niao,嫋niao,裊niao,蔦niao,嬝niao,褭niao,嬲niao,茑niao,尿niao,脲niao,捏nie,揑nie,乜nie,帇nie,圼nie,苶nie,枿nie,陧nie,涅nie,聂nie,臬nie,啮nie,惗nie,菍nie,隉nie,喦nie,敜nie,嗫nie,嵲nie,踂nie,摰nie,槷nie,踗nie,踙nie,镊nie,镍nie,嶭nie,篞nie,臲nie,錜nie,颞nie,蹑nie,嚙nie,聶nie,鎳nie,闑nie,孼nie,孽nie,櫱nie,蘖nie,囁nie,齧nie,巕nie,糱nie,糵nie,蠥nie,囓nie,躡nie,鑷nie,顳nie,諗nie,囐nie,銸nie,鋷nie,讘nie,脌nin,囜nin,您nin,恁nin,拰nin,宁ning,咛ning,狞ning,柠ning,聍ning,寍ning,寕ning,寜ning,寧ning,儜ning,凝ning,嚀ning,嬣ning,獰ning,薴ning,檸ning,聹ning,鑏ning,鬡ning,鸋ning,甯ning,濘ning,鬤ning,拧ning,擰ning,矃ning,橣ning,佞ning,侫ning,泞ning,寗ning,澝ning,妞niu,牛niu,牜niu,忸niu,扭niu,沑niu,狃niu,纽niu,杻niu,炄niu,钮niu,紐niu,莥niu,鈕niu,靵niu,拗niu,莀nong,农nong,侬nong,哝nong,浓nong,脓nong,秾nong,儂nong,辳nong,噥nong,濃nong,蕽nong,禯nong,膿nong,穠nong,襛nong,醲nong,欁nong,癑nong,農nong,繷nong,廾nong,弄nong,挊nong,挵nong,齈nong,羺nou,譨nou,啂nou,槈nou,耨nou,獳nou,檽nou,鎒nou,鐞nou,譳nou,嬬nou,奴nu,驽nu,笯nu,駑nu,砮nu,孥nu,伮nu,努nu,弩nu,胬nu,怒nu,傉nu,搙nu,奻nuan,渜nuan,暖nuan,煗nuan,餪nuan,疟nue,虐nue,瘧nue,硸nue,黁nun,燶nung,挪nuo,梛nuo,傩nuo,搻nuo,儺nuo,橠nuo,袲nuo,诺nuo,喏nuo,掿nuo,逽nuo,搦nuo,锘nuo,榒nuo,稬nuo,諾nuo,蹃nuo,糑nuo,懦nuo,懧nuo,糥nuo,穤nuo,糯nuo,堧nuo,耎nuo,愞nuo,女nv,钕nv,籹nv,釹nv,衂nv,恧nv,朒nv,衄nv,筽o,噢o,哦o,夞oes,乯ol,鞰on,吽ou,讴ou,欧ou,殴ou,瓯ou,鸥ou,塸ou,歐ou,毆ou,熰ou,甌ou,膒ou,鴎ou,櫙ou,藲ou,謳ou,鏂ou,鷗ou,沤ou,蓲ou,敺ou,醧ou,漚ou,齵ou,澫ou,吘ou,呕ou,偶ou,腢ou,嘔ou,耦ou,蕅ou,藕ou,怄ou,慪ou,妑pa,趴pa,舥pa,啪pa,葩pa,帊pa,杷pa,爬pa,耙pa,掱pa,琶pa,筢pa,潖pa,跁pa,帕pa,怕pa,袙pa,拍pai,俳pai,徘pai,排pai,猅pai,牌pai,輫pai,簰pai,犤pai,哌pai,派pai,蒎pai,鎃pai,湃pai,磗pak,眅pan,畨pan,潘pan,攀pan,膰pan,爿pan,柈pan,盘pan,媻pan,幋pan,蒰pan,槃pan,盤pan,磐pan,縏pan,蹒pan,瀊pan,蟠pan,蹣pan,鎜pan,鞶pan,踫pan,宷pan,洀pan,闆pan,坢pan,盻pan,眫pan,冸pan,判pan,沜pan,泮pan,叛pan,牉pan,盼pan,畔pan,袢pan,詊pan,溿pan,頖pan,鋬pan,鵥pan,襻pan,鑻pan,炍pan,乓pang,汸pang,沗pang,肨pang,胮pang,雱pang,滂pang,膖pang,霶pang,磅pang,趽pang,彷pang,夆pang,厐pang,庞pang,逄pang,旁pang,舽pang,篣pang,螃pang,鳑pang,龐pang,鰟pang,蠭pang,髈pang,龎pang,耪pang,覫pang,炐pang,胖pang,抛pao,拋pao,脬pao,刨pao,咆pao,垉pao,庖pao,狍pao,炰pao,爮pao,袍pao,匏pao,軳pao,鞄pao,褜pao,麅pao,颮pao,跑pao,窌pao,炮pao,奅pao,泡pao,皰pao,砲pao,萢pao,麭pao,礟pao,礮pao,犥pao,疱pao,妚pei,呸pei,怌pei,肧pei,胚pei,衃pei,醅pei,抷pei,阫pei,陪pei,陫pei,培pei,毰pei,赔pei,锫pei,裴pei,裵pei,賠pei,錇pei,駍pei,婄pei,俖pei,茷pei,攈pei,伂pei,沛pei,佩pei,帔pei,姵pei,旆pei,浿pei,珮pei,配pei,笩pei,蓜pei,辔pei,馷pei,嶏pei,霈pei,轡pei,斾pei,喷pen,噴pen,濆pen,歕pen,衯pen,瓫pen,盆pen,湓pen,葐pen,呠pen,翸pen,匉peng,怦peng,抨peng,泙peng,恲peng,胓peng,砰peng,烹peng,硑peng,軯peng,閛peng,漰peng,嘭peng,磞peng,弸peng,荓peng,軿peng,輧peng,梈peng,芃peng,朋peng,竼peng,倗peng,莑peng,堋peng,彭peng,棚peng,椖peng,塜peng,塳peng,漨peng,硼peng,稝peng,蓬peng,鹏peng,槰peng,樥peng,憉peng,澎peng,輣peng,篷peng,膨peng,韸peng,髼peng,蟚peng,蟛peng,鬅peng,纄peng,韼peng,鵬peng,鬔peng,鑝peng,淜peng,熢peng,摓peng,捧peng,淎peng,皏peng,剻peng,掽peng,椪peng,碰peng,浌peol,巼phas,闏phdeng,乶phoi,喸phos,榌pi,伓pi,伾pi,批pi,纰pi,邳pi,坯pi,披pi,炋pi,狉pi,狓pi,砒pi,秛pi,秠pi,紕pi,耚pi,豾pi,釽pi,鉟pi,銔pi,劈pi,磇pi,駓pi,噼pi,錃pi,魾pi,憵pi,礔pi,礕pi,霹pi,鲏pi,鮍pi,丕pi,髬pi,铍pi,鈹pi,皮pi,阰pi,芘pi,岯pi,枇pi,毞pi,毗pi,毘pi,疲pi,蚍pi,郫pi,陴pi,啤pi,埤pi,蚽pi,豼pi,焷pi,脾pi,腗pi,罴pi,膍pi,蜱pi,隦pi,壀pi,篺pi,螷pi,貔pi,簲pi,羆pi,鵧pi,朇pi,鼙pi,蠯pi,猈pi,琵pi,匹pi,庀pi,仳pi,圮pi,苉pi,脴pi,痞pi,銢pi,鴄pi,噽pi,癖pi,嚭pi,顖pi,擗pi,辟pi,鈲pi,闢pi,屁pi,淠pi,渒pi,揊pi,媲pi,嫓pi,睤pi,睥pi,潎pi,僻pi,澼pi,嚊pi,甓pi,疈pi,譬pi,鷿pi,囨pian,偏pian,媥pian,犏pian,篇pian,翩pian,骈pian,胼pian,楄pian,楩pian,賆pian,諚pian,骿pian,蹁pian,駢pian,騈pian,徧pian,腁pian,覑pian,谝pian,貵pian,諞pian,片pian,骗pian,魸pian,騗pian,騙pian,剽piao,彯piao,漂piao,缥piao,飘piao,磦piao,旚piao,縹piao,翲piao,螵piao,飄piao,魒piao,薸piao,闝piao,嫖piao,瓢piao,莩piao,殍piao,瞟piao,醥piao,皫piao,顠piao,飃piao,票piao,勡piao,嘌piao,慓piao,覕pie,氕pie,撆pie,暼pie,瞥pie,撇pie,丿pie,苤pie,鐅pie,嫳pie,拚pin,姘pin,拼pin,礗pin,穦pin,馪pin,驞pin,贫pin,貧pin,嫔pin,频pin,頻pin,嬪pin,薲pin,嚬pin,矉pin,颦pin,顰pin,蘋pin,玭pin,品pin,榀pin,朩pin,牝pin,汖pin,聘pin,娉ping,乒ping,甹ping,俜ping,涄ping,砯ping,艵ping,竮ping,頩ping,冖ping,平ping,评ping,凭ping,坪ping,岼ping,苹ping,郱ping,屏ping,帡ping,枰ping,洴ping,玶ping,娦ping,瓶ping,屛ping,帲ping,萍ping,蚲ping,塀ping,幈ping,焩ping,甁ping,缾ping,聠ping,蓱ping,蛢ping,評ping,鲆ping,凴ping,慿ping,憑ping,鮃ping,簈ping,呯ping,箳ping,鏺po,钋po,坡po,岥po,泼po,釙po,颇po,溌po,酦po,潑po,醱po,頗po,攴po,巿po,婆po,嘙po,鄱po,皤po,謈po,櫇po,叵po,尀po,钷po,笸po,鉕po,駊po,屰po,廹po,岶po,迫po,敀po,昢po,洦po,珀po,烞po,破po,砶po,粕po,奤po,蒪po,魄po,皛po,頮pou,剖pou,颒pou,抙pou,捊pou,抔pou,掊pou,裒pou,咅pou,哣pou,犃pou,兺ppun,哛ppun,巬pu,巭pu,扑pu,炇pu,痡pu,駇pu,噗pu,撲pu,鋪pu,潽pu,襆pu,脯pu,蜅pu,仆pu,圤pu,匍pu,莆pu,菩pu,菐pu,葡pu,蒱pu,蒲pu,僕pu,酺pu,墣pu,璞pu,瞨pu,穙pu,镤pu,贌pu,纀pu,鏷pu,襥pu,濮pu,朴pu,圃pu,埔pu,浦pu,烳pu,普pu,圑pu,溥pu,暜pu,谱pu,樸pu,氆pu,諩pu,檏pu,镨pu,譜pu,蹼pu,鐠pu,铺pu,舖pu,舗pu,曝pu,七qi,沏qi,妻qi,恓qi,柒qi,倛qi,凄qi,栖qi,桤qi,缼qi,郪qi,娸qi,戚qi,捿qi,桼qi,淒qi,萋qi,朞qi,期qi,棲qi,欺qi,紪qi,褄qi,僛qi,嘁qi,慽qi,榿qi,漆qi,緀qi,磎qi,諆qi,諿qi,霋qi,蹊qi,魌qi,鏚qi,鶈qi,碕qi,螇qi,傶qi,迉qi,軙qi,荎qi,饑qi,亓qi,祁qi,齐qi,圻qi,岐qi,岓qi,忯qi,芪qi,亝qi,其qi,奇qi,斉qi,歧qi,祇qi,祈qi,肵qi,疧qi,竒qi,剘qi,斊qi,旂qi,脐qi,蚑qi,蚔qi,蚚qi,颀qi,埼qi,崎qi,掑qi,淇qi,渏qi,猉qi,畦qi,萁qi,跂qi,軝qi,釮qi,骐qi,骑qi,嵜qi,棊qi,棋qi,琦qi,琪qi,祺qi,蛴qi,愭qi,碁qi,鬿qi,旗qi,粸qi,綥qi,綦qi,綨qi,緕qi,蜝qi,蜞qi,齊qi,禥qi,蕲qi,螧qi,鲯qi,濝qi,藄qi,檱qi,櫀qi,簱qi,臍qi,騎qi,騏qi,鳍qi,蘄qi,鵸qi,鶀qi,麒qi,籏qi,纃qi,艩qi,蠐qi,鬐qi,騹qi,魕qi,鰭qi,玂qi,麡qi,荠qi,薺qi,扺qi,耆qi,鯕qi,袳qi,乞qi,邔qi,企qi,屺qi,岂qi,芑qi,启qi,呇qi,杞qi,玘qi,盀qi,唘qi,豈qi,起qi,啓qi,啔qi,啟qi,绮qi,棨qi,綮qi,綺qi,諬qi,簯qi,闙qi,梩qi,婍qi,鼜qi,悽qi,槭qi,气qi,讫qi,気qi,汔qi,迄qi,弃qi,汽qi,芞qi,呮qi,泣qi,炁qi,盵qi,咠qi,契qi,砌qi,栔qi,氣qi,訖qi,唭qi,夡qi,棄qi,湆qi,湇qi,葺qi,碛qi,摖qi,暣qi,甈qi,碶qi,噐qi,憇qi,器qi,憩qi,磜qi,磧qi,磩qi,罊qi,趞qi,洓qi,慼qi,欫qi,掐qia,葜qia,愘qia,搳qia,拤qia,跒qia,酠qia,鞐qia,圶qia,冾qia,恰qia,洽qia,殎qia,硈qia,髂qia,磍qia,帢qia,千qian,仟qian,阡qian,圱qian,圲qian,奷qian,扦qian,汘qian,芊qian,迁qian,佥qian,岍qian,杄qian,汧qian,茾qian,竏qian,臤qian,钎qian,拪qian,牵qian,粁qian,悭qian,蚈qian,铅qian,牽qian,釺qian,谦qian,鈆qian,僉qian,愆qian,签qian,鉛qian,骞qian,鹐qian,慳qian,搴qian,撁qian,箞qian,諐qian,遷qian,褰qian,謙qian,顅qian,檶qian,攐qian,攑qian,櫏qian,簽qian,鵮qian,攓qian,騫qian,鬜qian,鬝qian,籤qian,韆qian,鋟qian,扡qian,杴qian,孅qian,藖qian,谸qian,鏲qian,朁qian,岒qian,忴qian,扲qian,拑qian,前qian,荨qian,钤qian,歬qian,虔qian,钱qian,钳qian,乾qian,掮qian,軡qian,媊qian,鈐qian,鉗qian,榩qian,箝qian,潜qian,羬qian,橬qian,錢qian,黔qian,鎆qian,騝qian,濳qian,騚qian,灊qian,籖qian,鰬qian,潛qian,蚙qian,煔qian,燂qian,葴qian,鍼qian,墘qian,浅qian,肷qian,淺qian,嵰qian,遣qian,槏qian,膁qian,蜸qian,谴qian,缱qian,譴qian,鑓qian,繾qian,欠qian,刋qian,伣qian,芡qian,俔qian,茜qian,倩qian,悓qian,堑qian,嵌qian,棈qian,椠qian,嗛qian,皘qian,蒨qian,塹qian,歉qian,綪qian,蔳qian,儙qian,槧qian,篏qian,輤qian,篟qian,壍qian,嬱qian,縴qian,廞qian,鸧qiang,鶬qiang,羌qiang,戕qiang,戗qiang,斨qiang,枪qiang,玱qiang,猐qiang,琷qiang,跄qiang,嗴qiang,獇qiang,腔qiang,溬qiang,蜣qiang,锖qiang,嶈qiang,戧qiang,槍qiang,牄qiang,瑲qiang,锵qiang,篬qiang,錆qiang,蹌qiang,镪qiang,蹡qiang,鏘qiang,鏹qiang,啌qiang,鎗qiang,強qiang,强qiang,墙qiang,嫱qiang,蔷qiang,樯qiang,漒qiang,墻qiang,嬙qiang,廧qiang,薔qiang,檣qiang,牆qiang,謒qiang,艢qiang,蘠qiang,抢qiang,羟qiang,搶qiang,羥qiang,墏qiang,摤qiang,繈qiang,襁qiang,繦qiang,嗆qiang,炝qiang,唴qiang,羻qiang,呛qiang,熗qiang,悄qiao,硗qiao,郻qiao,跷qiao,鄡qiao,鄥qiao,劁qiao,敲qiao,踍qiao,锹qiao,碻qiao,頝qiao,墽qiao,幧qiao,橇qiao,燆qiao,缲qiao,鍫qiao,鍬qiao,繰qiao,趬qiao,鐰qiao,鞽qiao,塙qiao,毃qiao,鏒qiao,橾qiao,喿qiao,蹺qiao,峤qiao,嶠qiao,乔qiao,侨qiao,荍qiao,荞qiao,桥qiao,硚qiao,菬qiao,喬qiao,睄qiao,僑qiao,槗qiao,谯qiao,嘺qiao,憔qiao,蕎qiao,鞒qiao,樵qiao,橋qiao,犞qiao,癄qiao,瞧qiao,礄qiao,藮qiao,譙qiao,鐈qiao,墧qiao,顦qiao,磽qiao,巧qiao,愀qiao,髜qiao,偢qiao,墝qiao,俏qiao,诮qiao,陗qiao,峭qiao,帩qiao,窍qiao,翘qiao,誚qiao,髚qiao,僺qiao,撬qiao,鞘qiao,韒qiao,竅qiao,翹qiao,鞩qiao,躈qiao,踃qiao,切qie,苆qie,癿qie,茄qie,聺qie,且qie,詧qie,慊qie,厒qie,怯qie,匧qie,窃qie,倿qie,悏qie,挈qie,惬qie,笡qie,愜qie,朅qie,箧qie,緁qie,锲qie,篋qie,踥qie,穕qie,藒qie,鍥qie,鯜qie,鐑qie,竊qie,籡qie,帹qie,郄qie,郤qie,稧qie,妾qie,亲qin,侵qin,钦qin,衾qin,菳qin,媇qin,嵚qin,綅qin,誛qin,嶔qin,親qin,顉qin,駸qin,鮼qin,寴qin,欽qin,骎qin,鈂qin,庈qin,芩qin,芹qin,埁qin,珡qin,矝qin,秦qin,耹qin,菦qin,捦qin,琴qin,琹qin,禽qin,鈙qin,雂qin,勤qin,嗪qin,嫀qin,靲qin,噙qin,擒qin,鳹qin,懄qin,檎qin,澿qin,瘽qin,螓qin,懃qin,蠄qin,鬵qin,溱qin,坅qin,昑qin,笉qin,梫qin,赾qin,寑qin,锓qin,寝qin,寢qin,螼qin,儭qin,櫬qin,吢qin,吣qin,抋qin,沁qin,唚qin,菣qin,搇qin,撳qin,瀙qin,藽qin,鈊qin,揿qin,鶄qing,青qing,氢qing,轻qing,倾qing,卿qing,郬qing,圊qing,埥qing,氫qing,淸qing,清qing,軽qing,傾qing,廎qing,蜻qing,輕qing,鲭qing,鯖qing,鑋qing,庼qing,漀qing,靘qing,夝qing,甠qing,勍qing,情qing,硘qing,晴qing,棾qing,氰qing,暒qing,樈qing,擎qing,檠qing,黥qing,殑qing,苘qing,顷qing,请qing,頃qing,請qing,檾qing,謦qing,庆qing,摐chuang,牀chuang,磢chuang,刱chuang,吹chui,糚zhuang,庒zhuang,漴zhuang,丬zhuang,壮zhuang,凊qing,掅qing,碃qing,箐qing,慶qing,磬qing,罄qing,櫦qing,濪qing,藭qiong,跫qiong,銎qiong,卭qiong,邛qiong,穷qiong,穹qiong,茕qiong,桏qiong,笻qiong,筇qiong,赹qiong,惸qiong,焪qiong,焭qiong,琼qiong,蛩qiong,蛬qiong,煢qiong,熍qiong,睘qiong,窮qiong,儝qiong,憌qiong,橩qiong,瓊qiong,竆qiong,嬛qiong,琁qiong,藑qiong,湫qiu,丘qiu,丠qiu,邱qiu,坵qiu,恘qiu,秋qiu,秌qiu,寈qiu,蚯qiu,媝qiu,楸qiu,鹙qiu,篍qiu,緧qiu,蝵qiu,穐qiu,趥qiu,鳅qiu,蟗qiu,鞦qiu,鞧qiu,蘒qiu,鰌qiu,鰍qiu,鱃qiu,龝qiu,逎qiu,櫹qiu,鶖qiu,叴qiu,囚qiu,扏qiu,犰qiu,玌qiu,肍qiu,求qiu,虬qiu,泅qiu,虯qiu,俅qiu,觓qiu,訅qiu,酋qiu,唒qiu,浗qiu,紌qiu,莍qiu,逑qiu,釚qiu,梂qiu,殏qiu,毬qiu,球qiu,釻qiu,崷qiu,巯qiu,湭qiu,皳qiu,盚qiu,遒qiu,煪qiu,絿qiu,蛷qiu,裘qiu,巰qiu,觩qiu,賕qiu,璆qiu,銶qiu,醔qiu,鮂qiu,鼽qiu,鯄qiu,鵭qiu,蠤qiu,鰽qiu,厹qiu,赇qiu,搝qiu,糗qiu,趍qu,匚qu,区qu,伹qu,匤qu,岖qu,诎qu,阹qu,驱qu,屈qu,岨qu,岴qu,抾qu,浀qu,祛qu,胠qu,袪qu,區qu,蛆qu,躯qu,筁qu,粬qu,蛐qu,詘qu,趋qu,嶇qu,駆qu,憈qu,駈qu,麹qu,髷qu,趨qu,麯qu,軀qu,麴qu,黢qu,驅qu,鰸qu,鱋qu,紶qu,厺qu,佉qu,跼qu,瞿qu,佢qu,劬qu,斪qu,朐qu,胊qu,菃qu,衐qu,鸲qu,淭qu,渠qu,絇qu,葋qu,蕖qu,璖qu,磲qu,璩qu,鼩qu,蘧qu,灈qu,戵qu,欋qu,氍qu,臞qu,癯qu,蠷qu,衢qu,躣qu,蠼qu,鑺qu,臒qu,蟝qu,曲qu,取qu,娶qu,詓qu,竬qu,龋qu,齲qu,去qu,刞qu,耝qu,阒qu,觑qu,趣qu,閴qu,麮qu,闃qu,覰qu,覷qu,鼁qu,覻qu,迲qu,峑quan,恮quan,悛quan,圈quan,駩quan,騡quan,鐉quan,腃quan,全quan,权quan,佺quan,诠quan,姾quan,泉quan,洤quan,荃quan,拳quan,辁quan,婘quan,痊quan,硂quan,铨quan,湶quan,犈quan,筌quan,絟quan,葲quan,搼quan,楾quan,瑔quan,觠quan,詮quan,跧quan,輇quan,蜷quan,銓quan,権quan,縓quan,醛quan,闎quan,鳈quan,鬈quan,巏quan,鰁quan,權quan,齤quan,颧quan,顴quan,灥quan,譔quan,牷quan,孉quan,犬quan,甽quan,畎quan,烇quan,绻quan,綣quan,虇quan,劝quan,券quan,巻quan,牶quan,椦quan,勧quan,勸quan,炔que,缺que,蒛que,瘸que,却que,卻que,崅que,悫que,雀que,确que,阕que,皵que,碏que,阙que,鹊que,愨que,榷que,慤que,確que,燩que,闋que,闕que,鵲que,礭que,殻que,埆que,踆qun,夋qun,囷qun,峮qun,逡qun,帬qun,裙qun,羣qun,群qun,裠qun,亽ra,罖ra,囕ram,呥ran,肰ran,衻ran,袇ran,蚦ran,袡ran,蚺ran,然ran,髥ran,嘫ran,髯ran,燃ran,繎ran,冄ran,冉ran,姌ran,苒ran,染ran,珃ran,媣ran,蒅ran,孃rang,穣rang,獽rang,禳rang,瓤rang,穰rang,躟rang,壌rang,嚷rang,壤rang,攘rang,爙rang,让rang,懹rang,譲rang,讓rang,荛rao,饶rao,桡rao,橈rao,襓rao,饒rao,犪rao,嬈rao,娆rao,扰rao,隢rao,擾rao,遶rao,绕rao,繞rao,惹re,热re,熱re,渃re,綛ren,人ren,仁ren,壬ren,忈ren,朲ren,忎ren,秂ren,芢ren,鈓ren,魜ren,銋ren,鵀ren,姙ren,忍ren,荏ren,栠ren,栣ren,荵ren,秹ren,稔ren,躵ren,刃ren,刄ren,认ren,仞ren,仭ren,讱ren,任ren,屻ren,扨ren,纫ren,妊ren,牣ren,纴ren,肕ren,轫ren,韧ren,饪ren,紉ren,衽ren,紝ren,訒ren,軔ren,梕ren,袵ren,絍ren,靭ren,靱ren,韌ren,飪ren,認ren,餁ren,扔reng,仍reng,辸reng,礽reng,芿reng,日ri,驲ri,囸ri,釰ri,鈤ri,馹ri,戎rong,肜rong,栄rong,狨rong,绒rong,茙rong,茸rong,荣rong,容rong,峵rong,毧rong,烿rong,嵘rong,絨rong,羢rong,嫆rong,搈rong,摉rong,榵rong,溶rong,蓉rong,榕rong,榮rong,熔rong,瑢rong,穁rong,蝾rong,褣rong,镕rong,氄rong,縙rong,融rong,螎rong,駥rong,嬫rong,嶸rong,爃rong,鎔rong,瀜rong,蠑rong,媶rong,曧rong,冗rong,宂rong,傇rong,穃rong,禸rou,柔rou,粈rou,媃rou,揉rou,渘rou,葇rou,瑈rou,腬rou,糅rou,蹂rou,輮rou,鍒rou,鞣rou,瓇rou,騥rou,鰇rou,鶔rou,楺rou,煣rou,韖rou,肉rou,宍rou,嶿ru,如ru,侞ru,帤ru,茹ru,桇ru,袽ru,铷ru,渪ru,筎ru,銣ru,蕠ru,儒ru,鴑ru,嚅ru,孺ru,濡ru,薷ru,鴽ru,曘ru,燸ru,襦ru,蠕ru,颥ru,醹ru,顬ru,偄ru,鱬ru,汝ru,肗ru,乳ru,辱ru,鄏ru,擩ru,入ru,扖ru,込ru,杁ru,洳ru,嗕ru,媷ru,溽ru,缛ru,蓐ru,鳰ru,褥ru,縟ru,壖ruan,阮ruan,朊ruan,软ruan,軟ruan,碝ruan,緛ruan,蝡ruan,瓀ruan,礝ruan,瑌ruan,撋rui,桵rui,甤rui,緌rui,蕤rui,蕊rui,橤rui,繠rui,蘂rui,蘃rui,惢rui,芮rui,枘rui,蚋rui,锐rui,瑞rui,睿rui,銳rui,叡rui,壡rui,润run,閏run,閠run,潤run,橍run,闰run,叒ruo,若ruo,偌ruo,弱ruo,鄀ruo,焫ruo,楉ruo,嵶ruo,蒻ruo,箬ruo,爇ruo,鰙ruo,鰯ruo,鶸ruo,仨sa,桬sa,撒sa,洒sa,訯sa,靸sa,灑sa,卅sa,飒sa,脎sa,萨sa,隡sa,馺sa,颯sa,薩sa,櫒sa,栍saeng,毢sai,塞sai,毸sai,腮sai,嘥sai,噻sai,鳃sai,顋sai,鰓sai,嗮sai,赛sai,僿sai,賽sai,簺sai,虄sal,厁san,壭san,三san,弎san,叁san,毵san,毶san,毿san,犙san,鬖san,糂san,糝san,糣san,彡san,氵san,伞san,傘san,馓san,橵san,糤san,繖san,饊san,散san,俕san,閐san,潵san,桒sang,桑sang,槡sang,嗓sang,搡sang,褬sang,颡sang,鎟sang,顙sang,磉sang,丧sang,喪sang,掻sao,搔sao,溞sao,骚sao,缫sao,繅sao,鳋sao,颾sao,騒sao,騷sao,鰠sao,鱢sao,扫sao,掃sao,嫂sao,臊sao,埽sao,瘙sao,氉sao,矂sao,髞sao,色se,涩se,啬se,渋se,铯se,歮se,嗇se,瑟se,歰se,銫se,澁se,懎se,擌se,濇se,濏se,瘷se,穑se,澀se,璱se,瀒se,穡se,繬se,穯se,轖se,鏼se,譅se,飋se,愬se,鎍se,溹se,栜se,裇sed,聓sei,森sen,僧seng,鬙seng,閪seo,縇seon,杀sha,沙sha,纱sha,乷sha,刹sha,砂sha,唦sha,挱sha,殺sha,猀sha,紗sha,莎sha,铩sha,痧sha,硰sha,蔱sha,裟sha,樧sha,魦sha,鲨sha,閷sha,鯊sha,鯋sha,繺sha,賖sha,啥sha,傻sha,儍sha,繌sha,倽sha,唼sha,萐sha,歃sha,煞sha,翜sha,翣sha,閯sha,霎sha,厦sha,廈sha,筛shai,篩shai,簁shai,簛shai,酾shai,釃shai,摋shai,晒shai,曬shai,纔shan,穇shan,凵shan,襂shan,山shan,邖shan,圸shan,删shan,杉shan,杣shan,芟shan,姍shan,姗shan,衫shan,钐shan,埏shan,狦shan,珊shan,舢shan,痁shan,軕shan,笘shan,釤shan,閊shan,跚shan,剼shan,搧shan,嘇shan,幓shan,煽shan,潸shan,澘shan,曑shan,檆shan,膻shan,鯅shan,羴shan,羶shan,炶shan,苫shan,柵shan,栅shan,刪shan,闪shan,陕shan,陝shan,閃shan,晱shan,睒shan,熌shan,覢shan,曏shan,笧shan,讪shan,汕shan,疝shan,扇shan,訕shan,赸shan,傓shan,善shan,椫shan,銏shan,骟shan,僐shan,鄯shan,缮shan,嬗shan,擅shan,敾shan,樿shan,膳shan,磰shan,謆shan,赡shan,繕shan,蟮shan,譱shan,贍shan,鐥shan,饍shan,騸shan,鳝shan,灗shan,鱔shan,鱣shan,墡shan,裳shang,塲shang,伤shang,殇shang,商shang,觞shang,傷shang,墒shang,慯shang,滳shang,蔏shang,殤shang,熵shang,螪shang,觴shang,謪shang,鬺shang,坰shang,垧shang,晌shang,赏shang,賞shang,鑜shang,丄shang,上shang,仩shang,尚shang,恦shang,绱shang,緔shang,弰shao,捎shao,梢shao,烧shao,焼shao,稍shao,筲shao,艄shao,蛸shao,輎shao,蕱shao,燒shao,髾shao,鮹shao,娋shao,旓shao,杓shao,勺shao,芍shao,柖shao,玿shao,韶shao,少shao,劭shao,卲shao,邵shao,绍shao,哨shao,袑shao,紹shao,潲shao,奢she,猞she,赊she,輋she,賒she,檨she,畲she,舌she,佘she,蛇she,蛥she,磼she,折she,舍she,捨she,厍she,设she,社she,舎she,厙she,射she,涉she,涻she,設she,赦she,弽she,慑she,摄she,滠she,慴she,摵she,蔎she,韘she,騇she,懾she,攝she,麝she,欇she,挕she,蠂she,堔shen,叄shen,糁shen,申shen,屾shen,扟shen,伸shen,身shen,侁shen,呻shen,妽shen,籶shen,绅shen,诜shen,柛shen,氠shen,珅shen,穼shen,籸shen,娠shen,峷shen,甡shen,眒shen,砷shen,深shen,紳shen,兟shen,椮shen,葠shen,裑shen,訷shen,罧shen,蓡shen,詵shen,甧shen,蔘shen,燊shen,薓shen,駪shen,鲹shen,鯓shen,鵢shen,鯵shen,鰺shen,莘shen,叅shen,神shen,榊shen,鰰shen,棯shen,槮shen,邥shen,弞shen,沈shen,审shen,矤shen,矧shen,谂shen,谉shen,婶shen,渖shen,訠shen,審shen,頣shen,魫shen,曋shen,瞫shen,嬸shen,覾shen,讅shen,哂shen,肾shen,侺shen,昚shen,甚shen,胂shen,眘shen,渗shen,祳shen,脤shen,腎shen,愼shen,慎shen,瘆shen,蜃shen,滲shen,鋠shen,瘮shen,葚shen,升sheng,生sheng,阩sheng,呏sheng,声sheng,斘sheng,昇sheng,枡sheng,泩sheng,苼sheng,殅sheng,牲sheng,珄sheng,竔sheng,陞sheng,曻sheng,陹sheng,笙sheng,湦sheng,焺sheng,甥sheng,鉎sheng,聲sheng,鍟sheng,鵿sheng,鼪sheng,绳sheng,縄sheng,憴sheng,繩sheng,譝sheng,省sheng,眚sheng,偗sheng,渻sheng,胜sheng,圣sheng,晟sheng,晠sheng,剰sheng,盛sheng,剩sheng,勝sheng,貹sheng,嵊sheng,聖sheng,墭sheng,榺sheng,蕂sheng,橳sheng,賸sheng,鳾shi,觢shi,尸shi,师shi,呞shi,虱shi,诗shi,邿shi,鸤shi,屍shi,施shi,浉shi,狮shi,師shi,絁shi,湤shi,湿shi,葹shi,溮shi,溼shi,獅shi,蒒shi,蓍shi,詩shi,瑡shi,鳲shi,蝨shi,鲺shi,濕shi,鍦shi,鯴shi,鰤shi,鶳shi,襹shi,籭shi,魳shi,失shi,褷shi,匙shi,十shi,什shi,石shi,辻shi,佦shi,时shi,竍shi,识shi,实shi,実shi,旹shi,飠shi,峕shi,拾shi,炻shi,祏shi,蚀shi,食shi,埘shi,寔shi,湜shi,遈shi,塒shi,嵵shi,溡shi,鉐shi,實shi,榯shi,蝕shi,鉽shi,篒shi,鲥shi,鮖shi,鼫shi,識shi,鼭shi,鰣shi,時shi,史shi,矢shi,乨shi,豕shi,使shi,始shi,驶shi,兘shi,屎shi,榁shi,鉂shi,駛shi,笶shi,饣shi,莳shi,蒔shi,士shi,氏shi,礻shi,世shi,丗shi,仕shi,市shi,示shi,卋shi,式shi,事shi,侍shi,势shi,呩shi,视shi,试shi,饰shi,冟shi,室shi,恀shi,恃shi,拭shi,枾shi,柿shi,眂shi,贳shi,适shi,栻shi,烒shi,眎shi,眡shi,舐shi,轼shi,逝shi,铈shi,視shi,釈shi,弑shi,揓shi,谥shi,貰shi,释shi,勢shi,嗜shi,弒shi,煶shi,睗shi,筮shi,試shi,軾shi,鈰shi,鉃shi,飾shi,舓shi,誓shi,適shi,奭shi,噬shi,嬕shi,澨shi,諡shi,遾shi,螫shi,簭shi,籂shi,襫shi,釋shi,鰘shi,佀shi,鎩shi,是shi,収shou,收shou,手shou,守shou,垨shou,首shou,艏shou,醻shou,寿shou,受shou,狩shou,兽shou,售shou,授shou,绶shou,痩shou,膄shou,壽shou,瘦shou,綬shou,夀shou,獣shou,獸shou,鏉shou,书shu,殳shu,抒shu,纾shu,叔shu,枢shu,姝shu,柕shu,倏shu,倐shu,書shu,殊shu,紓shu,掓shu,梳shu,淑shu,焂shu,菽shu,軗shu,鄃shu,疎shu,疏shu,舒shu,摅shu,毹shu,毺shu,綀shu,输shu,踈shu,樞shu,蔬shu,輸shu,鮛shu,瀭shu,鵨shu,陎shu,尗shu,秫shu,婌shu,孰shu,赎shu,塾shu,熟shu,璹shu,贖shu,暑shu,黍shu,署shu,鼠shu,鼡shu,蜀shu,潻shu,薯shu,曙shu,癙shu,糬shu,籔shu,蠴shu,鱰shu,属shu,屬shu,鱪shu,丨shu,术shu,戍shu,束shu,沭shu,述shu,怷shu,树shu,竖shu,荗shu,恕shu,庶shu,庻shu,絉shu,蒁shu,術shu,裋shu,数shu,竪shu,腧shu,墅shu,漱shu,潄shu,數shu,豎shu,樹shu,濖shu,錰shu,鏣shu,鶐shu,虪shu,捒shu,忄shu,澍shu,刷shua,唰shua,耍shua,誜shua,缞shuai,縗shuai,衰shuai,摔shuai,甩shuai,帅shuai,帥shuai,蟀shuai,闩shuan,拴shuan,閂shuan,栓shuan,涮shuan,腨shuan,双shuang,脽shui,誰shui,水shui,氺shui,閖shui,帨shui,涗shui,涚shui,稅shui,税shui,裞shui,説shui,睡shui,吮shun,顺shun,舜shun,順shun,蕣shun,橓shun,瞚shun,瞤shun,瞬shun,鬊shun,说shuo,說shuo,妁shuo,烁shuo,朔shuo,铄shuo,欶shuo,硕shuo,矟shuo,搠shuo,蒴shuo,槊shuo,碩shuo,爍shuo,鑠shuo,洬shuo,燿shuo,鎙shuo,愢si,厶si,丝si,司si,糹si,私si,咝si,泀si,俬si,思si,恖si,鸶si,媤si,斯si,絲si,缌si,蛳si,楒si,禗si,鉰si,飔si,凘si,厮si,榹si,禠si,罳si,锶si,嘶si,噝si,廝si,撕si,澌si,緦si,蕬si,螄si,鍶si,蟖si,蟴si,颸si,騦si,鐁si,鷥si,鼶si,鷉si,銯si,死si,灬si,巳si,亖si,四si,罒si,寺si,汜si,伺si,似si,姒si,泤si,祀si,価si,孠si,泗si,饲si,驷si,俟si,娰si,柶si,牭si,洍si,涘si,肂si,飤si,笥si,耜si,釲si,竢si,覗si,嗣si,肆si,貄si,鈻si,飼si,禩si,駟si,儩si,瀃si,兕si,蕼si,螦so,乺sol,忪song,松song,枀song,枩song,娀song,柗song,倯song,凇song,梥song,崧song,庺song,淞song,菘song,嵩song,硹song,蜙song,憽song,檧song,濍song,怂song,悚song,耸song,竦song,愯song,嵷song,慫song,聳song,駷song,鬆song,讼song,宋song,诵song,送song,颂song,訟song,頌song,誦song,餸song,鎹song,凁sou,捜sou,鄋sou,嗖sou,廀sou,廋sou,搜sou,溲sou,獀sou,蒐sou,蓃sou,馊sou,飕sou,摗sou,锼sou,螋sou,醙sou,鎪sou,餿sou,颼sou,騪sou,叜sou,艘sou,叟sou,傁sou,嗾sou,瞍sou,擞sou,薮sou,擻sou,藪sou,櫢sou,嗽sou,瘶sou,苏su,甦su,酥su,稣su,窣su,穌su,鯂su,蘇su,蘓su,櫯su,囌su,卹su,俗su,玊su,诉su,泝su,肃su,涑su,珟su,素su,速su,殐su,粛su,骕su,傃su,粟su,訴su,谡su,嗉su,塐su,塑su,嫊su,愫su,溯su,溸su,肅su,遡su,鹔su,僳su,榡su,蔌su,觫su,趚su,遬su,憟su,樎su,樕su,潥su,鋉su,餗su,縤su,璛su,簌su,藗su,謖su,蹜su,驌su,鱐su,鷫su,埣su,夙su,膆su,狻suan,痠suan,酸suan,匴suan,祘suan,笇suan,筭suan,蒜suan,算suan,夊sui,芕sui,虽sui,倠sui,哸sui,荽sui,荾sui,眭sui,滖sui,睢sui,濉sui,鞖sui,雖sui,簑sui,绥sui,隋sui,随sui,遀sui,綏sui,隨sui,瓍sui,遂sui,瀡sui,髄sui,髓sui,亗sui,岁sui,砕sui,谇sui,歲sui,歳sui,煫sui,碎sui,隧sui,嬘sui,澻sui,穂sui,誶sui,賥sui,檖sui,燧sui,璲sui,禭sui,穗sui,穟sui,襚sui,邃sui,旞sui,繐sui,繸sui,鐆sui,鐩sui,祟sui,譢sui,孙sun,狲sun,荪sun,孫sun,飧sun,搎sun,猻sun,蓀sun,槂sun,蕵sun,薞sun,畃sun,损sun,笋sun,隼sun,筍sun,損sun,榫sun,箰sun,鎨sun,巺sun,潠sun,嗍suo,唆suo,娑suo,莏suo,傞suo,桫suo,梭suo,睃suo,嗦suo,羧suo,蓑suo,摍suo,缩suo,趖suo,簔suo,縮suo,髿suo,鮻suo,挲suo,所suo,唢suo,索suo,琐suo,琑suo,锁suo,嗩suo,暛suo,溑suo,瑣suo,鎖suo,鎻suo,鏁suo,嵗suo,蜶suo,逤suo,侤ta,澾ta,她ta,他ta,它ta,祂ta,咜ta,趿ta,铊ta,塌ta,榙ta,溻ta,鉈ta,褟ta,遢ta,蹹ta,塔ta,墖ta,獭ta,鳎ta,獺ta,鰨ta,沓ta,挞ta,狧ta,闼ta,崉ta,涾ta,遝ta,阘ta,榻ta,毾ta,禢ta,撻ta,誻ta,踏ta,嚃ta,錔ta,嚺ta,濌ta,蹋ta,鞜ta,闒ta,鞳ta,闥ta,譶ta,躢ta,傝ta,襨tae,漦tai,咍tai,囼tai,孡tai,胎tai,駘tai,檯tai,斄tai,台tai,邰tai,坮tai,苔tai,炱tai,炲tai,菭tai,跆tai,鲐tai,箈tai,臺tai,颱tai,儓tai,鮐tai,嬯tai,擡tai,薹tai,籉tai,抬tai,呔tai,忕tai,太tai,冭tai,夳tai,忲tai,汰tai,态tai,肽tai,钛tai,泰tai,粏tai,舦tai,酞tai,鈦tai,溙tai,燤tai,態tai,坍tan,贪tan,怹tan,啴tan,痑tan,舑tan,貪tan,摊tan,滩tan,嘽tan,潬tan,瘫tan,擹tan,攤tan,灘tan,癱tan,镡tan,蕁tan,坛tan,昙tan,谈tan,郯tan,婒tan,覃tan,榃tan,痰tan,锬tan,谭tan,墵tan,憛tan,潭tan,談tan,壇tan,曇tan,錟tan,檀tan,顃tan,罈tan,藫tan,壜tan,譚tan,貚tan,醰tan,譠tan,罎tan,鷤tan,埮tan,鐔tan,墰tan,忐tan,坦tan,袒tan,钽tan,菼tan,毯tan,鉭tan,嗿tan,憳tan,憻tan,醓tan,璮tan,襢tan,緂tan,暺tan,叹tan,炭tan,探tan,湠tan,僋tan,嘆tan,碳tan,舕tan,歎tan,汤tang,铴tang,湯tang,嘡tang,劏tang,羰tang,蝪tang,薚tang,蹚tang,鐋tang,鞺tang,闛tang,耥tang,鼞tang,镗tang,鏜tang,饧tang,坣tang,唐tang,堂tang,傏tang,啺tang,棠tang,鄌tang,塘tang,搪tang,溏tang,蓎tang,隚tang,榶tang,漟tang,煻tang,瑭tang,禟tang,膅tang,樘tang,磄tang,糃tang,膛tang,橖tang,篖tang,糖tang,螗tang,踼tang,糛tang,赯tang,醣tang,餳tang,鎕tang,餹tang,饄tang,鶶tang,螳tang,攩tang,伖tang,帑tang,倘tang,淌tang,傥tang,躺tang,镋tang,鎲tang,儻tang,戃tang,曭tang,爣tang,矘tang,钂tang,烫tang,摥tang,趟tang,燙tang,漡tang,焘tao,轁tao,涭tao,仐tao,弢tao,绦tao,掏tao,絛tao,詜tao,嫍tao,幍tao,慆tao,搯tao,滔tao,槄tao,瑫tao,韬tao,飸tao,縚tao,縧tao,濤tao,謟tao,鞱tao,韜tao,饕tao,饀tao,燾tao,涛tao,迯tao,咷tao,洮tao,逃tao,桃tao,陶tao,啕tao,梼tao,淘tao,萄tao,祹tao,裪tao,綯tao,蜪tao,鞀tao,醄tao,鞉tao,鋾tao,駣tao,檮tao,騊tao,鼗tao,绹tao,讨tao,討tao,套tao,畓tap,忑te,特te,貣te,脦te,犆te,铽te,慝te,鋱te,蟘te,螣te,鰧teng,膯teng,鼟teng,疼teng,痋teng,幐teng,腾teng,誊teng,漛teng,滕teng,邆teng,縢teng,駦teng,謄teng,儯teng,藤teng,騰teng,籐teng,籘teng,虅teng,驣teng,霯teng,唞teo,朰teul,剔ti,梯ti,锑ti,踢ti,銻ti,鷈ti,鵜ti,躰ti,骵ti,軆ti,擿ti,姼ti,褆ti,扌ti,虒ti,磃ti,绨ti,偍ti,啼ti,媞ti,崹ti,惿ti,提ti,稊ti,缇ti,罤ti,遆ti,鹈ti,嗁ti,瑅ti,綈ti,徲ti,漽ti,緹ti,蕛ti,蝭ti,题ti,趧ti,蹄ti,醍ti,謕ti,鍗ti,題ti,鮷ti,騠ti,鯷ti,鶗ti,鶙ti,穉ti,厗ti,鳀ti,徥ti,体ti,挮ti,體ti,衹ti,戻ti,屉ti,剃ti,洟ti,倜ti,悌ti,涕ti,逖ti,屜ti,悐ti,惕ti,掦ti,逷ti,惖ti,替ti,裼ti,褅ti,歒ti,殢ti,髰ti,薙ti,嚏ti,鬀ti,嚔ti,瓋ti,籊ti,鐟ti,楴ti,天tian,兲tian,婖tian,添tian,酟tian,靔tian,黇tian,靝tian,呑tian,瞋tian,田tian,屇tian,沺tian,恬tian,畋tian,畑tian,盷tian,胋tian,甛tian,甜tian,菾tian,湉tian,塡tian,填tian,搷tian,阗tian,碵tian,磌tian,窴tian,鴫tian,璳tian,闐tian,鷆tian,鷏tian,餂tian,寘tian,畠tian,鍩tian,忝tian,殄tian,倎tian,唺tian,悿tian,捵tian,淟tian,晪tian,琠tian,腆tian,觍tian,睓tian,覥tian,賟tian,錪tian,娗tian,铦tian,銛tian,紾tian,舔tian,掭tian,瑱tian,睼tian,舚tian,旫tiao,佻tiao,庣tiao,挑tiao,祧tiao,聎tiao,苕tiao,萔tiao,芀tiao,条tiao,岧tiao,岹tiao,迢tiao,祒tiao,條tiao,笤tiao,蓚tiao,蓨tiao,龆tiao,樤tiao,蜩tiao,鋚tiao,髫tiao,鲦tiao,螩tiao,鯈tiao,鎥tiao,齠tiao,鰷tiao,趒tiao,銚tiao,儵tiao,鞗tiao,宨tiao,晀tiao,朓tiao,脁tiao,窕tiao,窱tiao,眺tiao,粜tiao,覜tiao,跳tiao,頫tiao,糶tiao,怗tie,贴tie,萜tie,聑tie,貼tie,帖tie,蛈tie,僣tie,鴩tie,鐵tie,驖tie,铁tie,呫tie,飻tie,餮tie,厅ting,庁ting,汀ting,听ting,耓ting,厛ting,烃ting,烴ting,綎ting,鞓ting,聴ting,聼ting,廰ting,聽ting,渟ting,廳ting,邒ting,廷ting,亭ting,庭ting,莛ting,停ting,婷ting,嵉ting,筳ting,葶ting,蜓ting,楟ting,榳ting,閮ting,霆ting,聤ting,蝏ting,諪ting,鼮ting,珵ting,侱ting,圢ting,侹ting,挺ting,涏ting,梃ting,烶ting,珽ting,脡ting,颋ting,誔ting,頲ting,艇ting,乭tol,囲tong,炵tong,通tong,痌tong,嗵tong,蓪tong,樋tong,熥tong,爞tong,冂tong,燑tong,仝tong,同tong,佟tong,彤tong,峂tong,庝tong,哃tong,狪tong,茼tong,晍tong,桐tong,浵tong,砼tong,蚒tong,秱tong,铜tong,童tong,粡tong,赨tong,酮tong,鉖tong,僮tong,鉵tong,銅tong,餇tong,鲖tong,潼tong,獞tong,曈tong,朣tong,橦tong,氃tong,犝tong,膧tong,瞳tong,穜tong,鮦tong,眮tong,统tong,捅tong,桶tong,筒tong,綂tong,統tong,恸tong,痛tong,慟tong,憅tong,偷tou,偸tou,鍮tou,头tou,投tou,骰tou,緰tou,頭tou,钭tou,妵tou,紏tou,敨tou,斢tou,黈tou,蘣tou,埱tou,透tou,綉tou,宊tu,瑹tu,凸tu,禿tu,秃tu,突tu,涋tu,捸tu,堗tu,湥tu,痜tu,葖tu,嶀tu,鋵tu,鵚tu,鼵tu,唋tu,図tu,图tu,凃tu,峹tu,庩tu,徒tu,捈tu,涂tu,荼tu,途tu,屠tu,梌tu,揬tu,稌tu,塗tu,嵞tu,瘏tu,筡tu,鈯tu,圖tu,圗tu,廜tu,潳tu,酴tu,馟tu,鍎tu,駼tu,鵌tu,鶟tu,鷋tu,鷵tu,兎tu,菟tu,蒤tu,土tu,圡tu,吐tu,汢tu,钍tu,釷tu,迌tu,兔tu,莵tu,堍tu,鵵tu,湍tuan,猯tuan,煓tuan,蓴tuan,团tuan,団tuan,抟tuan,剸tuan,團tuan,塼tuan,慱tuan,摶tuan,槫tuan,漙tuan,篿tuan,檲tuan,鏄tuan,糰tuan,鷒tuan,鷻tuan,嫥tuan,鱄tuan,圕tuan,疃tuan,畽tuan,彖tuan,湪tuan,褖tuan,貒tuan,忒tui,推tui,蓷tui,藬tui,焞tui,騩tui,墤tui,颓tui,隤tui,尵tui,頹tui,頺tui,魋tui,穨tui,蘈tui,蹪tui,僓tui,頽tui,俀tui,脮tui,腿tui,蹆tui,骽tui,退tui,娧tui,煺tui,蛻tui,蜕tui,褪tui,駾tui,噋tun,汭tun,吞tun,旽tun,啍tun,朜tun,暾tun,黗tun,屯tun,忳tun,芚tun,饨tun,豚tun,軘tun,飩tun,鲀tun,魨tun,霕tun,臀tun,臋tun,坉tun,豘tun,氽tun,舃tuo,乇tuo,讬tuo,托tuo,汑tuo,饦tuo,杔tuo,侂tuo,咃tuo,拕tuo,拖tuo,侻tuo,挩tuo,捝tuo,莌tuo,袥tuo,託tuo,涶tuo,脱tuo,飥tuo,馲tuo,魠tuo,驝tuo,棁tuo,脫tuo,鱓tuo,鋖tuo,牠tuo,驮tuo,佗tuo,陀tuo,陁tuo,坨tuo,岮tuo,沱tuo,驼tuo,柁tuo,砣tuo,砤tuo,袉tuo,鸵tuo,紽tuo,堶tuo,跎tuo,酡tuo,碢tuo,馱tuo,槖tuo,踻tuo,駞tuo,橐tuo,鮀tuo,鴕tuo,鼧tuo,騨tuo,鼍tuo,驒tuo,鼉tuo,迆tuo,駝tuo,軃tuo,妥tuo,毤tuo,庹tuo,椭tuo,楕tuo,鵎tuo,拓tuo,柝tuo,唾tuo,萚tuo,跅tuo,毻tuo,箨tuo,蘀tuo,籜tuo,哇wa,窐wa,劸wa,徍wa,挖wa,洼wa,娲wa,畖wa,窊wa,媧wa,嗗wa,蛙wa,搲wa,溛wa,漥wa,窪wa,鼃wa,攨wa,屲wa,姽wa,譁wa,娃wa,瓦wa,佤wa,邷wa,咓wa,瓲wa,砙wa,韎wa,帓wa,靺wa,袜wa,聉wa,嗢wa,腽wa,膃wa,韈wa,韤wa,襪wa,咼wai,瀤wai,歪wai,喎wai,竵wai,崴wai,外wai,顡wai,関wan,闗wan,夘wan,乛wan,弯wan,剜wan,婠wan,帵wan,塆wan,湾wan,睕wan,蜿wan,潫wan,豌wan,彎wan,壪wan,灣wan,埦wan,捥wan,丸wan,刓wan,汍wan,纨wan,芄wan,完wan,岏wan,忨wan,玩wan,笂wan,紈wan,捖wan,顽wan,烷wan,琓wan,貦wan,頑wan,蚖wan,抏wan,邜wan,宛wan,倇wan,唍wan,挽wan,晚wan,盌wan,莞wan,婉wan,惋wan,晩wan,梚wan,绾wan,脘wan,菀wan,晼wan,椀wan,琬wan,皖wan,碗wan,綩wan,綰wan,輓wan,鋔wan,鍐wan,莬wan,惌wan,魭wan,夗wan,畹wan,輐wan,鄤wan,孯wan,掔wan,万wan,卍wan,卐wan,妧wan,杤wan,腕wan,萬wan,翫wan,鋄wan,薍wan,錽wan,贃wan,鎫wan,贎wan,脕wan,尩wang,尪wang,尫wang,汪wang,瀇wang,亡wang,仼wang,彺wang,莣wang,蚟wang,王wang,抂wang,网wang,忹wang,往wang,徃wang,枉wang,罔wang,惘wang,菵wang,暀wang,棢wang,焹wang,蛧wang,辋wang,網wang,蝄wang,誷wang,輞wang,魍wang,迬wang,琞wang,妄wang,忘wang,迋wang,旺wang,盳wang,望wang,朢wang,威wei,烓wei,偎wei,逶wei,隇wei,隈wei,喴wei,媁wei,媙wei,愄wei,揋wei,揻wei,渨wei,煀wei,葨wei,葳wei,微wei,椳wei,楲wei,溦wei,煨wei,詴wei,縅wei,蝛wei,覣wei,嶶wei,薇wei,燰wei,鳂wei,癐wei,鰃wei,鰄wei,嵔wei,蜲wei,危wei,巍wei,恑wei,撝wei,囗wei,为wei,韦wei,围wei,帏wei,沩wei,违wei,闱wei,峗wei,峞wei,洈wei,為wei,韋wei,桅wei,涠wei,唯wei,帷wei,惟wei,维wei,喡wei,圍wei,嵬wei,幃wei,湋wei,溈wei,琟wei,潍wei,維wei,蓶wei,鄬wei,潿wei,醀wei,濰wei,鍏wei,闈wei,鮠wei,癓wei,覹wei,犩wei,霺wei,僞wei,寪wei,觹wei,觽wei,觿wei,欈wei,違wei,趡wei,磈wei,瓗wei,膸wei,撱wei,鰖wei,伟wei,伪wei,尾wei,纬wei,芛wei,苇wei,委wei,炜wei,玮wei,洧wei,娓wei,捤wei,浘wei,诿wei,偉wei,偽wei,崣wei,梶wei,硊wei,萎wei,隗wei,骩wei,廆wei,徫wei,愇wei,猥wei,葦wei,蒍wei,骪wei,骫wei,暐wei,椲wei,煒wei,瑋wei,痿wei,腲wei,艉wei,韪wei,碨wei,鲔wei,緯wei,蔿wei,諉wei,踓wei,韑wei,頠wei,薳wei,儰wei,濻wei,鍡wei,鮪wei,壝wei,韙wei,颹wei,瀢wei,韡wei,亹wei,斖wei,茟wei,蜹wei,爲wei,卫wei,未wei,位wei,味wei,苿wei,畏wei,胃wei,叞wei,軎wei,尉wei,菋wei,谓wei,喂wei,媦wei,渭wei,猬wei,煟wei,墛wei,蔚wei,慰wei,熭wei,犚wei,磑wei,緭wei,蝟wei,衛wei,懀wei,濊wei,璏wei,罻wei,衞wei,謂wei,錗wei,餧wei,鮇wei,螱wei,褽wei,餵wei,魏wei,藯wei,鏏wei,霨wei,鳚wei,蘶wei,饖wei,讆wei,躗wei,讏wei,躛wei,荱wei,蜼wei,硙wei,轊wei,昷wen,塭wen,温wen,榅wen,殟wen,溫wen,瑥wen,辒wen,榲wen,瘟wen,豱wen,輼wen,鳁wen,鎾wen,饂wen,鰛wen,鰮wen,褞wen,缊wen,緼wen,蕰wen,縕wen,薀wen,藴wen,鴖wen,亠wen,文wen,彣wen,纹wen,炆wen,砇wen,闻wen,紋wen,蚉wen,蚊wen,珳wen,阌wen,鈫wen,雯wen,瘒wen,聞wen,馼wen,魰wen,鳼wen,鴍wen,螡wen,閺wen,閿wen,蟁wen,闅wen,鼤wen,闦wen,芠wen,呅wen,忞wen,歾wen,刎wen,吻wen,呚wen,忟wen,抆wen,呡wen,紊wen,桽wen,脗wen,稳wen,穏wen,穩wen,肳wen,问wen,妏wen,汶wen,問wen,渂wen,搵wen,絻wen,顐wen,璺wen,翁weng,嗡weng,鹟weng,螉weng,鎓weng,鶲weng,滃weng,奣weng,塕weng,嵡weng,蓊weng,瞈weng,聬weng,暡weng,瓮weng,蕹weng,甕weng,罋weng,齆weng,堝wo,濄wo,薶wo,捼wo,挝wo,倭wo,涡wo,莴wo,唩wo,涹wo,渦wo,猧wo,萵wo,喔wo,窝wo,窩wo,蜗wo,撾wo,蝸wo,踒wo,涴wo,我wo,婐wo,婑wo,捰wo,龏wo,蒦wo,嚄wo,雘wo,艧wo,踠wo,仴wo,沃wo,肟wo,臥wo,偓wo,捾wo,媉wo,幄wo,握wo,渥wo,硪wo,楃wo,腛wo,斡wo,瞃wo,濣wo,瓁wo,龌wo,齷wo,枂wo,馧wo,卧wo,扝wu,乌wu,圬wu,弙wu,污wu,邬wu,呜wu,杇wu,巫wu,屋wu,洿wu,钨wu,烏wu,趶wu,剭wu,窏wu,釫wu,鄔wu,嗚wu,誈wu,誣wu,箼wu,螐wu,鴮wu,鎢wu,鰞wu,兀wu,杅wu,诬wu,幠wu,譕wu,蟱wu,墲wu,亾wu,兦wu,无wu,毋wu,吳wu,吴wu,吾wu,呉wu,芜wu,郚wu,娪wu,梧wu,洖wu,浯wu,茣wu,珸wu,祦wu,鹀wu,無wu,禑wu,蜈wu,蕪wu,璑wu,鵐wu,鯃wu,鼯wu,鷡wu,俉wu,憮wu,橆wu,铻wu,鋙wu,莁wu,陚wu,瞴wu,娒wu,乄wu,五wu,午wu,仵wu,伍wu,妩wu,庑wu,忤wu,怃wu,迕wu,旿wu,武wu,玝wu,侮wu,倵wu,捂wu,娬wu,牾wu,珷wu,摀wu,熓wu,碔wu,鹉wu,瑦wu,舞wu,嫵wu,廡wu,潕wu,錻wu,儛wu,甒wu,鵡wu,躌wu,逜wu,膴wu,啎wu,噁wu,雺wu,渞wu,揾wu,坞wu,塢wu,勿wu,务wu,戊wu,阢wu,伆wu,屼wu,扤wu,岉wu,杌wu,忢wu,物wu,矹wu,敄wu,误wu,務wu,悞wu,悟wu,悮wu,粅wu,晤wu,焐wu,婺wu,嵍wu,痦wu,隖wu,靰wu,骛wu,奦wu,嵨wu,溩wu,雾wu,寤wu,熃wu,誤wu,鹜wu,鋈wu,窹wu,鼿wu,霧wu,齀wu,騖wu,鶩wu,芴wu,霚wu,扱xi,糦xi,宩xi,獡xi,蜤xi,燍xi,夕xi,兮xi,汐xi,西xi,覀xi,吸xi,希xi,扸xi,卥xi,昔xi,析xi,矽xi,穸xi,肹xi,俙xi,徆xi,怸xi,郗xi,饻xi,唏xi,奚xi,屖xi,息xi,悕xi,晞xi,氥xi,浠xi,牺xi,狶xi,莃xi,唽xi,悉xi,惜xi,桸xi,欷xi,淅xi,渓xi,烯xi,焁xi,焈xi,琋xi,硒xi,菥xi,赥xi,釸xi,傒xi,惁xi,晰xi,晳xi,焟xi,犀xi,睎xi,稀xi,粞xi,翕xi,翖xi,舾xi,鄎xi,厀xi,嵠xi,徯xi,溪xi,煕xi,皙xi,蒠xi,锡xi,僖xi,榽xi,熄xi,熙xi,緆xi,蜥xi,豨xi,餏xi,嘻xi,噏xi,嬆xi,嬉xi,膝xi,餙xi,凞xi,樨xi,橀xi,歙xi,熹xi,熺xi,熻xi,窸xi,羲xi,螅xi,錫xi,燨xi,犠xi,瞦xi,礂xi,蟋xi,豀xi,豯xi,貕xi,繥xi,鯑xi,鵗xi,譆xi,鏭xi,隵xi,巇xi,曦xi,爔xi,犧xi,酅xi,鼷xi,蠵xi,鸂xi,鑴xi,憘xi,暿xi,鱚xi,咥xi,訢xi,娭xi,瘜xi,醯xi,雭xi,习xi,郋xi,席xi,習xi,袭xi,觋xi,媳xi,椺xi,蒵xi,蓆xi,嶍xi,漝xi,覡xi,趘xi,薂xi,檄xi,謵xi,鎴xi,霫xi,鳛xi,飁xi,騱xi,騽xi,襲xi,鰼xi,驨xi,隰xi,囍xi,杫xi,枲xi,洗xi,玺xi,徙xi,铣xi,喜xi,葈xi,葸xi,鈢xi,屣xi,漇xi,蓰xi,銑xi,憙xi,橲xi,禧xi,諰xi,壐xi,縰xi,謑xi,蟢xi,蹝xi,璽xi,躧xi,鉩xi,欪xi,钑xi,鈒xi,匸xi,卌xi,戏xi,屃xi,系xi,饩xi,呬xi,忥xi,怬xi,细xi,係xi,恄xi,绤xi,釳xi,阋xi,塈xi,椞xi,舄xi,趇xi,隙xi,慀xi,滊xi,禊xi,綌xi,赩xi,隟xi,熂xi,犔xi,潟xi,澙xi,蕮xi,覤xi,黖xi,戲xi,磶xi,虩xi,餼xi,鬩xi,嚱xi,霼xi,衋xi,細xi,闟xi,虾xia,谺xia,傄xia,閕xia,敮xia,颬xia,瞎xia,蝦xia,鰕xia,魻xia,郃xia,匣xia,侠xia,狎xia,俠xia,峡xia,柙xia,炠xia,狭xia,陜xia,峽xia,烚xia,狹xia,珨xia,祫xia,硖xia,舺xia,陿xia,溊xia,硤xia,遐xia,暇xia,瑕xia,筪xia,碬xia,舝xia,辖xia,縀xia,蕸xia,縖xia,赮xia,轄xia,鍜xia,霞xia,鎋xia,黠xia,騢xia,鶷xia,睱xia,翈xia,昰xia,丅xia,下xia,吓xia,圷xia,夏xia,梺xia,嚇xia,懗xia,罅xia,鏬xia,疜xia,姺xian,仙xian,仚xian,屳xian,先xian,奾xian,纤xian,佡xian,忺xian,氙xian,祆xian,秈xian,苮xian,枮xian,籼xian,珗xian,莶xian,掀xian,酰xian,锨xian,僊xian,僲xian,嘕xian,鲜xian,暹xian,韯xian,憸xian,鍁xian,繊xian,褼xian,韱xian,鮮xian,馦xian,蹮xian,廯xian,譣xian,鶱xian,襳xian,躚xian,纖xian,鱻xian,縿xian,跹xian,咞xian,闲xian,妶xian,弦xian,贤xian,咸xian,挦xian,涎xian,胘xian,娴xian,娹xian,婱xian,舷xian,蚿xian,衔xian,啣xian,痫xian,蛝xian,閑xian,鹇xian,嫌xian,甉xian,銜xian,嫺xian,嫻xian,憪xian,澖xian,誸xian,賢xian,癇xian,癎xian,礥xian,贒xian,鑦xian,鷳xian,鷴xian,鷼xian,伭xian,冼xian,狝xian,显xian,险xian,毨xian,烍xian,猃xian,蚬xian,険xian,赻xian,筅xian,尟xian,尠xian,禒xian,蜆xian,跣xian,箲xian,險xian,獫xian,獮xian,藓xian,鍌xian,燹xian,顕xian,幰xian,攇xian,櫶xian,蘚xian,玁xian,韅xian,顯xian,灦xian,搟xian,县xian,岘xian,苋xian,现xian,线xian,臽xian,限xian,姭xian,宪xian,陥xian,哯xian,垷xian,娨xian,峴xian,晛xian,莧xian,陷xian,現xian,馅xian,睍xian,絤xian,缐xian,羡xian,献xian,粯xian,羨xian,腺xian,僩xian,僴xian,綫xian,誢xian,撊xian,線xian,鋧xian,憲xian,餡xian,豏xian,瀗xian,臔xian,獻xian,鏾xian,霰xian,鼸xian,脇xian,軐xian,県xian,縣xian,儴xiang,勷xiang,蘘xiang,纕xiang,乡xiang,芗xiang,香xiang,郷xiang,厢xiang,鄉xiang,鄊xiang,廂xiang,湘xiang,缃xiang,葙xiang,鄕xiang,楿xiang,薌xiang,箱xiang,緗xiang,膷xiang,忀xiang,骧xiang,麘xiang,欀xiang,瓖xiang,镶xiang,鱜xiang,鑲xiang,驤xiang,襄xiang,佭xiang,详xiang,庠xiang,栙xiang,祥xiang,絴xiang,翔xiang,詳xiang,跭xiang,享xiang,亯xiang,响xiang,蚃xiang,饷xiang,晑xiang,飨xiang,想xiang,餉xiang,鲞xiang,蠁xiang,鮝xiang,鯗xiang,響xiang,饗xiang,饟xiang,鱶xiang,傢xiang,相xiang,向xiang,姠xiang,巷xiang,项xiang,珦xiang,象xiang,缿xiang,萫xiang,項xiang,像xiang,勨xiang,嶑xiang,橡xiang,襐xiang,蟓xiang,鐌xiang,鱌xiang,鋞xiang,鬨xiang,嚮xiang,鵁xiao,莦xiao,颵xiao,箾xiao,潚xiao,橚xiao,灱xiao,灲xiao,枭xiao,侾xiao,哓xiao,枵xiao,骁xiao,宯xiao,宵xiao,庨xiao,恷xiao,消xiao,绡xiao,虓xiao,逍xiao,鸮xiao,啋xiao,婋xiao,梟xiao,焇xiao,猇xiao,萧xiao,痚xiao,痟xiao,硝xiao,硣xiao,窙xiao,翛xiao,萷xiao,销xiao,揱xiao,綃xiao,歊xiao,箫xiao,嘵xiao,撨xiao,獢xiao,銷xiao,霄xiao,彇xiao,膮xiao,蕭xiao,魈xiao,鴞xiao,穘xiao,簘xiao,蟂xiao,蟏xiao,鴵xiao,嚣xiao,瀟xiao,簫xiao,蟰xiao,髇xiao,囂xiao,髐xiao,鷍xiao,驍xiao,毊xiao,虈xiao,肖xiao,哮xiao,烋xiao,潇xiao,蠨xiao,洨xiao,崤xiao,淆xiao,誵xiao,笹xiao,小xiao,晓xiao,暁xiao,筱xiao,筿xiao,曉xiao,篠xiao,謏xiao,皢xiao,孝xiao,効xiao,咲xiao,俲xiao,效xiao,校xiao,涍xiao,笑xiao,傚xiao,敩xiao,滧xiao,詨xiao,嘋xiao,嘨xiao,誟xiao,嘯xiao,熽xiao,斅xiao,斆xiao,澩xiao,啸xiao,些xie,楔xie,歇xie,蝎xie,蠍xie,协xie,旪xie,邪xie,協xie,胁xie,垥xie,恊xie,拹xie,脋xie,衺xie,偕xie,斜xie,谐xie,翓xie,嗋xie,愶xie,携xie,瑎xie,綊xie,熁xie,膎xie,勰xie,撷xie,擕xie,緳xie,缬xie,蝢xie,鞋xie,諧xie,燲xie,擷xie,鞵xie,襭xie,攜xie,讗xie,龤xie,魼xie,脅xie,纈xie,写xie,冩xie,寫xie,藛xie,烲xie,榝xie,齛xie,碿xie,伳xie,灺xie,泄xie,泻xie,祄xie,绁xie,缷xie,卸xie,洩xie,炧xie,炨xie,卨xie,娎xie,屑xie,屓xie,偰xie,徢xie,械xie,焎xie,禼xie,亵xie,媟xie,屟xie,渫xie,絬xie,谢xie,僁xie,塮xie,榍xie,榭xie,褉xie,噧xie,屧xie,暬xie,韰xie,廨xie,懈xie,澥xie,獬xie,糏xie,薢xie,薤xie,邂xie,燮xie,褻xie,謝xie,夑xie,瀉xie,鞢xie,瀣xie,蟹xie,蠏xie,齘xie,齥xie,齂xie,躠xie,屭xie,躞xie,蝑xie,揳xie,爕xie,噺xin,心xin,邤xin,妡xin,忻xin,芯xin,辛xin,昕xin,杺xin,欣xin,盺xin,俽xin,惞xin,锌xin,新xin,歆xin,鋅xin,嬜xin,薪xin,馨xin,鑫xin,馫xin,枔xin,襑xin,潃xin,阠xin,伩xin,囟xin,孞xin,炘xin,信xin,脪xin,衅xin,訫xin,焮xin,舋xin,釁xin,狌xing,星xing,垶xing,骍xing,猩xing,煋xing,鷞shuang,骦shuang,縔shuang,艭shuang,塽shuang,壯zhuang,状zhuang,狀zhuang,壵zhuang,梉zhuang,瑆xing,腥xing,蛵xing,觪xing,箵xing,篂xing,謃xing,鮏xing,曐xing,觲xing,騂xing,皨xing,鯹xing,嬹xing,惺xing,刑xing,邢xing,形xing,陉xing,侀xing,哘xing,型xing,洐xing,娙xing,硎xing,铏xing,鉶xing,裄xing,睲xing,醒xing,擤xing,兴xing,興xing,杏xing,姓xing,幸xing,性xing,荇xing,倖xing,莕xing,婞xing,悻xing,涬xing,緈xing,臖xing,凶xiong,兄xiong,兇xiong,匈xiong,芎xiong,讻xiong,忷xiong,汹xiong,恟xiong,洶xiong,胷xiong,胸xiong,訩xiong,詾xiong,哅xiong,雄xiong,熊xiong,诇xiong,詗xiong,敻xiong,休xiu,俢xiu,修xiu,咻xiu,庥xiu,烌xiu,羞xiu,脙xiu,鸺xiu,臹xiu,貅xiu,馐xiu,樇xiu,銝xiu,髤xiu,髹xiu,鮴xiu,鵂xiu,饈xiu,鏅xiu,飍xiu,鎀xiu,苬xiu,宿xiu,朽xiu,綇xiu,滫xiu,糔xiu,臰xiu,秀xiu,岫xiu,珛xiu,绣xiu,袖xiu,琇xiu,锈xiu,溴xiu,璓xiu,螑xiu,繍xiu,繡xiu,鏥xiu,鏽xiu,齅xiu,嗅xiu,蓿xu,繻xu,圩xu,旴xu,疞xu,盱xu,欨xu,胥xu,须xu,顼xu,虗xu,虚xu,谞xu,媭xu,幁xu,欻xu,虛xu,須xu,楈xu,窢xu,頊xu,嘘xu,稰xu,需xu,魆xu,噓xu,墟xu,嬃xu,歔xu,縃xu,歘xu,諝xu,譃xu,魖xu,驉xu,鑐xu,鬚xu,姁xu,偦xu,戌xu,蕦xu,俆xu,徐xu,蒣xu,訏xu,许xu,诩xu,冔xu,栩xu,珝xu,許xu,湑xu,暊xu,詡xu,鄦xu,糈xu,醑xu,盨xu,滀xu,嘼xu,鉥xu,旭xu,伵xu,序xu,侐xu,沀xu,叙xu,恤xu,昫xu,洫xu,垿xu,欰xu,殈xu,烅xu,珬xu,勖xu,勗xu,敍xu,敘xu,烼xu,绪xu,续xu,酗xu,喣xu,壻xu,婿xu,朂xu,溆xu,絮xu,訹xu,慉xu,続xu,蓄xu,賉xu,槒xu,漵xu,潊xu,盢xu,瞁xu,緒xu,聟xu,稸xu,緖xu,瞲xu,藚xu,續xu,怴xu,芧xu,汿xu,煦xu,煖xuan,吅xuan,轩xuan,昍xuan,咺xuan,宣xuan,晅xuan,軒xuan,谖xuan,喧xuan,媗xuan,愃xuan,愋xuan,揎xuan,萱xuan,萲xuan,暄xuan,煊xuan,瑄xuan,蓒xuan,睻xuan,儇xuan,禤xuan,箮xuan,翧xuan,蝖xuan,蕿xuan,諠xuan,諼xuan,鍹xuan,駽xuan,矎xuan,翾xuan,藼xuan,蘐xuan,蠉xuan,譞xuan,鰚xuan,塇xuan,玹xuan,痃xuan,悬xuan,旋xuan,蜁xuan,嫙xuan,漩xuan,暶xuan,璇xuan,檈xuan,璿xuan,懸xuan,玆xuan,玄xuan,选xuan,選xuan,癣xuan,癬xuan,絃xuan,夐xuan,怰xuan,泫xuan,昡xuan,炫xuan,绚xuan,眩xuan,袨xuan,铉xuan,琄xuan,眴xuan,衒xuan,絢xuan,楦xuan,鉉xuan,碹xuan,蔙xuan,镟xuan,颴xuan,縼xuan,繏xuan,鏇xuan,贙xuan,駨xuan,渲xuan,疶xue,蒆xue,靴xue,薛xue,鞾xue,削xue,噱xue,穴xue,斈xue,乴xue,坹xue,学xue,岤xue,峃xue,茓xue,泶xue,袕xue,鸴xue,學xue,嶨xue,燢xue,雤xue,鷽xue,踅xue,雪xue,樰xue,膤xue,艝xue,轌xue,鳕xue,鱈xue,血xue,泧xue,狘xue,桖xue,烕xue,谑xue,趐xue,瀥xue,坃xun,勋xun,埙xun,塤xun,熏xun,窨xun,勲xun,勳xun,薫xun,嚑xun,壎xun,獯xun,薰xun,曛xun,燻xun,臐xun,矄xun,蘍xun,壦xun,爋xun,纁xun,醺xun,勛xun,郇xun,咰xun,寻xun,巡xun,旬xun,杊xun,询xun,峋xun,恂xun,浔xun,紃xun,荀xun,栒xun,桪xun,毥xun,珣xun,偱xun,尋xun,循xun,揗xun,詢xun,鄩xun,鲟xun,噚xun,潯xun,攳xun,樳xun,燅xun,燖xun,璕xun,蟳xun,鱏xun,鱘xun,侚xun,彐xun,撏xun,洵xun,浚xun,濬xun,鶽xun,驯xun,馴xun,卂xun,训xun,伨xun,汛xun,迅xun,徇xun,狥xun,迿xun,逊xun,殉xun,訊xun,訓xun,訙xun,奞xun,巽xun,殾xun,遜xun,愻xun,賐xun,噀xun,蕈xun,顨xun,鑂xun,稄xun,讯xun,呀ya,圧ya,丫ya,压ya,庘ya,押ya,鸦ya,桠ya,鸭ya,铔ya,椏ya,鴉ya,錏ya,鴨ya,壓ya,鵶ya,鐚ya,唖ya,亜ya,垭ya,俹ya,埡ya,孲ya,拁ya,疨ya,牙ya,伢ya,岈ya,芽ya,厓ya,枒ya,琊ya,笌ya,蚜ya,堐ya,崕ya,崖ya,涯ya,猚ya,瑘ya,睚ya,衙ya,漄ya,齖ya,庌ya,顔ya,釾ya,疋ya,厊ya,啞ya,痖ya,雅ya,瘂ya,蕥ya,挜ya,掗ya,哑ya,呾ya,輵ya,潝ya,劜ya,圠ya,亚ya,穵ya,襾ya,讶ya,犽ya,迓ya,亞ya,玡ya,娅ya,砑ya,氩ya,婭ya,訝ya,揠ya,氬ya,猰ya,圔ya,稏ya,窫ya,椻ya,鼼ya,聐ya,淊yan,咽yan,恹yan,剦yan,烟yan,珚yan,胭yan,偣yan,崦yan,淹yan,焉yan,菸yan,阉yan,湮yan,腌yan,傿yan,煙yan,鄢yan,嫣yan,漹yan,嶖yan,樮yan,醃yan,閹yan,嬮yan,篶yan,臙yan,黫yan,弇yan,硽yan,慇yan,黰yan,橪yan,阽yan,炏yan,挻yan,厃yan,唌yan,廵yan,讠yan,円yan,延yan,闫yan,严yan,妍yan,言yan,訁yan,岩yan,昖yan,沿yan,炎yan,郔yan,姸yan,娫yan,狿yan,研yan,莚yan,娮yan,盐yan,琂yan,硏yan,訮yan,閆yan,阎yan,嵒yan,嵓yan,綖yan,蜒yan,塩yan,揅yan,楌yan,詽yan,碞yan,蔅yan,颜yan,虤yan,閻yan,厳yan,檐yan,顏yan,嚴yan,壛yan,巌yan,簷yan,櫩yan,麙yan,壧yan,孍yan,巖yan,巗yan,巚yan,欕yan,礹yan,鹽yan,麣yan,黬yan,偐yan,贗yan,菴yan,剡yan,嬐yan,崄yan,嶮yan,抁yan,沇yan,乵yan,兖yan,奄yan,俨yan,兗yan,匽yan,衍yan,偃yan,厣yan,掩yan,眼yan,萒yan,郾yan,酓yan,嵃yan,愝yan,扊yan,揜yan,棪yan,渰yan,渷yan,琰yan,隒yan,椼yan,罨yan,演yan,褗yan,蝘yan,魇yan,噞yan,躽yan,檿yan,黡yan,厴yan,甗yan,鰋yan,鶠yan,黤yan,齞yan,儼yan,黭yan,顩yan,鼴yan,巘yan,曮yan,魘yan,鼹yan,齴yan,黶yan,掞yan,隁yan,喭yan,酀yan,龂yan,齗yan,阭yan,夵yan,裺yan,溎yan,豜yan,豣yan,烻yan,湺yan,麲yan,厌yan,妟yan,牪yan,姲yan,彥yan,彦yan,砚yan,唁yan,宴yan,晏yan,艳yan,覎yan,验yan,焔yan,谚yan,堰yan,敥yan,焰yan,焱yan,猒yan,硯yan,葕yan,雁yan,滟yan,鳫yan,厭yan,墕yan,熖yan,酽yan,嬊yan,谳yan,餍yan,鴈yan,燄yan,燕yan,諺yan,赝yan,鬳yan,曕yan,騐yan,験yan,嚥yan,嬿yan,艶yan,贋yan,軅yan,爓yan,醶yan,騴yan,鷃yan,灔yan,觾yan,讌yan,饜yan,驗yan,鷰yan,艷yan,灎yan,釅yan,驠yan,灧yan,讞yan,豓yan,豔yan,灩yan,顑yan,懕yan,筵yan,觃yan,暥yan,醼yan,歍yang,央yang,咉yang,姎yang,抰yang,泱yang,殃yang,胦yang,眏yang,秧yang,鸯yang,鉠yang,雵yang,鞅yang,鍈yang,鴦yang,佒yang,霙yang,瑒yang,婸yang,扬yang,羊yang,阦yang,旸yang,杨yang,炀yang,佯yang,劷yang,氜yang,疡yang,钖yang,飏yang,垟yang,徉yang,昜yang,洋yang,羏yang,烊yang,珜yang,眻yang,陽yang,崵yang,崸yang,揚yang,蛘yang,敭yang,暘yang,楊yang,煬yang,禓yang,瘍yang,諹yang,輰yang,鴹yang,颺yang,鐊yang,鰑yang,霷yang,鸉yang,阳yang,鍚yang,飬yang,勜yang,仰yang,坱yang,奍yang,岟yang,养yang,炴yang,氧yang,痒yang,紻yang,傟yang,楧yang,軮yang,慃yang,氱yang,羪yang,養yang,駚yang,懩yang,攁yang,瀁yang,癢yang,礢yang,柍yang,恙yang,样yang,羕yang,詇yang,様yang,漾yang,樣yang,怏yang,玅yao,撽yao,幺yao,夭yao,吆yao,妖yao,枖yao,祅yao,訞yao,喓yao,葽yao,楆yao,腰yao,邀yao,宎yao,侥yao,僥yao,蕘yao,匋yao,恌yao,铫yao,爻yao,尧yao,尭yao,肴yao,垚yao,姚yao,峣yao,轺yao,倄yao,珧yao,窑yao,傜yao,堯yao,揺yao,殽yao,谣yao,軺yao,嗂yao,媱yao,徭yao,愮yao,搖yao,摇yao,猺yao,遙yao,遥yao,摿yao,暚yao,榣yao,瑤yao,瑶yao,飖yao,餆yao,嶢yao,嶤yao,徺yao,磘yao,窯yao,餚yao,繇yao,謠yao,謡yao,鎐yao,鳐yao,颻yao,蘨yao,顤yao,鰩yao,鷂yao,踰yao,烑yao,窰yao,噛yao,仸yao,岆yao,抭yao,杳yao,殀yao,狕yao,苭yao,咬yao,柼yao,窅yao,窈yao,舀yao,偠yao,婹yao,崾yao,溔yao,蓔yao,榚yao,闄yao,騕yao,齩yao,鷕yao,穾yao,鴢yao,烄yao,药yao,要yao,袎yao,窔yao,筄yao,葯yao,詏yao,熎yao,覞yao,靿yao,獟yao,鹞yao,薬yao,曜yao,艞yao,藥yao,矅yao,曣yao,耀yao,纅yao,讑yao,鑰yao,怮yao,箹yao,钥yao,籥yao,亪ye,椰ye,暍ye,噎ye,潱ye,蠮ye,耶ye,吔ye,倻ye,峫ye,爷ye,捓ye,揶ye,铘ye,爺ye,鋣ye,鎁ye,擨ye,蠱ye,虵ye,也ye,冶ye,埜ye,野ye,嘢ye,漜ye,壄ye,瓛ye,熀ye,殕ye,啘ye,鐷ye,緤ye,业ye,叶ye,曳ye,页ye,邺ye,夜ye,亱ye,枼ye,洂ye,頁ye,捙ye,晔ye,枽ye,烨ye,偞ye,掖ye,液ye,谒ye,殗ye,腋ye,葉ye,鄓ye,墷ye,楪ye,業ye,馌ye,僷ye,曄ye,曅ye,歋ye,燁ye,擖ye,擛ye,皣ye,瞱ye,靥ye,嶪ye,嶫ye,澲ye,謁ye,餣ye,嚈ye,擫ye,曗ye,瞸ye,鍱ye,擪ye,爗ye,礏ye,鎑ye,饁ye,鵺ye,靨ye,驜ye,鸈ye,黦ye,煠ye,抴ye,鄴ye,膶yen,岃yen,袆yi,褘yi,一yi,弌yi,辷yi,衤yi,伊yi,衣yi,医yi,吚yi,依yi,祎yi,咿yi,洢yi,猗yi,畩yi,郼yi,铱yi,壹yi,揖yi,欹yi,蛜yi,禕yi,嫛yi,漪yi,稦yi,銥yi,嬄yi,噫yi,夁yi,瑿yi,鹥yi,繄yi,檹yi,毉yi,醫yi,黟yi,譩yi,鷖yi,黳yi,悘yi,壱yi,耛yi,拸yi,訑yi,釶yi,鉇yi,箷yi,戺yi,珆yi,鴺yi,銕yi,狏yi,迱yi,彵yi,熈yi,仪yi,匜yi,圯yi,夷yi,冝yi,宐yi,杝yi,沂yi,诒yi,侇yi,宜yi,怡yi,沶yi,狋yi,衪yi,饴yi,咦yi,姨yi,峓yi,弬yi,恞yi,柂yi,瓵yi,荑yi,贻yi,迻yi,宧yi,巸yi,扅yi,桋yi,眙yi,胰yi,袘yi,痍yi,移yi,萓yi,媐yi,椬yi,羠yi,蛦yi,詒yi,貽yi,遗yi,暆yi,椸yi,誃yi,跠yi,頉yi,颐yi,飴yi,疑yi,儀yi,熪yi,遺yi,嶬yi,彛yi,彜yi,螔yi,頥yi,寲yi,嶷yi,簃yi,顊yi,鮧yi,彝yi,彞yi,謻yi,鏔yi,籎yi,觺yi,讉yi,鸃yi,貤yi,乁yi,栘yi,頤yi,钀yi,錡yi,裿yi,迤yi,酏yi,乙yi,已yi,以yi,钇yi,佁yi,攺yi,矣yi,苡yi,苢yi,庡yi,舣yi,蚁yi,釔yi,倚yi,扆yi,逘yi,偯yi,崺yi,旑yi,椅yi,鈘yi,鉯yi,鳦yi,旖yi,輢yi,敼yi,螘yi,檥yi,礒yi,艤yi,蟻yi,顗yi,轙yi,齮yi,肊yi,陭yi,嬟yi,醷yi,阤yi,叕yi,锜yi,歖yi,笖yi,昳yi,睪yi,欥yi,輗yi,掜yi,儗yi,謚yi,紲yi,絏yi,辥yi,义yi,亿yi,弋yi,刈yi,忆yi,艺yi,仡yi,匇yi,议yi,亦yi,伇yi,屹yi,异yi,忔yi,芅yi,伿yi,佚yi,劮yi,呓yi,坄yi,役yi,抑yi,曵yi,杙yi,耴yi,苅yi,译yi,邑yi,佾yi,呭yi,呹yi,妷yi,峄yi,怈yi,怿yi,易yi,枍yi,泆yi,炈yi,绎yi,诣yi,驿yi,俋yi,奕yi,帟yi,帠yi,弈yi,枻yi,浂yi,玴yi,疫yi,羿yi,衵yi,轶yi,唈yi,垼yi,悒yi,挹yi,栧yi,栺yi,欭yi,浥yi,浳yi,益yi,袣yi,谊yi,勚yi,埸yi,悥yi,殹yi,異yi,羛yi,翊yi,翌yi,萟yi,訲yi,訳yi,豙yi,豛yi,逸yi,釴yi,隿yi,幆yi,敡yi,晹yi,棭yi,殔yi,湙yi,焲yi,蛡yi,詍yi,跇yi,軼yi,鈠yi,骮yi,亄yi,意yi,溢yi,獈yi,痬yi,竩yi,缢yi,義yi,肄yi,裔yi,裛yi,詣yi,勩yi,嫕yi,廙yi,榏yi,潩yi,瘗yi,膉yi,蓺yi,蜴yi,靾yi,駅yi,億yi,撎yi,槸yi,毅yi,熠yi,熤yi,熼yi,瘞yi,镒yi,鹝yi,鹢yi,黓yi,劓yi,圛yi,墿yi,嬑yi,嶧yi,憶yi,懌yi,曀yi,殪yi,澺yi,燚yi,瘱yi,瞖yi,穓yi,縊yi,艗yi,薏yi,螠yi,褹yi,寱yi,斁yi,曎yi,檍yi,歝yi,燡yi,翳yi,翼yi,臆yi,貖yi,鮨yi,癔yi,藙yi,藝yi,贀yi,鎰yi,镱yi,繶yi,繹yi,豷yi,霬yi,鯣yi,鶂yi,鶃yi,鶍yi,瀷yi,蘙yi,譯yi,議yi,醳yi,饐yi,囈yi,鐿yi,鷁yi,鷊yi,襼yi,驛yi,鷧yi,虉yi,鷾yi,讛yi,齸yi,襗yi,樴yi,癦yi,焬yi,阣yi,兿yi,誼yi,燱yi,懿yi,鮣yin,乚yin,囙yin,因yin,阥yin,阴yin,侌yin,垔yin,姻yin,洇yin,茵yin,荫yin,音yin,骃yin,栶yin,殷yin,氤yin,陰yin,凐yin,秵yin,裀yin,铟yin,陻yin,堙yin,婣yin,愔yin,筃yin,絪yin,歅yin,溵yin,禋yin,蒑yin,蔭yin,瘖yin,銦yin,磤yin,緸yin,鞇yin,諲yin,霒yin,駰yin,噾yin,濦yin,闉yin,霠yin,韾yin,喑yin,玪yin,伒yin,乑yin,吟yin,犾yin,苂yin,斦yin,泿yin,圁yin,峾yin,烎yin,狺yin,珢yin,粌yin,荶yin,訔yin,唫yin,婬yin,寅yin,崟yin,崯yin,淫yin,訡yin,银yin,鈝yin,滛yin,碒yin,鄞yin,夤yin,蔩yin,訚yin,誾yin,銀yin,龈yin,噖yin,殥yin,嚚yin,檭yin,蟫yin,霪yin,齦yin,鷣yin,螾yin,垠yin,璌yin,赺yin,縯yin,尹yin,引yin,吲yin,饮yin,蚓yin,隐yin,淾yin,釿yin,鈏yin,飲yin,隠yin,靷yin,飮yin,朄yin,趛yin,檃yin,瘾yin,隱yin,嶾yin,濥yin,蘟yin,癮yin,讔yin,輑yin,櫽yin,堷yin,梀yin,隂yin,印yin,茚yin,洕yin,胤yin,垽yin,湚yin,猌yin,廕yin,酳yin,慭yin,癊yin,憖yin,憗yin,懚yin,檼yin,韹ying,焽ying,旲ying,应ying,応ying,英ying,偀ying,桜ying,珱ying,莺ying,啨ying,婴ying,媖ying,愥ying,渶ying,朠ying,煐ying,瑛ying,嫈ying,碤ying,锳ying,嘤ying,撄ying,甇ying,緓ying,缨ying,罂ying,蝧ying,賏ying,樱ying,璎ying,噟ying,罃ying,褮ying,鴬ying,鹦ying,嬰ying,應ying,膺ying,韺ying,甖ying,鹰ying,嚶ying,孆ying,孾ying,攖ying,瀴ying,罌ying,蘡ying,櫻ying,瓔ying,礯ying,譻ying,鶯ying,鑍ying,纓ying,蠳ying,鷪ying,軈ying,鷹ying,鸎ying,鸚ying,謍ying,譍ying,绬ying,鶧ying,夃ying,俓ying,泂ying,嵤ying,桯ying,滎ying,鎣ying,盁ying,迎ying,茔ying,盈ying,荥ying,荧ying,莹ying,萤ying,营ying,萦ying,営ying,溁ying,溋ying,萾ying,僌ying,塋ying,楹ying,滢ying,蓥ying,潆ying,熒ying,蝇ying,瑩ying,蝿ying,嬴ying,營ying,縈ying,螢ying,濙ying,濚ying,濴ying,藀ying,覮ying,赢ying,巆ying,攍ying,攚ying,瀛ying,瀠ying,蠅ying,櫿ying,灐ying,籝ying,灜ying,贏ying,籯ying,耺ying,蛍ying,瀯ying,瀅ying,矨ying,郢ying,浧ying,梬ying,颍ying,颕ying,颖ying,摬ying,影ying,潁ying,瘿ying,穎ying,頴ying,巊ying,廮ying,鐛ying,癭ying,鱦ying,映ying,暎ying,硬ying,媵ying,膡ying,鞕ying,嚛yo,哟yo,唷yo,喲yo,拥yong,痈yong,邕yong,庸yong,嗈yong,鄘yong,雍yong,墉yong,嫞yong,慵yong,滽yong,槦yong,牅yong,銿yong,噰yong,壅yong,擁yong,澭yong,郺yong,镛yong,臃yong,癕yong,雝yong,鏞yong,廱yong,灉yong,饔yong,鱅yong,鷛yong,癰yong,鳙yong,揘yong,喁yong,鰫yong,嵱yong,筩yong,永yong,甬yong,咏yong,怺yong,泳yong,俑yong,勇yong,勈yong,栐yong,埇yong,悀yong,柡yong,涌yong,恿yong,傛yong,惥yong,愑yong,湧yong,硧yong,詠yong,彮yong,愹yong,蛹yong,慂yong,踊yong,禜yong,鲬yong,踴yong,鯒yong,塎yong,佣yong,用yong,苚yong,砽yong,醟yong,妋you,优you,忧you,攸you,呦you,幽you,悠you,麀you,滺you,憂you,優you,鄾you,嚘you,懮you,瀀you,纋you,耰you,逌you,泈you,櫌you,蓧you,蚘you,揂you,汼you,汓you,蝤you,尣you,冘you,尢you,尤you,由you,沋you,犹you,邮you,怞you,油you,肬you,怣you,斿you,疣you,峳you,浟you,秞you,莜you,莤you,莸you,郵you,铀you,偤you,蚰you,訧you,逰you,游you,猶you,鱿you,楢you,猷you,鈾you,鲉you,輏you,駀you,蕕you,蝣you,魷you,輶you,鮋you,櫾you,邎you,庮you,甴you,遊you,羗you,脩you,戭you,友you,有you,丣you,卣you,苃you,酉you,羑you,羐you,莠you,梄you,聈you,脜you,铕you,湵you,蒏you,蜏you,銪you,槱you,牖you,牗you,黝you,栯you,禉you,痏you,褎you,褏you,銹you,柚you,又you,右you,幼you,佑you,侑you,孧you,狖you,糿you,哊you,囿you,姷you,宥you,峟you,牰you,祐you,诱you,迶you,唀you,蚴you,亴you,貁you,釉you,酭you,鼬you,誘you,纡yu,迂yu,迃yu,穻yu,陓yu,紆yu,虶yu,唹yu,淤yu,盓yu,瘀yu,箊yu,亐yu,丂yu,桙yu,婾yu,媮yu,悇yu,汙yu,汚yu,鱮yu,颙yu,顒yu,渝yu,于yu,邘yu,伃yu,余yu,妤yu,扵yu,欤yu,玗yu,玙yu,於yu,盂yu,臾yu,鱼yu,俞yu,兪yu,禺yu,竽yu,舁yu,茰yu,荢yu,娛yu,娯yu,娱yu,狳yu,谀yu,酑yu,馀yu,渔yu,萸yu,釪yu,隃yu,隅yu,雩yu,魚yu,堣yu,堬yu,崳yu,嵎yu,嵛yu,愉yu,揄yu,楰yu,畬yu,畭yu,硢yu,腴yu,逾yu,骬yu,愚yu,楡yu,榆yu,歈yu,牏yu,瑜yu,艅yu,虞yu,觎yu,漁yu,睮yu,窬yu,舆yu,褕yu,歶yu,羭yu,蕍yu,蝓yu,諛yu,雓yu,餘yu,魣yu,嬩yu,懙yu,覦yu,歟yu,璵yu,螸yu,輿yu,鍝yu,礖yu,謣yu,髃yu,鮽yu,旟yu,籅yu,騟yu,鯲yu,鰅yu,鷠yu,鸆yu,萮yu,芌yu,喩yu,媀yu,貗yu,衧yu,湡yu,澞yu,頨yu,蝺yu,藇yu,予yu,与yu,伛yu,宇yu,屿yu,羽yu,雨yu,俁yu,俣yu,挧yu,禹yu,语yu,圄yu,祤yu,偊yu,匬yu,圉yu,庾yu,敔yu,鄅yu,萭yu,傴yu,寙yu,斞yu,楀yu,瑀yu,瘐yu,與yu,語yu,窳yu,龉yu,噳yu,嶼yu,貐yu,斔yu,麌yu,蘌yu,齬yu,穥yu,峿yu,閼yu,穀yu,蟈yu,僪yu,鐍yu,肀yu,翑yu,衘yu,獝yu,玉yu,驭yu,圫yu,聿yu,芋yu,妪yu,忬yu,饫yu,育yu,郁yu,彧yu,昱yu,狱yu,秗yu,俼yu,峪yu,浴yu,砡yu,钰yu,预yu,喐yu,域yu,堉yu,悆yu,惐yu,欲yu,淢yu,淯yu,袬yu,逳yu,阈yu,喅yu,喻yu,寓yu,庽yu,御yu,棛yu,棜yu,棫yu,焴yu,琙yu,矞yu,裕yu,遇yu,飫yu,馭yu,鹆yu,愈yu,滪yu,煜yu,稢yu,罭yu,蒮yu,蓣yu,誉yu,鈺yu,預yu,嶎yu,戫yu,毓yu,獄yu,瘉yu,緎yu,蜟yu,蜮yu,輍yu,銉yu,隩yu,噊yu,慾yu,稶yu,蓹yu,薁yu,豫yu,遹yu,鋊yu,鳿yu,澦yu,燏yu,燠yu,蕷yu,諭yu,錥yu,閾yu,鴥yu,鴧yu,鴪yu,礇yu,禦yu,魊yu,鹬yu,癒yu,礜yu,篽yu,繘yu,鵒yu,櫲yu,饇yu,蘛yu,譽yu,轝yu,鐭yu,霱yu,欎yu,驈yu,鬻yu,籞yu,鱊yu,鷸yu,鸒yu,欝yu,軉yu,鬰yu,鬱yu,灪yu,爩yu,灹yu,吁yu,谕yu,嫗yu,儥yu,籲yu,裷yuan,嫚yuan,囦yuan,鸢yuan,剈yuan,冤yuan,弲yuan,悁yuan,眢yuan,鸳yuan,寃yuan,渁yuan,渆yuan,渊yuan,渕yuan,淵yuan,葾yuan,棩yuan,蒬yuan,蜎yuan,鹓yuan,箢yuan,鳶yuan,蜵yuan,駌yuan,鋺yuan,鴛yuan,嬽yuan,鵷yuan,灁yuan,鼝yuan,蝝yuan,鼘yuan,喛yuan,楥yuan,芫yuan,元yuan,贠yuan,邧yuan,员yuan,园yuan,沅yuan,杬yuan,垣yuan,爰yuan,貟yuan,原yuan,員yuan,圆yuan,笎yuan,袁yuan,厡yuan,酛yuan,圎yuan,援yuan,湲yuan,猨yuan,缘yuan,鈨yuan,鼋yuan,園yuan,圓yuan,塬yuan,媴yuan,源yuan,溒yuan,猿yuan,獂yuan,蒝yuan,榞yuan,榬yuan,辕yuan,緣yuan,縁yuan,蝯yuan,橼yuan,羱yuan,薗yuan,螈yuan,謜yuan,轅yuan,黿yuan,鎱yuan,櫞yuan,邍yuan,騵yuan,鶢yuan,鶰yuan,厵yuan,傆yuan,媛yuan,褑yuan,褤yuan,嫄yuan,远yuan,盶yuan,遠yuan,逺yuan,肙yuan,妴yuan,苑yuan,怨yuan,院yuan,垸yuan,衏yuan,掾yuan,瑗yuan,禐yuan,愿yuan,裫yuan,噮yuan,願yuan,哕yue,噦yue,曰yue,曱yue,约yue,約yue,矱yue,彟yue,彠yue,矆yue,妜yue,髺yue,哾yue,趯yue,月yue,戉yue,汋yue,岄yue,抈yue,礿yue,岳yue,玥yue,恱yue,悅yue,悦yue,蚎yue,蚏yue,軏yue,钺yue,阅yue,捳yue,跀yue,跃yue,粤yue,越yue,鈅yue,粵yue,鉞yue,閱yue,閲yue,嬳yue,樾yue,篗yue,嶽yue,籆yue,瀹yue,蘥yue,爚yue,禴yue,躍yue,鸑yue,籰yue,龥yue,鸙yue,躒yue,刖yue,龠yue,涒yun,轀yun,蒀yun,煴yun,蒕yun,熅yun,奫yun,赟yun,頵yun,贇yun,氲yun,氳yun,晕yun,暈yun,云yun,勻yun,匀yun,伝yun,呍yun,囩yun,妘yun,抣yun,纭yun,芸yun,昀yun,畇yun,眃yun,秐yun,郧yun,涢yun,紜yun,耘yun,鄖yun,雲yun,愪yun,溳yun,筼yun,蒷yun,熉yun,澐yun,蕓yun,鋆yun,橒yun,篔yun,縜yun,繧yun,荺yun,沄yun,允yun,夽yun,狁yun,玧yun,陨yun,殒yun,喗yun,鈗yun,隕yun,殞yun,馻yun,磒yun,霣yun,齫yun,齳yun,抎yun,緷yun,孕yun,运yun,枟yun,郓yun,恽yun,鄆yun,酝yun,傊yun,惲yun,愠yun,運yun,慍yun,韫yun,韵yun,熨yun,蕴yun,賱yun,醖yun,醞yun,餫yun,韗yun,韞yun,蘊yun,韻yun,腪yun,噈za,帀za,匝za,沞za,咂za,拶za,沯za,桚za,紮za,鉔za,臜za,臢za,砸za,韴za,雑za,襍za,雜za,雥za,囋za,杂za,咋za,災zai,灾zai,甾zai,哉zai,栽zai,烖zai,渽zai,溨zai,睵zai,賳zai,宰zai,载zai,崽zai,載zai,仔zai,再zai,在zai,扗zai,洅zai,傤zai,酨zai,儎zai,篸zan,兂zan,糌zan,簪zan,簮zan,鐕zan,撍zan,咱zan,偺zan,喒zan,昝zan,寁zan,儧zan,攒zan,儹zan,趱zan,趲zan,揝zan,穳zan,暂zan,暫zan,賛zan,赞zan,錾zan,鄼zan,濽zan,蹔zan,酂zan,瓉zan,贊zan,鏨zan,瓒zan,灒zan,讃zan,瓚zan,禶zan,襸zan,讚zan,饡zan,酇zan,匨zang,蔵zang,牂zang,羘zang,赃zang,賍zang,臧zang,賘zang,贓zang,髒zang,贜zang,脏zang,驵zang,駔zang,奘zang,弉zang,塟zang,葬zang,銺zang,臓zang,臟zang,傮zao,遭zao,糟zao,醩zao,蹧zao,凿zao,鑿zao,早zao,枣zao,栆zao,蚤zao,棗zao,璅zao,澡zao,璪zao,薻zao,藻zao,灶zao,皁zao,皂zao,唕zao,唣zao,造zao,梍zao,慥zao,煰zao,艁zao,噪zao,簉zao,燥zao,竃zao,譟zao,趮zao,竈zao,躁zao,啫ze,伬ze,则ze,択ze,沢ze,择ze,泎ze,泽ze,责ze,迮ze,則ze,啧ze,帻ze,笮ze,舴ze,責ze,溭ze,嘖ze,嫧ze,幘ze,箦ze,蔶ze,樍ze,歵ze,諎ze,赜ze,擇ze,皟ze,瞔ze,礋ze,謮ze,賾ze,蠌ze,齚ze,齰ze,鸅ze,讁ze,葃ze,澤ze,仄ze,夨ze,庂ze,汄ze,昃ze,昗ze,捑ze,崱ze,贼zei,賊zei,鲗zei,蠈zei,鰂zei,鱡zei,怎zen,谮zen,囎zen,譛zen,曽zeng,増zeng,鄫zeng,增zeng,憎zeng,缯zeng,橧zeng,熷zeng,璔zeng,矰zeng,磳zeng,罾zeng,繒zeng,譄zeng,鱛zeng,縡zeng,鬷zeng,锃zeng,鋥zeng,甑zeng,赠zeng,贈zeng,馇zha,餷zha,蹅zha,紥zha,迊zha,抯zha,挓zha,柤zha,哳zha,偧zha,揸zha,渣zha,溠zha,楂zha,劄zha,皶zha,箚zha,樝zha,皻zha,譇zha,齄zha,齇zha,扎zha,摣zha,藸zha,囃zha,喳zha,箑zha,耫zha,札zha,轧zha,軋zha,闸zha,蚻zha,铡zha,牐zha,閘zha,霅zha,鍘zha,譗zha,挿zha,揷zha,厏zha,苲zha,砟zha,鲊zha,鲝zha,踷zha,鮓zha,鮺zha,眨zha,吒zha,乍zha,诈zha,咤zha,奓zha,炸zha,宱zha,痄zha,蚱zha,詐zha,搾zha,榨zha,醡zha,拃zha,柞zha,夈zhai,粂zhai,捚zhai,斋zhai,斎zhai,榸zhai,齋zhai,摘zhai,檡zhai,宅zhai,翟zhai,窄zhai,鉙zhai,骴zhai,簀zhai,债zhai,砦zhai,債zhai,寨zhai,瘵zhai,沾zhan,毡zhan,旃zhan,栴zhan,粘zhan,蛅zhan,惉zhan,詀zhan,趈zhan,詹zhan,閚zhan,谵zhan,嶦zhan,薝zhan,邅zhan,霑zhan,氊zhan,瞻zhan,鹯zhan,旜zhan,譫zhan,饘zhan,鳣zhan,驙zhan,魙zhan,鸇zhan,覱zhan,氈zhan,讝zhan,斩zhan,飐zhan,展zhan,盏zhan,崭zhan,斬zhan,琖zhan,搌zhan,盞zhan,嶃zhan,嶄zhan,榐zhan,颭zhan,嫸zhan,醆zhan,蹍zhan,欃zhan,占zhan,佔zhan,战zhan,栈zhan,桟zhan,站zhan,偡zhan,绽zhan,菚zhan,棧zhan,湛zhan,戦zhan,綻zhan,嶘zhan,輚zhan,戰zhan,虥zhan,虦zhan,轏zhan,蘸zhan,驏zhan,张zhang,張zhang,章zhang,鄣zhang,嫜zhang,彰zhang,慞zhang,漳zhang,獐zhang,粻zhang,蔁zhang,遧zhang,暲zhang,樟zhang,璋zhang,餦zhang,蟑zhang,鏱zhang,騿zhang,鱆zhang,麞zhang,涱zhang,傽zhang,长zhang,仧zhang,長zhang,镸zhang,仉zhang,涨zhang,掌zhang,漲zhang,幥zhang,礃zhang,鞝zhang,鐣zhang,丈zhang,仗zhang,扙zhang,杖zhang,胀zhang,账zhang,粀zhang,帳zhang,脹zhang,痮zhang,障zhang,墇zhang,嶂zhang,幛zhang,賬zhang,瘬zhang,瘴zhang,瞕zhang,帐zhang,鼌zhao,鼂zhao,謿zhao,皽zhao,佋zhao,钊zhao,妱zhao,巶zhao,招zhao,昭zhao,炤zhao,盄zhao,釗zhao,鉊zhao,駋zhao,鍣zhao,爫zhao,沼zhao,瑵zhao,爪zhao,找zhao,召zhao,兆zhao,诏zhao,枛zhao,垗zhao,狣zhao,赵zhao,笊zhao,肁zhao,旐zhao,棹zhao,罀zhao,詔zhao,照zhao,罩zhao,肇zhao,肈zhao,趙zhao,曌zhao,燳zhao,鮡zhao,櫂zhao,瞾zhao,羄zhao,啅zhao,龑yan,著zhe,着zhe,蜇zhe,嫬zhe,遮zhe,嗻zhe,摂zhe,歽zhe,砓zhe,籷zhe,虴zhe,哲zhe,埑zhe,粍zhe,袩zhe,啠zhe,悊zhe,晢zhe,晣zhe,辄zhe,喆zhe,蛰zhe,詟zhe,谪zhe,摺zhe,輒zhe,磔zhe,輙zhe,辙zhe,蟄zhe,嚞zhe,謫zhe,鮿zhe,轍zhe,襵zhe,讋zhe,厇zhe,謺zhe,者zhe,锗zhe,赭zhe,褶zhe,鍺zhe,这zhe,柘zhe,浙zhe,這zhe,淛zhe,蔗zhe,樜zhe,鹧zhe,蟅zhe,鷓zhe,趂zhen,贞zhen,针zhen,侦zhen,浈zhen,珍zhen,珎zhen,貞zhen,帪zhen,栕zhen,眞zhen,真zhen,砧zhen,祯zhen,針zhen,偵zhen,敒zhen,桭zhen,酙zhen,寊zhen,湞zhen,遉zhen,搸zhen,斟zhen,楨zhen,獉zhen,甄zhen,禎zhen,蒖zhen,蓁zhen,鉁zhen,靕zhen,榛zhen,殝zhen,瑧zhen,禛zhen,潧zhen,樼zhen,澵zhen,臻zhen,薽zhen,錱zhen,轃zhen,鍖zhen,鱵zhen,胗zhen,侲zhen,揕zhen,鎭zhen,帧zhen,幀zhen,朾zhen,椹zhen,桢zhen,箴zhen,屒zhen,诊zhen,抮zhen,枕zhen,姫zhen,弫zhen,昣zhen,轸zhen,畛zhen,疹zhen,眕zhen,袗zhen,聄zhen,萙zhen,裖zhen,覙zhen,診zhen,軫zhen,缜zhen,稹zhen,駗zhen,縝zhen,縥zhen,辴zhen,鬒zhen,嫃zhen,謓zhen,迧zhen,圳zhen,阵zhen,纼zhen,挋zhen,陣zhen,鸩zhen,振zhen,朕zhen,栚zhen,紖zhen,眹zhen,赈zhen,塦zhen,絼zhen,蜄zhen,敶zhen,誫zhen,賑zhen,鋴zhen,镇zhen,鴆zhen,鎮zhen,震zhen,嶒zheng,脀zheng,凧zheng,争zheng,佂zheng,姃zheng,征zheng,怔zheng,爭zheng,峥zheng,炡zheng,狰zheng,烝zheng,眐zheng,钲zheng,埩zheng,崝zheng,崢zheng,猙zheng,睁zheng,聇zheng,铮zheng,媜zheng,筝zheng,徰zheng,蒸zheng,鉦zheng,箏zheng,徵zheng,踭zheng,篜zheng,錚zheng,鬇zheng,癥zheng,糽zheng,睜zheng,氶zheng,抍zheng,拯zheng,塣zheng,晸zheng,愸zheng,撜zheng,整zheng,憕zheng,徎zheng,挣zheng,掙zheng,正zheng,证zheng,诤zheng,郑zheng,政zheng,症zheng,証zheng,鄭zheng,鴊zheng,證zheng,諍zheng,之zhi,支zhi,卮zhi,汁zhi,芝zhi,巵zhi,枝zhi,知zhi,织zhi,肢zhi,徔zhi,栀zhi,祗zhi,秓zhi,秖zhi,胑zhi,胝zhi,衼zhi,倁zhi,疷zhi,祬zhi,秪zhi,脂zhi,隻zhi,梔zhi,椥zhi,搘zhi,禔zhi,綕zhi,榰zhi,蜘zhi,馶zhi,鳷zhi,謢zhi,鴲zhi,織zhi,蘵zhi,鼅zhi,禵zhi,只zhi,鉄zhi,执zhi,侄zhi,坧zhi,直zhi,姪zhi,値zhi,值zhi,聀zhi,釞zhi,埴zhi,執zhi,职zhi,植zhi,殖zhi,絷zhi,跖zhi,墌zhi,摭zhi,馽zhi,嬂zhi,慹zhi,漐zhi,踯zhi,膱zhi,縶zhi,職zhi,蟙zhi,蹠zhi,軄zhi,躑zhi,秇zhi,埶zhi,戠zhi,禃zhi,茝zhi,絺zhi,觝zhi,徴zhi,止zhi,凪zhi,劧zhi,旨zhi,阯zhi,址zhi,坁zhi,帋zhi,沚zhi,纸zhi,芷zhi,抧zhi,祉zhi,茋zhi,咫zhi,恉zhi,指zhi,枳zhi,洔zhi,砋zhi,轵zhi,淽zhi,疻zhi,紙zhi,訨zhi,趾zhi,軹zhi,黹zhi,酯zhi,藢zhi,襧zhi,汦zhi,胵zhi,歭zhi,遟zhi,迣zhi,鶨zhi,亊zhi,銴zhi,至zhi,芖zhi,志zhi,忮zhi,扻zhi,豸zhi,厔zhi,垁zhi,帙zhi,帜zhi,治zhi,炙zhi,质zhi,郅zhi,俧zhi,峙zhi,庢zhi,庤zhi,栉zhi,洷zhi,祑zhi,陟zhi,娡zhi,徏zhi,挚zhi,晊zhi,桎zhi,狾zhi,秩zhi,致zhi,袟zhi,贽zhi,轾zhi,徝zhi,掷zhi,梽zhi,猘zhi,畤zhi,痔zhi,秲zhi,秷zhi,窒zhi,紩zhi,翐zhi,袠zhi,觗zhi,貭zhi,铚zhi,鸷zhi,傂zhi,崻zhi,彘zhi,智zhi,滞zhi,痣zhi,蛭zhi,骘zhi,廌zhi,滍zhi,稙zhi,稚zhi,置zhi,跱zhi,輊zhi,锧zhi,雉zhi,槜zhi,滯zhi,潌zhi,瘈zhi,製zhi,覟zhi,誌zhi,銍zhi,幟zhi,憄zhi,摯zhi,潪zhi,熫zhi,稺zhi,膣zhi,觯zhi,質zhi,踬zhi,鋕zhi,旘zhi,瀄zhi,緻zhi,隲zhi,鴙zhi,儨zhi,劕zhi,懥zhi,擲zhi,櫛zhi,懫zhi,贄zhi,櫍zhi,瓆zhi,觶zhi,騭zhi,礩zhi,豑zhi,騺zhi,驇zhi,躓zhi,鷙zhi,鑕zhi,豒zhi,制zhi,偫zhi,筫zhi,駤zhi,徸zhong,蝩zhong,中zhong,伀zhong,汷zhong,刣zhong,妐zhong,彸zhong,忠zhong,炂zhong,终zhong,柊zhong,盅zhong,衳zhong,钟zhong,舯zhong,衷zhong,終zhong,鈡zhong,幒zhong,蔠zhong,锺zhong,螤zhong,鴤zhong,螽zhong,鍾zhong,鼨zhong,蹱zhong,鐘zhong,籦zhong,衆zhong,迚zhong,肿zhong,种zhong,冢zhong,喠zhong,尰zhong,塚zhong,歱zhong,腫zhong,瘇zhong,種zhong,踵zhong,煄zhong,緟zhong,仲zhong,众zhong,妕zhong,狆zhong,祌zhong,茽zhong,衶zhong,重zhong,蚛zhong,偅zhong,眾zhong,堹zhong,媑zhong,筗zhong,諥zhong,啁zhou,州zhou,舟zhou,诌zhou,侜zhou,周zhou,洲zhou,炿zhou,诪zhou,珘zhou,辀zhou,郮zhou,婤zhou,徟zhou,矪zhou,週zhou,喌zhou,粥zhou,赒zhou,輈zhou,銂zhou,賙zhou,輖zhou,霌zhou,駲zhou,嚋zhou,盩zhou,謅zhou,譸zhou,僽zhou,諏zhou,烐zhou,妯zhou,轴zhou,軸zhou,碡zhou,肘zhou,帚zhou,菷zhou,晭zhou,睭zhou,箒zhou,鯞zhou,疛zhou,椆zhou,詶zhou,薵zhou,纣zhou,伷zhou,呪zhou,咒zhou,宙zhou,绉zhou,冑zhou,咮zhou,昼zhou,紂zhou,胄zhou,荮zhou,晝zhou,皱zhou,酎zhou,粙zhou,葤zhou,詋zhou,甃zhou,皺zhou,駎zhou,噣zhou,縐zhou,骤zhou,籕zhou,籒zhou,驟zhou,籀zhou,蕏zhu,藷zhu,朱zhu,劯zhu,侏zhu,诛zhu,邾zhu,洙zhu,茱zhu,株zhu,珠zhu,诸zhu,猪zhu,硃zhu,袾zhu,铢zhu,絑zhu,蛛zhu,誅zhu,跦zhu,槠zhu,潴zhu,蝫zhu,銖zhu,橥zhu,諸zhu,豬zhu,駯zhu,鮢zhu,瀦zhu,櫧zhu,櫫zhu,鼄zhu,鯺zhu,蠩zhu,秼zhu,騶zhu,鴸zhu,薥zhu,鸀zhu,朮zhu,竹zhu,竺zhu,炢zhu,茿zhu,烛zhu,逐zhu,笜zhu,舳zhu,瘃zhu,蓫zhu,燭zhu,蠋zhu,躅zhu,鱁zhu,劚zhu,孎zhu,灟zhu,斸zhu,曯zhu,欘zhu,蠾zhu,钃zhu,劅zhu,斀zhu,爥zhu,主zhu,宔zhu,拄zhu,砫zhu,罜zhu,渚zhu,煑zhu,煮zhu,詝zhu,嘱zhu,濐zhu,麈zhu,瞩zhu,囑zhu,矚zhu,尌zhu,伫zhu,佇zhu,住zhu,助zhu,纻zhu,苎zhu,坾zhu,杼zhu,苧zhu,贮zhu,驻zhu,壴zhu,柱zhu,柷zhu,殶zhu,炷zhu,祝zhu,疰zhu,眝zhu,祩zhu,竚zhu,莇zhu,紵zhu,紸zhu,羜zhu,蛀zhu,嵀zhu,筑zhu,註zhu,貯zhu,跓zhu,軴zhu,铸zhu,筯zhu,鉒zhu,馵zhu,墸zhu,箸zhu,翥zhu,樦zhu,鋳zhu,駐zhu,築zhu,篫zhu,霔zhu,麆zhu,鑄zhu,櫡zhu,注zhu,飳zhu,抓zhua,檛zhua,膼zhua,髽zhua,跩zhuai,睉zhuai,拽zhuai,耑zhuan,专zhuan,専zhuan,砖zhuan,專zhuan,鄟zhuan,瑼zhuan,膞zhuan,磚zhuan,諯zhuan,蟤zhuan,顓zhuan,颛zhuan,转zhuan,転zhuan,竱zhuan,轉zhuan,簨zhuan,灷zhuan,啭zhuan,堟zhuan,蒃zhuan,瑑zhuan,僎zhuan,撰zhuan,篆zhuan,馔zhuan,饌zhuan,囀zhuan,籑zhuan,僝zhuan,妆zhuang,追zhui,骓zhui,椎zhui,锥zhui,錐zhui,騅zhui,鵻zhui,沝zhui,倕zhui,埀zhui,腏zhui,笍zhui,娷zhui,缀zhui,惴zhui,甀zhui,缒zhui,畷zhui,膇zhui,墜zhui,綴zhui,赘zhui,縋zhui,諈zhui,醊zhui,錣zhui,餟zhui,礈zhui,贅zhui,轛zhui,鑆zhui,坠zhui,湻zhun,宒zhun,迍zhun,肫zhun,窀zhun,谆zhun,諄zhun,衠zhun,訰zhun,准zhun,準zhun,綧zhun,稕zhun,凖zhun,鐯zhuo,拙zhuo,炪zhuo,倬zhuo,捉zhuo,桌zhuo,涿zhuo,棳zhuo,琸zhuo,窧zhuo,槕zhuo,蠿zhuo,矠zhuo,卓zhuo,圴zhuo,犳zhuo,灼zhuo,妰zhuo,茁zhuo,斫zhuo,浊zhuo,丵zhuo,浞zhuo,诼zhuo,酌zhuo,啄zhuo,娺zhuo,梲zhuo,斮zhuo,晫zhuo,椓zhuo,琢zhuo,斱zhuo,硺zhuo,窡zhuo,罬zhuo,撯zhuo,擆zhuo,斲zhuo,禚zhuo,諁zhuo,諑zhuo,濁zhuo,擢zhuo,斵zhuo,濯zhuo,镯zhuo,鵫zhuo,灂zhuo,蠗zhuo,鐲zhuo,籗zhuo,鷟zhuo,籱zhuo,烵zhuo,謶zhuo,薋zi,菑zi,吱zi,孜zi,茊zi,兹zi,咨zi,姕zi,姿zi,茲zi,栥zi,紎zi,赀zi,资zi,崰zi,淄zi,秶zi,缁zi,谘zi,赼zi,嗞zi,嵫zi,椔zi,湽zi,滋zi,粢zi,葘zi,辎zi,鄑zi,孶zi,禌zi,觜zi,貲zi,資zi,趑zi,锱zi,緇zi,鈭zi,镃zi,龇zi,輜zi,鼒zi,澬zi,諮zi,趦zi,輺zi,錙zi,髭zi,鲻zi,鍿zi,頾zi,頿zi,鯔zi,鶅zi,鰦zi,齜zi,訾zi,訿zi,芓zi,孳zi,鎡zi,茈zi,泚zi,籽zi,子zi,姉zi,姊zi,杍zi,矷zi,秄zi,呰zi,秭zi,耔zi,虸zi,笫zi,梓zi,釨zi,啙zi,紫zi,滓zi,榟zi,橴zi,自zi,茡zi,倳zi,剚zi,恣zi,牸zi,渍zi,眥zi,眦zi,胔zi,胾zi,漬zi,字zi,唨zo,潨zong,宗zong,倧zong,综zong,骔zong,堫zong,嵏zong,嵕zong,惾zong,棕zong,猣zong,腙zong,葼zong,朡zong,椶zong,嵸zong,稯zong,緃zong,熧zong,緵zong,翪zong,蝬zong,踨zong,踪zong,磫zong,豵zong,蹤zong,騌zong,鬃zong,騣zong,鬉zong,鯮zong,鯼zong,鑁zong,綜zong,潀zong,潈zong,蓯zong,熜zong,緫zong,总zong,偬zong,捴zong,惣zong,愡zong,揔zong,搃zong,傯zong,蓗zong,摠zong,総zong,燪zong,總zong,鍯zong,鏓zong,縦zong,縂zong,纵zong,昮zong,疭zong,倊zong,猔zong,碂zong,粽zong,糉zong,瘲zong,錝zong,縱zong,邹zou,驺zou,诹zou,陬zou,菆zou,棷zou,棸zou,鄒zou,緅zou,鄹zou,鯫zou,黀zou,齺zou,芻zou,鲰zou,辶zou,赱zou,走zou,鯐zou,搊zou,奏zou,揍zou,租zu,菹zu,錊zu,伜zu,倅zu,紣zu,綷zu,顇zu,卆zu,足zu,卒zu,哫zu,崒zu,崪zu,族zu,稡zu,箤zu,踤zu,踿zu,镞zu,鏃zu,诅zu,阻zu,俎zu,爼zu,祖zu,組zu,詛zu,靻zu,鎺zu,组zu,鉆zuan,劗zuan,躜zuan,鑚zuan,躦zuan,繤zuan,缵zuan,纂zuan,纉zuan,籫zuan,纘zuan,欑zuan,赚zuan,賺zuan,鑽zuan,钻zuan,攥zuan,厜zui,嗺zui,樶zui,蟕zui,纗zui,嶉zui,槯zui,嶊zui,噿zui,濢zui,璻zui,嘴zui,睟zui,枠zui,栬zui,絊zui,酔zui,晬zui,最zui,祽zui,罪zui,辠zui,蕞zui,醉zui,嶵zui,檇zui,檌zui,穝zui,墫zun,尊zun,嶟zun,遵zun,樽zun,繜zun,罇zun,鶎zun,鐏zun,鱒zun,鷷zun,鳟zun,僔zun,噂zun,撙zun,譐zun,拵zun,捘zun,銌zun,咗zuo,昨zuo,秨zuo,捽zuo,椊zuo,稓zuo,筰zuo,鈼zuo,阝zuo,左zuo,佐zuo,繓zuo,酢zuo,作zuo,坐zuo,阼zuo,岝zuo,岞zuo,怍zuo,侳zuo,祚zuo,胙zuo,唑zuo,座zuo,袏zuo,做zuo,葄zuo,蓙zuo,飵zuo,糳zuo,疮chuang,牕chuang,噇chuang,闖chuang,剏chuang,霜shuang,欆shuang,驦shuang,慡shuang,灀shuang,窓chuang,瘡chuang,闯chuang,仺chuang,剙chuang,雙shuang,礵shuang,鸘shuang,樉shuang,谁shui,鹴shuang,爽shuang,鏯shuang,孀shuang,孇shuang,騻shuang,焋zhuang,幢zhuang,撞zhuang,隹zhui,傱shuan,"; \ No newline at end of file diff --git a/examples/assets/scripts/pinyin/pinyin.js b/examples/assets/scripts/pinyin/pinyin.js deleted file mode 100644 index 6f3097124..000000000 --- a/examples/assets/scripts/pinyin/pinyin.js +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Created by Alex on 2016/3/7. - */ -var hzpy = require("./hanziPinyin").hzpy; -var hzpyWithOutYin = require("./hanziPinyinWithoutYin").hzpy; -var _ = require("lodash"); - -function pinyin(word,splitStr) { - splitStr = splitStr === undefined ? ' ' : splitStr; - var str = ''; - var s; - for (var i = 0; i < word.length; i++) { - if (hzpy.indexOf(word.charAt(i)) != -1 && word.charCodeAt(i) > 200) { - s = 1; - while (hzpy.charAt(hzpy.indexOf(word.charAt(i)) + s) != ",") { - str += hzpy.charAt(hzpy.indexOf(word.charAt(i)) + s); - s++; - } - str += splitStr; - } - else { - str += word.charAt(i); - } - } - return str; -} - -//无声调的拼音 -function pinyinWithOutYin(word,splitStr) { - splitStr = splitStr === undefined ? ' ' : splitStr; - var str = ''; - var s; - for (var i = 0; i < word.length; i++) { - if (hzpyWithOutYin.indexOf(word.charAt(i)) != -1 && word.charCodeAt(i) > 200) { - s = 1; - while (hzpyWithOutYin.charAt(hzpyWithOutYin.indexOf(word.charAt(i)) + s) != ",") { - str += hzpyWithOutYin.charAt(hzpyWithOutYin.indexOf(word.charAt(i)) + s); - s++; - } - str +=splitStr; - } - else { - str += word.charAt(i); - } - } - - return str; -} - -function isChineseWord(word, modle) { - if (!modle) { - //modle为false是非严格中文!默认是严格中文 - modle = true; - } - var str = ''; - var isChinese = false; - for (var i = 0; i < word.length; i++) { - if (hzpy.indexOf(word.charAt(i)) != -1 && word.charCodeAt(i) > 200) { - isChinese = true; - } - else { - if (modle) { - return false; - } - } - } - return isChinese; -} - -function sort(array, key) { - return _.sortBy(array, [function (o) { - return pinyinWithOutYin(o[key],""); - }]); -} - -module.exports = { - pinyin: pinyin, - pinyinWithOutYin: pinyinWithOutYin, - isChineseWord: isChineseWord, - sort: sort -} diff --git a/examples/assets/scripts/pinyin/pinyin_dist.js b/examples/assets/scripts/pinyin/pinyin_dist.js index f80ef48b8..98cdde39d 100644 --- a/examples/assets/scripts/pinyin/pinyin_dist.js +++ b/examples/assets/scripts/pinyin/pinyin_dist.js @@ -1,21 +1,23 @@ -var hzpy="吖ā,阿ā,啊ā,锕ā,錒ā,嗄á,厑ae,哎āi,哀āi,唉āi,埃āi,挨āi,溾āi,锿āi,鎄āi,啀ái,捱ái,皑ái,凒ái,嵦ái,溰ái,嘊ái,敱ái,敳ái,皚ái,癌ái,娾ái,隑ái,剴ái,騃ái,毐ǎi,昹ǎi,矮ǎi,蔼ǎi,躷ǎi,濭ǎi,藹ǎi,譪ǎi,霭ǎi,靄ǎi,鯦ǎi,噯ài,艾ài,伌ài,爱ài,砹ài,硋ài,隘ài,嗌ài,塧ài,嫒ài,愛ài,碍ài,叆ài,暧ài,瑷ài,僾ài,壒ài,嬡ài,懓ài,薆ài,懝ài,曖ài,賹ài,餲ài,鴱ài,皧ài,瞹ài,馤ài,礙ài,譺ài,鑀ài,鱫ài,靉ài,閡ài,欬ài,焥ài,堨ài,乂ài,嗳ài,璦ài,安ān,侒ān,峖ān,桉ān,氨ān,庵ān,谙ān,媕ān,萻ān,葊ān,痷ān,腤ān,鹌ān,蓭ān,誝ān,鞌ān,鞍ān,盦ān,闇ān,馣ān,鮟ān,盫ān,鵪ān,韽ān,鶕ān,啽ān,厰ān,鴳ān,諳ān,玵án,雸án,儑án,垵ǎn,俺ǎn,唵ǎn,埯ǎn,铵ǎn,隌ǎn,揞ǎn,晻ǎn,罯ǎn,銨ǎn,碪ǎn,犴àn,岸àn,按àn,洝àn,荌àn,案àn,胺àn,豻àn,堓àn,婩àn,貋àn,錌àn,黯àn,頇àn,屽àn,垾àn,遃àn,暗àn,肮āng,骯āng,岇áng,昂áng,昻áng,卬áng,枊àng,盎àng,醠àng,凹āo,垇āo,柪āo,軪āo,爊āo,熝āo,眑āo,泑āo,梎āo,敖áo,厫áo,隞áo,嗷áo,嗸áo,嶅áo,廒áo,滶áo,獒áo,獓áo,遨áo,摮áo,璈áo,蔜áo,磝áo,翱áo,聱áo,螯áo,翶áo,謷áo,翺áo,鳌áo,鏖áo,鰲áo,鷔áo,鼇áo,慠áo,鏕áo,嚻áo,熬áo,抝ǎo,芺ǎo,袄ǎo,媪ǎo,镺ǎo,媼ǎo,襖ǎo,郩ǎo,鴁ǎo,蝹ǎo,坳ào,岙ào,扷ào,岰ào,傲ào,奡ào,奥ào,嫯ào,奧ào,澚ào,墺ào,嶴ào,澳ào,懊ào,擙ào,謸ào,鏊ào,驁ào,骜ào,吧ba,八bā,仈bā,巴bā,叭bā,扒bā,朳bā,玐bā,夿bā,岜bā,芭bā,疤bā,哵bā,捌bā,笆bā,粑bā,紦bā,羓bā,蚆bā,釟bā,鲃bā,魞bā,鈀bā,柭bā,丷bā,峇bā,豝bā,叐bá,犮bá,抜bá,坺bá,妭bá,拔bá,茇bá,炦bá,癹bá,胈bá,釛bá,菝bá,詙bá,跋bá,軷bá,颰bá,魃bá,墢bá,鼥bá,把bǎ,钯bǎ,靶bǎ,坝bà,弝bà,爸bà,罢bà,鲅bà,罷bà,鮁bà,覇bà,矲bà,霸bà,壩bà,灞bà,欛bà,鲌bà,鮊bà,皅bà,挀bāi,掰bāi,白bái,百bǎi,佰bǎi,柏bǎi,栢bǎi,捭bǎi,竡bǎi,粨bǎi,絔bǎi,摆bǎi,擺bǎi,襬bǎi,庍bài,拝bài,败bài,拜bài,敗bài,稗bài,粺bài,鞁bài,薭bài,贁bài,韛bài,扳bān,攽bān,朌bān,班bān,般bān,颁bān,斑bān,搬bān,斒bān,頒bān,瘢bān,螁bān,螌bān,褩bān,癍bān,辬bān,籓bān,肦bān,鳻bān,搫bān,阪bǎn,坂bǎn,岅bǎn,昄bǎn,板bǎn,版bǎn,钣bǎn,粄bǎn,舨bǎn,鈑bǎn,蝂bǎn,魬bǎn,覂bǎn,瓪bǎn,办bàn,半bàn,伴bàn,扮bàn,姅bàn,怑bàn,拌bàn,绊bàn,秚bàn,湴bàn,絆bàn,鉡bàn,靽bàn,辦bàn,瓣bàn,跘bàn,邦bāng,峀bāng,垹bāng,帮bāng,捠bāng,梆bāng,浜bāng,邫bāng,幚bāng,縍bāng,幫bāng,鞤bāng,幇bāng,绑bǎng,綁bǎng,榜bǎng,牓bǎng,膀bǎng,騯bǎng,玤bàng,蚌bàng,傍bàng,棒bàng,棓bàng,硥bàng,谤bàng,塝bàng,徬bàng,稖bàng,蒡bàng,蜯bàng,镑bàng,艕bàng,謗bàng,鎊bàng,埲bàng,蚄bàng,蛖bàng,嫎bàng,勹bāo,包bāo,佨bāo,孢bāo,胞bāo,剝bāo,笣bāo,煲bāo,龅bāo,蕔bāo,褒bāo,闁bāo,襃bāo,齙bāo,剥bāo,枹bāo,裦bāo,苞bāo,窇báo,嫑báo,雹báo,铇báo,薄báo,宝bǎo,怉bǎo,饱bǎo,保bǎo,鸨bǎo,珤bǎo,堡bǎo,堢bǎo,媬bǎo,葆bǎo,寚bǎo,飹bǎo,飽bǎo,褓bǎo,駂bǎo,鳵bǎo,緥bǎo,賲bǎo,藵bǎo,寳bǎo,寶bǎo,靌bǎo,宀bǎo,鴇bǎo,勽bào,报bào,抱bào,豹bào,菢bào,袌bào,報bào,鉋bào,鲍bào,靤bào,骲bào,暴bào,髱bào,虣bào,鮑bào,儤bào,曓bào,爆bào,忁bào,鑤bào,蚫bào,瀑bào,萡be,呗bei,唄bei,陂bēi,卑bēi,盃bēi,桮bēi,悲bēi,揹bēi,碑bēi,鹎bēi,藣bēi,鵯bēi,柸bēi,錍bēi,椑bēi,諀bēi,杯bēi,喺béi,北běi,鉳běi,垻bèi,贝bèi,狈bèi,貝bèi,邶bèi,备bèi,昁bèi,牬bèi,苝bèi,背bèi,钡bèi,俻bèi,倍bèi,悖bèi,狽bèi,被bèi,偝bèi,偹bèi,梖bèi,珼bèi,備bèi,僃bèi,惫bèi,焙bèi,琲bèi,軰bèi,辈bèi,愂bèi,碚bèi,禙bèi,蓓bèi,蛽bèi,犕bèi,褙bèi,誖bèi,骳bèi,輩bèi,鋇bèi,憊bèi,糒bèi,鞴bèi,鐾bèi,鐴bèi,杮bèi,韝bèi,棑bèi,哱bèi,鄁bèi,奔bēn,泍bēn,贲bēn,倴bēn,渀bēn,逩bēn,犇bēn,賁bēn,錛bēn,喯bēn,锛bēn,本běn,苯běn,奙běn,畚běn,楍běn,翉běn,夲běn,坌bèn,捹bèn,桳bèn,笨bèn,撪bèn,獖bèn,輽bèn,炃bèn,燌bèn,夯bèn,伻bēng,祊bēng,奟bēng,崩bēng,绷bēng,絣bēng,閍bēng,嵭bēng,痭bēng,嘣bēng,綳bēng,繃bēng,嗙bēng,挷bēng,傰bēng,搒bēng,甭béng,埄běng,菶běng,琣běng,鞛běng,琫běng,泵bèng,迸bèng,逬bèng,跰bèng,塴bèng,甏bèng,镚bèng,蹦bèng,鏰bèng,錋bèng,皀bī,屄bī,偪bī,毴bī,逼bī,豍bī,螕bī,鲾bī,鎞bī,鵖bī,鰏bī,悂bī,鈚bī,柲bí,荸bí,鼻bí,嬶bí,匕bǐ,比bǐ,夶bǐ,朼bǐ,佊bǐ,妣bǐ,沘bǐ,疕bǐ,彼bǐ,柀bǐ,秕bǐ,俾bǐ,笔bǐ,粃bǐ,粊bǐ,舭bǐ,啚bǐ,筆bǐ,鄙bǐ,聛bǐ,貏bǐ,箄bǐ,崥bǐ,魮bǐ,娝bǐ,箃bǐ,吡bǐ,匂bì,币bì,必bì,毕bì,闭bì,佖bì,坒bì,庇bì,诐bì,邲bì,妼bì,怭bì,枈bì,畀bì,苾bì,哔bì,毖bì,珌bì,疪bì,胇bì,荜bì,陛bì,毙bì,狴bì,畢bì,袐bì,铋bì,婢bì,庳bì,敝bì,梐bì,萆bì,萞bì,閇bì,閉bì,堛bì,弻bì,弼bì,愊bì,愎bì,湢bì,皕bì,禆bì,筚bì,貱bì,赑bì,嗶bì,彃bì,楅bì,滗bì,滭bì,煏bì,痹bì,痺bì,腷bì,蓖bì,蓽bì,蜌bì,裨bì,跸bì,鉍bì,閟bì,飶bì,幣bì,弊bì,熚bì,獙bì,碧bì,稫bì,箅bì,箆bì,綼bì,蔽bì,馝bì,幤bì,潷bì,獘bì,罼bì,襅bì,駜bì,髲bì,壁bì,嬖bì,廦bì,篦bì,篳bì,縪bì,薜bì,觱bì,避bì,鮅bì,斃bì,濞bì,臂bì,蹕bì,鞞bì,髀bì,奰bì,璧bì,鄨bì,饆bì,繴bì,襞bì,鏎bì,鞸bì,韠bì,躃bì,躄bì,魓bì,贔bì,驆bì,鷝bì,鷩bì,鼊bì,咇bì,鮩bì,畐bì,踾bì,鶝bì,闬bì,閈bì,祕bì,鴓bì,怶bì,旇bì,翍bì,肶bì,笓bì,鸊bì,肸bì,畁bì,詖bì,鄪bì,襣bì,边biān,砭biān,笾biān,猵biān,编biān,萹biān,煸biān,牑biān,甂biān,箯biān,編biān,蝙biān,獱biān,邉biān,鍽biān,鳊biān,邊biān,鞭biān,鯿biān,籩biān,糄biān,揙biān,臱biān,鯾biān,炞biǎn,贬biǎn,扁biǎn,窆biǎn,匾biǎn,貶biǎn,惼biǎn,碥biǎn,稨biǎn,褊biǎn,鴘biǎn,藊biǎn,釆biǎn,辧biǎn,疺biǎn,覵biǎn,鶣biǎn,卞biàn,弁biàn,忭biàn,抃biàn,汳biàn,汴biàn,苄biàn,峅biàn,便biàn,变biàn,変biàn,昪biàn,覍biàn,缏biàn,遍biàn,閞biàn,辡biàn,緶biàn,艑biàn,辨biàn,辩biàn,辫biàn,辮biàn,辯biàn,變biàn,彪biāo,标biāo,飑biāo,骉biāo,髟biāo,淲biāo,猋biāo,脿biāo,墂biāo,幖biāo,滮biāo,蔈biāo,骠biāo,標biāo,熛biāo,膘biāo,麃biāo,瘭biāo,镖biāo,飙biāo,飚biāo,儦biāo,颷biāo,瀌biāo,藨biāo,謤biāo,爂biāo,臕biāo,贆biāo,鏢biāo,穮biāo,镳biāo,飆biāo,飇biāo,飈biāo,飊biāo,驃biāo,鑣biāo,驫biāo,摽biāo,膔biāo,篻biāo,僄biāo,徱biāo,表biǎo,婊biǎo,裱biǎo,褾biǎo,錶biǎo,檦biǎo,諘biǎo,俵biào,鳔biào,鰾biào,憋biē,鳖biē,鱉biē,鼈biē,虌biē,龞biē,蟞biē,別bié,别bié,莂bié,蛂bié,徶bié,襒bié,蹩bié,穪bié,瘪biě,癟biě,彆biè,汃bīn,邠bīn,砏bīn,宾bīn,彬bīn,斌bīn,椕bīn,滨bīn,缤bīn,槟bīn,瑸bīn,豩bīn,賓bīn,賔bīn,镔bīn,儐bīn,濒bīn,濱bīn,濵bīn,虨bīn,豳bīn,璸bīn,瀕bīn,霦bīn,繽bīn,蠙bīn,鑌bīn,顮bīn,檳bīn,玢bīn,訜bīn,傧bīn,氞bìn,摈bìn,殡bìn,膑bìn,髩bìn,擯bìn,鬂bìn,臏bìn,髌bìn,鬓bìn,髕bìn,鬢bìn,殯bìn,仌bīng,氷bīng,冰bīng,兵bīng,栟bīng,掤bīng,梹bīng,鋲bīng,幷bīng,丙bǐng,邴bǐng,陃bǐng,怲bǐng,抦bǐng,秉bǐng,苪bǐng,昞bǐng,昺bǐng,柄bǐng,炳bǐng,饼bǐng,眪bǐng,窉bǐng,蛃bǐng,禀bǐng,鈵bǐng,鉼bǐng,鞆bǐng,餅bǐng,餠bǐng,燷bǐng,庰bǐng,偋bǐng,寎bǐng,綆bǐng,稟bǐng,癛bǐng,癝bǐng,琕bǐng,棅bǐng,并bìng,並bìng,併bìng,垪bìng,倂bìng,栤bìng,病bìng,竝bìng,傡bìng,摒bìng,誁bìng,靐bìng,疒bìng,啵bo,蔔bo,卜bo,噃bo,趵bō,癶bō,拨bō,波bō,玻bō,袚bō,袯bō,钵bō,饽bō,紴bō,缽bō,菠bō,碆bō,鉢bō,僠bō,嶓bō,撥bō,播bō,餑bō,磻bō,蹳bō,驋bō,鱍bō,帗bō,盋bō,脖bó,仢bó,伯bó,孛bó,犻bó,驳bó,帛bó,泊bó,狛bó,苩bó,侼bó,勃bó,胉bó,郣bó,亳bó,挬bó,浡bó,瓟bó,秡bó,钹bó,铂bó,桲bó,淿bó,舶bó,博bó,渤bó,湐bó,葧bó,鹁bó,愽bó,搏bó,猼bó,鈸bó,鉑bó,馎bó,僰bó,煿bó,箔bó,膊bó,艊bó,馛bó,駁bó,踣bó,鋍bó,镈bó,壆bó,馞bó,駮bó,豰bó,嚗bó,懪bó,礡bó,簙bó,鎛bó,餺bó,鵓bó,犦bó,髆bó,髉bó,欂bó,襮bó,礴bó,鑮bó,肑bó,茀bó,袹bó,穛bó,彴bó,瓝bó,牔bó,蚾bǒ,箥bǒ,跛bǒ,簸bò,孹bò,擘bò,檗bò,糪bò,譒bò,蘗bò,襎bò,檘bò,蔢bò,峬bū,庯bū,逋bū,钸bū,晡bū,鈽bū,誧bū,餔bū,鵏bū,秿bū,陠bū,鯆bū,轐bú,醭bú,不bú,輹bú,卟bǔ,补bǔ,哺bǔ,捕bǔ,補bǔ,鳪bǔ,獛bǔ,鸔bǔ,擈bǔ,佈bù,吥bù,步bù,咘bù,怖bù,歨bù,歩bù,钚bù,勏bù,埗bù,悑bù,捗bù,荹bù,部bù,埠bù,瓿bù,鈈bù,廍bù,蔀bù,踄bù,郶bù,篰bù,餢bù,簿bù,尃bù,箁bù,抪bù,柨bù,布bù,擦cā,攃cā,礤cǎ,礸cǎ,遪cà,偲cāi,猜cāi,揌cāi,才cái,材cái,财cái,財cái,戝cái,裁cái,采cǎi,倸cǎi,埰cǎi,婇cǎi,寀cǎi,彩cǎi,採cǎi,睬cǎi,跴cǎi,綵cǎi,踩cǎi,菜cài,棌cài,蔡cài,縩cài,乲cal,参cān,參cān,飡cān,骖cān,喰cān,湌cān,傪cān,嬠cān,餐cān,驂cān,嵾cān,飱cān,残cán,蚕cán,惭cán,殘cán,慚cán,蝅cán,慙cán,蠶cán,蠺cán,惨cǎn,慘cǎn,噆cǎn,憯cǎn,黪cǎn,黲cǎn,灿càn,粲càn,儏càn,澯càn,薒càn,燦càn,璨càn,爘càn,謲càn,仓cāng,沧cāng,苍cāng,倉cāng,舱cāng,凔cāng,嵢cāng,滄cāng,獊cāng,蒼cāng,濸cāng,艙cāng,螥cāng,罉cāng,藏cáng,欌cáng,鑶cáng,賶càng,撡cāo,操cāo,糙cāo,曺cáo,嘈cáo,嶆cáo,漕cáo,蓸cáo,槽cáo,褿cáo,艚cáo,螬cáo,鏪cáo,慒cáo,曹cáo,艹cǎo,艸cǎo,草cǎo,愺cǎo,懆cǎo,騲cǎo,慅cǎo,肏cào,鄵cào,襙cào,冊cè,册cè,侧cè,厕cè,恻cè,拺cè,测cè,荝cè,敇cè,側cè,粣cè,萗cè,廁cè,惻cè,測cè,策cè,萴cè,筞cè,蓛cè,墄cè,箣cè,憡cè,刂cè,厠cè,膥cēn,岑cén,梣cén,涔cén,硶cén,噌cēng,层céng,層céng,竲céng,驓céng,曾céng,蹭cèng,硛ceok,硳ceok,岾ceom,猠ceon,乽ceor,嚓chā,叉chā,扠chā,芆chā,杈chā,肞chā,臿chā,訍chā,偛chā,嗏chā,插chā,銟chā,锸chā,艖chā,疀chā,鍤chā,鎈chā,垞chá,查chá,査chá,茬chá,茶chá,嵖chá,猹chá,靫chá,槎chá,察chá,碴chá,褨chá,檫chá,搽chá,衩chǎ,镲chǎ,鑔chǎ,奼chà,汊chà,岔chà,侘chà,诧chà,剎chà,姹chà,差chà,紁chà,詫chà,拆chāi,钗chāi,釵chāi,犲chái,侪chái,柴chái,祡chái,豺chái,儕chái,喍chái,虿chài,袃chài,瘥chài,蠆chài,囆chài,辿chān,觇chān,梴chān,掺chān,搀chān,覘chān,裧chān,摻chān,鋓chān,幨chān,襜chān,攙chān,嚵chān,脠chān,婵chán,谗chán,孱chán,棎chán,湹chán,禅chán,馋chán,嬋chán,煘chán,缠chán,獑chán,蝉chán,誗chán,鋋chán,儃chán,廛chán,潹chán,潺chán,緾chán,磛chán,禪chán,毚chán,鄽chán,瀍chán,蟬chán,儳chán,劖chán,蟾chán,酁chán,壥chán,巉chán,瀺chán,纏chán,纒chán,躔chán,艬chán,讒chán,鑱chán,饞chán,繟chán,澶chán,镵chán,产chǎn,刬chǎn,旵chǎn,丳chǎn,浐chǎn,剗chǎn,谄chǎn,產chǎn,産chǎn,铲chǎn,阐chǎn,蒇chǎn,剷chǎn,嵼chǎn,摌chǎn,滻chǎn,幝chǎn,蕆chǎn,諂chǎn,閳chǎn,燀chǎn,簅chǎn,冁chǎn,醦chǎn,闡chǎn,囅chǎn,灛chǎn,讇chǎn,墠chǎn,骣chǎn,鏟chǎn,忏chàn,硟chàn,摲chàn,懴chàn,颤chàn,懺chàn,羼chàn,韂chàn,顫chàn,伥chāng,昌chāng,倀chāng,娼chāng,淐chāng,猖chāng,菖chāng,阊chāng,晿chāng,椙chāng,琩chāng,裮chāng,锠chāng,錩chāng,閶chāng,鲳chāng,鯧chāng,鼚chāng,兏cháng,肠cháng,苌cháng,尝cháng,偿cháng,常cháng,徜cháng,瓺cháng,萇cháng,甞cháng,腸cháng,嘗cháng,嫦cháng,瑺cháng,膓cháng,鋿cháng,償cháng,嚐cháng,蟐cháng,鲿cháng,鏛cháng,鱨cháng,棖cháng,尙cháng,厂chǎng,场chǎng,昶chǎng,場chǎng,敞chǎng,僘chǎng,廠chǎng,氅chǎng,鋹chǎng,惝chǎng,怅chàng,玚chàng,畅chàng,倡chàng,鬯chàng,唱chàng,悵chàng,暢chàng,畼chàng,誯chàng,韔chàng,抄chāo,弨chāo,怊chāo,欩chāo,钞chāo,焯chāo,超chāo,鈔chāo,繛chāo,樔chāo,绰chāo,綽chāo,綤chāo,牊cháo,巢cháo,巣cháo,朝cháo,鄛cháo,漅cháo,嘲cháo,潮cháo,窲cháo,罺cháo,轈cháo,晁cháo,吵chǎo,炒chǎo,眧chǎo,煼chǎo,麨chǎo,巐chǎo,粆chǎo,仦chào,耖chào,觘chào,趠chào,车chē,車chē,砗chē,唓chē,硨chē,蛼chē,莗chē,扯chě,偖chě,撦chě,彻chè,坼chè,迠chè,烢chè,聅chè,掣chè,硩chè,頙chè,徹chè,撤chè,澈chè,勶chè,瞮chè,爡chè,喢chè,賝chen,伧chen,傖chen,抻chēn,郴chēn,棽chēn,琛chēn,嗔chēn,綝chēn,諃chēn,尘chén,臣chén,忱chén,沉chén,辰chén,陈chén,茞chén,宸chén,烥chén,莐chén,陳chén,敐chén,晨chén,訦chén,谌chén,揨chén,煁chén,蔯chén,塵chén,樄chén,瘎chén,霃chén,螴chén,諶chén,麎chén,曟chén,鷐chén,薼chén,趻chěn,碜chěn,墋chěn,夦chěn,磣chěn,踸chěn,贂chěn,衬chèn,疢chèn,龀chèn,趁chèn,榇chèn,齓chèn,齔chèn,嚫chèn,谶chèn,襯chèn,讖chèn,瀋chèn,称chēng,稱chēng,阷chēng,泟chēng,柽chēng,爯chēng,棦chēng,浾chēng,偁chēng,蛏chēng,铛chēng,牚chēng,琤chēng,赪chēng,憆chēng,摚chēng,靗chēng,撐chēng,撑chēng,緽chēng,橕chēng,瞠chēng,赬chēng,頳chēng,檉chēng,竀chēng,蟶chēng,鏳chēng,鏿chēng,饓chēng,鐺chēng,丞chéng,成chéng,呈chéng,承chéng,枨chéng,诚chéng,郕chéng,乗chéng,城chéng,娍chéng,宬chéng,峸chéng,洆chéng,荿chéng,乘chéng,埕chéng,挰chéng,珹chéng,掁chéng,窚chéng,脭chéng,铖chéng,堘chéng,惩chéng,椉chéng,程chéng,筬chéng,絾chéng,裎chéng,塖chéng,溗chéng,碀chéng,誠chéng,畻chéng,酲chéng,鋮chéng,澄chéng,橙chéng,檙chéng,鯎chéng,瀓chéng,懲chéng,騬chéng,塍chéng,悜chěng,逞chěng,骋chěng,庱chěng,睈chěng,騁chěng,秤chèng,吃chī,妛chī,杘chī,侙chī,哧chī,蚩chī,鸱chī,瓻chī,眵chī,笞chī,訵chī,嗤chī,媸chī,摛chī,痴chī,瞝chī,螭chī,鴟chī,鵄chī,癡chī,魑chī,齝chī,攡chī,麶chī,彲chī,黐chī,蚳chī,摴chī,彨chī,弛chí,池chí,驰chí,迟chí,岻chí,茌chí,持chí,竾chí,淔chí,筂chí,貾chí,遅chí,馳chí,墀chí,踟chí,遲chí,篪chí,謘chí,尺chǐ,叺chǐ,呎chǐ,肔chǐ,卶chǐ,齿chǐ,垑chǐ,胣chǐ,恥chǐ,耻chǐ,蚇chǐ,豉chǐ,欼chǐ,歯chǐ,裭chǐ,鉹chǐ,褫chǐ,齒chǐ,侈chǐ,彳chì,叱chì,斥chì,灻chì,赤chì,饬chì,抶chì,勅chì,恜chì,炽chì,翄chì,翅chì,烾chì,痓chì,啻chì,湁chì,飭chì,傺chì,痸chì,腟chì,鉓chì,雴chì,憏chì,翤chì,遫chì,慗chì,瘛chì,翨chì,熾chì,懘chì,趩chì,饎chì,鶒chì,鷘chì,餝chì,歗chì,敕chì,充chōng,冲chōng,忡chōng,茺chōng,珫chōng,翀chōng,舂chōng,嘃chōng,摏chōng,憃chōng,憧chōng,衝chōng,罿chōng,艟chōng,蹖chōng,褈chōng,傭chōng,浺chōng,虫chóng,崇chóng,崈chóng,隀chóng,蟲chóng,宠chǒng,埫chǒng,寵chǒng,沖chòng,铳chòng,銃chòng,抽chōu,紬chōu,瘳chōu,篘chōu,犨chōu,犫chōu,跾chōu,掫chōu,仇chóu,俦chóu,栦chóu,惆chóu,绸chóu,菗chóu,畴chóu,絒chóu,愁chóu,皗chóu,稠chóu,筹chóu,酧chóu,酬chóu,綢chóu,踌chóu,儔chóu,雔chóu,嬦chóu,懤chóu,雠chóu,疇chóu,籌chóu,躊chóu,讎chóu,讐chóu,擣chóu,燽chóu,丑chǒu,丒chǒu,吜chǒu,杽chǒu,侴chǒu,瞅chǒu,醜chǒu,矁chǒu,魗chǒu,臭chòu,遚chòu,殠chòu,榋chu,橻chu,屮chū,出chū,岀chū,初chū,樗chū,貙chū,齣chū,刍chú,除chú,厨chú,滁chú,蒢chú,豠chú,锄chú,耡chú,蒭chú,蜍chú,趎chú,鉏chú,雏chú,犓chú,廚chú,篨chú,鋤chú,橱chú,懨chú,幮chú,櫉chú,蟵chú,躇chú,雛chú,櫥chú,蹰chú,鶵chú,躕chú,媰chú,杵chǔ,础chǔ,储chǔ,楮chǔ,禇chǔ,楚chǔ,褚chǔ,濋chǔ,儲chǔ,檚chǔ,璴chǔ,礎chǔ,齭chǔ,齼chǔ,処chǔ,椘chǔ,亍chù,处chù,竌chù,怵chù,拀chù,绌chù,豖chù,竐chù,俶chù,敊chù,珿chù,絀chù,處chù,傗chù,琡chù,搐chù,触chù,踀chù,閦chù,儊chù,憷chù,斶chù,歜chù,臅chù,黜chù,觸chù,矗chù,觕chù,畜chù,鄐chù,搋chuāi,揣chuāi,膗chuái,嘬chuài,踹chuài,膪chuài,巛chuān,川chuān,氚chuān,穿chuān,剶chuān,瑏chuān,传chuán,舡chuán,船chuán,猭chuán,遄chuán,傳chuán,椽chuán,歂chuán,暷chuán,輲chuán,甎chuán,舛chuǎn,荈chuǎn,喘chuǎn,僢chuǎn,堾chuǎn,踳chuǎn,汌chuàn,串chuàn,玔chuàn,钏chuàn,釧chuàn,賗chuàn,刅chuāng,炊chuī,龡chuī,圌chuí,垂chuí,桘chuí,陲chuí,捶chuí,菙chuí,棰chuí,槌chuí,锤chuí,箠chuí,顀chuí,錘chuí,鰆chun,旾chūn,杶chūn,春chūn,萅chūn,媋chūn,暙chūn,椿chūn,槆chūn,瑃chūn,箺chūn,蝽chūn,橁chūn,輴chūn,櫄chūn,鶞chūn,纯chún,陙chún,唇chún,浱chún,純chún,莼chún,淳chún,脣chún,犉chún,滣chún,鹑chún,漘chún,醇chún,醕chún,鯙chún,鶉chún,蒓chún,偆chǔn,萶chǔn,惷chǔn,睶chǔn,賰chǔn,蠢chǔn,踔chuō,戳chuō,啜chuò,辵chuò,娕chuò,娖chuò,惙chuò,涰chuò,逴chuò,辍chuò,酫chuò,龊chuò,擉chuò,磭chuò,歠chuò,嚽chuò,齪chuò,鑡chuò,齱chuò,婼chuò,鋜chuò,輟chuò,呲cī,玼cī,疵cī,趀cī,偨cī,縒cī,跐cī,髊cī,齹cī,枱cī,词cí,珁cí,垐cí,柌cí,祠cí,茨cí,瓷cí,詞cí,辝cí,慈cí,甆cí,辞cí,鈶cí,雌cí,鹚cí,糍cí,辤cí,飺cí,餈cí,嬨cí,濨cí,鴜cí,礠cí,辭cí,鶿cí,鷀cí,磁cí,此cǐ,佌cǐ,皉cǐ,朿cì,次cì,佽cì,刺cì,刾cì,庛cì,茦cì,栨cì,莿cì,絘cì,赐cì,螆cì,賜cì,蛓cì,嗭cis,囱cōng,匆cōng,囪cōng,苁cōng,忩cōng,枞cōng,茐cōng,怱cōng,悤cōng,棇cōng,焧cōng,葱cōng,楤cōng,漗cōng,聡cōng,蔥cōng,骢cōng,暰cōng,樅cōng,樬cōng,瑽cōng,璁cōng,聪cōng,瞛cōng,篵cōng,聰cōng,蟌cōng,繱cōng,鏦cōng,騘cōng,驄cōng,聦cōng,从cóng,從cóng,丛cóng,従cóng,婃cóng,孮cóng,徖cóng,悰cóng,淙cóng,琮cóng,漎cóng,誴cóng,賨cóng,賩cóng,樷cóng,藂cóng,叢cóng,灇cóng,欉cóng,爜cóng,憁còng,謥còng,凑còu,湊còu,楱còu,腠còu,辏còu,輳còu,粗cū,麁cū,麄cū,麤cū,徂cú,殂cú,蔖cǔ,促cù,猝cù,媨cù,瘄cù,蔟cù,誎cù,趗cù,憱cù,醋cù,瘯cù,簇cù,縬cù,鼀cù,蹴cù,蹵cù,顣cù,蹙cù,汆cuān,撺cuān,镩cuān,蹿cuān,攛cuān,躥cuān,鑹cuān,攅cuán,櫕cuán,巑cuán,攢cuán,窜cuàn,熶cuàn,篡cuàn,殩cuàn,篹cuàn,簒cuàn,竄cuàn,爨cuàn,乼cui,崔cuī,催cuī,凗cuī,墔cuī,摧cuī,榱cuī,獕cuī,磪cuī,鏙cuī,漼cuī,慛cuī,璀cuǐ,皠cuǐ,熣cuǐ,繀cuǐ,忰cuì,疩cuì,翆cuì,脃cuì,脆cuì,啐cuì,啛cuì,悴cuì,淬cuì,萃cuì,毳cuì,焠cuì,瘁cuì,粹cuì,膵cuì,膬cuì,竁cuì,臎cuì,琗cuì,粋cuì,脺cuì,翠cuì,邨cūn,村cūn,皴cūn,澊cūn,竴cūn,存cún,刌cǔn,忖cǔn,寸cùn,籿cùn,襊cuō,搓cuō,瑳cuō,遳cuō,磋cuō,撮cuō,蹉cuō,醝cuō,虘cuó,嵯cuó,痤cuó,矬cuó,蒫cuó,鹾cuó,鹺cuó,嵳cuó,脞cuǒ,剉cuò,剒cuò,厝cuò,夎cuò,挫cuò,莝cuò,莡cuò,措cuò,逪cuò,棤cuò,锉cuò,蓌cuò,错cuò,銼cuò,錯cuò,疸da,咑dā,哒dā,耷dā,畣dā,搭dā,嗒dā,噠dā,撘dā,鎝dā,笚dā,矺dā,褡dā,墶dá,达dá,迏dá,迖dá,妲dá,怛dá,垯dá,炟dá,羍dá,荅dá,荙dá,剳dá,匒dá,笪dá,逹dá,溚dá,答dá,詚dá,達dá,跶dá,瘩dá,靼dá,薘dá,鞑dá,燵dá,蟽dá,鎉dá,躂dá,鐽dá,韃dá,龖dá,龘dá,搨dá,繨dá,打dǎ,觰dǎ,大dà,亣dà,眔dà,橽dà,汏dà,呆dāi,獃dāi,懛dāi,歹dǎi,傣dǎi,逮dǎi,代dài,轪dài,侢dài,垈dài,岱dài,帒dài,甙dài,绐dài,迨dài,带dài,待dài,柋dài,殆dài,玳dài,贷dài,帯dài,軑dài,埭dài,帶dài,紿dài,蚮dài,袋dài,軚dài,貸dài,軩dài,瑇dài,廗dài,叇dài,曃dài,緿dài,鮘dài,鴏dài,戴dài,艜dài,黛dài,簤dài,蹛dài,瀻dài,霴dài,襶dài,靆dài,螮dài,蝳dài,跢dài,箉dài,骀dài,怠dài,黱dài,愖dān,丹dān,妉dān,单dān,担dān,単dān,眈dān,砃dān,耼dān,耽dān,郸dān,聃dān,躭dān,酖dān,單dān,媅dān,殚dān,瘅dān,匰dān,箪dān,褝dān,鄲dān,頕dān,儋dān,勯dān,擔dān,殫dān,癉dān,襌dān,簞dān,瓭dān,卩dān,亻dān,娊dān,噡dān,聸dān,伔dǎn,刐dǎn,狚dǎn,玬dǎn,胆dǎn,衴dǎn,紞dǎn,掸dǎn,亶dǎn,馾dǎn,撣dǎn,澸dǎn,黕dǎn,膽dǎn,丼dǎn,抌dǎn,赕dǎn,賧dǎn,黵dǎn,黮dǎn,繵dàn,譂dàn,旦dàn,但dàn,帎dàn,沊dàn,泹dàn,诞dàn,柦dàn,疍dàn,啖dàn,啗dàn,弹dàn,惮dàn,淡dàn,蛋dàn,啿dàn,氮dàn,腅dàn,蜑dàn,觛dàn,窞dàn,誕dàn,僤dàn,噉dàn,髧dàn,嘾dàn,彈dàn,憚dàn,憺dàn,澹dàn,禫dàn,餤dàn,駳dàn,鴠dàn,甔dàn,癚dàn,嚪dàn,贉dàn,霮dàn,饏dàn,蟺dàn,倓dàn,惔dàn,弾dàn,醈dàn,撢dàn,萏dàn,当dāng,珰dāng,裆dāng,筜dāng,儅dāng,噹dāng,澢dāng,璫dāng,襠dāng,簹dāng,艡dāng,蟷dāng,當dāng,挡dǎng,党dǎng,谠dǎng,擋dǎng,譡dǎng,黨dǎng,灙dǎng,欓dǎng,讜dǎng,氹dàng,凼dàng,圵dàng,宕dàng,砀dàng,垱dàng,荡dàng,档dàng,菪dàng,瓽dàng,逿dàng,潒dàng,碭dàng,瞊dàng,蕩dàng,趤dàng,壋dàng,檔dàng,璗dàng,盪dàng,礑dàng,簜dàng,蘯dàng,闣dàng,愓dàng,嵣dàng,偒dàng,雼dàng,裯dāo,刀dāo,叨dāo,屶dāo,忉dāo,氘dāo,舠dāo,釖dāo,鱽dāo,魛dāo,虭dāo,捯dáo,导dǎo,岛dǎo,陦dǎo,倒dǎo,宲dǎo,捣dǎo,祷dǎo,禂dǎo,搗dǎo,隝dǎo,嶋dǎo,嶌dǎo,槝dǎo,導dǎo,隯dǎo,壔dǎo,嶹dǎo,蹈dǎo,禱dǎo,菿dǎo,島dǎo,帱dào,幬dào,到dào,悼dào,盗dào,椡dào,盜dào,道dào,稲dào,翢dào,噵dào,稻dào,衜dào,檤dào,衟dào,翿dào,軇dào,瓙dào,纛dào,箌dào,的de,嘚dē,恴dé,得dé,淂dé,悳dé,惪dé,锝dé,徳dé,德dé,鍀dé,棏dé,揼dem,扥den,扽den,灯dēng,登dēng,豋dēng,噔dēng,嬁dēng,燈dēng,璒dēng,竳dēng,簦dēng,艠dēng,覴dēng,蹬dēng,墱dēng,戥děng,等děng,澂dèng,邓dèng,僜dèng,凳dèng,鄧dèng,隥dèng,嶝dèng,瞪dèng,磴dèng,镫dèng,櫈dèng,鐙dèng,仾dī,低dī,奃dī,彽dī,袛dī,啲dī,埞dī,羝dī,隄dī,堤dī,趆dī,嘀dī,滴dī,磾dī,鍉dī,鞮dī,氐dī,牴dī,碮dī,踧dí,镝dí,廸dí,狄dí,籴dí,苖dí,迪dí,唙dí,敌dí,涤dí,荻dí,梑dí,笛dí,觌dí,靮dí,滌dí,髢dí,嫡dí,蔋dí,蔐dí,頔dí,魡dí,敵dí,篴dí,嚁dí,藡dí,豴dí,糴dí,覿dí,鸐dí,藋dí,鬄dí,樀dí,蹢dí,鏑dí,泜dǐ,诋dǐ,邸dǐ,阺dǐ,呧dǐ,坻dǐ,底dǐ,弤dǐ,抵dǐ,拞dǐ,柢dǐ,砥dǐ,掋dǐ,菧dǐ,詆dǐ,軧dǐ,聜dǐ,骶dǐ,鯳dǐ,坘dǐ,厎dǐ,赿dì,地dì,弚dì,坔dì,弟dì,旳dì,杕dì,玓dì,怟dì,枤dì,苐dì,帝dì,埊dì,娣dì,递dì,逓dì,偙dì,啇dì,梊dì,焍dì,眱dì,祶dì,第dì,菂dì,谛dì,釱dì,媂dì,棣dì,睇dì,缔dì,蒂dì,僀dì,禘dì,腣dì,遞dì,鉪dì,馰dì,墑dì,墬dì,摕dì,碲dì,蝃dì,遰dì,慸dì,甋dì,締dì,嶳dì,諦dì,踶dì,弔dì,嵽dì,諟dì,珶dì,渧dì,蹏dì,揥dì,墆dì,疐dì,俤dì,蔕dì,嗲diǎ,敁diān,掂diān,傎diān,厧diān,嵮diān,滇diān,槙diān,瘨diān,颠diān,蹎diān,巅diān,顚diān,顛diān,癫diān,巓diān,巔diān,攧diān,癲diān,齻diān,槇diān,典diǎn,点diǎn,婰diǎn,敟diǎn,椣diǎn,碘diǎn,蒧diǎn,蕇diǎn,踮diǎn,點diǎn,痶diǎn,丶diǎn,奌diǎn,电diàn,佃diàn,甸diàn,坫diàn,店diàn,垫diàn,扂diàn,玷diàn,钿diàn,唸diàn,婝diàn,惦diàn,淀diàn,奠diàn,琔diàn,殿diàn,蜔diàn,鈿diàn,電diàn,墊diàn,橂diàn,澱diàn,靛diàn,磹diàn,癜diàn,簟diàn,驔diàn,腍diàn,橝diàn,壂diàn,刁diāo,叼diāo,汈diāo,刟diāo,凋diāo,奝diāo,弴diāo,彫diāo,蛁diāo,琱diāo,貂diāo,碉diāo,鳭diāo,殦diāo,雕diāo,鮉diāo,鲷diāo,簓diāo,鼦diāo,鯛diāo,鵰diāo,颩diāo,矵diāo,錭diāo,淍diāo,屌diǎo,鸼diǎo,鵃diǎo,扚diǎo,伄diào,吊diào,钓diào,窎diào,訋diào,调diào,掉diào,釣diào,铞diào,鈟diào,竨diào,銱diào,雿diào,調diào,瘹diào,窵diào,鋽diào,鑃diào,誂diào,嬥diào,絩diào,爹diē,跌diē,褺diē,跮dié,苵dié,迭dié,垤dié,峌dié,恎dié,绖dié,胅dié,瓞dié,眣dié,耊dié,啑dié,戜dié,谍dié,喋dié,堞dié,幉dié,惵dié,揲dié,畳dié,絰dié,耋dié,臷dié,詄dié,趃dié,叠dié,殜dié,牃dié,牒dié,镻dié,碟dié,蜨dié,褋dié,艓dié,蝶dié,諜dié,蹀dié,鲽dié,曡dié,鰈dié,疉dié,疊dié,氎dié,渉dié,崼dié,鮙dié,跕dié,鐡dié,怢dié,槢dié,挃dié,柣dié,螲dié,疂dié,眰diè,嚸dim,丁dīng,仃dīng,叮dīng,帄dīng,玎dīng,甼dīng,疔dīng,盯dīng,耵dīng,靪dīng,奵dīng,町dīng,虰dīng,酊dǐng,顶dǐng,頂dǐng,鼎dǐng,鼑dǐng,薡dǐng,鐤dǐng,顁dǐng,艼dǐng,濎dǐng,嵿dǐng,钉dìng,釘dìng,订dìng,忊dìng,饤dìng,矴dìng,定dìng,訂dìng,飣dìng,啶dìng,萣dìng,椗dìng,腚dìng,碇dìng,锭dìng,碠dìng,聢dìng,錠dìng,磸dìng,铤dìng,鋌dìng,掟dìng,丟diū,丢diū,铥diū,銩diū,东dōng,冬dōng,咚dōng,東dōng,苳dōng,昸dōng,氡dōng,倲dōng,鸫dōng,埬dōng,娻dōng,崬dōng,涷dōng,笗dōng,菄dōng,氭dōng,蝀dōng,鮗dōng,鼕dōng,鯟dōng,鶇dōng,鶫dōng,徚dōng,夂dōng,岽dōng,揰dǒng,董dǒng,墥dǒng,嬞dǒng,懂dǒng,箽dǒng,蕫dǒng,諌dǒng,湩dǒng,动dòng,冻dòng,侗dòng,垌dòng,峒dòng,峝dòng,恫dòng,挏dòng,栋dòng,洞dòng,胨dòng,迵dòng,凍dòng,戙dòng,胴dòng,動dòng,崠dòng,硐dòng,棟dòng,腖dòng,働dòng,詷dòng,駧dòng,霘dòng,狫dòng,烔dòng,絧dòng,衕dòng,勭dòng,騆dòng,姛dòng,瞗dōu,吺dōu,剅dōu,唗dōu,都dōu,兜dōu,兠dōu,蔸dōu,橷dōu,篼dōu,侸dōu,艔dóu,乧dǒu,阧dǒu,抖dǒu,枓dǒu,陡dǒu,蚪dǒu,鈄dǒu,斗dòu,豆dòu,郖dòu,浢dòu,荳dòu,逗dòu,饾dòu,鬥dòu,梪dòu,毭dòu,脰dòu,酘dòu,痘dòu,閗dòu,窦dòu,鬦dòu,鋀dòu,餖dòu,斣dòu,闘dòu,竇dòu,鬪dòu,鬭dòu,凟dòu,鬬dòu,剢dū,阇dū,嘟dū,督dū,醏dū,闍dū,厾dū,毒dú,涜dú,读dú,渎dú,椟dú,牍dú,犊dú,裻dú,読dú,獨dú,錖dú,匵dú,嬻dú,瀆dú,櫝dú,殰dú,牘dú,犢dú,瓄dú,皾dú,騳dú,讀dú,豄dú,贕dú,韣dú,髑dú,鑟dú,韇dú,韥dú,黷dú,讟dú,独dú,樚dú,襡dú,襩dú,黩dú,笃dǔ,堵dǔ,帾dǔ,琽dǔ,赌dǔ,睹dǔ,覩dǔ,賭dǔ,篤dǔ,暏dǔ,笁dǔ,陼dǔ,芏dù,妒dù,杜dù,肚dù,妬dù,度dù,荰dù,秺dù,渡dù,镀dù,螙dù,殬dù,鍍dù,蠧dù,蠹dù,剫dù,晵dù,靯dù,篅duān,偳duān,媏duān,端duān,褍duān,鍴duān,剬duān,短duǎn,段duàn,断duàn,塅duàn,缎duàn,葮duàn,椴duàn,煅duàn,瑖duàn,腶duàn,碫duàn,锻duàn,緞duàn,毈duàn,簖duàn,鍛duàn,斷duàn,躖duàn,煆duàn,籪duàn,叾dug,搥duī,鎚duī,垖duī,堆duī,塠duī,嵟duī,痽duī,磓duī,頧duī,鴭duī,鐜duī,埻duī,謉duǐ,錞duì,队duì,对duì,兊duì,兌duì,兑duì,対duì,祋duì,怼duì,陮duì,隊duì,碓duì,綐duì,對duì,憝duì,濧duì,薱duì,镦duì,懟duì,瀩duì,譈duì,譵duì,憞duì,鋭duì,杸duì,吨dūn,惇dūn,敦dūn,蜳dūn,墩dūn,墪dūn,壿dūn,撴dūn,獤dūn,噸dūn,撉dūn,橔dūn,犜dūn,礅dūn,蹲dūn,蹾dūn,驐dūn,鐓dūn,盹dǔn,趸dǔn,躉dǔn,伅dùn,囤dùn,庉dùn,沌dùn,炖dùn,盾dùn,砘dùn,逇dùn,钝dùn,遁dùn,鈍dùn,腞dùn,頓dùn,碷dùn,遯dùn,潡dùn,燉dùn,踲dùn,楯dùn,腯dùn,顿dùn,多duō,夛duō,咄duō,哆duō,茤duō,剟duō,崜duō,敠duō,毲duō,裰duō,嚉duō,掇duō,仛duó,夺duó,铎duó,敓duó,敚duó,喥duó,敪duó,鈬duó,奪duó,凙duó,踱duó,鮵duó,鐸duó,跿duó,沰duó,痥duó,奲duǒ,朵duǒ,朶duǒ,哚duǒ,垛duǒ,挅duǒ,挆duǒ,埵duǒ,缍duǒ,椯duǒ,趓duǒ,躱duǒ,躲duǒ,綞duǒ,亸duǒ,鬌duǒ,嚲duǒ,垜duǒ,橢duǒ,硾duǒ,吋duò,刴duò,剁duò,沲duò,陊duò,陏duò,饳duò,柮duò,桗duò,堕duò,舵duò,惰duò,跥duò,跺duò,飿duò,墮duò,嶞duò,憜duò,墯duò,鵽duò,隓duò,貀duò,詑duò,駄duò,媠duò,嫷duò,尮duò,呃e,妸ē,妿ē,娿ē,婀ē,匼ē,讹é,吪é,囮é,迗é,俄é,娥é,峨é,峩é,涐é,莪é,珴é,訛é,睋é,鈋é,锇é,鹅é,蛾é,磀é,誐é,鋨é,頟é,额é,魤é,額é,鵝é,鵞é,譌é,騀é,佮é,鰪é,皒é,欸ě,枙ě,砈ě,鵈ě,玀ě,閜ě,砵è,惡è,厄è,歺è,屵è,戹è,岋è,阨è,扼è,阸è,呝è,砐è,轭è,咢è,咹è,垩è,姶è,峉è,匎è,恶è,砨è,蚅è,饿è,偔è,卾è,堊è,悪è,硆è,谔è,軛è,鄂è,阏è,堮è,崿è,愕è,湂è,萼è,豟è,軶è,遏è,廅è,搤è,搹è,琧è,腭è,詻è,僫è,蝁è,锷è,鹗è,蕚è,遻è,頞è,颚è,餓è,噩è,擜è,覨è,諤è,餩è,鍔è,鳄è,歞è,顎è,櫮è,鰐è,鶚è,讍è,齶è,鱷è,齃è,啈è,搕è,礘è,魥è,蘁è,齾è,苊è,遌è,鑩è,诶ēi,誒ēi,奀ēn,恩ēn,蒽ēn,煾ēn,唔én,峎ěn,摁èn,嗯èn,鞥eng,仒eo,乻eol,旕eos,儿ér,而ér,児ér,侕ér,兒ér,陑ér,峏ér,洏ér,耏ér,荋ér,栭ér,胹ér,唲ér,袻ér,鸸ér,粫ér,聏ér,輀ér,隭ér,髵ér,鮞ér,鴯ér,轜ér,咡ér,杒ér,陾ér,輭ér,鲕ér,尒ěr,尓ěr,尔ěr,耳ěr,迩ěr,洱ěr,饵ěr,栮ěr,毦ěr,珥ěr,铒ěr,爾ěr,鉺ěr,餌ěr,駬ěr,薾ěr,邇ěr,趰ěr,嬭ěr,二èr,弍èr,弐èr,佴èr,刵èr,贰èr,衈èr,貳èr,誀èr,樲èr,髶èr,貮èr,发fā,沷fā,発fā,發fā,彂fā,髪fā,橃fā,醗fā,乏fá,伐fá,姂fá,垡fá,罚fá,阀fá,栰fá,傠fá,筏fá,瞂fá,罰fá,閥fá,罸fá,藅fá,汎fá,佱fǎ,法fǎ,鍅fǎ,灋fǎ,砝fǎ,珐fà,琺fà,髮fà,蕟fà,帆fān,忛fān,犿fān,番fān,勫fān,墦fān,嬏fān,幡fān,憣fān,旙fān,旛fān,翻fān,藩fān,轓fān,颿fān,飜fān,鱕fān,蕃fān,凡fán,凢fán,凣fán,匥fán,杋fán,柉fán,籵fán,钒fán,舤fán,烦fán,舧fán,笲fán,釩fán,棥fán,煩fán,緐fán,樊fán,橎fán,燔fán,璠fán,薠fán,繁fán,繙fán,羳fán,蹯fán,瀿fán,礬fán,蘩fán,鐇fán,蠜fán,鷭fán,氾fán,瀪fán,渢fán,伋fán,舩fán,矾fán,反fǎn,仮fǎn,辺fǎn,返fǎn,攵fǎn,犭fǎn,払fǎn,犯fàn,奿fàn,泛fàn,饭fàn,范fàn,贩fàn,畈fàn,訉fàn,軓fàn,梵fàn,盕fàn,笵fàn,販fàn,軬fàn,飯fàn,飰fàn,滼fàn,嬎fàn,範fàn,嬔fàn,婏fàn,方fāng,邡fāng,坊fāng,芳fāng,牥fāng,钫fāng,淓fāng,堏fāng,鈁fāng,錺fāng,鴋fāng,埅fāng,枋fāng,防fáng,妨fáng,房fáng,肪fáng,鲂fáng,魴fáng,仿fǎng,访fǎng,纺fǎng,昉fǎng,昘fǎng,瓬fǎng,眆fǎng,倣fǎng,旊fǎng,紡fǎng,舫fǎng,訪fǎng,髣fǎng,鶭fǎng,放fàng,飞fēi,妃fēi,非fēi,飛fēi,啡fēi,婓fēi,婔fēi,渄fēi,绯fēi,菲fēi,扉fēi,猆fēi,靟fēi,裶fēi,緋fēi,蜚fēi,霏fēi,鲱fēi,餥fēi,馡fēi,騑fēi,騛fēi,鯡fēi,飝fēi,奜fēi,肥féi,淝féi,暃féi,腓féi,蜰féi,棐féi,萉féi,蟦féi,朏fěi,胐fěi,匪fěi,诽fěi,悱fěi,斐fěi,榧fěi,翡fěi,蕜fěi,誹fěi,篚fěi,襏fèi,吠fèi,废fèi,沸fèi,狒fèi,肺fèi,昲fèi,费fèi,俷fèi,剕fèi,厞fèi,疿fèi,屝fèi,廃fèi,費fèi,痱fèi,廢fèi,曊fèi,癈fèi,鼣fèi,濷fèi,櫠fèi,鐨fèi,靅fèi,蕡fèi,芾fèi,笰fèi,紼fèi,髴fèi,柹fèi,胏fèi,镄fèi,吩fēn,帉fēn,纷fēn,芬fēn,昐fēn,氛fēn,竕fēn,紛fēn,翂fēn,棻fēn,躮fēn,酚fēn,鈖fēn,雰fēn,朆fēn,餴fēn,饙fēn,錀fēn,坟fén,妢fén,岎fén,汾fén,枌fén,梤fén,羒fén,蚠fén,蚡fén,棼fén,焚fén,蒶fén,馚fén,隫fén,墳fén,幩fén,魵fén,橨fén,燓fén,豮fén,鼢fén,羵fén,鼖fén,豶fén,轒fén,馩fén,黂fén,鐼fén,粉fěn,瞓fěn,黺fěn,分fèn,份fèn,坋fèn,弅fèn,奋fèn,忿fèn,秎fèn,偾fèn,愤fèn,粪fèn,僨fèn,憤fèn,奮fèn,膹fèn,糞fèn,鲼fèn,瀵fèn,鱝fèn,丰fēng,风fēng,仹fēng,凨fēng,凬fēng,妦fēng,沣fēng,沨fēng,枫fēng,封fēng,疯fēng,盽fēng,砜fēng,風fēng,峯fēng,峰fēng,偑fēng,桻fēng,烽fēng,琒fēng,崶fēng,溄fēng,猦fēng,葑fēng,锋fēng,楓fēng,犎fēng,蜂fēng,瘋fēng,碸fēng,僼fēng,篈fēng,鄷fēng,鋒fēng,檒fēng,豐fēng,鎽fēng,酆fēng,寷fēng,灃fēng,蘴fēng,靊fēng,飌fēng,麷fēng,豊fēng,凮fēng,鏠fēng,冯féng,捀féng,浲féng,逢féng,堸féng,馮féng,綘féng,缝féng,艂féng,縫féng,讽fěng,唪fěng,諷fěng,凤fèng,奉fèng,甮fèng,俸fèng,湗fèng,焨fèng,煈fèng,鳯fèng,鳳fèng,鴌fèng,賵fèng,蘕fèng,赗fèng,覅fiao,仏fó,佛fó,坲fó,梻fó,垺fóu,紑fóu,缶fǒu,否fǒu,缹fǒu,缻fǒu,雬fǒu,鴀fǒu,芣fǒu,夫fū,邞fū,呋fū,姇fū,枎fū,玞fū,肤fū,怤fū,砆fū,胕fū,荂fū,衭fū,娐fū,荴fū,旉fū,紨fū,趺fū,酜fū,麸fū,稃fū,跗fū,鈇fū,筟fū,綒fū,鄜fū,孵fū,豧fū,敷fū,膚fū,鳺fū,麩fū,糐fū,麬fū,麱fū,懯fū,烰fū,琈fū,粰fū,璷fū,伕fú,乀fú,伏fú,凫fú,甶fú,冹fú,刜fú,孚fú,扶fú,芙fú,咈fú,岪fú,彿fú,怫fú,拂fú,服fú,泭fú,绂fú,绋fú,苻fú,俘fú,垘fú,柫fú,氟fú,洑fú,炥fú,玸fú,祓fú,罘fú,茯fú,郛fú,韨fú,鳬fú,哹fú,栿fú,浮fú,畗fú,砩fú,蚨fú,匐fú,桴fú,涪fú,符fú,紱fú,翇fú,艴fú,菔fú,虙fú,袱fú,幅fú,棴fú,罦fú,葍fú,福fú,綍fú,艀fú,蜉fú,辐fú,鉘fú,鉜fú,颫fú,鳧fú,榑fú,稪fú,箙fú,複fú,韍fú,幞fú,澓fú,蝠fú,鴔fú,諨fú,輻fú,鮄fú,癁fú,鮲fú,黻fú,鵩fú,坿fú,汱fú,酻fú,弗fú,畉fú,絥fú,抚fǔ,甫fǔ,府fǔ,弣fǔ,拊fǔ,斧fǔ,俌fǔ,郙fǔ,俯fǔ,釜fǔ,釡fǔ,捬fǔ,辅fǔ,椨fǔ,焤fǔ,盙fǔ,腑fǔ,滏fǔ,腐fǔ,輔fǔ,撫fǔ,鬴fǔ,簠fǔ,黼fǔ,蚥fǔ,窗chuāng,窻chuāng,傸chuǎng,创chuàng,創chuàng,庄zhuāng,妝zhuāng,荘zhuāng,娤zhuāng,桩zhuāng,讣fù,付fù,妇fù,负fù,附fù,咐fù,竎fù,阜fù,驸fù,复fù,峊fù,祔fù,訃fù,負fù,赴fù,袝fù,偩fù,冨fù,副fù,婦fù,蚹fù,傅fù,媍fù,富fù,復fù,蛗fù,覄fù,詂fù,赋fù,椱fù,缚fù,腹fù,鲋fù,禣fù,褔fù,赙fù,緮fù,蕧fù,蝜fù,蝮fù,賦fù,駙fù,縛fù,鮒fù,賻fù,鍑fù,鍢fù,鳆fù,覆fù,馥fù,鰒fù,軵fù,邚fù,柎fù,父fù,萯fù,旮gā,伽gā,嘎gā,夾gā,呷gā,钆gá,尜gá,釓gá,噶gá,錷gá,嘠gá,尕gǎ,玍gǎ,尬gà,魀gà,侅gāi,该gāi,郂gāi,陔gāi,垓gāi,姟gāi,峐gāi,荄gāi,晐gāi,赅gāi,畡gāi,祴gāi,絯gāi,該gāi,豥gāi,賅gāi,賌gāi,忋gǎi,改gǎi,鎅gǎi,絠gǎi,丐gài,乢gài,匃gài,匄gài,钙gài,盖gài,摡gài,溉gài,葢gài,鈣gài,戤gài,概gài,蓋gài,槩gài,槪gài,漑gài,瓂gài,甘gān,忓gān,芉gān,迀gān,攼gān,玕gān,肝gān,坩gān,泔gān,柑gān,竿gān,疳gān,酐gān,粓gān,亁gān,凲gān,尲gān,尴gān,筸gān,漧gān,鳱gān,尶gān,尷gān,魐gān,矸gān,虷gān,釬gān,乹gān,諴gān,飦gān,苷gān,杆gǎn,仠gǎn,皯gǎn,秆gǎn,衦gǎn,赶gǎn,敢gǎn,桿gǎn,笴gǎn,稈gǎn,感gǎn,澉gǎn,趕gǎn,橄gǎn,擀gǎn,簳gǎn,鱤gǎn,篢gǎn,豃gǎn,扞gǎn,鰔gǎn,扜gǎn,鳡gǎn,干gàn,旰gàn,汵gàn,盰gàn,绀gàn,倝gàn,凎gàn,淦gàn,紺gàn,詌gàn,骭gàn,幹gàn,檊gàn,赣gàn,贛gàn,灨gàn,贑gàn,佄gàn,錎gàn,棡gang,冈gāng,罓gāng,冮gāng,刚gāng,阬gāng,纲gāng,肛gāng,岡gāng,牨gāng,疘gāng,矼gāng,钢gāng,剛gāng,罡gāng,堈gāng,釭gāng,犅gāng,堽gāng,綱gāng,罁gāng,鋼gāng,鎠gāng,頏gāng,缸gāng,岗gǎng,崗gǎng,港gǎng,犺gǎng,掆gàng,杠gàng,焵gàng,筻gàng,槓gàng,戆gàng,戇gàng,戅gàng,皋gāo,羔gāo,高gāo,皐gāo,髙gāo,臯gāo,滜gāo,睾gāo,膏gāo,槹gāo,橰gāo,篙gāo,糕gāo,餻gāo,櫜gāo,韟gāo,鷎gāo,鼛gāo,鷱gāo,獋gāo,槔gāo,夰gǎo,杲gǎo,菒gǎo,稁gǎo,搞gǎo,缟gǎo,槀gǎo,槁gǎo,獔gǎo,稾gǎo,稿gǎo,镐gǎo,縞gǎo,藁gǎo,檺gǎo,藳gǎo,鎬gǎo,筶gǎo,澔gǎo,吿gào,勂gào,诰gào,郜gào,峼gào,祮gào,祰gào,锆gào,暠gào,禞gào,誥gào,鋯gào,告gào,戈gē,圪gē,犵gē,纥gē,戓gē,肐gē,牫gē,疙gē,牱gē,紇gē,哥gē,胳gē,袼gē,鸽gē,割gē,搁gē,彁gē,歌gē,戨gē,鴐gē,鴚gē,擱gē,謌gē,鴿gē,鎶gē,咯gē,滒gē,杚gé,呄gé,匌gé,挌gé,阁gé,革gé,敋gé,格gé,鬲gé,愅gé,臵gé,裓gé,隔gé,嗝gé,塥gé,滆gé,觡gé,搿gé,膈gé,閣gé,镉gé,鞈gé,韐gé,骼gé,諽gé,鮯gé,櫊gé,鎘gé,韚gé,轕gé,鞷gé,騔gé,秴gé,詥gé,佫gé,嘅gé,猲gé,槅gé,閤gě,葛gě,哿gě,舸gě,鲄gě,个gè,各gè,虼gè,個gè,硌gè,铬gè,箇gè,鉻gè,獦gè,吤gè,给gěi,給gěi,根gēn,跟gēn,哏gén,亘gèn,艮gèn,茛gèn,揯gèn,搄gèn,亙gèn,刯gēng,庚gēng,畊gēng,浭gēng,耕gēng,掶gēng,菮gēng,椩gēng,焿gēng,絚gēng,赓gēng,鹒gēng,緪gēng,縆gēng,賡gēng,羹gēng,鶊gēng,絙gēng,郠gěng,哽gěng,埂gěng,峺gěng,挭gěng,耿gěng,莄gěng,梗gěng,鲠gěng,骾gěng,鯁gěng,郉gěng,绠gěng,更gèng,堩gèng,暅gèng,啹geu,喼gib,嗰go,工gōng,弓gōng,公gōng,厷gōng,功gōng,攻gōng,杛gōng,糼gōng,肱gōng,宫gōng,宮gōng,恭gōng,蚣gōng,躬gōng,龚gōng,匑gōng,塨gōng,愩gōng,觥gōng,躳gōng,匔gōng,碽gōng,髸gōng,觵gōng,龔gōng,魟gōng,幊gōng,巩gǒng,汞gǒng,拱gǒng,唝gǒng,拲gǒng,栱gǒng,珙gǒng,輁gǒng,鞏gǒng,嗊gǒng,銾gǒng,供gòng,共gòng,贡gòng,羾gòng,貢gòng,慐gòng,熕gòng,渱gòng,勾gōu,沟gōu,钩gōu,袧gōu,缑gōu,鈎gōu,溝gōu,鉤gōu,緱gōu,褠gōu,篝gōu,簼gōu,鞲gōu,冓gōu,搆gōu,抅gōu,泃gōu,軥gōu,鴝gōu,鸜gōu,佝gōu,岣gǒu,狗gǒu,苟gǒu,枸gǒu,玽gǒu,耇gǒu,耉gǒu,笱gǒu,耈gǒu,蚼gǒu,豿gǒu,坸gòu,构gòu,诟gòu,购gòu,垢gòu,姤gòu,够gòu,夠gòu,訽gòu,媾gòu,彀gòu,詬gòu,遘gòu,雊gòu,構gòu,煹gòu,觏gòu,撀gòu,覯gòu,購gòu,傋gòu,茩gòu,估gū,咕gū,姑gū,孤gū,沽gū,泒gū,柧gū,轱gū,唂gū,唃gū,罛gū,鸪gū,笟gū,菇gū,蛄gū,蓇gū,觚gū,軱gū,軲gū,辜gū,酤gū,毂gū,箍gū,箛gū,嫴gū,篐gū,橭gū,鮕gū,鴣gū,轂gū,苽gū,菰gū,鶻gú,鹘gǔ,古gǔ,扢gǔ,汩gǔ,诂gǔ,谷gǔ,股gǔ,峠gǔ,牯gǔ,骨gǔ,罟gǔ,逧gǔ,钴gǔ,傦gǔ,啒gǔ,淈gǔ,脵gǔ,蛊gǔ,蛌gǔ,尳gǔ,愲gǔ,焸gǔ,硲gǔ,詁gǔ,馉gǔ,榾gǔ,鈷gǔ,鼓gǔ,鼔gǔ,嘏gǔ,榖gǔ,皷gǔ,縎gǔ,糓gǔ,薣gǔ,濲gǔ,臌gǔ,餶gǔ,瀔gǔ,瞽gǔ,抇gǔ,嗀gǔ,羖gǔ,固gù,怘gù,故gù,凅gù,顾gù,堌gù,崓gù,崮gù,梏gù,牿gù,棝gù,祻gù,雇gù,痼gù,稒gù,锢gù,頋gù,僱gù,錮gù,鲴gù,鯝gù,顧gù,盬gù,瓜guā,刮guā,胍guā,鸹guā,焻guā,煱guā,颪guā,趏guā,劀guā,緺guā,銽guā,鴰guā,騧guā,呱guā,諣guā,栝guā,歄guā,冎guǎ,叧guǎ,剐guǎ,剮guǎ,啩guǎ,寡guǎ,卦guà,坬guà,诖guà,挂guà,掛guà,罣guà,絓guà,罫guà,褂guà,詿guà,乖guāi,拐guǎi,枴guǎi,柺guǎi,夬guài,叏guài,怪guài,恠guài,关guān,观guān,官guān,覌guān,倌guān,萖guān,棺guān,蒄guān,窤guān,瘝guān,癏guān,観guān,鳏guān,關guān,鰥guān,觀guān,鱞guān,馆guǎn,痯guǎn,筦guǎn,管guǎn,舘guǎn,錧guǎn,館guǎn,躀guǎn,鳤guǎn,輨guǎn,冠guàn,卝guàn,毌guàn,丱guàn,贯guàn,泴guàn,悺guàn,惯guàn,掼guàn,涫guàn,貫guàn,悹guàn,祼guàn,慣guàn,摜guàn,潅guàn,遦guàn,樌guàn,盥guàn,罆guàn,雚guàn,鏆guàn,灌guàn,爟guàn,瓘guàn,矔guàn,鹳guàn,罐guàn,鑵guàn,鸛guàn,鱹guàn,懽guàn,礶guàn,光guāng,灮guāng,侊guāng,炗guāng,炚guāng,炛guāng,咣guāng,垙guāng,姯guāng,洸guāng,茪guāng,桄guāng,烡guāng,珖guāng,胱guāng,硄guāng,僙guāng,輄guāng,銧guāng,黆guāng,欟guāng,趪guāng,挄guāng,广guǎng,広guǎng,犷guǎng,廣guǎng,臩guǎng,獷guǎng,俇guàng,逛guàng,臦guàng,撗guàng,櫎guàng,归guī,圭guī,妫guī,龟guī,规guī,邽guī,皈guī,茥guī,闺guī,帰guī,珪guī,胿guī,亀guī,硅guī,袿guī,規guī,椝guī,瑰guī,郌guī,嫢guī,摫guī,閨guī,鲑guī,嶲guī,槻guī,槼guī,璝guī,瞡guī,膭guī,鮭guī,龜guī,巂guī,歸guī,鬶guī,瓌guī,鬹guī,櫷guī,佹guī,櫰guī,螝guī,槣guī,鴂guī,鴃guī,傀guī,潙guī,雟guī,嬀guī,宄guǐ,氿guǐ,轨guǐ,庋guǐ,匦guǐ,诡guǐ,陒guǐ,垝guǐ,癸guǐ,軌guǐ,鬼guǐ,庪guǐ,匭guǐ,晷guǐ,湀guǐ,蛫guǐ,觤guǐ,詭guǐ,厬guǐ,簋guǐ,蟡guǐ,攱guǐ,朹guǐ,祪guǐ,猤guì,媯guì,刽guì,刿guì,攰guì,昋guì,柜guì,炅guì,贵guì,桂guì,椢guì,筀guì,貴guì,蓕guì,跪guì,瞆guì,劊guì,劌guì,撌guì,槶guì,瞶guì,櫃guì,襘guì,鳜guì,鞼guì,鱖guì,鱥guì,桧guì,絵guì,檜guì,赽guì,趹guì,嶡guì,禬guì,衮gǔn,惃gǔn,绲gǔn,袞gǔn,辊gǔn,滚gǔn,蓘gǔn,滾gǔn,緄gǔn,蔉gǔn,磙gǔn,輥gǔn,鲧gǔn,鮌gǔn,鯀gǔn,琯gùn,棍gùn,棞gùn,睔gùn,睴gùn,璭gùn,謴gùn,呙guō,埚guō,郭guō,啯guō,崞guō,楇guō,聒guō,鈛guō,锅guō,墎guō,瘑guō,嘓guō,彉guō,蝈guō,鍋guō,彍guō,鐹guō,矌guō,簂guó,囯guó,囶guó,囻guó,国guó,圀guó,國guó,帼guó,掴guó,腘guó,幗guó,摑guó,漍guó,聝guó,蔮guó,膕guó,虢guó,馘guó,慖guó,果guǒ,惈guǒ,淉guǒ,猓guǒ,菓guǒ,馃guǒ,椁guǒ,褁guǒ,槨guǒ,粿guǒ,綶guǒ,蜾guǒ,裹guǒ,輠guǒ,餜guǒ,錁guǒ,过guò,過guò,妎hā,铪hā,鉿hā,哈hā,蛤há,孩hái,骸hái,還hái,还hái,海hǎi,胲hǎi,烸hǎi,塰hǎi,酼hǎi,醢hǎi,亥hài,骇hài,害hài,氦hài,嗐hài,餀hài,駭hài,駴hài,嚡hài,饚hài,乤hal,兯han,爳han,顸hān,哻hān,蚶hān,酣hān,谽hān,馠hān,魽hān,鼾hān,欦hān,憨hān,榦hán,邗hán,含hán,邯hán,函hán,咁hán,肣hán,凾hán,唅hán,圅hán,娢hán,浛hán,崡hán,晗hán,梒hán,涵hán,焓hán,寒hán,嵅hán,韩hán,甝hán,筨hán,蜬hán,澏hán,鋡hán,韓hán,馯hán,椷hán,罕hǎn,浫hǎn,喊hǎn,蔊hǎn,鬫hǎn,糮hǎn,厈hǎn,汉hàn,汗hàn,旱hàn,悍hàn,捍hàn,晘hàn,涆hàn,猂hàn,莟hàn,晥hàn,焊hàn,琀hàn,菡hàn,皔hàn,睅hàn,傼hàn,蛿hàn,撖hàn,漢hàn,蜭hàn,暵hàn,熯hàn,銲hàn,鋎hàn,憾hàn,撼hàn,翰hàn,螒hàn,頷hàn,顄hàn,駻hàn,譀hàn,雗hàn,瀚hàn,鶾hàn,澣hàn,颔hàn,魧hāng,苀háng,迒háng,斻háng,杭háng,垳háng,绗háng,笐háng,蚢háng,颃háng,貥háng,筕háng,絎háng,行háng,航háng,沆hàng,茠hāo,蒿hāo,嚆hāo,薅hāo,竓háo,蚝háo,毫háo,椃háo,嗥háo,獆háo,噑háo,豪háo,嘷háo,儫háo,曍háo,嚎háo,壕háo,濠háo,籇háo,蠔háo,譹háo,虠háo,諕háo,呺háo,郝hǎo,好hǎo,号hào,昊hào,昦hào,哠hào,恏hào,悎hào,浩hào,耗hào,晧hào,淏hào,傐hào,皓hào,滈hào,聕hào,號hào,暤hào,暭hào,皜hào,皞hào,皡hào,薃hào,皥hào,颢hào,灏hào,顥hào,鰝hào,灝hào,鄗hào,藃hào,诃hē,呵hē,抲hē,欱hē,喝hē,訶hē,嗬hē,蠚hē,禾hé,合hé,何hé,劾hé,咊hé,和hé,姀hé,河hé,峆hé,曷hé,柇hé,盇hé,籺hé,阂hé,饸hé,哬hé,敆hé,核hé,盉hé,盍hé,啝hé,涸hé,渮hé,盒hé,菏hé,萂hé,龁hé,惒hé,粭hé,訸hé,颌hé,楁hé,鉌hé,阖hé,熆hé,鹖hé,麧hé,澕hé,頜hé,篕hé,翮hé,螛hé,礉hé,闔hé,鞨hé,齕hé,覈hé,鶡hé,皬hé,鑉hé,龢hé,餄hé,荷hé,魺hé,垎hè,贺hè,隺hè,寉hè,焃hè,湼hè,賀hè,嗃hè,煂hè,碋hè,熇hè,褐hè,赫hè,鹤hè,翯hè,壑hè,癋hè,燺hè,爀hè,靍hè,靎hè,鸖hè,靏hè,鶮hè,謞hè,鶴hè,嗨hēi,黒hēi,黑hēi,嘿hēi,潶hēi,嬒hèi,噷hēn,拫hén,痕hén,鞎hén,佷hěn,很hěn,狠hěn,詪hěn,恨hèn,亨hēng,哼hēng,悙hēng,涥hēng,脝hēng,姮héng,恆héng,恒héng,桁héng,烆héng,珩héng,胻héng,横héng,橫héng,衡héng,鴴héng,鵆héng,蘅héng,鑅héng,鸻héng,堼hèng,叿hōng,灴hōng,轰hōng,訇hōng,烘hōng,軣hōng,揈hōng,渹hōng,焢hōng,硡hōng,薨hōng,輷hōng,嚝hōng,鍧hōng,轟hōng,仜hóng,妅hóng,红hóng,吰hóng,宏hóng,汯hóng,玒hóng,纮hóng,闳hóng,宖hóng,泓hóng,玜hóng,苰hóng,垬hóng,娂hóng,洪hóng,竑hóng,紅hóng,荭hóng,虹hóng,浤hóng,紘hóng,翃hóng,耾hóng,硔hóng,紭hóng,谹hóng,鸿hóng,竤hóng,粠hóng,葓hóng,鈜hóng,閎hóng,綋hóng,翝hóng,谼hóng,潂hóng,鉷hóng,鞃hóng,篊hóng,鋐hóng,彋hóng,蕻hóng,霐hóng,黉hóng,霟hóng,鴻hóng,黌hóng,舼hóng,瓨hóng,弘hóng,葒hóng,哄hǒng,晎hǒng,讧hòng,訌hòng,閧hòng,撔hòng,澋hòng,澒hòng,闀hòng,闂hòng,腄hóu,侯hóu,矦hóu,喉hóu,帿hóu,猴hóu,葔hóu,瘊hóu,睺hóu,銗hóu,篌hóu,糇hóu,翭hóu,骺hóu,鍭hóu,餱hóu,鯸hóu,翵hóu,吼hǒu,犼hǒu,呴hǒu,后hòu,郈hòu,厚hòu,垕hòu,後hòu,洉hòu,逅hòu,候hòu,鄇hòu,堠hòu,鲎hòu,鲘hòu,鮜hòu,鱟hòu,豞hòu,鋘hu,乎hū,匢hū,呼hū,垀hū,忽hū,昒hū,曶hū,泘hū,苸hū,烀hū,轷hū,匫hū,唿hū,惚hū,淴hū,虖hū,軤hū,雽hū,嘑hū,寣hū,滹hū,雐hū,歑hū,謼hū,芔hū,戯hū,戱hū,鹄hú,鵠hú,囫hú,弧hú,狐hú,瓳hú,胡hú,壶hú,壷hú,斛hú,焀hú,喖hú,壺hú,媩hú,湖hú,猢hú,絗hú,葫hú,楜hú,煳hú,瑚hú,嘝hú,蔛hú,鹕hú,槲hú,箶hú,糊hú,蝴hú,衚hú,縠hú,螜hú,醐hú,頶hú,觳hú,鍸hú,餬hú,瀫hú,鬍hú,鰗hú,鶘hú,鶦hú,沍hú,礐hú,瓡hú,俿hǔ,虍hǔ,乕hǔ,汻hǔ,虎hǔ,浒hǔ,唬hǔ,萀hǔ,琥hǔ,虝hǔ,滸hǔ,箎hǔ,錿hǔ,鯱hǔ,互hù,弖hù,戶hù,户hù,戸hù,冴hù,芐hù,帍hù,护hù,沪hù,岵hù,怙hù,戽hù,昈hù,枑hù,祜hù,笏hù,粐hù,婟hù,扈hù,瓠hù,綔hù,鄠hù,嫭hù,嫮hù,摢hù,滬hù,蔰hù,槴hù,熩hù,鳸hù,簄hù,鍙hù,護hù,鳠hù,韄hù,頀hù,鱯hù,鸌hù,濩hù,穫hù,觷hù,魱hù,冱hù,鹱hù,花huā,芲huā,埖huā,婲huā,椛huā,硴huā,糀huā,誮huā,錵huā,蘤huā,蕐huā,砉huā,华huá,哗huá,姡huá,骅huá,華huá,铧huá,滑huá,猾huá,嘩huá,撶huá,璍huá,螖huá,鏵huá,驊huá,鷨huá,划huá,化huà,杹huà,画huà,话huà,崋huà,桦huà,婳huà,畫huà,嬅huà,畵huà,觟huà,話huà,劃huà,摦huà,槬huà,樺huà,嫿huà,澅huà,諙huà,黊huà,繣huà,舙huà,蘳huà,譮huà,檴huà,怀huái,淮huái,槐huái,褢huái,踝huái,懐huái,褱huái,懷huái,耲huái,蘹huái,佪huái,徊huái,坏huài,咶huài,壊huài,壞huài,蘾huài,欢huān,歓huān,鴅huān,懁huān,鵍huān,酄huān,嚾huān,獾huān,歡huān,貛huān,讙huān,驩huān,貆huān,环huán,峘huán,洹huán,狟huán,荁huán,桓huán,萈huán,萑huán,堚huán,寏huán,雈huán,綄huán,羦huán,锾huán,阛huán,寰huán,澴huán,缳huán,環huán,豲huán,鍰huán,镮huán,鹮huán,糫huán,繯huán,轘huán,鐶huán,鬟huán,瞏huán,鉮huán,圜huán,闤huán,睆huǎn,缓huǎn,緩huǎn,攌huǎn,幻huàn,奂huàn,肒huàn,奐huàn,宦huàn,唤huàn,换huàn,浣huàn,涣huàn,烉huàn,患huàn,梙huàn,焕huàn,逭huàn,喚huàn,嵈huàn,愌huàn,換huàn,渙huàn,痪huàn,煥huàn,豢huàn,漶huàn,瘓huàn,槵huàn,鲩huàn,擐huàn,瞣huàn,藧huàn,鯇huàn,鯶huàn,鰀huàn,圂huàn,蠸huàn,瑍huàn,巟huāng,肓huāng,荒huāng,衁huāng,塃huāng,慌huāng,皇huáng,偟huáng,凰huáng,隍huáng,黃huáng,黄huáng,喤huáng,堭huáng,媓huáng,崲huáng,徨huáng,湟huáng,葟huáng,遑huáng,楻huáng,煌huáng,瑝huáng,墴huáng,潢huáng,獚huáng,锽huáng,熿huáng,璜huáng,篁huáng,艎huáng,蝗huáng,癀huáng,磺huáng,穔huáng,諻huáng,簧huáng,蟥huáng,鍠huáng,餭huáng,鳇huáng,鐄huáng,騜huáng,鰉huáng,鷬huáng,惶huáng,鱑huáng,怳huǎng,恍huǎng,炾huǎng,宺huǎng,晃huǎng,晄huǎng,奛huǎng,谎huǎng,幌huǎng,愰huǎng,詤huǎng,縨huǎng,謊huǎng,皩huǎng,兤huǎng,滉huàng,榥huàng,曂huàng,皝huàng,鎤huàng,鰴hui,灰huī,灳huī,诙huī,咴huī,恢huī,拻huī,挥huī,虺huī,晖huī,烣huī,珲huī,豗huī,婎huī,媈huī,揮huī,翚huī,辉huī,暉huī,楎huī,琿huī,禈huī,詼huī,幑huī,睳huī,噅huī,噕huī,翬huī,輝huī,麾huī,徽huī,隳huī,瀈huī,洃huī,煇huí,囘huí,回huí,囬huí,廻huí,廽huí,恛huí,洄huí,茴huí,迴huí,烠huí,逥huí,痐huí,蛔huí,蛕huí,蜖huí,鮰huí,藱huí,悔huǐ,毇huǐ,檓huǐ,燬huǐ,譭huǐ,泋huǐ,毁huǐ,烜huǐ,卉huì,屷huì,汇huì,会huì,讳huì,浍huì,绘huì,荟huì,诲huì,恚huì,恵huì,烩huì,贿huì,彗huì,晦huì,秽huì,喙huì,惠huì,缋huì,翙huì,阓huì,匯huì,彙huì,彚huì,會huì,毀huì,滙huì,詯huì,賄huì,嘒huì,蔧huì,誨huì,圚huì,寭huì,慧huì,憓huì,暳huì,槥huì,潓huì,蕙huì,徻huì,橞huì,澮huì,獩huì,璤huì,薈huì,薉huì,諱huì,檅huì,燴huì,篲huì,餯huì,嚖huì,瞺huì,穢huì,繢huì,蟪huì,櫘huì,繪huì,翽huì,譓huì,儶huì,鏸huì,闠huì,孈huì,鐬huì,靧huì,韢huì,譿huì,顪huì,銊huì,叀huì,僡huì,懳huì,昏hūn,昬hūn,荤hūn,婚hūn,惛hūn,涽hūn,阍hūn,惽hūn,棔hūn,葷hūn,睧hūn,閽hūn,焄hūn,蔒hūn,睯hūn,忶hún,浑hún,馄hún,渾hún,魂hún,餛hún,繉hún,轋hún,鼲hún,混hún,梱hún,湷hún,诨hùn,俒hùn,倱hùn,掍hùn,焝hùn,溷hùn,慁hùn,觨hùn,諢hùn,吙huō,耠huō,锪huō,劐huō,鍃huō,豁huō,攉huō,騞huō,搉huō,佸huó,秮huó,活huó,火huǒ,伙huǒ,邩huǒ,钬huǒ,鈥huǒ,夥huǒ,沎huò,或huò,货huò,咟huò,俰huò,捇huò,眓huò,获huò,閄huò,剨huò,掝huò,祸huò,貨huò,惑huò,旤huò,湱huò,禍huò,奯huò,獲huò,霍huò,謋huò,镬huò,嚯huò,瀖huò,耯huò,藿huò,蠖huò,嚿huò,曤huò,臛huò,癨huò,矐huò,鑊huò,靃huò,謔huò,篧huò,擭huò,夻hwa,丌jī,讥jī,击jī,刉jī,叽jī,饥jī,乩jī,圾jī,机jī,玑jī,肌jī,芨jī,矶jī,鸡jī,枅jī,咭jī,剞jī,唧jī,姬jī,屐jī,积jī,笄jī,飢jī,基jī,喞jī,嵆jī,嵇jī,攲jī,敧jī,犄jī,筓jī,缉jī,赍jī,嗘jī,稘jī,跻jī,鳮jī,僟jī,毄jī,箕jī,銈jī,嘰jī,撃jī,樭jī,畿jī,稽jī,緝jī,觭jī,賫jī,躸jī,齑jī,墼jī,憿jī,機jī,激jī,璣jī,禨jī,積jī,錤jī,隮jī,擊jī,磯jī,簊jī,羁jī,賷jī,鄿jī,櫅jī,耭jī,雞jī,譏jī,韲jī,鶏jī,譤jī,鐖jī,癪jī,躋jī,鞿jī,鷄jī,齎jī,羇jī,虀jī,鑇jī,覉jī,鑙jī,齏jī,羈jī,鸄jī,覊jī,庴jī,垍jī,諅jī,踦jī,璂jī,踑jī,谿jī,刏jī,畸jī,簎jí,諔jí,堲jí,蠀jí,亼jí,及jí,吉jí,彶jí,忣jí,汲jí,级jí,即jí,极jí,亟jí,佶jí,郆jí,卽jí,叝jí,姞jí,急jí,狤jí,皍jí,笈jí,級jí,揤jí,疾jí,觙jí,偮jí,卙jí,楖jí,焏jí,脨jí,谻jí,戢jí,棘jí,極jí,湒jí,集jí,塉jí,嫉jí,愱jí,楫jí,蒺jí,蝍jí,趌jí,辑jí,槉jí,耤jí,膌jí,銡jí,嶯jí,潗jí,瘠jí,箿jí,蕀jí,蕺jí,踖jí,鞊jí,鹡jí,橶jí,檝jí,濈jí,螏jí,輯jí,襋jí,蹐jí,艥jí,籍jí,轚jí,鏶jí,霵jí,鶺jí,鷑jí,躤jí,雦jí,雧jí,嵴jí,尐jí,淁jí,吇jí,莋jí,岌jí,殛jí,鍓jí,颳jǐ,几jǐ,己jǐ,丮jǐ,妀jǐ,犱jǐ,泲jǐ,虮jǐ,挤jǐ,脊jǐ,掎jǐ,鱾jǐ,幾jǐ,戟jǐ,麂jǐ,魢jǐ,撠jǐ,擠jǐ,穖jǐ,蟣jǐ,済jǐ,畟jì,迹jì,绩jì,勣jì,彑jì,旡jì,计jì,记jì,伎jì,纪jì,坖jì,妓jì,忌jì,技jì,芰jì,芶jì,际jì,剂jì,季jì,哜jì,峜jì,既jì,洎jì,济jì,紀jì,茍jì,計jì,剤jì,紒jì,继jì,觊jì,記jì,偈jì,寄jì,徛jì,悸jì,旣jì,梞jì,祭jì,萕jì,惎jì,臮jì,葪jì,蔇jì,兾jì,痵jì,継jì,蓟jì,裚jì,跡jì,際jì,墍jì,暨jì,漃jì,漈jì,禝jì,稩jì,穊jì,誋jì,跽jì,霁jì,鲚jì,稷jì,鲫jì,冀jì,劑jì,曁jì,穄jì,縘jì,薊jì,襀jì,髻jì,嚌jì,檕jì,濟jì,繋jì,罽jì,覬jì,鮆jì,檵jì,璾jì,蹟jì,鯽jì,鵋jì,齌jì,廭jì,懻jì,癠jì,穧jì,糭jì,繫jì,骥jì,鯚jì,瀱jì,繼jì,蘮jì,鱀jì,蘻jì,霽jì,鰶jì,鰿jì,鱭jì,驥jì,訐jì,魝jì,櫭jì,帺jì,褀jì,鬾jì,懠jì,蟿jì,汥jì,鯯jì,齍jì,績jì,寂jì,暩jì,蘎jì,筴jiā,加jiā,抸jiā,佳jiā,泇jiā,迦jiā,枷jiā,毠jiā,浃jiā,珈jiā,埉jiā,家jiā,浹jiā,痂jiā,梜jiā,耞jiā,袈jiā,猳jiā,葭jiā,跏jiā,犌jiā,腵jiā,鉫jiā,嘉jiā,镓jiā,糘jiā,豭jiā,貑jiā,鎵jiā,麚jiā,椵jiā,挟jiā,挾jiā,笳jiā,夹jiá,袷jiá,裌jiá,圿jiá,扴jiá,郏jiá,荚jiá,郟jiá,唊jiá,恝jiá,莢jiá,戛jiá,脥jiá,铗jiá,蛱jiá,颊jiá,蛺jiá,跲jiá,鋏jiá,頬jiá,頰jiá,鴶jiá,鵊jiá,忦jiá,戞jiá,岬jiǎ,甲jiǎ,叚jiǎ,玾jiǎ,胛jiǎ,斚jiǎ,贾jiǎ,钾jiǎ,婽jiǎ,徦jiǎ,斝jiǎ,賈jiǎ,鉀jiǎ,榎jiǎ,槚jiǎ,瘕jiǎ,檟jiǎ,夓jiǎ,假jiǎ,价jià,驾jià,架jià,嫁jià,幏jià,榢jià,價jià,稼jià,駕jià,戋jiān,奸jiān,尖jiān,幵jiān,坚jiān,歼jiān,间jiān,冿jiān,戔jiān,肩jiān,艰jiān,姦jiān,姧jiān,兼jiān,监jiān,堅jiān,惤jiān,猏jiān,笺jiān,菅jiān,菺jiān,牋jiān,犍jiān,缄jiān,葌jiān,葏jiān,間jiān,靬jiān,搛jiān,椾jiān,煎jiān,瑊jiān,睷jiān,碊jiān,缣jiān,蒹jiān,監jiān,箋jiān,樫jiān,熞jiān,緘jiān,蕑jiān,蕳jiān,鲣jiān,鳽jiān,鹣jiān,熸jiān,篯jiān,縑jiān,艱jiān,鞬jiān,餰jiān,馢jiān,麉jiān,瀐jiān,鞯jiān,鳒jiān,殱jiān,礛jiān,覸jiān,鵳jiān,瀸jiān,櫼jiān,殲jiān,譼jiān,鰜jiān,鶼jiān,籛jiān,韀jiān,鰹jiān,囏jiān,虃jiān,鑯jiān,韉jiān,揃jiān,鐗jiān,鐧jiān,閒jiān,黚jiān,傔jiān,攕jiān,纎jiān,钘jiān,鈃jiān,銒jiān,籈jiān,湔jiān,囝jiǎn,拣jiǎn,枧jiǎn,俭jiǎn,茧jiǎn,倹jiǎn,挸jiǎn,捡jiǎn,笕jiǎn,减jiǎn,剪jiǎn,帴jiǎn,梘jiǎn,检jiǎn,湕jiǎn,趼jiǎn,揀jiǎn,検jiǎn,減jiǎn,睑jiǎn,硷jiǎn,裥jiǎn,詃jiǎn,锏jiǎn,弿jiǎn,瑐jiǎn,筧jiǎn,简jiǎn,絸jiǎn,谫jiǎn,彅jiǎn,戩jiǎn,碱jiǎn,儉jiǎn,翦jiǎn,撿jiǎn,檢jiǎn,藆jiǎn,襇jiǎn,襉jiǎn,謇jiǎn,蹇jiǎn,瞼jiǎn,礆jiǎn,簡jiǎn,繭jiǎn,謭jiǎn,鬋jiǎn,鰎jiǎn,鹸jiǎn,瀽jiǎn,蠒jiǎn,鹻jiǎn,譾jiǎn,襺jiǎn,鹼jiǎn,堿jiǎn,偂jiǎn,銭jiǎn,醎jiǎn,鹹jiǎn,涀jiǎn,橏jiǎn,柬jiǎn,戬jiǎn,见jiàn,件jiàn,見jiàn,侟jiàn,饯jiàn,剑jiàn,洊jiàn,牮jiàn,荐jiàn,贱jiàn,俴jiàn,健jiàn,剣jiàn,栫jiàn,涧jiàn,珔jiàn,舰jiàn,剱jiàn,徤jiàn,渐jiàn,袸jiàn,谏jiàn,釼jiàn,寋jiàn,旔jiàn,楗jiàn,毽jiàn,溅jiàn,腱jiàn,臶jiàn,葥jiàn,践jiàn,鉴jiàn,键jiàn,僭jiàn,榗jiàn,漸jiàn,劍jiàn,劎jiàn,墹jiàn,澗jiàn,箭jiàn,糋jiàn,諓jiàn,賤jiàn,趝jiàn,踐jiàn,踺jiàn,劒jiàn,劔jiàn,橺jiàn,薦jiàn,諫jiàn,鍵jiàn,餞jiàn,瞯jiàn,瞷jiàn,磵jiàn,礀jiàn,螹jiàn,鍳jiàn,濺jiàn,繝jiàn,瀳jiàn,鏩jiàn,艦jiàn,轞jiàn,鑑jiàn,鑒jiàn,鑬jiàn,鑳jiàn,鐱jiàn,揵jiàn,蔪jiàn,橌jiàn,廴jiàn,譖jiàn,鋻jiàn,建jiàn,賎jiàn,擶jiàn,江jiāng,姜jiāng,将jiāng,茳jiāng,浆jiāng,畕jiāng,豇jiāng,葁jiāng,摪jiāng,翞jiāng,僵jiāng,漿jiāng,螀jiāng,壃jiāng,彊jiāng,缰jiāng,薑jiāng,殭jiāng,螿jiāng,鳉jiāng,疅jiāng,礓jiāng,疆jiāng,繮jiāng,韁jiāng,鱂jiāng,將jiāng,畺jiāng,糡jiāng,橿jiāng,讲jiǎng,奖jiǎng,桨jiǎng,蒋jiǎng,勥jiǎng,奨jiǎng,奬jiǎng,蔣jiǎng,槳jiǎng,獎jiǎng,耩jiǎng,膙jiǎng,講jiǎng,顜jiǎng,塂jiǎng,匞jiàng,匠jiàng,夅jiàng,弜jiàng,杢jiàng,降jiàng,绛jiàng,弶jiàng,袶jiàng,絳jiàng,酱jiàng,摾jiàng,滰jiàng,嵹jiàng,犟jiàng,醤jiàng,糨jiàng,醬jiàng,櫤jiàng,謽jiàng,蔃jiàng,洚jiàng,艽jiāo,芁jiāo,交jiāo,郊jiāo,姣jiāo,娇jiāo,峧jiāo,浇jiāo,茭jiāo,骄jiāo,胶jiāo,椒jiāo,焳jiāo,蛟jiāo,跤jiāo,僬jiāo,嘄jiāo,鲛jiāo,嬌jiāo,嶕jiāo,嶣jiāo,憍jiāo,澆jiāo,膠jiāo,蕉jiāo,燋jiāo,膲jiāo,礁jiāo,穚jiāo,鮫jiāo,鹪jiāo,簥jiāo,蟭jiāo,轇jiāo,鐎jiāo,驕jiāo,鷦jiāo,鷮jiāo,儌jiāo,撟jiāo,挍jiāo,教jiāo,骹jiāo,嫶jiāo,萩jiāo,嘐jiāo,憢jiāo,焦jiāo,櫵jiáo,嚼jiáo,臫jiǎo,佼jiǎo,挢jiǎo,狡jiǎo,绞jiǎo,饺jiǎo,晈jiǎo,笅jiǎo,皎jiǎo,矫jiǎo,脚jiǎo,铰jiǎo,搅jiǎo,筊jiǎo,絞jiǎo,剿jiǎo,勦jiǎo,敫jiǎo,湬jiǎo,煍jiǎo,腳jiǎo,賋jiǎo,摷jiǎo,暞jiǎo,踋jiǎo,鉸jiǎo,劋jiǎo,撹jiǎo,徼jiǎo,敽jiǎo,敿jiǎo,缴jiǎo,曒jiǎo,璬jiǎo,矯jiǎo,皦jiǎo,蟜jiǎo,鵤jiǎo,繳jiǎo,譑jiǎo,孂jiǎo,纐jiǎo,攪jiǎo,灚jiǎo,鱎jiǎo,潐jiǎo,糸jiǎo,蹻jiǎo,釥jiǎo,纟jiǎo,恔jiǎo,角jiǎo,餃jiǎo,叫jiào,呌jiào,訆jiào,珓jiào,轿jiào,较jiào,窖jiào,滘jiào,較jiào,嘂jiào,嘦jiào,斠jiào,漖jiào,酵jiào,噍jiào,噭jiào,嬓jiào,獥jiào,藠jiào,趭jiào,轎jiào,醮jiào,譥jiào,皭jiào,釂jiào,觉jiào,覐jiào,覚jiào,覺jiào,趫jiào,敎jiào,阶jiē,疖jiē,皆jiē,接jiē,掲jiē,痎jiē,秸jiē,菨jiē,喈jiē,嗟jiē,堦jiē,媘jiē,嫅jiē,揭jiē,椄jiē,湝jiē,脻jiē,街jiē,煯jiē,稭jiē,鞂jiē,蝔jiē,擑jiē,癤jiē,鶛jiē,节jiē,節jiē,袓jiē,謯jiē,階jiē,卪jié,孑jié,讦jié,刦jié,刧jié,劫jié,岊jié,昅jié,刼jié,劼jié,疌jié,衱jié,诘jié,拮jié,洁jié,结jié,迼jié,倢jié,桀jié,桝jié,莭jié,偼jié,婕jié,崨jié,捷jié,袺jié,傑jié,媫jié,結jié,蛣jié,颉jié,嵥jié,楬jié,楶jié,滐jié,睫jié,蜐jié,詰jié,截jié,榤jié,碣jié,竭jié,蓵jié,鲒jié,潔jié,羯jié,誱jié,踕jié,頡jié,幯jié,擳jié,嶻jié,擮jié,礍jié,鍻jié,鮚jié,巀jié,蠞jié,蠘jié,蠽jié,洯jié,絜jié,搩jié,杰jié,鉣jié,姐jiě,毑jiě,媎jiě,解jiě,觧jiě,檞jiě,飷jiě,丯jiè,介jiè,岕jiè,庎jiè,戒jiè,芥jiè,屆jiè,届jiè,斺jiè,玠jiè,界jiè,畍jiè,疥jiè,砎jiè,衸jiè,诫jiè,借jiè,蚧jiè,徣jiè,堺jiè,楐jiè,琾jiè,蛶jiè,骱jiè,犗jiè,誡jiè,魪jiè,藉jiè,繲jiè,雃jiè,嶰jiè,唶jiè,褯jiè,巾jīn,今jīn,斤jīn,钅jīn,兓jīn,金jīn,釒jīn,津jīn,矜jīn,砛jīn,荕jīn,衿jīn,觔jīn,埐jīn,珒jīn,紟jīn,惍jīn,琎jīn,堻jīn,琻jīn,筋jīn,嶜jīn,璡jīn,鹶jīn,黅jīn,襟jīn,濜jīn,仅jǐn,巹jǐn,紧jǐn,堇jǐn,菫jǐn,僅jǐn,厪jǐn,谨jǐn,锦jǐn,嫤jǐn,廑jǐn,漌jǐn,緊jǐn,蓳jǐn,馑jǐn,槿jǐn,瑾jǐn,錦jǐn,謹jǐn,饉jǐn,儘jǐn,婜jǐn,斳jǐn,卺jǐn,笒jìn,盡jìn,劤jìn,尽jìn,劲jìn,妗jìn,近jìn,进jìn,侭jìn,枃jìn,勁jìn,荩jìn,晉jìn,晋jìn,浸jìn,烬jìn,赆jìn,祲jìn,進jìn,煡jìn,缙jìn,寖jìn,搢jìn,溍jìn,禁jìn,靳jìn,墐jìn,慬jìn,瑨jìn,僸jìn,凚jìn,歏jìn,殣jìn,觐jìn,噤jìn,濅jìn,縉jìn,賮jìn,嚍jìn,壗jìn,藎jìn,燼jìn,璶jìn,覲jìn,贐jìn,齽jìn,馸jìn,臸jìn,浕jìn,嬧jìn,坕jīng,坙jīng,巠jīng,京jīng,泾jīng,经jīng,茎jīng,亰jīng,秔jīng,荆jīng,荊jīng,涇jīng,莖jīng,婛jīng,惊jīng,旌jīng,旍jīng,猄jīng,経jīng,菁jīng,晶jīng,稉jīng,腈jīng,粳jīng,經jīng,兢jīng,精jīng,聙jīng,橸jīng,鲸jīng,鵛jīng,鯨jīng,鶁jīng,麖jīng,鼱jīng,驚jīng,麠jīng,徑jīng,仱jīng,靑jīng,睛jīng,井jǐng,阱jǐng,刭jǐng,坓jǐng,宑jǐng,汫jǐng,汬jǐng,肼jǐng,剄jǐng,穽jǐng,颈jǐng,景jǐng,儆jǐng,幜jǐng,璄jǐng,憼jǐng,暻jǐng,燝jǐng,璟jǐng,璥jǐng,頸jǐng,蟼jǐng,警jǐng,擏jǐng,憬jǐng,妌jìng,净jìng,弪jìng,径jìng,迳jìng,浄jìng,胫jìng,凈jìng,弳jìng,痉jìng,竞jìng,逕jìng,婙jìng,婧jìng,桱jìng,梷jìng,淨jìng,竫jìng,脛jìng,敬jìng,痙jìng,竧jìng,傹jìng,靖jìng,境jìng,獍jìng,誩jìng,静jìng,頚jìng,曔jìng,镜jìng,靜jìng,瀞jìng,鏡jìng,競jìng,竸jìng,葝jìng,儬jìng,陘jìng,竟jìng,冋jiōng,扃jiōng,埛jiōng,絅jiōng,駉jiōng,駫jiōng,冏jiōng,浻jiōng,扄jiōng,銄jiōng,囧jiǒng,迥jiǒng,侰jiǒng,炯jiǒng,逈jiǒng,烱jiǒng,煚jiǒng,窘jiǒng,颎jiǒng,綗jiǒng,僒jiǒng,煛jiǒng,熲jiǒng,澃jiǒng,燛jiǒng,褧jiǒng,顈jiǒng,蘔jiǒng,宭jiǒng,蘏jiǒng,丩jiū,勼jiū,纠jiū,朻jiū,究jiū,糺jiū,鸠jiū,赳jiū,阄jiū,萛jiū,啾jiū,揪jiū,揫jiū,鳩jiū,摎jiū,鬏jiū,鬮jiū,稵jiū,糾jiū,九jiǔ,久jiǔ,乆jiǔ,乣jiǔ,奺jiǔ,汣jiǔ,杦jiǔ,灸jiǔ,玖jiǔ,舏jiǔ,韭jiǔ,紤jiǔ,酒jiǔ,镹jiǔ,韮jiǔ,匛jiù,旧jiù,臼jiù,疚jiù,柩jiù,柾jiù,倃jiù,桕jiù,厩jiù,救jiù,就jiù,廄jiù,匓jiù,舅jiù,僦jiù,廏jiù,廐jiù,慦jiù,殧jiù,舊jiù,鹫jiù,麔jiù,匶jiù,齨jiù,鷲jiù,咎jiù,欍jou,鶪ju,伡jū,俥jū,凥jū,匊jū,居jū,狙jū,苴jū,驹jū,倶jū,挶jū,捄jū,疽jū,痀jū,眗jū,砠jū,罝jū,陱jū,娵jū,婅jū,婮jū,崌jū,掬jū,梮jū,涺jū,椐jū,琚jū,腒jū,趄jū,跔jū,锔jū,裾jū,雎jū,艍jū,蜛jū,踘jū,鋦jū,駒jū,鮈jū,鴡jū,鞠jū,鞫jū,鶋jū,臄jū,揟jū,拘jū,諊jū,局jú,泦jú,侷jú,狊jú,桔jú,毩jú,淗jú,焗jú,菊jú,郹jú,椈jú,毱jú,湨jú,犑jú,輂jú,粷jú,蓻jú,趜jú,躹jú,閰jú,檋jú,駶jú,鵙jú,蹫jú,鵴jú,巈jú,蘜jú,鼰jú,鼳jú,驧jú,趉jú,郥jú,橘jú,咀jǔ,弆jǔ,沮jǔ,举jǔ,矩jǔ,莒jǔ,挙jǔ,椇jǔ,筥jǔ,榉jǔ,榘jǔ,蒟jǔ,龃jǔ,聥jǔ,舉jǔ,踽jǔ,擧jǔ,櫸jǔ,齟jǔ,襷jǔ,籧jǔ,郰jǔ,欅jǔ,句jù,巨jù,讵jù,姖jù,岠jù,怇jù,拒jù,洰jù,苣jù,邭jù,具jù,怚jù,拠jù,昛jù,歫jù,炬jù,秬jù,钜jù,俱jù,倨jù,冣jù,剧jù,粔jù,耟jù,蚷jù,埧jù,埾jù,惧jù,詎jù,距jù,焣jù,犋jù,跙jù,鉅jù,飓jù,虡jù,豦jù,锯jù,愳jù,窭jù,聚jù,駏jù,劇jù,勮jù,屦jù,踞jù,鮔jù,壉jù,懅jù,據jù,澽jù,遽jù,鋸jù,屨jù,颶jù,簴jù,躆jù,醵jù,懼jù,鐻jù,爠jù,坥jù,螶jù,忂jù,葅jù,蒩jù,珇jù,据jù,姢juān,娟juān,捐juān,涓juān,脧juān,裐juān,鹃juān,勬juān,鋑juān,鋗juān,镌juān,鎸juān,鵑juān,鐫juān,蠲juān,勌juān,瓹juān,梋juān,鞙juān,朘juān,呟juǎn,帣juǎn,埍juǎn,捲juǎn,菤juǎn,锩juǎn,臇juǎn,錈juǎn,埢juǎn,踡juǎn,蕋juǎn,卷juàn,劵juàn,弮juàn,倦juàn,桊juàn,狷juàn,绢juàn,淃juàn,眷juàn,鄄juàn,睊juàn,絭juàn,罥juàn,睠juàn,絹juàn,慻juàn,蔨juàn,餋juàn,獧juàn,羂juàn,圏juàn,棬juàn,惓juàn,韏juàn,讂juàn,縳juàn,襈juàn,奆juàn,噘juē,撅juē,撧juē,屩juē,屫juē,繑juē,亅jué,孓jué,决jué,刔jué,氒jué,诀jué,抉jué,決jué,芵jué,泬jué,玦jué,玨jué,挗jué,珏jué,砄jué,绝jué,虳jué,捔jué,欮jué,蚗jué,崛jué,掘jué,斍jué,桷jué,殌jué,焆jué,觖jué,逫jué,傕jué,厥jué,絕jué,絶jué,鈌jué,劂jué,勪jué,瑴jué,谲jué,嶥jué,憰jué,潏jué,熦jué,爴jué,獗jué,瘚jué,蕝jué,蕨jué,憠jué,橛jué,镼jué,爵jué,镢jué,蟨jué,蟩jué,爑jué,譎jué,蹷jué,鶌jué,矍jué,鐝jué,灍jué,爝jué,觼jué,彏jué,戄jué,攫jué,玃jué,鷢jué,欔jué,矡jué,龣jué,貜jué,躩jué,钁jué,璚jué,匷jué,啳jué,吷jué,疦jué,弡jué,穱jué,孒jué,訣jué,橜jué,蹶juě,倔juè,誳juè,君jūn,均jūn,汮jūn,姰jūn,袀jūn,軍jūn,钧jūn,莙jūn,蚐jūn,桾jūn,皲jūn,菌jūn,鈞jūn,碅jūn,筠jūn,皸jūn,皹jūn,覠jūn,銁jūn,銞jūn,鲪jūn,麇jūn,鍕jūn,鮶jūn,麏jūn,麕jūn,军jūn,隽jùn,雋jùn,呁jùn,俊jùn,郡jùn,陖jùn,峻jùn,捃jùn,晙jùn,馂jùn,骏jùn,焌jùn,珺jùn,畯jùn,竣jùn,箘jùn,箟jùn,蜠jùn,儁jùn,寯jùn,懏jùn,餕jùn,燇jùn,駿jùn,鵔jùn,鵕jùn,鵘jùn,葰jùn,埈jùn,咔kā,咖kā,喀kā,衉kā,哢kā,呿kā,卡kǎ,佧kǎ,垰kǎ,裃kǎ,鉲kǎ,胩kǎ,开kāi,奒kāi,揩kāi,锎kāi,開kāi,鐦kāi,凯kǎi,剀kǎi,垲kǎi,恺kǎi,闿kǎi,铠kǎi,凱kǎi,慨kǎi,蒈kǎi,塏kǎi,愷kǎi,楷kǎi,輆kǎi,暟kǎi,锴kǎi,鍇kǎi,鎧kǎi,闓kǎi,颽kǎi,喫kài,噄kài,忾kài,烗kài,勓kài,愾kài,鎎kài,愒kài,欯kài,炌kài,乫kal,刊kān,栞kān,勘kān,龛kān,堪kān,嵁kān,戡kān,龕kān,槛kǎn,檻kǎn,冚kǎn,坎kǎn,侃kǎn,砍kǎn,莰kǎn,偘kǎn,埳kǎn,惂kǎn,欿kǎn,塪kǎn,輡kǎn,竷kǎn,轗kǎn,衎kǎn,看kàn,崁kàn,墈kàn,阚kàn,瞰kàn,磡kàn,闞kàn,矙kàn,輱kàn,忼kāng,砊kāng,粇kāng,康kāng,嫝kāng,嵻kāng,慷kāng,漮kāng,槺kāng,穅kāng,糠kāng,躿kāng,鏮kāng,鱇kāng,闶kāng,閌kāng,扛káng,摃káng,亢kàng,伉kàng,匟kàng,囥kàng,抗kàng,炕kàng,钪kàng,鈧kàng,邟kàng,尻kāo,髛kāo,嵪kāo,訄kāo,薧kǎo,攷kǎo,考kǎo,拷kǎo,洘kǎo,栲kǎo,烤kǎo,铐kào,犒kào,銬kào,鲓kào,靠kào,鮳kào,鯌kào,焅kào,屙kē,蚵kē,苛kē,柯kē,牁kē,珂kē,胢kē,轲kē,疴kē,趷kē,钶kē,嵙kē,棵kē,痾kē,萪kē,軻kē,颏kē,犐kē,稞kē,窠kē,鈳kē,榼kē,薖kē,颗kē,樖kē,瞌kē,磕kē,蝌kē,頦kē,醘kē,顆kē,髁kē,礚kē,嗑kē,窼kē,簻kē,科kē,壳ké,咳ké,揢ké,翗ké,嶱ké,殼ké,毼kě,磆kě,坷kě,可kě,岢kě,炣kě,渇kě,嵑kě,敤kě,渴kě,袔kè,悈kè,歁kè,克kè,刻kè,剋kè,勀kè,勊kè,客kè,恪kè,娔kè,尅kè,课kè,堁kè,氪kè,骒kè,缂kè,愙kè,溘kè,锞kè,碦kè,課kè,礊kè,騍kè,硞kè,艐kè,緙kè,肎kěn,肯kěn,肻kěn,垦kěn,恳kěn,啃kěn,豤kěn,貇kěn,墾kěn,錹kěn,懇kěn,頎kěn,掯kèn,裉kèn,褃kèn,硍kèn,妔kēng,踁kēng,劥kēng,吭kēng,坈kēng,坑kēng,挳kēng,硁kēng,牼kēng,硜kēng,铿kēng,硻kēng,誙kēng,銵kēng,鏗kēng,摼kēng,殸kēng,揁kēng,鍞kēng,巪keo,乬keol,唟keos,厼keum,怾ki,空kōng,倥kōng,埪kōng,崆kōng,悾kōng,硿kōng,箜kōng,躻kōng,錓kōng,鵼kōng,椌kōng,宆kōng,孔kǒng,恐kǒng,控kòng,鞚kòng,羫kòng,廤kos,抠kōu,芤kōu,眍kōu,剾kōu,彄kōu,摳kōu,瞘kōu,劶kǒu,竘kǒu,口kǒu,叩kòu,扣kòu,怐kòu,敂kòu,冦kòu,宼kòu,寇kòu,釦kòu,窛kòu,筘kòu,滱kòu,蔲kòu,蔻kòu,瞉kòu,簆kòu,鷇kòu,搰kū,刳kū,矻kū,郀kū,枯kū,哭kū,桍kū,堀kū,崫kū,圐kū,跍kū,窟kū,骷kū,泏kū,窋kū,狜kǔ,苦kǔ,楛kǔ,齁kù,捁kù,库kù,俈kù,绔kù,庫kù,秙kù,袴kù,喾kù,絝kù,裤kù,瘔kù,酷kù,褲kù,嚳kù,鮬kù,恗kuā,夸kuā,姱kuā,晇kuā,舿kuā,誇kuā,侉kuǎ,咵kuǎ,垮kuǎ,銙kuǎ,顝kuǎ,挎kuà,胯kuà,跨kuà,骻kuà,擓kuai,蒯kuǎi,璯kuài,駃kuài,巜kuài,凷kuài,圦kuài,块kuài,快kuài,侩kuài,郐kuài,哙kuài,狯kuài,脍kuài,塊kuài,筷kuài,鲙kuài,儈kuài,鄶kuài,噲kuài,廥kuài,獪kuài,膾kuài,旝kuài,糩kuài,鱠kuài,蕢kuài,宽kuān,寛kuān,寬kuān,髋kuān,鑧kuān,髖kuān,欵kuǎn,款kuǎn,歀kuǎn,窽kuǎn,窾kuǎn,梡kuǎn,匡kuāng,劻kuāng,诓kuāng,邼kuāng,匩kuāng,哐kuāng,恇kuāng,洭kuāng,筐kuāng,筺kuāng,誆kuāng,軭kuāng,狂kuáng,狅kuáng,诳kuáng,軖kuáng,軠kuáng,誑kuáng,鵟kuáng,夼kuǎng,儣kuǎng,懭kuǎng,爌kuǎng,邝kuàng,圹kuàng,况kuàng,旷kuàng,岲kuàng,況kuàng,矿kuàng,昿kuàng,贶kuàng,框kuàng,眖kuàng,砿kuàng,眶kuàng,絋kuàng,絖kuàng,貺kuàng,軦kuàng,鉱kuàng,鋛kuàng,鄺kuàng,壙kuàng,黋kuàng,懬kuàng,曠kuàng,礦kuàng,穬kuàng,纊kuàng,鑛kuàng,纩kuàng,亏kuī,刲kuī,悝kuī,盔kuī,窥kuī,聧kuī,窺kuī,虧kuī,闚kuī,巋kuī,蘬kuī,岿kuī,奎kuí,晆kuí,逵kuí,鄈kuí,頄kuí,馗kuí,喹kuí,揆kuí,葵kuí,骙kuí,戣kuí,暌kuí,楏kuí,楑kuí,魁kuí,睽kuí,蝰kuí,頯kuí,櫆kuí,藈kuí,鍷kuí,騤kuí,夔kuí,蘷kuí,虁kuí,躨kuí,鍨kuí,卼kuǐ,煃kuǐ,跬kuǐ,頍kuǐ,蹞kuǐ,尯kuǐ,匮kuì,欳kuì,喟kuì,媿kuì,愦kuì,愧kuì,溃kuì,蒉kuì,馈kuì,匱kuì,嘳kuì,嬇kuì,憒kuì,潰kuì,聩kuì,聭kuì,樻kuì,殨kuì,餽kuì,簣kuì,聵kuì,籄kuì,鐀kuì,饋kuì,鑎kuì,篑kuì,坤kūn,昆kūn,晜kūn,堃kūn,堒kūn,婫kūn,崐kūn,崑kūn,猑kūn,菎kūn,裈kūn,焜kūn,琨kūn,髠kūn,裩kūn,锟kūn,髡kūn,尡kūn,潉kūn,蜫kūn,褌kūn,髨kūn,熴kūn,瑻kūn,醌kūn,錕kūn,鲲kūn,臗kūn,騉kūn,鯤kūn,鵾kūn,鶤kūn,鹍kūn,悃kǔn,捆kǔn,阃kǔn,壸kǔn,祵kǔn,硱kǔn,稇kǔn,裍kǔn,壼kǔn,稛kǔn,綑kǔn,閫kǔn,閸kǔn,困kùn,睏kùn,涃kùn,秳kuò,漷kuò,扩kuò,拡kuò,括kuò,桰kuò,筈kuò,萿kuò,葀kuò,蛞kuò,阔kuò,廓kuò,頢kuò,擴kuò,濶kuò,闊kuò,鞟kuò,韕kuò,懖kuò,霩kuò,鞹kuò,鬠kuò,穒kweok,鞡la,垃lā,拉lā,柆lā,啦lā,菈lā,搚lā,邋lā,磖lā,翋lā,旯lá,砬lá,揦lá,喇lǎ,藞lǎ,嚹lǎ,剌là,溂là,腊là,揧là,楋là,瘌là,牎chuāng,床chuáng,漺chuǎng,怆chuàng,愴chuàng,莊zhuāng,粧zhuāng,装zhuāng,裝zhuāng,樁zhuāng,蜡là,蝋là,辢là,辣là,蝲là,臈là,攋là,爉là,臘là,鬎là,櫴là,瓎là,镴là,鯻là,鑞là,儠là,擸là,鱲là,蠟là,来lái,來lái,俫lái,倈lái,崃lái,徕lái,涞lái,莱lái,郲lái,婡lái,崍lái,庲lái,徠lái,梾lái,淶lái,猍lái,萊lái,逨lái,棶lái,琜lái,筙lái,铼lái,箂lái,錸lái,騋lái,鯠lái,鶆lái,麳lái,顂lái,勑lài,誺lài,赉lài,睐lài,睞lài,赖lài,賚lài,濑lài,賴lài,頼lài,癞lài,鵣lài,瀨lài,瀬lài,籁lài,藾lài,癩lài,襰lài,籟lài,唻lài,暕lán,兰lán,岚lán,拦lán,栏lán,婪lán,嵐lán,葻lán,阑lán,蓝lán,谰lán,厱lán,褴lán,儖lán,斓lán,篮lán,懢lán,燣lán,藍lán,襕lán,镧lán,闌lán,璼lán,襤lán,譋lán,幱lán,攔lán,瀾lán,灆lán,籃lán,繿lán,蘭lán,斕lán,欄lán,礷lán,襴lán,囒lán,灡lán,籣lán,欗lán,讕lán,躝lán,鑭lán,钄lán,韊lán,惏lán,澜lán,襽lán,览lǎn,浨lǎn,揽lǎn,缆lǎn,榄lǎn,漤lǎn,罱lǎn,醂lǎn,壈lǎn,懒lǎn,覧lǎn,擥lǎn,懶lǎn,孄lǎn,覽lǎn,孏lǎn,攬lǎn,欖lǎn,爦lǎn,纜lǎn,灠lǎn,顲lǎn,蘫làn,嬾làn,烂làn,滥làn,燗làn,嚂làn,壏làn,濫làn,爛làn,爤làn,瓓làn,糷làn,湅làn,煉làn,爁làn,唥lang,啷lāng,羮láng,勆láng,郎láng,郞láng,欴láng,狼láng,嫏láng,廊láng,桹láng,琅láng,蓈láng,榔láng,瑯láng,硠láng,稂láng,锒láng,筤láng,艆láng,蜋láng,郒láng,螂láng,躴láng,鋃láng,鎯láng,阆láng,閬láng,哴láng,悢lǎng,朗lǎng,朖lǎng,烺lǎng,塱lǎng,蓢lǎng,樃lǎng,誏lǎng,朤lǎng,俍lǎng,脼lǎng,莨làng,埌làng,浪làng,蒗làng,捞lāo,粩lāo,撈lāo,劳láo,労láo,牢láo,窂láo,哰láo,崂láo,浶láo,勞láo,痨láo,僗láo,嶗láo,憥láo,朥láo,癆láo,磱láo,簩láo,蟧láo,醪láo,鐒láo,顟láo,髝láo,轑láo,嫪láo,憦láo,铹láo,耂lǎo,老lǎo,佬lǎo,咾lǎo,姥lǎo,恅lǎo,荖lǎo,栳lǎo,珯lǎo,硓lǎo,铑lǎo,蛯lǎo,銠lǎo,橑lǎo,鮱lǎo,唠lào,嘮lào,烙lào,嗠lào,耢lào,酪lào,澇lào,橯lào,耮lào,軂lào,涝lào,饹le,了le,餎le,牞lè,仂lè,阞lè,乐lè,叻lè,忇lè,扐lè,氻lè,艻lè,玏lè,泐lè,竻lè,砳lè,勒lè,楽lè,韷lè,樂lè,簕lè,鳓lè,鰳lè,頛lei,嘞lei,雷léi,嫘léi,缧léi,蔂léi,樏léi,畾léi,檑léi,縲léi,镭léi,櫑léi,瓃léi,羸léi,礧léi,罍léi,蘲léi,鐳léi,轠léi,壨léi,鑘léi,靁léi,虆léi,鱩léi,欙léi,纝léi,鼺léi,磥léi,攂léi,腂lěi,瘣lěi,厽lěi,耒lěi,诔lěi,垒lěi,絫lěi,傫lěi,誄lěi,磊lěi,蕌lěi,蕾lěi,儡lěi,壘lěi,癗lěi,藟lěi,櫐lěi,矋lěi,礨lěi,灅lěi,蠝lěi,蘽lěi,讄lěi,儽lěi,鑸lěi,鸓lěi,洡lěi,礌lěi,塁lěi,纍lèi,肋lèi,泪lèi,类lèi,涙lèi,淚lèi,累lèi,酹lèi,銇lèi,頪lèi,擂lèi,錑lèi,颣lèi,類lèi,纇lèi,蘱lèi,禷lèi,祱lèi,塄léng,棱léng,楞léng,碐léng,稜léng,踜léng,薐léng,輘léng,冷lěng,倰lèng,堎lèng,愣lèng,睖lèng,瓈li,唎lī,粚lí,刕lí,厘lí,剓lí,梨lí,狸lí,荲lí,骊lí,悡lí,梸lí,犁lí,菞lí,喱lí,棃lí,犂lí,鹂lí,剺lí,漓lí,睝lí,筣lí,缡lí,艃lí,蓠lí,蜊lí,嫠lí,孷lí,樆lí,璃lí,盠lí,竰lí,氂lí,犛lí,糎lí,蔾lí,鋫lí,鲡lí,黎lí,篱lí,縭lí,罹lí,錅lí,蟍lí,謧lí,醨lí,嚟lí,藜lí,邌lí,釐lí,離lí,鯏lí,鏫lí,鯬lí,鵹lí,黧lí,囄lí,灕lí,蘺lí,蠡lí,蠫lí,孋lí,廲lí,劙lí,鑗lí,籬lí,驪lí,鱺lí,鸝lí,婯lí,儷lí,矖lí,纚lí,离lí,褵lí,穲lí,礼lǐ,李lǐ,里lǐ,俚lǐ,峛lǐ,哩lǐ,娌lǐ,峲lǐ,浬lǐ,逦lǐ,理lǐ,裡lǐ,锂lǐ,粴lǐ,裏lǐ,鋰lǐ,鲤lǐ,澧lǐ,禮lǐ,鯉lǐ,蟸lǐ,醴lǐ,鳢lǐ,邐lǐ,鱧lǐ,欐lǐ,欚lǐ,銐lì,脷lì,莉lì,力lì,历lì,厉lì,屴lì,立lì,吏lì,朸lì,丽lì,利lì,励lì,呖lì,坜lì,沥lì,苈lì,例lì,岦lì,戾lì,枥lì,沴lì,疠lì,苙lì,隶lì,俐lì,俪lì,栃lì,栎lì,疬lì,砅lì,茘lì,荔lì,轹lì,郦lì,娳lì,悧lì,栗lì,栛lì,栵lì,涖lì,猁lì,珕lì,砺lì,砾lì,秝lì,莅lì,唳lì,悷lì,琍lì,笠lì,粒lì,粝lì,蚸lì,蛎lì,傈lì,凓lì,厤lì,棙lì,痢lì,蛠lì,詈lì,雳lì,塛lì,慄lì,搮lì,溧lì,蒚lì,蒞lì,鉝lì,鳨lì,厯lì,厲lì,暦lì,歴lì,瑮lì,綟lì,蜧lì,勵lì,曆lì,歷lì,篥lì,隷lì,鴗lì,巁lì,檪lì,濿lì,癘lì,磿lì,隸lì,鬁lì,儮lì,櫔lì,爄lì,犡lì,禲lì,蠇lì,嚦lì,壢lì,攊lì,櫟lì,瀝lì,瓅lì,礪lì,藶lì,麗lì,櫪lì,爏lì,瓑lì,皪lì,盭lì,礫lì,糲lì,蠣lì,癧lì,礰lì,酈lì,鷅lì,麜lì,囇lì,攦lì,轢lì,讈lì,轣lì,攭lì,瓥lì,靂lì,鱱lì,靋lì,觻lì,鱳lì,叓lì,蝷lì,赲lì,曞lì,嫾liān,奁lián,连lián,帘lián,怜lián,涟lián,莲lián,連lián,梿lián,联lián,裢lián,亷lián,嗹lián,廉lián,慩lián,溓lián,漣lián,蓮lián,奩lián,熑lián,覝lián,劆lián,匳lián,噒lián,憐lián,磏lián,聨lián,聫lián,褳lián,鲢lián,濂lián,濓lián,縺lián,翴lián,聮lián,薕lián,螊lián,櫣lián,燫lián,聯lián,臁lián,蹥lián,謰lián,鎌lián,镰lián,簾lián,蠊lián,譧lián,鐮lián,鰱lián,籢lián,籨lián,槤lián,僆lián,匲lián,鬑lián,敛liǎn,琏liǎn,脸liǎn,裣liǎn,摙liǎn,璉liǎn,蔹liǎn,嬚liǎn,斂liǎn,歛liǎn,臉liǎn,鄻liǎn,襝liǎn,羷liǎn,蘝liǎn,蘞liǎn,薟liǎn,练liàn,炼liàn,恋liàn,浰liàn,殓liàn,堜liàn,媡liàn,链liàn,楝liàn,瑓liàn,潋liàn,稴liàn,練liàn,澰liàn,錬liàn,殮liàn,鍊liàn,鏈liàn,瀲liàn,鰊liàn,戀liàn,纞liàn,孌liàn,攣liàn,萰liàn,簗liāng,良liáng,凉liáng,梁liáng,涼liáng,椋liáng,辌liáng,粮liáng,粱liáng,墚liáng,綡liáng,輬liáng,糧liáng,駺liáng,樑liáng,冫liǎng,俩liǎng,倆liǎng,両liǎng,两liǎng,兩liǎng,唡liǎng,啢liǎng,掚liǎng,裲liǎng,緉liǎng,蜽liǎng,魉liǎng,魎liǎng,倞liàng,靓liàng,靚liàng,踉liàng,亮liàng,谅liàng,辆liàng,喨liàng,晾liàng,湸liàng,量liàng,煷liàng,輌liàng,諒liàng,輛liàng,鍄liàng,蹽liāo,樛liáo,潦liáo,辽liáo,疗liáo,僚liáo,寥liáo,嵺liáo,憀liáo,漻liáo,膋liáo,嘹liáo,嫽liáo,寮liáo,嶚liáo,嶛liáo,憭liáo,撩liáo,敹liáo,獠liáo,缭liáo,遼liáo,暸liáo,燎liáo,璙liáo,窷liáo,膫liáo,療liáo,竂liáo,鹩liáo,屪liáo,廫liáo,簝liáo,蟟liáo,豂liáo,賿liáo,蹘liáo,爎liáo,髎liáo,飉liáo,鷯liáo,镽liáo,尞liáo,镠liáo,鏐liáo,僇liáo,聊liáo,繚liáo,钌liǎo,釕liǎo,鄝liǎo,蓼liǎo,爒liǎo,瞭liǎo,廖liào,镣liào,鐐liào,尥liào,炓liào,料liào,撂liào,蟉liào,鴷lie,咧liě,毟liě,挘liě,埓liě,忚liě,列liè,劣liè,冽liè,姴liè,峢liè,挒liè,洌liè,茢liè,迾liè,埒liè,浖liè,烈liè,烮liè,捩liè,猎liè,猟liè,脟liè,蛚liè,裂liè,煭liè,睙liè,聗liè,趔liè,巤liè,颲liè,鮤liè,獵liè,犣liè,躐liè,鬛liè,哷liè,劦liè,奊liè,劽liè,鬣liè,拎līn,邻lín,林lín,临lín,啉lín,崊lín,淋lín,晽lín,琳lín,粦lín,痳lín,碄lín,箖lín,粼lín,鄰lín,隣lín,嶙lín,潾lín,獜lín,遴lín,斴lín,暽lín,燐lín,璘lín,辚lín,霖lín,瞵lín,磷lín,繗lín,翷lín,麐lín,轔lín,壣lín,瀶lín,鏻lín,鳞lín,驎lín,麟lín,鱗lín,疄lín,蹸lín,魿lín,涁lín,臨lín,菻lǐn,亃lǐn,僯lǐn,凛lǐn,凜lǐn,撛lǐn,廩lǐn,廪lǐn,懍lǐn,懔lǐn,澟lǐn,檁lǐn,檩lǐn,伈lǐn,吝lìn,恡lìn,赁lìn,焛lìn,賃lìn,蔺lìn,橉lìn,甐lìn,膦lìn,閵lìn,藺lìn,躏lìn,躙lìn,躪lìn,轥lìn,悋lìn,伶líng,刢líng,灵líng,囹líng,坽líng,夌líng,姈líng,岺líng,彾líng,泠líng,狑líng,苓líng,昤líng,柃líng,玲líng,瓴líng,凌líng,皊líng,砱líng,秢líng,竛líng,铃líng,陵líng,鸰líng,婈líng,崚líng,掕líng,棂líng,淩líng,琌líng,笭líng,紷líng,绫líng,羚líng,翎líng,聆líng,舲líng,菱líng,蛉líng,衑líng,祾líng,詅líng,跉líng,蓤líng,裬líng,鈴líng,閝líng,零líng,龄líng,綾líng,蔆líng,霊líng,駖líng,澪líng,蕶líng,錂líng,霗líng,鲮líng,鴒líng,鹷líng,燯líng,霛líng,霝líng,齢líng,瀮líng,酃líng,鯪líng,孁líng,蘦líng,齡líng,櫺líng,靈líng,欞líng,爧líng,麢líng,龗líng,阾líng,袊líng,靇líng,朎líng,軨líng,醽líng,岭lǐng,领lǐng,領lǐng,嶺lǐng,令lìng,另lìng,呤lìng,炩lìng,溜liū,熘liū,澑liū,蹓liū,刘liú,沠liú,畄liú,浏liú,流liú,留liú,旈liú,琉liú,畱liú,硫liú,裗liú,媹liú,嵧liú,旒liú,蓅liú,遛liú,馏liú,骝liú,榴liú,瑠liú,飗liú,劉liú,瑬liú,瘤liú,磂liú,镏liú,駠liú,鹠liú,橊liú,璢liú,疁liú,癅liú,駵liú,嚠liú,懰liú,瀏liú,藰liú,鎏liú,鎦liú,餾liú,麍liú,鐂liú,騮liú,飅liú,鰡liú,鶹liú,驑liú,蒥liú,飀liú,柳liǔ,栁liǔ,桞liǔ,珋liǔ,桺liǔ,绺liǔ,锍liǔ,綹liǔ,熮liǔ,罶liǔ,鋶liǔ,橮liǔ,羀liǔ,嬼liǔ,畂liù,六liù,翏liù,塯liù,廇liù,磟liù,鹨liù,霤liù,雡liù,鬸liù,鷚liù,飂liù,囖lō,谾lóng,龙lóng,屸lóng,咙lóng,泷lóng,茏lóng,昽lóng,栊lóng,珑lóng,胧lóng,眬lóng,砻lóng,笼lóng,聋lóng,隆lóng,湰lóng,嶐lóng,槞lóng,漋lóng,蕯lóng,癃lóng,窿lóng,篭lóng,龍lóng,巃lóng,巄lóng,瀧lóng,蘢lóng,鏧lóng,霳lóng,曨lóng,櫳lóng,爖lóng,瓏lóng,矓lóng,礱lóng,礲lóng,襱lóng,籠lóng,聾lóng,蠪lóng,蠬lóng,龓lóng,豅lóng,躘lóng,鑨lóng,驡lóng,鸗lóng,滝lóng,嚨lóng,朧lǒng,陇lǒng,垄lǒng,垅lǒng,儱lǒng,隴lǒng,壟lǒng,壠lǒng,攏lǒng,竉lǒng,徿lǒng,拢lǒng,梇lòng,衖lòng,贚lòng,喽lou,嘍lou,窶lóu,娄lóu,婁lóu,溇lóu,蒌lóu,楼lóu,廔lóu,慺lóu,蔞lóu,遱lóu,樓lóu,熡lóu,耧lóu,蝼lóu,艛lóu,螻lóu,謱lóu,軁lóu,髅lóu,鞻lóu,髏lóu,漊lóu,屚lóu,膢lóu,耬lóu,嵝lǒu,搂lǒu,塿lǒu,嶁lǒu,摟lǒu,甊lǒu,篓lǒu,簍lǒu,陋lòu,漏lòu,瘘lòu,镂lòu,瘺lòu,鏤lòu,氌lu,氇lu,噜lū,撸lū,嚕lū,擼lū,卢lú,芦lú,垆lú,枦lú,泸lú,炉lú,栌lú,胪lú,轳lú,舮lú,鸬lú,玈lú,舻lú,颅lú,鈩lú,鲈lú,魲lú,盧lú,嚧lú,壚lú,廬lú,攎lú,瀘lú,獹lú,蘆lú,櫨lú,爐lú,瓐lú,臚lú,矑lú,纑lú,罏lú,艫lú,蠦lú,轤lú,鑪lú,顱lú,髗lú,鱸lú,鸕lú,黸lú,鹵lú,塷lú,庐lú,籚lú,卤lǔ,虏lǔ,挔lǔ,捛lǔ,掳lǔ,硵lǔ,鲁lǔ,虜lǔ,滷lǔ,蓾lǔ,樐lǔ,澛lǔ,魯lǔ,擄lǔ,橹lǔ,磠lǔ,镥lǔ,櫓lǔ,艣lǔ,鏀lǔ,艪lǔ,鐪lǔ,鑥lǔ,瀂lǔ,露lù,圥lù,甪lù,陆lù,侓lù,坴lù,彔lù,录lù,峍lù,勎lù,赂lù,辂lù,陸lù,娽lù,淕lù,淥lù,渌lù,硉lù,菉lù,逯lù,鹿lù,椂lù,琭lù,祿lù,剹lù,勠lù,盝lù,睩lù,碌lù,稑lù,賂lù,路lù,輅lù,塶lù,廘lù,摝lù,漉lù,箓lù,粶lù,蔍lù,戮lù,膟lù,觮lù,趢lù,踛lù,辘lù,醁lù,潞lù,穋lù,錄lù,録lù,錴lù,璐lù,簏lù,螰lù,鴼lù,簶lù,蹗lù,轆lù,騄lù,鹭lù,簬lù,簵lù,鯥lù,鵦lù,鵱lù,麓lù,鏴lù,騼lù,籙lù,虂lù,鷺lù,緑lù,攄lù,禄lù,蕗lù,娈luán,孪luán,峦luán,挛luán,栾luán,鸾luán,脔luán,滦luán,銮luán,鵉luán,奱luán,孿luán,巒luán,曫luán,欒luán,灓luán,羉luán,臠luán,圞luán,灤luán,虊luán,鑾luán,癴luán,癵luán,鸞luán,圝luán,卵luǎn,乱luàn,釠luàn,亂luàn,乿luàn,掠luě,稤luě,略luè,畧luè,锊luè,圙luè,鋝luè,鋢luè,剠luè,擽luè,抡lún,掄lún,仑lún,伦lún,囵lún,沦lún,纶lún,轮lún,倫lún,陯lún,圇lún,婨lún,崘lún,崙lún,惀lún,淪lún,菕lún,棆lún,腀lún,碖lún,綸lún,蜦lún,踚lún,輪lún,磮lún,鯩lún,耣lún,稐lǔn,埨lǔn,侖lùn,溣lùn,論lùn,论lùn,頱luō,囉luō,啰luō,罗luó,猡luó,脶luó,萝luó,逻luó,椤luó,腡luó,锣luó,箩luó,骡luó,镙luó,螺luó,羅luó,覶luó,鏍luó,儸luó,覼luó,騾luó,蘿luó,邏luó,欏luó,鸁luó,鑼luó,饠luó,驘luó,攞luó,籮luó,剆luǒ,倮luǒ,砢luǒ,蓏luǒ,裸luǒ,躶luǒ,瘰luǒ,蠃luǒ,臝luǒ,曪luǒ,癳luǒ,茖luò,蛒luò,硦luò,泺luò,峈luò,洛luò,络luò,荦luò,骆luò,洜luò,珞luò,笿luò,絡luò,落luò,摞luò,漯luò,犖luò,雒luò,鮥luò,鵅luò,濼luò,纙luò,挼luò,跞luò,駱luò,瞜lǘ,瘻lǘ,驴lǘ,闾lǘ,榈lǘ,馿lǘ,氀lǘ,櫚lǘ,藘lǘ,曥lǘ,鷜lǘ,驢lǘ,閭lǘ,偻lǚ,僂lǚ,吕lǚ,呂lǚ,侣lǚ,郘lǚ,侶lǚ,旅lǚ,梠lǚ,焒lǚ,祣lǚ,稆lǚ,铝lǚ,屡lǚ,絽lǚ,缕lǚ,屢lǚ,膂lǚ,膐lǚ,褛lǚ,鋁lǚ,履lǚ,褸lǚ,儢lǚ,縷lǚ,穭lǚ,捋lǚ,穞lǚ,寠lǜ,滤lǜ,濾lǜ,寽lǜ,垏lǜ,律lǜ,虑lǜ,率lǜ,绿lǜ,嵂lǜ,氯lǜ,葎lǜ,綠lǜ,慮lǜ,箻lǜ,勴lǜ,繂lǜ,櫖lǜ,爈lǜ,鑢lǜ,卛lǜ,亇ma,吗ma,嗎ma,嘛ma,妈mā,媽mā,痲mā,孖mā,麻má,嫲má,蔴má,犘má,蟆má,蟇má,尛má,马mǎ,犸mǎ,玛mǎ,码mǎ,蚂mǎ,馬mǎ,溤mǎ,獁mǎ,遤mǎ,瑪mǎ,碼mǎ,螞mǎ,鷌mǎ,鰢mǎ,傌mǎ,榪mǎ,鎷mǎ,杩mà,祃mà,閁mà,骂mà,睰mà,嘜mà,禡mà,罵mà,駡mà,礣mà,鬕mà,貍mái,埋mái,霾mái,买mǎi,荬mǎi,買mǎi,嘪mǎi,蕒mǎi,鷶mǎi,唛mài,劢mài,佅mài,売mài,麦mài,卖mài,脈mài,麥mài,衇mài,勱mài,賣mài,邁mài,霡mài,霢mài,迈mài,颟mān,顢mān,姏mán,悗mán,蛮mán,慲mán,摱mán,馒mán,槾mán,樠mán,瞒mán,瞞mán,鞔mán,饅mán,鳗mán,鬗mán,鬘mán,蠻mán,矕mán,僈mán,屘mǎn,満mǎn,睌mǎn,满mǎn,滿mǎn,螨mǎn,襔mǎn,蟎mǎn,鏋mǎn,曼màn,谩màn,墁màn,幔màn,慢màn,漫màn,獌màn,缦màn,蔄màn,蔓màn,熳màn,澷màn,镘màn,縵màn,蟃màn,鏝màn,蘰màn,鰻màn,謾màn,牤māng,朚máng,龒máng,邙máng,吂máng,忙máng,汒máng,芒máng,尨máng,杗máng,杧máng,盲máng,厖máng,恾máng,笀máng,茫máng,哤máng,娏máng,浝máng,狵máng,牻máng,硭máng,釯máng,铓máng,痝máng,鋩máng,駹máng,蘉máng,氓máng,甿máng,庬máng,鹲máng,鸏máng,莽mǎng,茻mǎng,壾mǎng,漭mǎng,蟒mǎng,蠎mǎng,莾mǎng,匁mangmi,猫māo,貓māo,毛máo,矛máo,枆máo,牦máo,茅máo,旄máo,渵máo,軞máo,酕máo,堥máo,锚máo,緢máo,髦máo,髳máo,錨máo,蟊máo,鶜máo,茆máo,罞máo,鉾máo,冇mǎo,戼mǎo,峁mǎo,泖mǎo,昴mǎo,铆mǎo,笷mǎo,蓩mǎo,鉚mǎo,卯mǎo,秏mào,冃mào,皃mào,芼mào,冐mào,茂mào,冒mào,贸mào,耄mào,袤mào,覒mào,媢mào,帽mào,貿mào,鄚mào,愗mào,暓mào,楙mào,毷mào,瑁mào,貌mào,鄮mào,蝐mào,懋mào,霿mào,獏mào,毣mào,萺mào,瞀mào,唜mas,么me,嚜me,麼me,麽me,庅mē,嚒mē,孭mē,濹mè,嚰mè,沒méi,没méi,枚méi,玫méi,苺méi,栂méi,眉méi,脄méi,莓méi,梅méi,珻méi,脢méi,郿méi,堳méi,媒méi,嵋méi,湄méi,湈méi,睂méi,葿méi,楣méi,楳méi,煤méi,瑂méi,禖méi,腜méi,塺méi,槑méi,酶méi,镅méi,鹛méi,鋂méi,霉méi,徾méi,鎇méi,矀méi,攗méi,蘪méi,鶥méi,攟méi,黴méi,坆méi,猸méi,羙měi,毎měi,每měi,凂měi,美měi,挴měi,浼měi,媄měi,渼měi,媺měi,镁měi,嬍měi,燘měi,躾měi,鎂měi,黣měi,嵄měi,眊mèi,妹mèi,抺mèi,沬mèi,昧mèi,祙mèi,袂mèi,眛mèi,媚mèi,寐mèi,痗mèi,跊mèi,鬽mèi,煝mèi,睸mèi,魅mèi,篃mèi,蝞mèi,櫗mèi,氼mèi,们men,們men,椚mēn,门mén,扪mén,钔mén,門mén,閅mén,捫mén,菛mén,璊mén,穈mén,鍆mén,虋mén,怋mén,玣mén,殙mèn,闷mèn,焖mèn,悶mèn,暪mèn,燜mèn,懑mèn,懣mèn,掹mēng,擝mēng,懞mēng,虻méng,冡méng,莔méng,萌méng,萠méng,盟méng,甍méng,儚méng,橗méng,瞢méng,蕄méng,蝱méng,鄳méng,鄸méng,幪méng,濛méng,獴méng,曚méng,朦méng,檬méng,氋méng,礞méng,鯍méng,艨méng,矒méng,靀méng,饛méng,顭méng,蒙méng,鼆méng,夣méng,懜méng,溕méng,矇měng,勐měng,猛měng,锰měng,艋měng,蜢měng,錳měng,懵měng,蠓měng,鯭měng,黽měng,瓾měng,夢mèng,孟mèng,梦mèng,霥mèng,踎meo,咪mī,瞇mī,眯mī,冞mí,弥mí,祢mí,迷mí,袮mí,猕mí,谜mí,蒾mí,詸mí,謎mí,醚mí,彌mí,糜mí,縻mí,麊mí,麋mí,禰mí,靡mí,獼mí,麛mí,爢mí,瓕mí,蘼mí,镾mí,醾mí,醿mí,鸍mí,釄mí,檷mí,籋mí,罙mí,擟mí,米mǐ,羋mǐ,芈mǐ,侎mǐ,沵mǐ,弭mǐ,洣mǐ,敉mǐ,粎mǐ,脒mǐ,葞mǐ,蝆mǐ,蔝mǐ,銤mǐ,瀰mǐ,孊mǐ,灖mǐ,渳mǐ,哋mì,汨mì,沕mì,宓mì,泌mì,觅mì,峚mì,宻mì,秘mì,密mì,淧mì,覓mì,覔mì,幂mì,谧mì,塓mì,幎mì,覛mì,嘧mì,榓mì,漞mì,熐mì,蔤mì,蜜mì,鼏mì,冪mì,樒mì,幦mì,濗mì,藌mì,謐mì,櫁mì,簚mì,羃mì,鑖mì,蓂mì,滵mì,芇mián,眠mián,婂mián,绵mián,媔mián,棉mián,綿mián,緜mián,蝒mián,嬵mián,檰mián,櫋mián,矈mián,矊mián,蠠mián,矏mián,厸miǎn,丏miǎn,汅miǎn,免miǎn,沔miǎn,黾miǎn,俛miǎn,勉miǎn,眄miǎn,娩miǎn,偭miǎn,冕miǎn,勔miǎn,喕miǎn,愐miǎn,湎miǎn,缅miǎn,葂miǎn,腼miǎn,緬miǎn,鮸miǎn,渑miǎn,澠miǎn,靦miǎn,靣miàn,面miàn,糆miàn,麪miàn,麫miàn,麺miàn,麵miàn,喵miāo,苗miáo,媌miáo,瞄miáo,鹋miáo,嫹miáo,鶓miáo,鱙miáo,描miáo,訬miǎo,仯miǎo,杪miǎo,眇miǎo,秒miǎo,淼miǎo,渺miǎo,缈miǎo,篎miǎo,緲miǎo,藐miǎo,邈miǎo,妙miào,庙miào,竗miào,庿miào,廟miào,吀miē,咩miē,哶miē,灭miè,搣miè,滅miè,薎miè,幭miè,懱miè,篾miè,蠛miè,衊miè,鱴miè,蔑miè,民mín,垊mín,姄mín,岷mín,旻mín,旼mín,玟mín,苠mín,珉mín,盿mín,冧mín,罠mín,崏mín,捪mín,琘mín,琝mín,暋mín,瑉mín,痻mín,碈mín,鈱mín,賯mín,錉mín,鍲mín,缗mín,湏mǐn,緍mǐn,緡mǐn,皿mǐn,冺mǐn,刡mǐn,闵mǐn,抿mǐn,泯mǐn,勄mǐn,敃mǐn,闽mǐn,悯mǐn,敏mǐn,笢mǐn,笽mǐn,湣mǐn,閔mǐn,愍mǐn,敯mǐn,閩mǐn,慜mǐn,憫mǐn,潣mǐn,簢mǐn,鳘mǐn,鰵mǐn,僶mǐn,名míng,明míng,鸣míng,洺míng,眀míng,茗míng,冥míng,朙míng,眳míng,铭míng,鄍míng,嫇míng,溟míng,猽míng,暝míng,榠míng,銘míng,鳴míng,瞑míng,螟míng,覭míng,佲mǐng,凕mǐng,慏mǐng,酩mǐng,姳mǐng,命mìng,掵mìng,詺mìng,谬miù,缪miù,繆miù,謬miù,摸mō,嚤mō,嬤mó,嬷mó,戂mó,攠mó,谟mó,嫫mó,馍mó,摹mó,模mó,膜mó,摩mó,魹mó,橅mó,磨mó,糢mó,謨mó,謩mó,擵mó,饃mó,蘑mó,髍mó,魔mó,劘mó,饝mó,嚩mó,懡mǒ,麿mǒ,狢mò,貈mò,貉mò,脉mò,瀎mò,抹mò,末mò,劰mò,圽mò,妺mò,怽mò,歿mò,殁mò,沫mò,茉mò,陌mò,帞mò,昩mò,枺mò,皌mò,眜mò,眿mò,砞mò,秣mò,莈mò,眽mò,粖mò,絈mò,蛨mò,貃mò,嗼mò,塻mò,寞mò,漠mò,蓦mò,貊mò,銆mò,墨mò,嫼mò,暯mò,瘼mò,瞐mò,瞙mò,镆mò,魩mò,黙mò,縸mò,默mò,貘mò,藦mò,蟔mò,鏌mò,爅mò,礳mò,纆mò,耱mò,艒mò,莫mò,驀mò,乮mol,哞mōu,呣móu,蛑móu,蝥móu,牟móu,侔móu,劺móu,恈móu,洠móu,眸móu,谋móu,謀móu,鍪móu,鴾móu,麰móu,鞪móu,某mǒu,呒mú,嘸mú,毪mú,氁mú,母mǔ,亩mǔ,牡mǔ,姆mǔ,拇mǔ,牳mǔ,畆mǔ,畒mǔ,胟mǔ,畝mǔ,畞mǔ,砪mǔ,畮mǔ,鉧mǔ,踇mǔ,坶mǔ,峔mǔ,朷mù,木mù,仫mù,目mù,凩mù,沐mù,狇mù,炑mù,牧mù,苜mù,莯mù,蚞mù,钼mù,募mù,雮mù,墓mù,幕mù,慔mù,楘mù,睦mù,鉬mù,慕mù,暮mù,樢mù,霂mù,穆mù,幙mù,旀myeo,椧myeong,秅ná,拏ná,拿ná,挐ná,誽ná,镎ná,鎿ná,乸ná,詉ná,蒘ná,訤ná,哪nǎ,雫nǎ,郍nǎ,那nà,吶nà,妠nà,纳nà,肭nà,娜nà,钠nà,納nà,袦nà,捺nà,笝nà,豽nà,軜nà,鈉nà,嗱nà,蒳nà,靹nà,魶nà,呐nà,內nà,篛nà,衲nà,腉nái,熋nái,摨nái,孻nái,螚nái,搱nái,乃nǎi,奶nǎi,艿nǎi,氖nǎi,疓nǎi,妳nǎi,廼nǎi,迺nǎi,倷nǎi,釢nǎi,奈nài,柰nài,萘nài,渿nài,鼐nài,褦nài,錼nài,耐nài,囡nān,男nán,抩nán,枏nán,枬nán,侽nán,南nán,柟nán,娚nán,畘nán,莮nán,难nán,喃nán,遖nán,暔nán,楠nán,煵nán,諵nán,難nán,萳nán,嫨nǎn,赧nǎn,揇nǎn,湳nǎn,腩nǎn,戁nǎn,蝻nǎn,婻nàn,囔nāng,涳náng,乪náng,嚢náng,囊náng,蠰náng,鬞náng,馕náng,欜náng,饢náng,搑náng,崀nǎng,擃nǎng,曩nǎng,攮nǎng,灢nǎng,瀼nǎng,儾nàng,齉nàng,孬nāo,檂nāo,巙náo,呶náo,怓náo,挠náo,峱náo,硇náo,铙náo,猱náo,蛲náo,碙náo,撓náo,獶náo,蟯náo,夒náo,譊náo,鐃náo,巎náo,獿náo,憹náo,蝚náo,嶩náo,垴nǎo,恼nǎo,悩nǎo,脑nǎo,匘nǎo,脳nǎo,堖nǎo,惱nǎo,嫐nǎo,瑙nǎo,腦nǎo,碯nǎo,闹nào,婥nào,淖nào,閙nào,鬧nào,臑nào,呢ne,讷nè,抐nè,眲nè,訥nè,娞něi,馁něi,腇něi,餒něi,鮾něi,鯘něi,浽něi,内nèi,氝nèi,焾nem,嫩nèn,媆nèn,嫰nèn,竜néng,能néng,莻neus,鈪ngag,銰ngai,啱ngam,妮nī,尼ní,坭ní,怩ní,泥ní,籾ní,倪ní,屔ní,秜ní,郳ní,铌ní,埿ní,婗ní,猊ní,蚭ní,棿ní,跜ní,鈮ní,蜺ní,觬ní,貎ní,霓ní,鲵ní,鯢ní,麑ní,齯ní,臡ní,抳ní,蛪ní,腝ní,淣ní,聻nǐ,濔nǐ,伱nǐ,你nǐ,拟nǐ,狔nǐ,苨nǐ,柅nǐ,旎nǐ,晲nǐ,孴nǐ,鉨nǐ,馜nǐ,隬nǐ,擬nǐ,薿nǐ,鑈nǐ,儞nǐ,伲nì,迡nì,昵nì,胒nì,逆nì,匿nì,痆nì,眤nì,堄nì,惄nì,嫟nì,愵nì,溺nì,睨nì,腻nì,暱nì,縌nì,膩nì,嬺nì,灄nì,孨nì,拈niān,蔫niān,年nián,秊nián,哖nián,秥nián,鮎nián,鲶nián,鵇nián,黏nián,鯰nián,姩nián,鲇nián,跈niǎn,涊niǎn,捻niǎn,淰niǎn,辇niǎn,撚niǎn,撵niǎn,碾niǎn,輦niǎn,簐niǎn,攆niǎn,蹨niǎn,躎niǎn,辗niǎn,輾niǎn,卄niàn,廿niàn,念niàn,埝niàn,艌niàn,娘niáng,嬢niáng,醸niáng,酿niàng,釀niàng,茮niǎo,尦niǎo,鸟niǎo,袅niǎo,鳥niǎo,嫋niǎo,裊niǎo,蔦niǎo,嬝niǎo,褭niǎo,嬲niǎo,茑niǎo,尿niào,脲niào,捏niē,揑niē,乜niè,帇niè,圼niè,苶niè,枿niè,陧niè,涅niè,聂niè,臬niè,啮niè,惗niè,菍niè,隉niè,喦niè,敜niè,嗫niè,嵲niè,踂niè,摰niè,槷niè,踗niè,踙niè,镊niè,镍niè,嶭niè,篞niè,臲niè,錜niè,颞niè,蹑niè,嚙niè,聶niè,鎳niè,闑niè,孼niè,孽niè,櫱niè,蘖niè,囁niè,齧niè,巕niè,糱niè,糵niè,蠥niè,囓niè,躡niè,鑷niè,顳niè,諗niè,囐niè,銸niè,鋷niè,讘niè,脌nīn,囜nín,您nín,恁nín,拰nǐn,宁níng,咛níng,狞níng,柠níng,聍níng,寍níng,寕níng,寜níng,寧níng,儜níng,凝níng,嚀níng,嬣níng,獰níng,薴níng,檸níng,聹níng,鑏níng,鬡níng,鸋níng,甯níng,濘níng,鬤níng,拧nǐng,擰nǐng,矃nǐng,橣nǐng,佞nìng,侫nìng,泞nìng,寗nìng,澝nìng,妞niū,牛niú,牜niú,忸niǔ,扭niǔ,沑niǔ,狃niǔ,纽niǔ,杻niǔ,炄niǔ,钮niǔ,紐niǔ,莥niǔ,鈕niǔ,靵niǔ,拗niù,莀nóng,农nóng,侬nóng,哝nóng,浓nóng,脓nóng,秾nóng,儂nóng,辳nóng,噥nóng,濃nóng,蕽nóng,禯nóng,膿nóng,穠nóng,襛nóng,醲nóng,欁nóng,癑nóng,農nóng,繷nǒng,廾nòng,弄nòng,挊nòng,挵nòng,齈nòng,羺nóu,譨nóu,啂nǒu,槈nòu,耨nòu,獳nòu,檽nòu,鎒nòu,鐞nòu,譳nòu,嬬nòu,奴nú,驽nú,笯nú,駑nú,砮nú,孥nú,伮nǔ,努nǔ,弩nǔ,胬nǔ,怒nù,傉nù,搙nù,奻nuán,渜nuán,暖nuǎn,煗nuǎn,餪nuǎn,疟nuè,虐nuè,瘧nuè,硸nuè,黁nun,燶nung,挪nuó,梛nuó,傩nuó,搻nuó,儺nuó,橠nuó,袲nuǒ,诺nuò,喏nuò,掿nuò,逽nuò,搦nuò,锘nuò,榒nuò,稬nuò,諾nuò,蹃nuò,糑nuò,懦nuò,懧nuò,糥nuò,穤nuò,糯nuò,堧nuò,耎nuò,愞nuò,女nǚ,钕nǚ,籹nǚ,釹nǚ,衂nǜ,恧nǜ,朒nǜ,衄nǜ,筽o,噢ō,哦ò,夞oes,乯ol,鞰on,吽ōu,讴ōu,欧ōu,殴ōu,瓯ōu,鸥ōu,塸ōu,歐ōu,毆ōu,熰ōu,甌ōu,膒ōu,鴎ōu,櫙ōu,藲ōu,謳ōu,鏂ōu,鷗ōu,沤ōu,蓲ōu,敺ōu,醧ōu,漚ōu,齵óu,澫ǒu,吘ǒu,呕ǒu,偶ǒu,腢ǒu,嘔ǒu,耦ǒu,蕅ǒu,藕ǒu,怄òu,慪òu,妑pā,趴pā,舥pā,啪pā,葩pā,帊pā,杷pá,爬pá,耙pá,掱pá,琶pá,筢pá,潖pá,跁pá,帕pà,怕pà,袙pà,拍pāi,俳pái,徘pái,排pái,猅pái,牌pái,輫pái,簰pái,犤pái,哌pài,派pài,蒎pài,鎃pài,湃pài,磗pak,眅pān,畨pān,潘pān,攀pān,膰pán,爿pán,柈pán,盘pán,媻pán,幋pán,蒰pán,槃pán,盤pán,磐pán,縏pán,蹒pán,瀊pán,蟠pán,蹣pán,鎜pán,鞶pán,踫pán,宷pán,洀pán,闆pǎn,坢pǎn,盻pǎn,眫pàn,冸pàn,判pàn,沜pàn,泮pàn,叛pàn,牉pàn,盼pàn,畔pàn,袢pàn,詊pàn,溿pàn,頖pàn,鋬pàn,鵥pàn,襻pàn,鑻pàn,炍pàn,乓pāng,汸pāng,沗pāng,肨pāng,胮pāng,雱pāng,滂pāng,膖pāng,霶pāng,磅páng,趽páng,彷páng,夆páng,厐páng,庞páng,逄páng,旁páng,舽páng,篣páng,螃páng,鳑páng,龐páng,鰟páng,蠭páng,髈páng,龎páng,耪pǎng,覫pǎng,炐pàng,胖pàng,抛pāo,拋pāo,脬pāo,刨páo,咆páo,垉páo,庖páo,狍páo,炰páo,爮páo,袍páo,匏páo,軳páo,鞄páo,褜páo,麅páo,颮páo,跑pǎo,窌pào,炮pào,奅pào,泡pào,皰pào,砲pào,萢pào,麭pào,礟pào,礮pào,犥pào,疱pào,妚pēi,呸pēi,怌pēi,肧pēi,胚pēi,衃pēi,醅pēi,抷pēi,阫péi,陪péi,陫péi,培péi,毰péi,赔péi,锫péi,裴péi,裵péi,賠péi,錇péi,駍péi,婄péi,俖pěi,茷pèi,攈pèi,伂pèi,沛pèi,佩pèi,帔pèi,姵pèi,旆pèi,浿pèi,珮pèi,配pèi,笩pèi,蓜pèi,辔pèi,馷pèi,嶏pèi,霈pèi,轡pèi,斾pèi,喷pēn,噴pēn,濆pēn,歕pēn,衯pén,瓫pén,盆pén,湓pén,葐pén,呠pěn,翸pěn,匉pēng,怦pēng,抨pēng,泙pēng,恲pēng,胓pēng,砰pēng,烹pēng,硑pēng,軯pēng,閛pēng,漰pēng,嘭pēng,磞pēng,弸pēng,荓pēng,軿pēng,輧pēng,梈pēng,芃péng,朋péng,竼péng,倗péng,莑péng,堋péng,彭péng,棚péng,椖péng,塜péng,塳péng,漨péng,硼péng,稝péng,蓬péng,鹏péng,槰péng,樥péng,憉péng,澎péng,輣péng,篷péng,膨péng,韸péng,髼péng,蟚péng,蟛péng,鬅péng,纄péng,韼péng,鵬péng,鬔péng,鑝péng,淜péng,熢péng,摓pěng,捧pěng,淎pěng,皏pěng,剻pěng,掽pèng,椪pèng,碰pèng,浌peol,巼phas,闏phdeng,乶phoi,喸phos,榌pi,伓pī,伾pī,批pī,纰pī,邳pī,坯pī,披pī,炋pī,狉pī,狓pī,砒pī,秛pī,秠pī,紕pī,耚pī,豾pī,釽pī,鉟pī,銔pī,劈pī,磇pī,駓pī,噼pī,錃pī,魾pī,憵pī,礔pī,礕pī,霹pī,鲏pī,鮍pī,丕pī,髬pī,铍pí,鈹pí,皮pí,阰pí,芘pí,岯pí,枇pí,毞pí,毗pí,毘pí,疲pí,蚍pí,郫pí,陴pí,啤pí,埤pí,蚽pí,豼pí,焷pí,脾pí,腗pí,罴pí,膍pí,蜱pí,隦pí,壀pí,篺pí,螷pí,貔pí,簲pí,羆pí,鵧pí,朇pí,鼙pí,蠯pí,猈pí,琵pí,匹pǐ,庀pǐ,仳pǐ,圮pǐ,苉pǐ,脴pǐ,痞pǐ,銢pǐ,鴄pǐ,噽pǐ,癖pǐ,嚭pǐ,顖pǐ,擗pǐ,辟pì,鈲pì,闢pì,屁pì,淠pì,渒pì,揊pì,媲pì,嫓pì,睤pì,睥pì,潎pì,僻pì,澼pì,嚊pì,甓pì,疈pì,譬pì,鷿pì,囨piān,偏piān,媥piān,犏piān,篇piān,翩piān,骈pián,胼pián,楄pián,楩pián,賆pián,諚pián,骿pián,蹁pián,駢pián,騈pián,徧pián,腁pián,覑piǎn,谝piǎn,貵piǎn,諞piǎn,片piàn,骗piàn,魸piàn,騗piàn,騙piàn,剽piāo,彯piāo,漂piāo,缥piāo,飘piāo,磦piāo,旚piāo,縹piāo,翲piāo,螵piāo,飄piāo,魒piāo,薸piáo,闝piáo,嫖piáo,瓢piáo,莩piǎo,殍piǎo,瞟piǎo,醥piǎo,皫piǎo,顠piǎo,飃piào,票piào,勡piào,嘌piào,慓piào,覕piē,氕piē,撆piē,暼piē,瞥piē,撇piě,丿piě,苤piě,鐅piě,嫳piè,拚pīn,姘pīn,拼pīn,礗pīn,穦pīn,馪pīn,驞pīn,贫pín,貧pín,嫔pín,频pín,頻pín,嬪pín,薲pín,嚬pín,矉pín,颦pín,顰pín,蘋pín,玭pín,品pǐn,榀pǐn,朩pìn,牝pìn,汖pìn,聘pìn,娉pīng,乒pīng,甹pīng,俜pīng,涄pīng,砯pīng,艵pīng,竮pīng,頩pīng,冖píng,平píng,评píng,凭píng,坪píng,岼píng,苹píng,郱píng,屏píng,帡píng,枰píng,洴píng,玶píng,娦píng,瓶píng,屛píng,帲píng,萍píng,蚲píng,塀píng,幈píng,焩píng,甁píng,缾píng,聠píng,蓱píng,蛢píng,評píng,鲆píng,凴píng,慿píng,憑píng,鮃píng,簈píng,呯píng,箳píng,鏺po,钋pō,坡pō,岥pō,泼pō,釙pō,颇pō,溌pō,酦pō,潑pō,醱pō,頗pō,攴pō,巿pó,婆pó,嘙pó,鄱pó,皤pó,謈pó,櫇pó,叵pǒ,尀pǒ,钷pǒ,笸pǒ,鉕pǒ,駊pǒ,屰pò,廹pò,岶pò,迫pò,敀pò,昢pò,洦pò,珀pò,烞pò,破pò,砶pò,粕pò,奤pò,蒪pò,魄pò,皛pò,頮pōu,剖pōu,颒pōu,抙pōu,捊pōu,抔póu,掊póu,裒póu,咅pǒu,哣pǒu,犃pǒu,兺ppun,哛ppun,巬pu,巭pu,扑pū,炇pū,痡pū,駇pū,噗pū,撲pū,鋪pū,潽pū,襆pú,脯pú,蜅pú,仆pú,圤pú,匍pú,莆pú,菩pú,菐pú,葡pú,蒱pú,蒲pú,僕pú,酺pú,墣pú,璞pú,瞨pú,穙pú,镤pú,贌pú,纀pú,鏷pú,襥pú,濮pú,朴pǔ,圃pǔ,埔pǔ,浦pǔ,烳pǔ,普pǔ,圑pǔ,溥pǔ,暜pǔ,谱pǔ,樸pǔ,氆pǔ,諩pǔ,檏pǔ,镨pǔ,譜pǔ,蹼pǔ,鐠pǔ,铺pù,舖pù,舗pù,曝pù,七qī,沏qī,妻qī,恓qī,柒qī,倛qī,凄qī,栖qī,桤qī,缼qī,郪qī,娸qī,戚qī,捿qī,桼qī,淒qī,萋qī,朞qī,期qī,棲qī,欺qī,紪qī,褄qī,僛qī,嘁qī,慽qī,榿qī,漆qī,緀qī,磎qī,諆qī,諿qī,霋qī,蹊qī,魌qī,鏚qī,鶈qī,碕qī,螇qī,傶qī,迉qī,軙qí,荎qí,饑qí,亓qí,祁qí,齐qí,圻qí,岐qí,岓qí,忯qí,芪qí,亝qí,其qí,奇qí,斉qí,歧qí,祇qí,祈qí,肵qí,疧qí,竒qí,剘qí,斊qí,旂qí,脐qí,蚑qí,蚔qí,蚚qí,颀qí,埼qí,崎qí,掑qí,淇qí,渏qí,猉qí,畦qí,萁qí,跂qí,軝qí,釮qí,骐qí,骑qí,嵜qí,棊qí,棋qí,琦qí,琪qí,祺qí,蛴qí,愭qí,碁qí,鬿qí,旗qí,粸qí,綥qí,綦qí,綨qí,緕qí,蜝qí,蜞qí,齊qí,禥qí,蕲qí,螧qí,鲯qí,濝qí,藄qí,檱qí,櫀qí,簱qí,臍qí,騎qí,騏qí,鳍qí,蘄qí,鵸qí,鶀qí,麒qí,籏qí,纃qí,艩qí,蠐qí,鬐qí,騹qí,魕qí,鰭qí,玂qí,麡qí,荠qí,薺qí,扺qí,耆qí,鯕qí,袳qǐ,乞qǐ,邔qǐ,企qǐ,屺qǐ,岂qǐ,芑qǐ,启qǐ,呇qǐ,杞qǐ,玘qǐ,盀qǐ,唘qǐ,豈qǐ,起qǐ,啓qǐ,啔qǐ,啟qǐ,绮qǐ,棨qǐ,綮qǐ,綺qǐ,諬qǐ,簯qǐ,闙qǐ,梩qǐ,婍qǐ,鼜qì,悽qì,槭qì,气qì,讫qì,気qì,汔qì,迄qì,弃qì,汽qì,芞qì,呮qì,泣qì,炁qì,盵qì,咠qì,契qì,砌qì,栔qì,氣qì,訖qì,唭qì,夡qì,棄qì,湆qì,湇qì,葺qì,碛qì,摖qì,暣qì,甈qì,碶qì,噐qì,憇qì,器qì,憩qì,磜qì,磧qì,磩qì,罊qì,趞qì,洓qì,慼qì,欫qì,掐qiā,葜qiā,愘qiā,搳qiā,拤qiá,跒qiǎ,酠qiǎ,鞐qiǎ,圶qià,冾qià,恰qià,洽qià,殎qià,硈qià,髂qià,磍qià,帢qià,千qiān,仟qiān,阡qiān,圱qiān,圲qiān,奷qiān,扦qiān,汘qiān,芊qiān,迁qiān,佥qiān,岍qiān,杄qiān,汧qiān,茾qiān,竏qiān,臤qiān,钎qiān,拪qiān,牵qiān,粁qiān,悭qiān,蚈qiān,铅qiān,牽qiān,釺qiān,谦qiān,鈆qiān,僉qiān,愆qiān,签qiān,鉛qiān,骞qiān,鹐qiān,慳qiān,搴qiān,撁qiān,箞qiān,諐qiān,遷qiān,褰qiān,謙qiān,顅qiān,檶qiān,攐qiān,攑qiān,櫏qiān,簽qiān,鵮qiān,攓qiān,騫qiān,鬜qiān,鬝qiān,籤qiān,韆qiān,鋟qiān,扡qiān,杴qiān,孅qiān,藖qiān,谸qiān,鏲qiān,朁qián,岒qián,忴qián,扲qián,拑qián,前qián,荨qián,钤qián,歬qián,虔qián,钱qián,钳qián,乾qián,掮qián,軡qián,媊qián,鈐qián,鉗qián,榩qián,箝qián,潜qián,羬qián,橬qián,錢qián,黔qián,鎆qián,騝qián,濳qián,騚qián,灊qián,籖qián,鰬qián,潛qián,蚙qián,煔qián,燂qián,葴qián,鍼qián,墘qián,浅qiǎn,肷qiǎn,淺qiǎn,嵰qiǎn,遣qiǎn,槏qiǎn,膁qiǎn,蜸qiǎn,谴qiǎn,缱qiǎn,譴qiǎn,鑓qiǎn,繾qiǎn,欠qiàn,刋qiàn,伣qiàn,芡qiàn,俔qiàn,茜qiàn,倩qiàn,悓qiàn,堑qiàn,嵌qiàn,棈qiàn,椠qiàn,嗛qiàn,皘qiàn,蒨qiàn,塹qiàn,歉qiàn,綪qiàn,蔳qiàn,儙qiàn,槧qiàn,篏qiàn,輤qiàn,篟qiàn,壍qiàn,嬱qiàn,縴qiàn,廞qiàn,鸧qiāng,鶬qiāng,羌qiāng,戕qiāng,戗qiāng,斨qiāng,枪qiāng,玱qiāng,猐qiāng,琷qiāng,跄qiāng,嗴qiāng,獇qiāng,腔qiāng,溬qiāng,蜣qiāng,锖qiāng,嶈qiāng,戧qiāng,槍qiāng,牄qiāng,瑲qiāng,锵qiāng,篬qiāng,錆qiāng,蹌qiāng,镪qiāng,蹡qiāng,鏘qiāng,鏹qiāng,啌qiāng,鎗qiāng,強qiáng,强qiáng,墙qiáng,嫱qiáng,蔷qiáng,樯qiáng,漒qiáng,墻qiáng,嬙qiáng,廧qiáng,薔qiáng,檣qiáng,牆qiáng,謒qiáng,艢qiáng,蘠qiáng,抢qiǎng,羟qiǎng,搶qiǎng,羥qiǎng,墏qiǎng,摤qiǎng,繈qiǎng,襁qiǎng,繦qiǎng,嗆qiàng,炝qiàng,唴qiàng,羻qiàng,呛qiàng,熗qiàng,悄qiāo,硗qiāo,郻qiāo,跷qiāo,鄡qiāo,鄥qiāo,劁qiāo,敲qiāo,踍qiāo,锹qiāo,碻qiāo,頝qiāo,墽qiāo,幧qiāo,橇qiāo,燆qiāo,缲qiāo,鍫qiāo,鍬qiāo,繰qiāo,趬qiāo,鐰qiāo,鞽qiāo,塙qiāo,毃qiāo,鏒qiāo,橾qiāo,喿qiāo,蹺qiāo,峤qiáo,嶠qiáo,乔qiáo,侨qiáo,荍qiáo,荞qiáo,桥qiáo,硚qiáo,菬qiáo,喬qiáo,睄qiáo,僑qiáo,槗qiáo,谯qiáo,嘺qiáo,憔qiáo,蕎qiáo,鞒qiáo,樵qiáo,橋qiáo,犞qiáo,癄qiáo,瞧qiáo,礄qiáo,藮qiáo,譙qiáo,鐈qiáo,墧qiáo,顦qiáo,磽qiǎo,巧qiǎo,愀qiǎo,髜qiǎo,偢qiào,墝qiào,俏qiào,诮qiào,陗qiào,峭qiào,帩qiào,窍qiào,翘qiào,誚qiào,髚qiào,僺qiào,撬qiào,鞘qiào,韒qiào,竅qiào,翹qiào,鞩qiào,躈qiào,踃qiào,切qiē,苆qiē,癿qié,茄qié,聺qié,且qiě,詧qiè,慊qiè,厒qiè,怯qiè,匧qiè,窃qiè,倿qiè,悏qiè,挈qiè,惬qiè,笡qiè,愜qiè,朅qiè,箧qiè,緁qiè,锲qiè,篋qiè,踥qiè,穕qiè,藒qiè,鍥qiè,鯜qiè,鐑qiè,竊qiè,籡qiè,帹qiè,郄qiè,郤qiè,稧qiè,妾qiè,亲qīn,侵qīn,钦qīn,衾qīn,菳qīn,媇qīn,嵚qīn,綅qīn,誛qīn,嶔qīn,親qīn,顉qīn,駸qīn,鮼qīn,寴qīn,欽qīn,骎qīn,鈂qín,庈qín,芩qín,芹qín,埁qín,珡qín,矝qín,秦qín,耹qín,菦qín,捦qín,琴qín,琹qín,禽qín,鈙qín,雂qín,勤qín,嗪qín,嫀qín,靲qín,噙qín,擒qín,鳹qín,懄qín,檎qín,澿qín,瘽qín,螓qín,懃qín,蠄qín,鬵qín,溱qín,坅qǐn,昑qǐn,笉qǐn,梫qǐn,赾qǐn,寑qǐn,锓qǐn,寝qǐn,寢qǐn,螼qǐn,儭qìn,櫬qìn,吢qìn,吣qìn,抋qìn,沁qìn,唚qìn,菣qìn,搇qìn,撳qìn,瀙qìn,藽qìn,鈊qìn,揿qìn,鶄qīng,青qīng,氢qīng,轻qīng,倾qīng,卿qīng,郬qīng,圊qīng,埥qīng,氫qīng,淸qīng,清qīng,軽qīng,傾qīng,廎qīng,蜻qīng,輕qīng,鲭qīng,鯖qīng,鑋qīng,庼qīng,漀qīng,靘qīng,夝qíng,甠qíng,勍qíng,情qíng,硘qíng,晴qíng,棾qíng,氰qíng,暒qíng,樈qíng,擎qíng,檠qíng,黥qíng,殑qíng,苘qǐng,顷qǐng,请qǐng,頃qǐng,請qǐng,檾qǐng,謦qǐng,庆qìng,摐chuāng,牀chuáng,磢chuǎng,刱chuàng,吹chuī,糚zhuāng,庒zhuāng,漴zhuàng,丬zhuàng,壮zhuàng,凊qìng,掅qìng,碃qìng,箐qìng,慶qìng,磬qìng,罄qìng,櫦qìng,濪qìng,藭qiong,跫qióng,銎qióng,卭qióng,邛qióng,穷qióng,穹qióng,茕qióng,桏qióng,笻qióng,筇qióng,赹qióng,惸qióng,焪qióng,焭qióng,琼qióng,蛩qióng,蛬qióng,煢qióng,熍qióng,睘qióng,窮qióng,儝qióng,憌qióng,橩qióng,瓊qióng,竆qióng,嬛qióng,琁qióng,藑qióng,湫qiū,丘qiū,丠qiū,邱qiū,坵qiū,恘qiū,秋qiū,秌qiū,寈qiū,蚯qiū,媝qiū,楸qiū,鹙qiū,篍qiū,緧qiū,蝵qiū,穐qiū,趥qiū,鳅qiū,蟗qiū,鞦qiū,鞧qiū,蘒qiū,鰌qiū,鰍qiū,鱃qiū,龝qiū,逎qiū,櫹qiū,鶖qiū,叴qiú,囚qiú,扏qiú,犰qiú,玌qiú,肍qiú,求qiú,虬qiú,泅qiú,虯qiú,俅qiú,觓qiú,訅qiú,酋qiú,唒qiú,浗qiú,紌qiú,莍qiú,逑qiú,釚qiú,梂qiú,殏qiú,毬qiú,球qiú,釻qiú,崷qiú,巯qiú,湭qiú,皳qiú,盚qiú,遒qiú,煪qiú,絿qiú,蛷qiú,裘qiú,巰qiú,觩qiú,賕qiú,璆qiú,銶qiú,醔qiú,鮂qiú,鼽qiú,鯄qiú,鵭qiú,蠤qiú,鰽qiú,厹qiú,赇qiú,搝qiǔ,糗qiǔ,趍qū,匚qū,区qū,伹qū,匤qū,岖qū,诎qū,阹qū,驱qū,屈qū,岨qū,岴qū,抾qū,浀qū,祛qū,胠qū,袪qū,區qū,蛆qū,躯qū,筁qū,粬qū,蛐qū,詘qū,趋qū,嶇qū,駆qū,憈qū,駈qū,麹qū,髷qū,趨qū,麯qū,軀qū,麴qū,黢qū,驅qū,鰸qū,鱋qū,紶qū,厺qū,佉qū,跼qú,瞿qú,佢qú,劬qú,斪qú,朐qú,胊qú,菃qú,衐qú,鸲qú,淭qú,渠qú,絇qú,葋qú,蕖qú,璖qú,磲qú,璩qú,鼩qú,蘧qú,灈qú,戵qú,欋qú,氍qú,臞qú,癯qú,蠷qú,衢qú,躣qú,蠼qú,鑺qú,臒qú,蟝qú,曲qǔ,取qǔ,娶qǔ,詓qǔ,竬qǔ,龋qǔ,齲qǔ,去qù,刞qù,耝qù,阒qù,觑qù,趣qù,閴qù,麮qù,闃qù,覰qù,覷qù,鼁qù,覻qù,迲qù,峑quān,恮quān,悛quān,圈quān,駩quān,騡quān,鐉quān,腃quān,全quán,权quán,佺quán,诠quán,姾quán,泉quán,洤quán,荃quán,拳quán,辁quán,婘quán,痊quán,硂quán,铨quán,湶quán,犈quán,筌quán,絟quán,葲quán,搼quán,楾quán,瑔quán,觠quán,詮quán,跧quán,輇quán,蜷quán,銓quán,権quán,縓quán,醛quán,闎quán,鳈quán,鬈quán,巏quán,鰁quán,權quán,齤quán,颧quán,顴quán,灥quán,譔quán,牷quán,孉quán,犬quǎn,甽quǎn,畎quǎn,烇quǎn,绻quǎn,綣quǎn,虇quǎn,劝quàn,券quàn,巻quàn,牶quàn,椦quàn,勧quàn,勸quàn,炔quē,缺quē,蒛quē,瘸qué,却què,卻què,崅què,悫què,雀què,确què,阕què,皵què,碏què,阙què,鹊què,愨què,榷què,慤què,確què,燩què,闋què,闕què,鵲què,礭què,殻què,埆què,踆qūn,夋qūn,囷qūn,峮qūn,逡qūn,帬qún,裙qún,羣qún,群qún,裠qún,亽ra,罖ra,囕ram,呥rán,肰rán,衻rán,袇rán,蚦rán,袡rán,蚺rán,然rán,髥rán,嘫rán,髯rán,燃rán,繎rán,冄rán,冉rǎn,姌rǎn,苒rǎn,染rǎn,珃rǎn,媣rǎn,蒅rǎn,孃ráng,穣ráng,獽ráng,禳ráng,瓤ráng,穰ráng,躟ráng,壌rǎng,嚷rǎng,壤rǎng,攘rǎng,爙rǎng,让ràng,懹ràng,譲ràng,讓ràng,荛ráo,饶ráo,桡ráo,橈ráo,襓ráo,饒ráo,犪ráo,嬈ráo,娆ráo,扰rǎo,隢rǎo,擾rǎo,遶rǎo,绕rào,繞rào,惹rě,热rè,熱rè,渃rè,綛ren,人rén,仁rén,壬rén,忈rén,朲rén,忎rén,秂rén,芢rén,鈓rén,魜rén,銋rén,鵀rén,姙rén,忍rěn,荏rěn,栠rěn,栣rěn,荵rěn,秹rěn,稔rěn,躵rěn,刃rèn,刄rèn,认rèn,仞rèn,仭rèn,讱rèn,任rèn,屻rèn,扨rèn,纫rèn,妊rèn,牣rèn,纴rèn,肕rèn,轫rèn,韧rèn,饪rèn,紉rèn,衽rèn,紝rèn,訒rèn,軔rèn,梕rèn,袵rèn,絍rèn,靭rèn,靱rèn,韌rèn,飪rèn,認rèn,餁rèn,扔rēng,仍réng,辸réng,礽réng,芿réng,日rì,驲rì,囸rì,釰rì,鈤rì,馹rì,戎róng,肜róng,栄róng,狨róng,绒róng,茙róng,茸róng,荣róng,容róng,峵róng,毧róng,烿róng,嵘róng,絨róng,羢róng,嫆róng,搈róng,摉róng,榵róng,溶róng,蓉róng,榕róng,榮róng,熔róng,瑢róng,穁róng,蝾róng,褣róng,镕róng,氄róng,縙róng,融róng,螎róng,駥róng,嬫róng,嶸róng,爃róng,鎔róng,瀜róng,蠑róng,媶róng,曧róng,冗rǒng,宂rǒng,傇rǒng,穃ròng,禸róu,柔róu,粈róu,媃róu,揉róu,渘róu,葇róu,瑈róu,腬róu,糅róu,蹂róu,輮róu,鍒róu,鞣róu,瓇róu,騥róu,鰇róu,鶔róu,楺rǒu,煣rǒu,韖rǒu,肉ròu,宍ròu,嶿rū,如rú,侞rú,帤rú,茹rú,桇rú,袽rú,铷rú,渪rú,筎rú,銣rú,蕠rú,儒rú,鴑rú,嚅rú,孺rú,濡rú,薷rú,鴽rú,曘rú,燸rú,襦rú,蠕rú,颥rú,醹rú,顬rú,偄rú,鱬rú,汝rǔ,肗rǔ,乳rǔ,辱rǔ,鄏rǔ,擩rǔ,入rù,扖rù,込rù,杁rù,洳rù,嗕rù,媷rù,溽rù,缛rù,蓐rù,鳰rù,褥rù,縟rù,壖ruán,阮ruǎn,朊ruǎn,软ruǎn,軟ruǎn,碝ruǎn,緛ruǎn,蝡ruǎn,瓀ruǎn,礝ruǎn,瑌ruǎn,撋ruí,桵ruí,甤ruí,緌ruí,蕤ruí,蕊ruǐ,橤ruǐ,繠ruǐ,蘂ruǐ,蘃ruǐ,惢ruǐ,芮ruì,枘ruì,蚋ruì,锐ruì,瑞ruì,睿ruì,銳ruì,叡ruì,壡ruì,润rùn,閏rùn,閠rùn,潤rùn,橍rùn,闰rùn,叒ruò,若ruò,偌ruò,弱ruò,鄀ruò,焫ruò,楉ruò,嵶ruò,蒻ruò,箬ruò,爇ruò,鰙ruò,鰯ruò,鶸ruò,仨sā,桬sā,撒sā,洒sǎ,訯sǎ,靸sǎ,灑sǎ,卅sà,飒sà,脎sà,萨sà,隡sà,馺sà,颯sà,薩sà,櫒sà,栍saeng,毢sāi,塞sāi,毸sāi,腮sāi,嘥sāi,噻sāi,鳃sāi,顋sāi,鰓sāi,嗮sǎi,赛sài,僿sài,賽sài,簺sài,虄sal,厁san,壭san,三sān,弎sān,叁sān,毵sān,毶sān,毿sān,犙sān,鬖sān,糂sān,糝sān,糣sān,彡sān,氵sān,伞sǎn,傘sǎn,馓sǎn,橵sǎn,糤sǎn,繖sǎn,饊sǎn,散sàn,俕sàn,閐sàn,潵sàn,桒sāng,桑sāng,槡sāng,嗓sǎng,搡sǎng,褬sǎng,颡sǎng,鎟sǎng,顙sǎng,磉sǎng,丧sàng,喪sàng,掻sāo,搔sāo,溞sāo,骚sāo,缫sāo,繅sāo,鳋sāo,颾sāo,騒sāo,騷sāo,鰠sāo,鱢sāo,扫sǎo,掃sǎo,嫂sǎo,臊sào,埽sào,瘙sào,氉sào,矂sào,髞sào,色sè,涩sè,啬sè,渋sè,铯sè,歮sè,嗇sè,瑟sè,歰sè,銫sè,澁sè,懎sè,擌sè,濇sè,濏sè,瘷sè,穑sè,澀sè,璱sè,瀒sè,穡sè,繬sè,穯sè,轖sè,鏼sè,譅sè,飋sè,愬sè,鎍sè,溹sè,栜sè,裇sed,聓sei,森sēn,僧sēng,鬙sēng,閪seo,縇seon,杀shā,沙shā,纱shā,乷shā,刹shā,砂shā,唦shā,挱shā,殺shā,猀shā,紗shā,莎shā,铩shā,痧shā,硰shā,蔱shā,裟shā,樧shā,魦shā,鲨shā,閷shā,鯊shā,鯋shā,繺shā,賖shā,啥shá,傻shǎ,儍shǎ,繌shǎ,倽shà,唼shà,萐shà,歃shà,煞shà,翜shà,翣shà,閯shà,霎shà,厦shà,廈shà,筛shāi,篩shāi,簁shāi,簛shāi,酾shāi,釃shāi,摋shǎi,晒shài,曬shài,纔shān,穇shān,凵shān,襂shān,山shān,邖shān,圸shān,删shān,杉shān,杣shān,芟shān,姍shān,姗shān,衫shān,钐shān,埏shān,狦shān,珊shān,舢shān,痁shān,軕shān,笘shān,釤shān,閊shān,跚shān,剼shān,搧shān,嘇shān,幓shān,煽shān,潸shān,澘shān,曑shān,檆shān,膻shān,鯅shān,羴shān,羶shān,炶shān,苫shān,柵shān,栅shān,刪shān,闪shǎn,陕shǎn,陝shǎn,閃shǎn,晱shǎn,睒shǎn,熌shǎn,覢shǎn,曏shǎn,笧shàn,讪shàn,汕shàn,疝shàn,扇shàn,訕shàn,赸shàn,傓shàn,善shàn,椫shàn,銏shàn,骟shàn,僐shàn,鄯shàn,缮shàn,嬗shàn,擅shàn,敾shàn,樿shàn,膳shàn,磰shàn,謆shàn,赡shàn,繕shàn,蟮shàn,譱shàn,贍shàn,鐥shàn,饍shàn,騸shàn,鳝shàn,灗shàn,鱔shàn,鱣shàn,墡shàn,裳shang,塲shāng,伤shāng,殇shāng,商shāng,觞shāng,傷shāng,墒shāng,慯shāng,滳shāng,蔏shāng,殤shāng,熵shāng,螪shāng,觴shāng,謪shāng,鬺shāng,坰shǎng,垧shǎng,晌shǎng,赏shǎng,賞shǎng,鑜shǎng,丄shàng,上shàng,仩shàng,尚shàng,恦shàng,绱shàng,緔shàng,弰shāo,捎shāo,梢shāo,烧shāo,焼shāo,稍shāo,筲shāo,艄shāo,蛸shāo,輎shāo,蕱shāo,燒shāo,髾shāo,鮹shāo,娋shāo,旓shāo,杓sháo,勺sháo,芍sháo,柖sháo,玿sháo,韶sháo,少shǎo,劭shào,卲shào,邵shào,绍shào,哨shào,袑shào,紹shào,潲shào,奢shē,猞shē,赊shē,輋shē,賒shē,檨shē,畲shē,舌shé,佘shé,蛇shé,蛥shé,磼shé,折shé,舍shě,捨shě,厍shè,设shè,社shè,舎shè,厙shè,射shè,涉shè,涻shè,設shè,赦shè,弽shè,慑shè,摄shè,滠shè,慴shè,摵shè,蔎shè,韘shè,騇shè,懾shè,攝shè,麝shè,欇shè,挕shè,蠂shè,堔shen,叄shēn,糁shēn,申shēn,屾shēn,扟shēn,伸shēn,身shēn,侁shēn,呻shēn,妽shēn,籶shēn,绅shēn,诜shēn,柛shēn,氠shēn,珅shēn,穼shēn,籸shēn,娠shēn,峷shēn,甡shēn,眒shēn,砷shēn,深shēn,紳shēn,兟shēn,椮shēn,葠shēn,裑shēn,訷shēn,罧shēn,蓡shēn,詵shēn,甧shēn,蔘shēn,燊shēn,薓shēn,駪shēn,鲹shēn,鯓shēn,鵢shēn,鯵shēn,鰺shēn,莘shēn,叅shēn,神shén,榊shén,鰰shén,棯shěn,槮shěn,邥shěn,弞shěn,沈shěn,审shěn,矤shěn,矧shěn,谂shěn,谉shěn,婶shěn,渖shěn,訠shěn,審shěn,頣shěn,魫shěn,曋shěn,瞫shěn,嬸shěn,覾shěn,讅shěn,哂shěn,肾shèn,侺shèn,昚shèn,甚shèn,胂shèn,眘shèn,渗shèn,祳shèn,脤shèn,腎shèn,愼shèn,慎shèn,瘆shèn,蜃shèn,滲shèn,鋠shèn,瘮shèn,葚shèn,升shēng,生shēng,阩shēng,呏shēng,声shēng,斘shēng,昇shēng,枡shēng,泩shēng,苼shēng,殅shēng,牲shēng,珄shēng,竔shēng,陞shēng,曻shēng,陹shēng,笙shēng,湦shēng,焺shēng,甥shēng,鉎shēng,聲shēng,鍟shēng,鵿shēng,鼪shēng,绳shéng,縄shéng,憴shéng,繩shéng,譝shéng,省shěng,眚shěng,偗shěng,渻shěng,胜shèng,圣shèng,晟shèng,晠shèng,剰shèng,盛shèng,剩shèng,勝shèng,貹shèng,嵊shèng,聖shèng,墭shèng,榺shèng,蕂shèng,橳shèng,賸shèng,鳾shi,觢shi,尸shī,师shī,呞shī,虱shī,诗shī,邿shī,鸤shī,屍shī,施shī,浉shī,狮shī,師shī,絁shī,湤shī,湿shī,葹shī,溮shī,溼shī,獅shī,蒒shī,蓍shī,詩shī,瑡shī,鳲shī,蝨shī,鲺shī,濕shī,鍦shī,鯴shī,鰤shī,鶳shī,襹shī,籭shī,魳shī,失shī,褷shī,匙shí,十shí,什shí,石shí,辻shí,佦shí,时shí,竍shí,识shí,实shí,実shí,旹shí,飠shí,峕shí,拾shí,炻shí,祏shí,蚀shí,食shí,埘shí,寔shí,湜shí,遈shí,塒shí,嵵shí,溡shí,鉐shí,實shí,榯shí,蝕shí,鉽shí,篒shí,鲥shí,鮖shí,鼫shí,識shí,鼭shí,鰣shí,時shí,史shǐ,矢shǐ,乨shǐ,豕shǐ,使shǐ,始shǐ,驶shǐ,兘shǐ,屎shǐ,榁shǐ,鉂shǐ,駛shǐ,笶shǐ,饣shì,莳shì,蒔shì,士shì,氏shì,礻shì,世shì,丗shì,仕shì,市shì,示shì,卋shì,式shì,事shì,侍shì,势shì,呩shì,视shì,试shì,饰shì,冟shì,室shì,恀shì,恃shì,拭shì,枾shì,柿shì,眂shì,贳shì,适shì,栻shì,烒shì,眎shì,眡shì,舐shì,轼shì,逝shì,铈shì,視shì,釈shì,弑shì,揓shì,谥shì,貰shì,释shì,勢shì,嗜shì,弒shì,煶shì,睗shì,筮shì,試shì,軾shì,鈰shì,鉃shì,飾shì,舓shì,誓shì,適shì,奭shì,噬shì,嬕shì,澨shì,諡shì,遾shì,螫shì,簭shì,籂shì,襫shì,釋shì,鰘shì,佀shì,鎩shì,是shì,収shōu,收shōu,手shǒu,守shǒu,垨shǒu,首shǒu,艏shǒu,醻shòu,寿shòu,受shòu,狩shòu,兽shòu,售shòu,授shòu,绶shòu,痩shòu,膄shòu,壽shòu,瘦shòu,綬shòu,夀shòu,獣shòu,獸shòu,鏉shòu,书shū,殳shū,抒shū,纾shū,叔shū,枢shū,姝shū,柕shū,倏shū,倐shū,書shū,殊shū,紓shū,掓shū,梳shū,淑shū,焂shū,菽shū,軗shū,鄃shū,疎shū,疏shū,舒shū,摅shū,毹shū,毺shū,綀shū,输shū,踈shū,樞shū,蔬shū,輸shū,鮛shū,瀭shū,鵨shū,陎shū,尗shú,秫shú,婌shú,孰shú,赎shú,塾shú,熟shú,璹shú,贖shú,暑shǔ,黍shǔ,署shǔ,鼠shǔ,鼡shǔ,蜀shǔ,潻shǔ,薯shǔ,曙shǔ,癙shǔ,糬shǔ,籔shǔ,蠴shǔ,鱰shǔ,属shǔ,屬shǔ,鱪shǔ,丨shù,术shù,戍shù,束shù,沭shù,述shù,怷shù,树shù,竖shù,荗shù,恕shù,庶shù,庻shù,絉shù,蒁shù,術shù,裋shù,数shù,竪shù,腧shù,墅shù,漱shù,潄shù,數shù,豎shù,樹shù,濖shù,錰shù,鏣shù,鶐shù,虪shù,捒shù,忄shù,澍shù,刷shuā,唰shuā,耍shuǎ,誜shuà,缞shuāi,縗shuāi,衰shuāi,摔shuāi,甩shuǎi,帅shuài,帥shuài,蟀shuài,闩shuān,拴shuān,閂shuān,栓shuān,涮shuàn,腨shuàn,双shuāng,脽shuí,誰shuí,水shuǐ,氺shuǐ,閖shuǐ,帨shuì,涗shuì,涚shuì,稅shuì,税shuì,裞shuì,説shuì,睡shuì,吮shǔn,顺shùn,舜shùn,順shùn,蕣shùn,橓shùn,瞚shùn,瞤shùn,瞬shùn,鬊shùn,说shuō,說shuō,妁shuò,烁shuò,朔shuò,铄shuò,欶shuò,硕shuò,矟shuò,搠shuò,蒴shuò,槊shuò,碩shuò,爍shuò,鑠shuò,洬shuò,燿shuò,鎙shuò,愢sī,厶sī,丝sī,司sī,糹sī,私sī,咝sī,泀sī,俬sī,思sī,恖sī,鸶sī,媤sī,斯sī,絲sī,缌sī,蛳sī,楒sī,禗sī,鉰sī,飔sī,凘sī,厮sī,榹sī,禠sī,罳sī,锶sī,嘶sī,噝sī,廝sī,撕sī,澌sī,緦sī,蕬sī,螄sī,鍶sī,蟖sī,蟴sī,颸sī,騦sī,鐁sī,鷥sī,鼶sī,鷉sī,銯sī,死sǐ,灬sì,巳sì,亖sì,四sì,罒sì,寺sì,汜sì,伺sì,似sì,姒sì,泤sì,祀sì,価sì,孠sì,泗sì,饲sì,驷sì,俟sì,娰sì,柶sì,牭sì,洍sì,涘sì,肂sì,飤sì,笥sì,耜sì,釲sì,竢sì,覗sì,嗣sì,肆sì,貄sì,鈻sì,飼sì,禩sì,駟sì,儩sì,瀃sì,兕sì,蕼sì,螦so,乺sol,忪sōng,松sōng,枀sōng,枩sōng,娀sōng,柗sōng,倯sōng,凇sōng,梥sōng,崧sōng,庺sōng,淞sōng,菘sōng,嵩sōng,硹sōng,蜙sōng,憽sōng,檧sōng,濍sōng,怂sǒng,悚sǒng,耸sǒng,竦sǒng,愯sǒng,嵷sǒng,慫sǒng,聳sǒng,駷sǒng,鬆sòng,讼sòng,宋sòng,诵sòng,送sòng,颂sòng,訟sòng,頌sòng,誦sòng,餸sòng,鎹sòng,凁sōu,捜sōu,鄋sōu,嗖sōu,廀sōu,廋sōu,搜sōu,溲sōu,獀sōu,蒐sōu,蓃sōu,馊sōu,飕sōu,摗sōu,锼sōu,螋sōu,醙sōu,鎪sōu,餿sōu,颼sōu,騪sōu,叜sōu,艘sōu,叟sǒu,傁sǒu,嗾sǒu,瞍sǒu,擞sǒu,薮sǒu,擻sǒu,藪sǒu,櫢sǒu,嗽sòu,瘶sòu,苏sū,甦sū,酥sū,稣sū,窣sū,穌sū,鯂sū,蘇sū,蘓sū,櫯sū,囌sū,卹sū,俗sú,玊sù,诉sù,泝sù,肃sù,涑sù,珟sù,素sù,速sù,殐sù,粛sù,骕sù,傃sù,粟sù,訴sù,谡sù,嗉sù,塐sù,塑sù,嫊sù,愫sù,溯sù,溸sù,肅sù,遡sù,鹔sù,僳sù,榡sù,蔌sù,觫sù,趚sù,遬sù,憟sù,樎sù,樕sù,潥sù,鋉sù,餗sù,縤sù,璛sù,簌sù,藗sù,謖sù,蹜sù,驌sù,鱐sù,鷫sù,埣sù,夙sù,膆sù,狻suān,痠suān,酸suān,匴suǎn,祘suàn,笇suàn,筭suàn,蒜suàn,算suàn,夊suī,芕suī,虽suī,倠suī,哸suī,荽suī,荾suī,眭suī,滖suī,睢suī,濉suī,鞖suī,雖suī,簑suī,绥suí,隋suí,随suí,遀suí,綏suí,隨suí,瓍suí,遂suí,瀡suǐ,髄suǐ,髓suǐ,亗suì,岁suì,砕suì,谇suì,歲suì,歳suì,煫suì,碎suì,隧suì,嬘suì,澻suì,穂suì,誶suì,賥suì,檖suì,燧suì,璲suì,禭suì,穗suì,穟suì,襚suì,邃suì,旞suì,繐suì,繸suì,鐆suì,鐩suì,祟suì,譢suì,孙sūn,狲sūn,荪sūn,孫sūn,飧sūn,搎sūn,猻sūn,蓀sūn,槂sūn,蕵sūn,薞sūn,畃sún,损sǔn,笋sǔn,隼sǔn,筍sǔn,損sǔn,榫sǔn,箰sǔn,鎨sǔn,巺sùn,潠sùn,嗍suō,唆suō,娑suō,莏suō,傞suō,桫suō,梭suō,睃suō,嗦suō,羧suō,蓑suō,摍suō,缩suō,趖suō,簔suō,縮suō,髿suō,鮻suō,挲suō,所suǒ,唢suǒ,索suǒ,琐suǒ,琑suǒ,锁suǒ,嗩suǒ,暛suǒ,溑suǒ,瑣suǒ,鎖suǒ,鎻suǒ,鏁suǒ,嵗suò,蜶suò,逤suò,侤ta,澾ta,她tā,他tā,它tā,祂tā,咜tā,趿tā,铊tā,塌tā,榙tā,溻tā,鉈tā,褟tā,遢tā,蹹tá,塔tǎ,墖tǎ,獭tǎ,鳎tǎ,獺tǎ,鰨tǎ,沓tà,挞tà,狧tà,闼tà,崉tà,涾tà,遝tà,阘tà,榻tà,毾tà,禢tà,撻tà,誻tà,踏tà,嚃tà,錔tà,嚺tà,濌tà,蹋tà,鞜tà,闒tà,鞳tà,闥tà,譶tà,躢tà,傝tà,襨tae,漦tāi,咍tāi,囼tāi,孡tāi,胎tāi,駘tāi,檯tāi,斄tái,台tái,邰tái,坮tái,苔tái,炱tái,炲tái,菭tái,跆tái,鲐tái,箈tái,臺tái,颱tái,儓tái,鮐tái,嬯tái,擡tái,薹tái,籉tái,抬tái,呔tǎi,忕tài,太tài,冭tài,夳tài,忲tài,汰tài,态tài,肽tài,钛tài,泰tài,粏tài,舦tài,酞tài,鈦tài,溙tài,燤tài,態tài,坍tān,贪tān,怹tān,啴tān,痑tān,舑tān,貪tān,摊tān,滩tān,嘽tān,潬tān,瘫tān,擹tān,攤tān,灘tān,癱tān,镡tán,蕁tán,坛tán,昙tán,谈tán,郯tán,婒tán,覃tán,榃tán,痰tán,锬tán,谭tán,墵tán,憛tán,潭tán,談tán,壇tán,曇tán,錟tán,檀tán,顃tán,罈tán,藫tán,壜tán,譚tán,貚tán,醰tán,譠tán,罎tán,鷤tán,埮tán,鐔tán,墰tán,忐tǎn,坦tǎn,袒tǎn,钽tǎn,菼tǎn,毯tǎn,鉭tǎn,嗿tǎn,憳tǎn,憻tǎn,醓tǎn,璮tǎn,襢tǎn,緂tǎn,暺tǎn,叹tàn,炭tàn,探tàn,湠tàn,僋tàn,嘆tàn,碳tàn,舕tàn,歎tàn,汤tāng,铴tāng,湯tāng,嘡tāng,劏tāng,羰tāng,蝪tāng,薚tāng,蹚tāng,鐋tāng,鞺tāng,闛tāng,耥tāng,鼞tāng,镗táng,鏜táng,饧táng,坣táng,唐táng,堂táng,傏táng,啺táng,棠táng,鄌táng,塘táng,搪táng,溏táng,蓎táng,隚táng,榶táng,漟táng,煻táng,瑭táng,禟táng,膅táng,樘táng,磄táng,糃táng,膛táng,橖táng,篖táng,糖táng,螗táng,踼táng,糛táng,赯táng,醣táng,餳táng,鎕táng,餹táng,饄táng,鶶táng,螳táng,攩tǎng,伖tǎng,帑tǎng,倘tǎng,淌tǎng,傥tǎng,躺tǎng,镋tǎng,鎲tǎng,儻tǎng,戃tǎng,曭tǎng,爣tǎng,矘tǎng,钂tǎng,烫tàng,摥tàng,趟tàng,燙tàng,漡tàng,焘tāo,轁tāo,涭tāo,仐tāo,弢tāo,绦tāo,掏tāo,絛tāo,詜tāo,嫍tāo,幍tāo,慆tāo,搯tāo,滔tāo,槄tāo,瑫tāo,韬tāo,飸tāo,縚tāo,縧tāo,濤tāo,謟tāo,鞱tāo,韜tāo,饕tāo,饀tāo,燾tāo,涛tāo,迯táo,咷táo,洮táo,逃táo,桃táo,陶táo,啕táo,梼táo,淘táo,萄táo,祹táo,裪táo,綯táo,蜪táo,鞀táo,醄táo,鞉táo,鋾táo,駣táo,檮táo,騊táo,鼗táo,绹táo,讨tǎo,討tǎo,套tào,畓tap,忑tè,特tè,貣tè,脦tè,犆tè,铽tè,慝tè,鋱tè,蟘tè,螣tè,鰧teng,膯tēng,鼟tēng,疼téng,痋téng,幐téng,腾téng,誊téng,漛téng,滕téng,邆téng,縢téng,駦téng,謄téng,儯téng,藤téng,騰téng,籐téng,籘téng,虅téng,驣téng,霯tèng,唞teo,朰teul,剔tī,梯tī,锑tī,踢tī,銻tī,鷈tī,鵜tī,躰tī,骵tī,軆tī,擿tī,姼tí,褆tí,扌tí,虒tí,磃tí,绨tí,偍tí,啼tí,媞tí,崹tí,惿tí,提tí,稊tí,缇tí,罤tí,遆tí,鹈tí,嗁tí,瑅tí,綈tí,徲tí,漽tí,緹tí,蕛tí,蝭tí,题tí,趧tí,蹄tí,醍tí,謕tí,鍗tí,題tí,鮷tí,騠tí,鯷tí,鶗tí,鶙tí,穉tí,厗tí,鳀tí,徥tǐ,体tǐ,挮tǐ,體tǐ,衹tǐ,戻tì,屉tì,剃tì,洟tì,倜tì,悌tì,涕tì,逖tì,屜tì,悐tì,惕tì,掦tì,逷tì,惖tì,替tì,裼tì,褅tì,歒tì,殢tì,髰tì,薙tì,嚏tì,鬀tì,嚔tì,瓋tì,籊tì,鐟tì,楴tì,天tiān,兲tiān,婖tiān,添tiān,酟tiān,靔tiān,黇tiān,靝tiān,呑tiān,瞋tián,田tián,屇tián,沺tián,恬tián,畋tián,畑tián,盷tián,胋tián,甛tián,甜tián,菾tián,湉tián,塡tián,填tián,搷tián,阗tián,碵tián,磌tián,窴tián,鴫tián,璳tián,闐tián,鷆tián,鷏tián,餂tián,寘tián,畠tián,鍩tiǎn,忝tiǎn,殄tiǎn,倎tiǎn,唺tiǎn,悿tiǎn,捵tiǎn,淟tiǎn,晪tiǎn,琠tiǎn,腆tiǎn,觍tiǎn,睓tiǎn,覥tiǎn,賟tiǎn,錪tiǎn,娗tiǎn,铦tiǎn,銛tiǎn,紾tiǎn,舔tiǎn,掭tiàn,瑱tiàn,睼tiàn,舚tiàn,旫tiāo,佻tiāo,庣tiāo,挑tiāo,祧tiāo,聎tiāo,苕tiáo,萔tiáo,芀tiáo,条tiáo,岧tiáo,岹tiáo,迢tiáo,祒tiáo,條tiáo,笤tiáo,蓚tiáo,蓨tiáo,龆tiáo,樤tiáo,蜩tiáo,鋚tiáo,髫tiáo,鲦tiáo,螩tiáo,鯈tiáo,鎥tiáo,齠tiáo,鰷tiáo,趒tiáo,銚tiáo,儵tiáo,鞗tiáo,宨tiǎo,晀tiǎo,朓tiǎo,脁tiǎo,窕tiǎo,窱tiǎo,眺tiào,粜tiào,覜tiào,跳tiào,頫tiào,糶tiào,怗tiē,贴tiē,萜tiē,聑tiē,貼tiē,帖tiē,蛈tiě,僣tiě,鴩tiě,鐵tiě,驖tiě,铁tiě,呫tiè,飻tiè,餮tiè,厅tīng,庁tīng,汀tīng,听tīng,耓tīng,厛tīng,烃tīng,烴tīng,綎tīng,鞓tīng,聴tīng,聼tīng,廰tīng,聽tīng,渟tīng,廳tīng,邒tíng,廷tíng,亭tíng,庭tíng,莛tíng,停tíng,婷tíng,嵉tíng,筳tíng,葶tíng,蜓tíng,楟tíng,榳tíng,閮tíng,霆tíng,聤tíng,蝏tíng,諪tíng,鼮tíng,珵tǐng,侱tǐng,圢tǐng,侹tǐng,挺tǐng,涏tǐng,梃tǐng,烶tǐng,珽tǐng,脡tǐng,颋tǐng,誔tǐng,頲tǐng,艇tǐng,乭tol,囲tōng,炵tōng,通tōng,痌tōng,嗵tōng,蓪tōng,樋tōng,熥tōng,爞tóng,冂tóng,燑tóng,仝tóng,同tóng,佟tóng,彤tóng,峂tóng,庝tóng,哃tóng,狪tóng,茼tóng,晍tóng,桐tóng,浵tóng,砼tóng,蚒tóng,秱tóng,铜tóng,童tóng,粡tóng,赨tóng,酮tóng,鉖tóng,僮tóng,鉵tóng,銅tóng,餇tóng,鲖tóng,潼tóng,獞tóng,曈tóng,朣tóng,橦tóng,氃tóng,犝tóng,膧tóng,瞳tóng,穜tóng,鮦tóng,眮tóng,统tǒng,捅tǒng,桶tǒng,筒tǒng,綂tǒng,統tǒng,恸tòng,痛tòng,慟tòng,憅tòng,偷tōu,偸tōu,鍮tōu,头tóu,投tóu,骰tóu,緰tóu,頭tóu,钭tǒu,妵tǒu,紏tǒu,敨tǒu,斢tǒu,黈tǒu,蘣tǒu,埱tòu,透tòu,綉tòu,宊tū,瑹tū,凸tū,禿tū,秃tū,突tū,涋tū,捸tū,堗tū,湥tū,痜tū,葖tū,嶀tū,鋵tū,鵚tū,鼵tū,唋tū,図tú,图tú,凃tú,峹tú,庩tú,徒tú,捈tú,涂tú,荼tú,途tú,屠tú,梌tú,揬tú,稌tú,塗tú,嵞tú,瘏tú,筡tú,鈯tú,圖tú,圗tú,廜tú,潳tú,酴tú,馟tú,鍎tú,駼tú,鵌tú,鶟tú,鷋tú,鷵tú,兎tú,菟tú,蒤tú,土tǔ,圡tǔ,吐tǔ,汢tǔ,钍tǔ,釷tǔ,迌tù,兔tù,莵tù,堍tù,鵵tù,湍tuān,猯tuān,煓tuān,蓴tuán,团tuán,団tuán,抟tuán,剸tuán,團tuán,塼tuán,慱tuán,摶tuán,槫tuán,漙tuán,篿tuán,檲tuán,鏄tuán,糰tuán,鷒tuán,鷻tuán,嫥tuán,鱄tuán,圕tuǎn,疃tuǎn,畽tuǎn,彖tuàn,湪tuàn,褖tuàn,貒tuàn,忒tuī,推tuī,蓷tuī,藬tuī,焞tuī,騩tuí,墤tuí,颓tuí,隤tuí,尵tuí,頹tuí,頺tuí,魋tuí,穨tuí,蘈tuí,蹪tuí,僓tuí,頽tuí,俀tuǐ,脮tuǐ,腿tuǐ,蹆tuǐ,骽tuǐ,退tuì,娧tuì,煺tuì,蛻tuì,蜕tuì,褪tuì,駾tuì,噋tūn,汭tūn,吞tūn,旽tūn,啍tūn,朜tūn,暾tūn,黗tūn,屯tún,忳tún,芚tún,饨tún,豚tún,軘tún,飩tún,鲀tún,魨tún,霕tún,臀tún,臋tún,坉tún,豘tún,氽tǔn,舃tuō,乇tuō,讬tuō,托tuō,汑tuō,饦tuō,杔tuō,侂tuō,咃tuō,拕tuō,拖tuō,侻tuō,挩tuō,捝tuō,莌tuō,袥tuō,託tuō,涶tuō,脱tuō,飥tuō,馲tuō,魠tuō,驝tuō,棁tuō,脫tuō,鱓tuó,鋖tuó,牠tuó,驮tuó,佗tuó,陀tuó,陁tuó,坨tuó,岮tuó,沱tuó,驼tuó,柁tuó,砣tuó,砤tuó,袉tuó,鸵tuó,紽tuó,堶tuó,跎tuó,酡tuó,碢tuó,馱tuó,槖tuó,踻tuó,駞tuó,橐tuó,鮀tuó,鴕tuó,鼧tuó,騨tuó,鼍tuó,驒tuó,鼉tuó,迆tuó,駝tuó,軃tuǒ,妥tuǒ,毤tuǒ,庹tuǒ,椭tuǒ,楕tuǒ,鵎tuǒ,拓tuò,柝tuò,唾tuò,萚tuò,跅tuò,毻tuò,箨tuò,蘀tuò,籜tuò,哇wa,窐wā,劸wā,徍wā,挖wā,洼wā,娲wā,畖wā,窊wā,媧wā,嗗wā,蛙wā,搲wā,溛wā,漥wā,窪wā,鼃wā,攨wā,屲wā,姽wá,譁wá,娃wá,瓦wǎ,佤wǎ,邷wǎ,咓wǎ,瓲wǎ,砙wǎ,韎wà,帓wà,靺wà,袜wà,聉wà,嗢wà,腽wà,膃wà,韈wà,韤wà,襪wà,咼wāi,瀤wāi,歪wāi,喎wāi,竵wāi,崴wǎi,外wài,顡wài,関wān,闗wān,夘wān,乛wān,弯wān,剜wān,婠wān,帵wān,塆wān,湾wān,睕wān,蜿wān,潫wān,豌wān,彎wān,壪wān,灣wān,埦wān,捥wān,丸wán,刓wán,汍wán,纨wán,芄wán,完wán,岏wán,忨wán,玩wán,笂wán,紈wán,捖wán,顽wán,烷wán,琓wán,貦wán,頑wán,蚖wán,抏wán,邜wǎn,宛wǎn,倇wǎn,唍wǎn,挽wǎn,晚wǎn,盌wǎn,莞wǎn,婉wǎn,惋wǎn,晩wǎn,梚wǎn,绾wǎn,脘wǎn,菀wǎn,晼wǎn,椀wǎn,琬wǎn,皖wǎn,碗wǎn,綩wǎn,綰wǎn,輓wǎn,鋔wǎn,鍐wǎn,莬wǎn,惌wǎn,魭wǎn,夗wǎn,畹wǎn,輐wàn,鄤wàn,孯wàn,掔wàn,万wàn,卍wàn,卐wàn,妧wàn,杤wàn,腕wàn,萬wàn,翫wàn,鋄wàn,薍wàn,錽wàn,贃wàn,鎫wàn,贎wàn,脕wàn,尩wāng,尪wāng,尫wāng,汪wāng,瀇wāng,亡wáng,仼wáng,彺wáng,莣wáng,蚟wáng,王wáng,抂wǎng,网wǎng,忹wǎng,往wǎng,徃wǎng,枉wǎng,罔wǎng,惘wǎng,菵wǎng,暀wǎng,棢wǎng,焹wǎng,蛧wǎng,辋wǎng,網wǎng,蝄wǎng,誷wǎng,輞wǎng,魍wǎng,迬wǎng,琞wàng,妄wàng,忘wàng,迋wàng,旺wàng,盳wàng,望wàng,朢wàng,威wēi,烓wēi,偎wēi,逶wēi,隇wēi,隈wēi,喴wēi,媁wēi,媙wēi,愄wēi,揋wēi,揻wēi,渨wēi,煀wēi,葨wēi,葳wēi,微wēi,椳wēi,楲wēi,溦wēi,煨wēi,詴wēi,縅wēi,蝛wēi,覣wēi,嶶wēi,薇wēi,燰wēi,鳂wēi,癐wēi,鰃wēi,鰄wēi,嵔wēi,蜲wēi,危wēi,巍wēi,恑wéi,撝wéi,囗wéi,为wéi,韦wéi,围wéi,帏wéi,沩wéi,违wéi,闱wéi,峗wéi,峞wéi,洈wéi,為wéi,韋wéi,桅wéi,涠wéi,唯wéi,帷wéi,惟wéi,维wéi,喡wéi,圍wéi,嵬wéi,幃wéi,湋wéi,溈wéi,琟wéi,潍wéi,維wéi,蓶wéi,鄬wéi,潿wéi,醀wéi,濰wéi,鍏wéi,闈wéi,鮠wéi,癓wéi,覹wéi,犩wéi,霺wéi,僞wéi,寪wéi,觹wéi,觽wéi,觿wéi,欈wéi,違wéi,趡wěi,磈wěi,瓗wěi,膸wěi,撱wěi,鰖wěi,伟wěi,伪wěi,尾wěi,纬wěi,芛wěi,苇wěi,委wěi,炜wěi,玮wěi,洧wěi,娓wěi,捤wěi,浘wěi,诿wěi,偉wěi,偽wěi,崣wěi,梶wěi,硊wěi,萎wěi,隗wěi,骩wěi,廆wěi,徫wěi,愇wěi,猥wěi,葦wěi,蒍wěi,骪wěi,骫wěi,暐wěi,椲wěi,煒wěi,瑋wěi,痿wěi,腲wěi,艉wěi,韪wěi,碨wěi,鲔wěi,緯wěi,蔿wěi,諉wěi,踓wěi,韑wěi,頠wěi,薳wěi,儰wěi,濻wěi,鍡wěi,鮪wěi,壝wěi,韙wěi,颹wěi,瀢wěi,韡wěi,亹wěi,斖wěi,茟wěi,蜹wèi,爲wèi,卫wèi,未wèi,位wèi,味wèi,苿wèi,畏wèi,胃wèi,叞wèi,軎wèi,尉wèi,菋wèi,谓wèi,喂wèi,媦wèi,渭wèi,猬wèi,煟wèi,墛wèi,蔚wèi,慰wèi,熭wèi,犚wèi,磑wèi,緭wèi,蝟wèi,衛wèi,懀wèi,濊wèi,璏wèi,罻wèi,衞wèi,謂wèi,錗wèi,餧wèi,鮇wèi,螱wèi,褽wèi,餵wèi,魏wèi,藯wèi,鏏wèi,霨wèi,鳚wèi,蘶wèi,饖wèi,讆wèi,躗wèi,讏wèi,躛wèi,荱wèi,蜼wèi,硙wèi,轊wèi,昷wēn,塭wēn,温wēn,榅wēn,殟wēn,溫wēn,瑥wēn,辒wēn,榲wēn,瘟wēn,豱wēn,輼wēn,鳁wēn,鎾wēn,饂wēn,鰛wēn,鰮wēn,褞wēn,缊wēn,緼wēn,蕰wēn,縕wēn,薀wēn,藴wēn,鴖wén,亠wén,文wén,彣wén,纹wén,炆wén,砇wén,闻wén,紋wén,蚉wén,蚊wén,珳wén,阌wén,鈫wén,雯wén,瘒wén,聞wén,馼wén,魰wén,鳼wén,鴍wén,螡wén,閺wén,閿wén,蟁wén,闅wén,鼤wén,闦wén,芠wén,呅wěn,忞wěn,歾wěn,刎wěn,吻wěn,呚wěn,忟wěn,抆wěn,呡wěn,紊wěn,桽wěn,脗wěn,稳wěn,穏wěn,穩wěn,肳wěn,问wèn,妏wèn,汶wèn,問wèn,渂wèn,搵wèn,絻wèn,顐wèn,璺wèn,翁wēng,嗡wēng,鹟wēng,螉wēng,鎓wēng,鶲wēng,滃wēng,奣wěng,塕wěng,嵡wěng,蓊wěng,瞈wěng,聬wěng,暡wěng,瓮wèng,蕹wèng,甕wèng,罋wèng,齆wèng,堝wō,濄wō,薶wō,捼wō,挝wō,倭wō,涡wō,莴wō,唩wō,涹wō,渦wō,猧wō,萵wō,喔wō,窝wō,窩wō,蜗wō,撾wō,蝸wō,踒wō,涴wó,我wǒ,婐wǒ,婑wǒ,捰wǒ,龏wò,蒦wò,嚄wò,雘wò,艧wò,踠wò,仴wò,沃wò,肟wò,臥wò,偓wò,捾wò,媉wò,幄wò,握wò,渥wò,硪wò,楃wò,腛wò,斡wò,瞃wò,濣wò,瓁wò,龌wò,齷wò,枂wò,馧wò,卧wò,扝wū,乌wū,圬wū,弙wū,污wū,邬wū,呜wū,杇wū,巫wū,屋wū,洿wū,钨wū,烏wū,趶wū,剭wū,窏wū,釫wū,鄔wū,嗚wū,誈wū,誣wū,箼wū,螐wū,鴮wū,鎢wū,鰞wū,兀wū,杅wū,诬wū,幠wú,譕wú,蟱wú,墲wú,亾wú,兦wú,无wú,毋wú,吳wú,吴wú,吾wú,呉wú,芜wú,郚wú,娪wú,梧wú,洖wú,浯wú,茣wú,珸wú,祦wú,鹀wú,無wú,禑wú,蜈wú,蕪wú,璑wú,鵐wú,鯃wú,鼯wú,鷡wú,俉wú,憮wú,橆wú,铻wú,鋙wú,莁wú,陚wǔ,瞴wǔ,娒wǔ,乄wǔ,五wǔ,午wǔ,仵wǔ,伍wǔ,妩wǔ,庑wǔ,忤wǔ,怃wǔ,迕wǔ,旿wǔ,武wǔ,玝wǔ,侮wǔ,倵wǔ,捂wǔ,娬wǔ,牾wǔ,珷wǔ,摀wǔ,熓wǔ,碔wǔ,鹉wǔ,瑦wǔ,舞wǔ,嫵wǔ,廡wǔ,潕wǔ,錻wǔ,儛wǔ,甒wǔ,鵡wǔ,躌wǔ,逜wǔ,膴wǔ,啎wǔ,噁wù,雺wù,渞wù,揾wù,坞wù,塢wù,勿wù,务wù,戊wù,阢wù,伆wù,屼wù,扤wù,岉wù,杌wù,忢wù,物wù,矹wù,敄wù,误wù,務wù,悞wù,悟wù,悮wù,粅wù,晤wù,焐wù,婺wù,嵍wù,痦wù,隖wù,靰wù,骛wù,奦wù,嵨wù,溩wù,雾wù,寤wù,熃wù,誤wù,鹜wù,鋈wù,窹wù,鼿wù,霧wù,齀wù,騖wù,鶩wù,芴wù,霚wù,扱xī,糦xī,宩xī,獡xī,蜤xī,燍xī,夕xī,兮xī,汐xī,西xī,覀xī,吸xī,希xī,扸xī,卥xī,昔xī,析xī,矽xī,穸xī,肹xī,俙xī,徆xī,怸xī,郗xī,饻xī,唏xī,奚xī,屖xī,息xī,悕xī,晞xī,氥xī,浠xī,牺xī,狶xī,莃xī,唽xī,悉xī,惜xī,桸xī,欷xī,淅xī,渓xī,烯xī,焁xī,焈xī,琋xī,硒xī,菥xī,赥xī,釸xī,傒xī,惁xī,晰xī,晳xī,焟xī,犀xī,睎xī,稀xī,粞xī,翕xī,翖xī,舾xī,鄎xī,厀xī,嵠xī,徯xī,溪xī,煕xī,皙xī,蒠xī,锡xī,僖xī,榽xī,熄xī,熙xī,緆xī,蜥xī,豨xī,餏xī,嘻xī,噏xī,嬆xī,嬉xī,膝xī,餙xī,凞xī,樨xī,橀xī,歙xī,熹xī,熺xī,熻xī,窸xī,羲xī,螅xī,錫xī,燨xī,犠xī,瞦xī,礂xī,蟋xī,豀xī,豯xī,貕xī,繥xī,鯑xī,鵗xī,譆xī,鏭xī,隵xī,巇xī,曦xī,爔xī,犧xī,酅xī,鼷xī,蠵xī,鸂xī,鑴xī,憘xī,暿xī,鱚xī,咥xī,訢xī,娭xī,瘜xī,醯xī,雭xí,习xí,郋xí,席xí,習xí,袭xí,觋xí,媳xí,椺xí,蒵xí,蓆xí,嶍xí,漝xí,覡xí,趘xí,薂xí,檄xí,謵xí,鎴xí,霫xí,鳛xí,飁xí,騱xí,騽xí,襲xí,鰼xí,驨xí,隰xí,囍xǐ,杫xǐ,枲xǐ,洗xǐ,玺xǐ,徙xǐ,铣xǐ,喜xǐ,葈xǐ,葸xǐ,鈢xǐ,屣xǐ,漇xǐ,蓰xǐ,銑xǐ,憙xǐ,橲xǐ,禧xǐ,諰xǐ,壐xǐ,縰xǐ,謑xǐ,蟢xǐ,蹝xǐ,璽xǐ,躧xǐ,鉩xǐ,欪xì,钑xì,鈒xì,匸xì,卌xì,戏xì,屃xì,系xì,饩xì,呬xì,忥xì,怬xì,细xì,係xì,恄xì,绤xì,釳xì,阋xì,塈xì,椞xì,舄xì,趇xì,隙xì,慀xì,滊xì,禊xì,綌xì,赩xì,隟xì,熂xì,犔xì,潟xì,澙xì,蕮xì,覤xì,黖xì,戲xì,磶xì,虩xì,餼xì,鬩xì,嚱xì,霼xì,衋xì,細xì,闟xì,虾xiā,谺xiā,傄xiā,閕xiā,敮xiā,颬xiā,瞎xiā,蝦xiā,鰕xiā,魻xiā,郃xiá,匣xiá,侠xiá,狎xiá,俠xiá,峡xiá,柙xiá,炠xiá,狭xiá,陜xiá,峽xiá,烚xiá,狹xiá,珨xiá,祫xiá,硖xiá,舺xiá,陿xiá,溊xiá,硤xiá,遐xiá,暇xiá,瑕xiá,筪xiá,碬xiá,舝xiá,辖xiá,縀xiá,蕸xiá,縖xiá,赮xiá,轄xiá,鍜xiá,霞xiá,鎋xiá,黠xiá,騢xiá,鶷xiá,睱xiá,翈xiá,昰xià,丅xià,下xià,吓xià,圷xià,夏xià,梺xià,嚇xià,懗xià,罅xià,鏬xià,疜xià,姺xiān,仙xiān,仚xiān,屳xiān,先xiān,奾xiān,纤xiān,佡xiān,忺xiān,氙xiān,祆xiān,秈xiān,苮xiān,枮xiān,籼xiān,珗xiān,莶xiān,掀xiān,酰xiān,锨xiān,僊xiān,僲xiān,嘕xiān,鲜xiān,暹xiān,韯xiān,憸xiān,鍁xiān,繊xiān,褼xiān,韱xiān,鮮xiān,馦xiān,蹮xiān,廯xiān,譣xiān,鶱xiān,襳xiān,躚xiān,纖xiān,鱻xiān,縿xiān,跹xiān,咞xián,闲xián,妶xián,弦xián,贤xián,咸xián,挦xián,涎xián,胘xián,娴xián,娹xián,婱xián,舷xián,蚿xián,衔xián,啣xián,痫xián,蛝xián,閑xián,鹇xián,嫌xián,甉xián,銜xián,嫺xián,嫻xián,憪xián,澖xián,誸xián,賢xián,癇xián,癎xián,礥xián,贒xián,鑦xián,鷳xián,鷴xián,鷼xián,伭xián,冼xiǎn,狝xiǎn,显xiǎn,险xiǎn,毨xiǎn,烍xiǎn,猃xiǎn,蚬xiǎn,険xiǎn,赻xiǎn,筅xiǎn,尟xiǎn,尠xiǎn,禒xiǎn,蜆xiǎn,跣xiǎn,箲xiǎn,險xiǎn,獫xiǎn,獮xiǎn,藓xiǎn,鍌xiǎn,燹xiǎn,顕xiǎn,幰xiǎn,攇xiǎn,櫶xiǎn,蘚xiǎn,玁xiǎn,韅xiǎn,顯xiǎn,灦xiǎn,搟xiǎn,县xiàn,岘xiàn,苋xiàn,现xiàn,线xiàn,臽xiàn,限xiàn,姭xiàn,宪xiàn,陥xiàn,哯xiàn,垷xiàn,娨xiàn,峴xiàn,晛xiàn,莧xiàn,陷xiàn,現xiàn,馅xiàn,睍xiàn,絤xiàn,缐xiàn,羡xiàn,献xiàn,粯xiàn,羨xiàn,腺xiàn,僩xiàn,僴xiàn,綫xiàn,誢xiàn,撊xiàn,線xiàn,鋧xiàn,憲xiàn,餡xiàn,豏xiàn,瀗xiàn,臔xiàn,獻xiàn,鏾xiàn,霰xiàn,鼸xiàn,脇xiàn,軐xiàn,県xiàn,縣xiàn,儴xiāng,勷xiāng,蘘xiāng,纕xiāng,乡xiāng,芗xiāng,香xiāng,郷xiāng,厢xiāng,鄉xiāng,鄊xiāng,廂xiāng,湘xiāng,缃xiāng,葙xiāng,鄕xiāng,楿xiāng,薌xiāng,箱xiāng,緗xiāng,膷xiāng,忀xiāng,骧xiāng,麘xiāng,欀xiāng,瓖xiāng,镶xiāng,鱜xiāng,鑲xiāng,驤xiāng,襄xiāng,佭xiáng,详xiáng,庠xiáng,栙xiáng,祥xiáng,絴xiáng,翔xiáng,詳xiáng,跭xiáng,享xiǎng,亯xiǎng,响xiǎng,蚃xiǎng,饷xiǎng,晑xiǎng,飨xiǎng,想xiǎng,餉xiǎng,鲞xiǎng,蠁xiǎng,鮝xiǎng,鯗xiǎng,響xiǎng,饗xiǎng,饟xiǎng,鱶xiǎng,傢xiàng,相xiàng,向xiàng,姠xiàng,巷xiàng,项xiàng,珦xiàng,象xiàng,缿xiàng,萫xiàng,項xiàng,像xiàng,勨xiàng,嶑xiàng,橡xiàng,襐xiàng,蟓xiàng,鐌xiàng,鱌xiàng,鋞xiàng,鬨xiàng,嚮xiàng,鵁xiāo,莦xiāo,颵xiāo,箾xiāo,潚xiāo,橚xiāo,灱xiāo,灲xiāo,枭xiāo,侾xiāo,哓xiāo,枵xiāo,骁xiāo,宯xiāo,宵xiāo,庨xiāo,恷xiāo,消xiāo,绡xiāo,虓xiāo,逍xiāo,鸮xiāo,啋xiāo,婋xiāo,梟xiāo,焇xiāo,猇xiāo,萧xiāo,痚xiāo,痟xiāo,硝xiāo,硣xiāo,窙xiāo,翛xiāo,萷xiāo,销xiāo,揱xiāo,綃xiāo,歊xiāo,箫xiāo,嘵xiāo,撨xiāo,獢xiāo,銷xiāo,霄xiāo,彇xiāo,膮xiāo,蕭xiāo,魈xiāo,鴞xiāo,穘xiāo,簘xiāo,蟂xiāo,蟏xiāo,鴵xiāo,嚣xiāo,瀟xiāo,簫xiāo,蟰xiāo,髇xiāo,囂xiāo,髐xiāo,鷍xiāo,驍xiāo,毊xiāo,虈xiāo,肖xiāo,哮xiāo,烋xiāo,潇xiāo,蠨xiāo,洨xiáo,崤xiáo,淆xiáo,誵xiáo,笹xiǎo,小xiǎo,晓xiǎo,暁xiǎo,筱xiǎo,筿xiǎo,曉xiǎo,篠xiǎo,謏xiǎo,皢xiǎo,孝xiào,効xiào,咲xiào,俲xiào,效xiào,校xiào,涍xiào,笑xiào,傚xiào,敩xiào,滧xiào,詨xiào,嘋xiào,嘨xiào,誟xiào,嘯xiào,熽xiào,斅xiào,斆xiào,澩xiào,啸xiào,些xiē,楔xiē,歇xiē,蝎xiē,蠍xiē,协xié,旪xié,邪xié,協xié,胁xié,垥xié,恊xié,拹xié,脋xié,衺xié,偕xié,斜xié,谐xié,翓xié,嗋xié,愶xié,携xié,瑎xié,綊xié,熁xié,膎xié,勰xié,撷xié,擕xié,緳xié,缬xié,蝢xié,鞋xié,諧xié,燲xié,擷xié,鞵xié,襭xié,攜xié,讗xié,龤xié,魼xié,脅xié,纈xié,写xiě,冩xiě,寫xiě,藛xiě,烲xiè,榝xiè,齛xiè,碿xiè,伳xiè,灺xiè,泄xiè,泻xiè,祄xiè,绁xiè,缷xiè,卸xiè,洩xiè,炧xiè,炨xiè,卨xiè,娎xiè,屑xiè,屓xiè,偰xiè,徢xiè,械xiè,焎xiè,禼xiè,亵xiè,媟xiè,屟xiè,渫xiè,絬xiè,谢xiè,僁xiè,塮xiè,榍xiè,榭xiè,褉xiè,噧xiè,屧xiè,暬xiè,韰xiè,廨xiè,懈xiè,澥xiè,獬xiè,糏xiè,薢xiè,薤xiè,邂xiè,燮xiè,褻xiè,謝xiè,夑xiè,瀉xiè,鞢xiè,瀣xiè,蟹xiè,蠏xiè,齘xiè,齥xiè,齂xiè,躠xiè,屭xiè,躞xiè,蝑xiè,揳xiè,爕xiè,噺xin,心xīn,邤xīn,妡xīn,忻xīn,芯xīn,辛xīn,昕xīn,杺xīn,欣xīn,盺xīn,俽xīn,惞xīn,锌xīn,新xīn,歆xīn,鋅xīn,嬜xīn,薪xīn,馨xīn,鑫xīn,馫xīn,枔xín,襑xín,潃xǐn,阠xìn,伩xìn,囟xìn,孞xìn,炘xìn,信xìn,脪xìn,衅xìn,訫xìn,焮xìn,舋xìn,釁xìn,狌xīng,星xīng,垶xīng,骍xīng,猩xīng,煋xīng,鷞shuāng,骦shuāng,縔shuǎng,艭shuāng,塽shuǎng,壯zhuàng,状zhuàng,狀zhuàng,壵zhuàng,梉zhuàng,瑆xīng,腥xīng,蛵xīng,觪xīng,箵xīng,篂xīng,謃xīng,鮏xīng,曐xīng,觲xīng,騂xīng,皨xīng,鯹xīng,嬹xīng,惺xīng,刑xíng,邢xíng,形xíng,陉xíng,侀xíng,哘xíng,型xíng,洐xíng,娙xíng,硎xíng,铏xíng,鉶xíng,裄xíng,睲xǐng,醒xǐng,擤xǐng,兴xìng,興xìng,杏xìng,姓xìng,幸xìng,性xìng,荇xìng,倖xìng,莕xìng,婞xìng,悻xìng,涬xìng,緈xìng,臖xìng,凶xiōng,兄xiōng,兇xiōng,匈xiōng,芎xiōng,讻xiōng,忷xiōng,汹xiōng,恟xiōng,洶xiōng,胷xiōng,胸xiōng,訩xiōng,詾xiōng,哅xiōng,雄xióng,熊xióng,诇xiòng,詗xiòng,敻xiòng,休xiū,俢xiū,修xiū,咻xiū,庥xiū,烌xiū,羞xiū,脙xiū,鸺xiū,臹xiū,貅xiū,馐xiū,樇xiū,銝xiū,髤xiū,髹xiū,鮴xiū,鵂xiū,饈xiū,鏅xiū,飍xiū,鎀xiū,苬xiú,宿xiǔ,朽xiǔ,綇xiǔ,滫xiǔ,糔xiǔ,臰xiù,秀xiù,岫xiù,珛xiù,绣xiù,袖xiù,琇xiù,锈xiù,溴xiù,璓xiù,螑xiù,繍xiù,繡xiù,鏥xiù,鏽xiù,齅xiù,嗅xiù,蓿xu,繻xū,圩xū,旴xū,疞xū,盱xū,欨xū,胥xū,须xū,顼xū,虗xū,虚xū,谞xū,媭xū,幁xū,欻xū,虛xū,須xū,楈xū,窢xū,頊xū,嘘xū,稰xū,需xū,魆xū,噓xū,墟xū,嬃xū,歔xū,縃xū,歘xū,諝xū,譃xū,魖xū,驉xū,鑐xū,鬚xū,姁xū,偦xū,戌xū,蕦xū,俆xú,徐xú,蒣xú,訏xǔ,许xǔ,诩xǔ,冔xǔ,栩xǔ,珝xǔ,許xǔ,湑xǔ,暊xǔ,詡xǔ,鄦xǔ,糈xǔ,醑xǔ,盨xǔ,滀xù,嘼xù,鉥xù,旭xù,伵xù,序xù,侐xù,沀xù,叙xù,恤xù,昫xù,洫xù,垿xù,欰xù,殈xù,烅xù,珬xù,勖xù,勗xù,敍xù,敘xù,烼xù,绪xù,续xù,酗xù,喣xù,壻xù,婿xù,朂xù,溆xù,絮xù,訹xù,慉xù,続xù,蓄xù,賉xù,槒xù,漵xù,潊xù,盢xù,瞁xù,緒xù,聟xù,稸xù,緖xù,瞲xù,藚xù,續xù,怴xù,芧xù,汿xù,煦xù,煖xuān,吅xuān,轩xuān,昍xuān,咺xuān,宣xuān,晅xuān,軒xuān,谖xuān,喧xuān,媗xuān,愃xuān,愋xuān,揎xuān,萱xuān,萲xuān,暄xuān,煊xuān,瑄xuān,蓒xuān,睻xuān,儇xuān,禤xuān,箮xuān,翧xuān,蝖xuān,蕿xuān,諠xuān,諼xuān,鍹xuān,駽xuān,矎xuān,翾xuān,藼xuān,蘐xuān,蠉xuān,譞xuān,鰚xuān,塇xuān,玹xuán,痃xuán,悬xuán,旋xuán,蜁xuán,嫙xuán,漩xuán,暶xuán,璇xuán,檈xuán,璿xuán,懸xuán,玆xuán,玄xuán,选xuǎn,選xuǎn,癣xuǎn,癬xuǎn,絃xuàn,夐xuàn,怰xuàn,泫xuàn,昡xuàn,炫xuàn,绚xuàn,眩xuàn,袨xuàn,铉xuàn,琄xuàn,眴xuàn,衒xuàn,絢xuàn,楦xuàn,鉉xuàn,碹xuàn,蔙xuàn,镟xuàn,颴xuàn,縼xuàn,繏xuàn,鏇xuàn,贙xuàn,駨xuàn,渲xuàn,疶xuē,蒆xuē,靴xuē,薛xuē,鞾xuē,削xuē,噱xué,穴xué,斈xué,乴xué,坹xué,学xué,岤xué,峃xué,茓xué,泶xué,袕xué,鸴xué,學xué,嶨xué,燢xué,雤xué,鷽xué,踅xué,雪xuě,樰xuě,膤xuě,艝xuě,轌xuě,鳕xuě,鱈xuě,血xuè,泧xuè,狘xuè,桖xuè,烕xuè,谑xuè,趐xuè,瀥xuè,坃xūn,勋xūn,埙xūn,塤xūn,熏xūn,窨xūn,勲xūn,勳xūn,薫xūn,嚑xūn,壎xūn,獯xūn,薰xūn,曛xūn,燻xūn,臐xūn,矄xūn,蘍xūn,壦xūn,爋xūn,纁xūn,醺xūn,勛xūn,郇xún,咰xún,寻xún,巡xún,旬xún,杊xún,询xún,峋xún,恂xún,浔xún,紃xún,荀xún,栒xún,桪xún,毥xún,珣xún,偱xún,尋xún,循xún,揗xún,詢xún,鄩xún,鲟xún,噚xún,潯xún,攳xún,樳xún,燅xún,燖xún,璕xún,蟳xún,鱏xún,鱘xún,侚xún,彐xún,撏xún,洵xún,浚xùn,濬xùn,鶽xùn,驯xùn,馴xùn,卂xùn,训xùn,伨xùn,汛xùn,迅xùn,徇xùn,狥xùn,迿xùn,逊xùn,殉xùn,訊xùn,訓xùn,訙xùn,奞xùn,巽xùn,殾xùn,遜xùn,愻xùn,賐xùn,噀xùn,蕈xùn,顨xùn,鑂xùn,稄xùn,讯xùn,呀ya,圧yā,丫yā,压yā,庘yā,押yā,鸦yā,桠yā,鸭yā,铔yā,椏yā,鴉yā,錏yā,鴨yā,壓yā,鵶yā,鐚yā,唖yā,亜yā,垭yā,俹yā,埡yā,孲yā,拁yá,疨yá,牙yá,伢yá,岈yá,芽yá,厓yá,枒yá,琊yá,笌yá,蚜yá,堐yá,崕yá,崖yá,涯yá,猚yá,瑘yá,睚yá,衙yá,漄yá,齖yá,庌yá,顔yá,釾yá,疋yǎ,厊yǎ,啞yǎ,痖yǎ,雅yǎ,瘂yǎ,蕥yǎ,挜yǎ,掗yǎ,哑yǎ,呾yà,輵yà,潝yà,劜yà,圠yà,亚yà,穵yà,襾yà,讶yà,犽yà,迓yà,亞yà,玡yà,娅yà,砑yà,氩yà,婭yà,訝yà,揠yà,氬yà,猰yà,圔yà,稏yà,窫yà,椻yà,鼼yà,聐yà,淊yān,咽yān,恹yān,剦yān,烟yān,珚yān,胭yān,偣yān,崦yān,淹yān,焉yān,菸yān,阉yān,湮yān,腌yān,傿yān,煙yān,鄢yān,嫣yān,漹yān,嶖yān,樮yān,醃yān,閹yān,嬮yān,篶yān,臙yān,黫yān,弇yān,硽yān,慇yān,黰yān,橪yān,阽yán,炏yán,挻yán,厃yán,唌yán,廵yán,讠yán,円yán,延yán,闫yán,严yán,妍yán,言yán,訁yán,岩yán,昖yán,沿yán,炎yán,郔yán,姸yán,娫yán,狿yán,研yán,莚yán,娮yán,盐yán,琂yán,硏yán,訮yán,閆yán,阎yán,嵒yán,嵓yán,綖yán,蜒yán,塩yán,揅yán,楌yán,詽yán,碞yán,蔅yán,颜yán,虤yán,閻yán,厳yán,檐yán,顏yán,嚴yán,壛yán,巌yán,簷yán,櫩yán,麙yán,壧yán,孍yán,巖yán,巗yán,巚yán,欕yán,礹yán,鹽yán,麣yán,黬yán,偐yán,贗yán,菴yǎn,剡yǎn,嬐yǎn,崄yǎn,嶮yǎn,抁yǎn,沇yǎn,乵yǎn,兖yǎn,奄yǎn,俨yǎn,兗yǎn,匽yǎn,衍yǎn,偃yǎn,厣yǎn,掩yǎn,眼yǎn,萒yǎn,郾yǎn,酓yǎn,嵃yǎn,愝yǎn,扊yǎn,揜yǎn,棪yǎn,渰yǎn,渷yǎn,琰yǎn,隒yǎn,椼yǎn,罨yǎn,演yǎn,褗yǎn,蝘yǎn,魇yǎn,噞yǎn,躽yǎn,檿yǎn,黡yǎn,厴yǎn,甗yǎn,鰋yǎn,鶠yǎn,黤yǎn,齞yǎn,儼yǎn,黭yǎn,顩yǎn,鼴yǎn,巘yǎn,曮yǎn,魘yǎn,鼹yǎn,齴yǎn,黶yǎn,掞yǎn,隁yǎn,喭yǎn,酀yǎn,龂yǎn,齗yǎn,阭yǎn,夵yǎn,裺yǎn,溎yàn,豜yàn,豣yàn,烻yàn,湺yàn,麲yàn,厌yàn,妟yàn,牪yàn,姲yàn,彥yàn,彦yàn,砚yàn,唁yàn,宴yàn,晏yàn,艳yàn,覎yàn,验yàn,焔yàn,谚yàn,堰yàn,敥yàn,焰yàn,焱yàn,猒yàn,硯yàn,葕yàn,雁yàn,滟yàn,鳫yàn,厭yàn,墕yàn,熖yàn,酽yàn,嬊yàn,谳yàn,餍yàn,鴈yàn,燄yàn,燕yàn,諺yàn,赝yàn,鬳yàn,曕yàn,騐yàn,験yàn,嚥yàn,嬿yàn,艶yàn,贋yàn,軅yàn,爓yàn,醶yàn,騴yàn,鷃yàn,灔yàn,觾yàn,讌yàn,饜yàn,驗yàn,鷰yàn,艷yàn,灎yàn,釅yàn,驠yàn,灧yàn,讞yàn,豓yàn,豔yàn,灩yàn,顑yàn,懕yàn,筵yàn,觃yàn,暥yàn,醼yàn,歍yāng,央yāng,咉yāng,姎yāng,抰yāng,泱yāng,殃yāng,胦yāng,眏yāng,秧yāng,鸯yāng,鉠yāng,雵yāng,鞅yāng,鍈yāng,鴦yāng,佒yāng,霙yāng,瑒yáng,婸yáng,扬yáng,羊yáng,阦yáng,旸yáng,杨yáng,炀yáng,佯yáng,劷yáng,氜yáng,疡yáng,钖yáng,飏yáng,垟yáng,徉yáng,昜yáng,洋yáng,羏yáng,烊yáng,珜yáng,眻yáng,陽yáng,崵yáng,崸yáng,揚yáng,蛘yáng,敭yáng,暘yáng,楊yáng,煬yáng,禓yáng,瘍yáng,諹yáng,輰yáng,鴹yáng,颺yáng,鐊yáng,鰑yáng,霷yáng,鸉yáng,阳yáng,鍚yáng,飬yǎng,勜yǎng,仰yǎng,坱yǎng,奍yǎng,岟yǎng,养yǎng,炴yǎng,氧yǎng,痒yǎng,紻yǎng,傟yǎng,楧yǎng,軮yǎng,慃yǎng,氱yǎng,羪yǎng,養yǎng,駚yǎng,懩yǎng,攁yǎng,瀁yǎng,癢yǎng,礢yǎng,柍yǎng,恙yàng,样yàng,羕yàng,詇yàng,様yàng,漾yàng,樣yàng,怏yàng,玅yāo,撽yāo,幺yāo,夭yāo,吆yāo,妖yāo,枖yāo,祅yāo,訞yāo,喓yāo,葽yāo,楆yāo,腰yāo,邀yāo,宎yāo,侥yáo,僥yáo,蕘yáo,匋yáo,恌yáo,铫yáo,爻yáo,尧yáo,尭yáo,肴yáo,垚yáo,姚yáo,峣yáo,轺yáo,倄yáo,珧yáo,窑yáo,傜yáo,堯yáo,揺yáo,殽yáo,谣yáo,軺yáo,嗂yáo,媱yáo,徭yáo,愮yáo,搖yáo,摇yáo,猺yáo,遙yáo,遥yáo,摿yáo,暚yáo,榣yáo,瑤yáo,瑶yáo,飖yáo,餆yáo,嶢yáo,嶤yáo,徺yáo,磘yáo,窯yáo,餚yáo,繇yáo,謠yáo,謡yáo,鎐yáo,鳐yáo,颻yáo,蘨yáo,顤yáo,鰩yáo,鷂yáo,踰yáo,烑yáo,窰yáo,噛yǎo,仸yǎo,岆yǎo,抭yǎo,杳yǎo,殀yǎo,狕yǎo,苭yǎo,咬yǎo,柼yǎo,窅yǎo,窈yǎo,舀yǎo,偠yǎo,婹yǎo,崾yǎo,溔yǎo,蓔yǎo,榚yǎo,闄yǎo,騕yǎo,齩yǎo,鷕yǎo,穾yǎo,鴢yǎo,烄yào,药yào,要yào,袎yào,窔yào,筄yào,葯yào,詏yào,熎yào,覞yào,靿yào,獟yào,鹞yào,薬yào,曜yào,艞yào,藥yào,矅yào,曣yào,耀yào,纅yào,讑yào,鑰yào,怮yào,箹yào,钥yào,籥yào,亪ye,椰yē,暍yē,噎yē,潱yē,蠮yē,耶yē,吔yē,倻yē,峫yé,爷yé,捓yé,揶yé,铘yé,爺yé,鋣yé,鎁yé,擨yé,蠱yě,虵yě,也yě,冶yě,埜yě,野yě,嘢yě,漜yě,壄yě,瓛yè,熀yè,殕yè,啘yè,鐷yè,緤yè,业yè,叶yè,曳yè,页yè,邺yè,夜yè,亱yè,枼yè,洂yè,頁yè,捙yè,晔yè,枽yè,烨yè,偞yè,掖yè,液yè,谒yè,殗yè,腋yè,葉yè,鄓yè,墷yè,楪yè,業yè,馌yè,僷yè,曄yè,曅yè,歋yè,燁yè,擖yè,擛yè,皣yè,瞱yè,靥yè,嶪yè,嶫yè,澲yè,謁yè,餣yè,嚈yè,擫yè,曗yè,瞸yè,鍱yè,擪yè,爗yè,礏yè,鎑yè,饁yè,鵺yè,靨yè,驜yè,鸈yè,黦yè,煠yè,抴yè,鄴yè,膶yen,岃yen,袆yī,褘yī,一yī,弌yī,辷yī,衤yī,伊yī,衣yī,医yī,吚yī,依yī,祎yī,咿yī,洢yī,猗yī,畩yī,郼yī,铱yī,壹yī,揖yī,欹yī,蛜yī,禕yī,嫛yī,漪yī,稦yī,銥yī,嬄yī,噫yī,夁yī,瑿yī,鹥yī,繄yī,檹yī,毉yī,醫yī,黟yī,譩yī,鷖yī,黳yī,悘yī,壱yī,耛yí,拸yí,訑yí,釶yí,鉇yí,箷yí,戺yí,珆yí,鴺yí,銕yí,狏yí,迱yí,彵yí,熈yí,仪yí,匜yí,圯yí,夷yí,冝yí,宐yí,杝yí,沂yí,诒yí,侇yí,宜yí,怡yí,沶yí,狋yí,衪yí,饴yí,咦yí,姨yí,峓yí,弬yí,恞yí,柂yí,瓵yí,荑yí,贻yí,迻yí,宧yí,巸yí,扅yí,桋yí,眙yí,胰yí,袘yí,痍yí,移yí,萓yí,媐yí,椬yí,羠yí,蛦yí,詒yí,貽yí,遗yí,暆yí,椸yí,誃yí,跠yí,頉yí,颐yí,飴yí,疑yí,儀yí,熪yí,遺yí,嶬yí,彛yí,彜yí,螔yí,頥yí,寲yí,嶷yí,簃yí,顊yí,鮧yí,彝yí,彞yí,謻yí,鏔yí,籎yí,觺yí,讉yí,鸃yí,貤yí,乁yí,栘yí,頤yí,钀yǐ,錡yǐ,裿yǐ,迤yǐ,酏yǐ,乙yǐ,已yǐ,以yǐ,钇yǐ,佁yǐ,攺yǐ,矣yǐ,苡yǐ,苢yǐ,庡yǐ,舣yǐ,蚁yǐ,釔yǐ,倚yǐ,扆yǐ,逘yǐ,偯yǐ,崺yǐ,旑yǐ,椅yǐ,鈘yǐ,鉯yǐ,鳦yǐ,旖yǐ,輢yǐ,敼yǐ,螘yǐ,檥yǐ,礒yǐ,艤yǐ,蟻yǐ,顗yǐ,轙yǐ,齮yǐ,肊yǐ,陭yǐ,嬟yǐ,醷yǐ,阤yǐ,叕yǐ,锜yǐ,歖yǐ,笖yǐ,昳yì,睪yì,欥yì,輗yì,掜yì,儗yì,謚yì,紲yì,絏yì,辥yì,义yì,亿yì,弋yì,刈yì,忆yì,艺yì,仡yì,匇yì,议yì,亦yì,伇yì,屹yì,异yì,忔yì,芅yì,伿yì,佚yì,劮yì,呓yì,坄yì,役yì,抑yì,曵yì,杙yì,耴yì,苅yì,译yì,邑yì,佾yì,呭yì,呹yì,妷yì,峄yì,怈yì,怿yì,易yì,枍yì,泆yì,炈yì,绎yì,诣yì,驿yì,俋yì,奕yì,帟yì,帠yì,弈yì,枻yì,浂yì,玴yì,疫yì,羿yì,衵yì,轶yì,唈yì,垼yì,悒yì,挹yì,栧yì,栺yì,欭yì,浥yì,浳yì,益yì,袣yì,谊yì,勚yì,埸yì,悥yì,殹yì,異yì,羛yì,翊yì,翌yì,萟yì,訲yì,訳yì,豙yì,豛yì,逸yì,釴yì,隿yì,幆yì,敡yì,晹yì,棭yì,殔yì,湙yì,焲yì,蛡yì,詍yì,跇yì,軼yì,鈠yì,骮yì,亄yì,意yì,溢yì,獈yì,痬yì,竩yì,缢yì,義yì,肄yì,裔yì,裛yì,詣yì,勩yì,嫕yì,廙yì,榏yì,潩yì,瘗yì,膉yì,蓺yì,蜴yì,靾yì,駅yì,億yì,撎yì,槸yì,毅yì,熠yì,熤yì,熼yì,瘞yì,镒yì,鹝yì,鹢yì,黓yì,劓yì,圛yì,墿yì,嬑yì,嶧yì,憶yì,懌yì,曀yì,殪yì,澺yì,燚yì,瘱yì,瞖yì,穓yì,縊yì,艗yì,薏yì,螠yì,褹yì,寱yì,斁yì,曎yì,檍yì,歝yì,燡yì,翳yì,翼yì,臆yì,貖yì,鮨yì,癔yì,藙yì,藝yì,贀yì,鎰yì,镱yì,繶yì,繹yì,豷yì,霬yì,鯣yì,鶂yì,鶃yì,鶍yì,瀷yì,蘙yì,譯yì,議yì,醳yì,饐yì,囈yì,鐿yì,鷁yì,鷊yì,襼yì,驛yì,鷧yì,虉yì,鷾yì,讛yì,齸yì,襗yì,樴yì,癦yì,焬yì,阣yì,兿yì,誼yì,燱yì,懿yì,鮣yin,乚yīn,囙yīn,因yīn,阥yīn,阴yīn,侌yīn,垔yīn,姻yīn,洇yīn,茵yīn,荫yīn,音yīn,骃yīn,栶yīn,殷yīn,氤yīn,陰yīn,凐yīn,秵yīn,裀yīn,铟yīn,陻yīn,堙yīn,婣yīn,愔yīn,筃yīn,絪yīn,歅yīn,溵yīn,禋yīn,蒑yīn,蔭yīn,瘖yīn,銦yīn,磤yīn,緸yīn,鞇yīn,諲yīn,霒yīn,駰yīn,噾yīn,濦yīn,闉yīn,霠yīn,韾yīn,喑yīn,玪yín,伒yín,乑yín,吟yín,犾yín,苂yín,斦yín,泿yín,圁yín,峾yín,烎yín,狺yín,珢yín,粌yín,荶yín,訔yín,唫yín,婬yín,寅yín,崟yín,崯yín,淫yín,訡yín,银yín,鈝yín,滛yín,碒yín,鄞yín,夤yín,蔩yín,訚yín,誾yín,銀yín,龈yín,噖yín,殥yín,嚚yín,檭yín,蟫yín,霪yín,齦yín,鷣yín,螾yín,垠yín,璌yín,赺yǐn,縯yǐn,尹yǐn,引yǐn,吲yǐn,饮yǐn,蚓yǐn,隐yǐn,淾yǐn,釿yǐn,鈏yǐn,飲yǐn,隠yǐn,靷yǐn,飮yǐn,朄yǐn,趛yǐn,檃yǐn,瘾yǐn,隱yǐn,嶾yǐn,濥yǐn,蘟yǐn,癮yǐn,讔yǐn,輑yǐn,櫽yǐn,堷yìn,梀yìn,隂yìn,印yìn,茚yìn,洕yìn,胤yìn,垽yìn,湚yìn,猌yìn,廕yìn,酳yìn,慭yìn,癊yìn,憖yìn,憗yìn,懚yìn,檼yìn,韹yīng,焽yīng,旲yīng,应yīng,応yīng,英yīng,偀yīng,桜yīng,珱yīng,莺yīng,啨yīng,婴yīng,媖yīng,愥yīng,渶yīng,朠yīng,煐yīng,瑛yīng,嫈yīng,碤yīng,锳yīng,嘤yīng,撄yīng,甇yīng,緓yīng,缨yīng,罂yīng,蝧yīng,賏yīng,樱yīng,璎yīng,噟yīng,罃yīng,褮yīng,鴬yīng,鹦yīng,嬰yīng,應yīng,膺yīng,韺yīng,甖yīng,鹰yīng,嚶yīng,孆yīng,孾yīng,攖yīng,瀴yīng,罌yīng,蘡yīng,櫻yīng,瓔yīng,礯yīng,譻yīng,鶯yīng,鑍yīng,纓yīng,蠳yīng,鷪yīng,軈yīng,鷹yīng,鸎yīng,鸚yīng,謍yīng,譍yīng,绬yīng,鶧yīng,夃yíng,俓yíng,泂yíng,嵤yíng,桯yíng,滎yíng,鎣yíng,盁yíng,迎yíng,茔yíng,盈yíng,荥yíng,荧yíng,莹yíng,萤yíng,营yíng,萦yíng,営yíng,溁yíng,溋yíng,萾yíng,僌yíng,塋yíng,楹yíng,滢yíng,蓥yíng,潆yíng,熒yíng,蝇yíng,瑩yíng,蝿yíng,嬴yíng,營yíng,縈yíng,螢yíng,濙yíng,濚yíng,濴yíng,藀yíng,覮yíng,赢yíng,巆yíng,攍yíng,攚yíng,瀛yíng,瀠yíng,蠅yíng,櫿yíng,灐yíng,籝yíng,灜yíng,贏yíng,籯yíng,耺yíng,蛍yíng,瀯yíng,瀅yíng,矨yǐng,郢yǐng,浧yǐng,梬yǐng,颍yǐng,颕yǐng,颖yǐng,摬yǐng,影yǐng,潁yǐng,瘿yǐng,穎yǐng,頴yǐng,巊yǐng,廮yǐng,鐛yǐng,癭yǐng,鱦yìng,映yìng,暎yìng,硬yìng,媵yìng,膡yìng,鞕yìng,嚛yo,哟yō,唷yō,喲yō,拥yōng,痈yōng,邕yōng,庸yōng,嗈yōng,鄘yōng,雍yōng,墉yōng,嫞yōng,慵yōng,滽yōng,槦yōng,牅yōng,銿yōng,噰yōng,壅yōng,擁yōng,澭yōng,郺yōng,镛yōng,臃yōng,癕yōng,雝yōng,鏞yōng,廱yōng,灉yōng,饔yōng,鱅yōng,鷛yōng,癰yōng,鳙yōng,揘yóng,喁yóng,鰫yóng,嵱yóng,筩yǒng,永yǒng,甬yǒng,咏yǒng,怺yǒng,泳yǒng,俑yǒng,勇yǒng,勈yǒng,栐yǒng,埇yǒng,悀yǒng,柡yǒng,涌yǒng,恿yǒng,傛yǒng,惥yǒng,愑yǒng,湧yǒng,硧yǒng,詠yǒng,彮yǒng,愹yǒng,蛹yǒng,慂yǒng,踊yǒng,禜yǒng,鲬yǒng,踴yǒng,鯒yǒng,塎yǒng,佣yòng,用yòng,苚yòng,砽yòng,醟yòng,妋yōu,优yōu,忧yōu,攸yōu,呦yōu,幽yōu,悠yōu,麀yōu,滺yōu,憂yōu,優yōu,鄾yōu,嚘yōu,懮yōu,瀀yōu,纋yōu,耰yōu,逌yōu,泈yōu,櫌yōu,蓧yóu,蚘yóu,揂yóu,汼yóu,汓yóu,蝤yóu,尣yóu,冘yóu,尢yóu,尤yóu,由yóu,沋yóu,犹yóu,邮yóu,怞yóu,油yóu,肬yóu,怣yóu,斿yóu,疣yóu,峳yóu,浟yóu,秞yóu,莜yóu,莤yóu,莸yóu,郵yóu,铀yóu,偤yóu,蚰yóu,訧yóu,逰yóu,游yóu,猶yóu,鱿yóu,楢yóu,猷yóu,鈾yóu,鲉yóu,輏yóu,駀yóu,蕕yóu,蝣yóu,魷yóu,輶yóu,鮋yóu,櫾yóu,邎yóu,庮yóu,甴yóu,遊yóu,羗yǒu,脩yǒu,戭yǒu,友yǒu,有yǒu,丣yǒu,卣yǒu,苃yǒu,酉yǒu,羑yǒu,羐yǒu,莠yǒu,梄yǒu,聈yǒu,脜yǒu,铕yǒu,湵yǒu,蒏yǒu,蜏yǒu,銪yǒu,槱yǒu,牖yǒu,牗yǒu,黝yǒu,栯yǒu,禉yǒu,痏yòu,褎yòu,褏yòu,銹yòu,柚yòu,又yòu,右yòu,幼yòu,佑yòu,侑yòu,孧yòu,狖yòu,糿yòu,哊yòu,囿yòu,姷yòu,宥yòu,峟yòu,牰yòu,祐yòu,诱yòu,迶yòu,唀yòu,蚴yòu,亴yòu,貁yòu,釉yòu,酭yòu,鼬yòu,誘yòu,纡yū,迂yū,迃yū,穻yū,陓yū,紆yū,虶yū,唹yū,淤yū,盓yū,瘀yū,箊yū,亐yū,丂yú,桙yú,婾yú,媮yú,悇yú,汙yú,汚yú,鱮yú,颙yú,顒yú,渝yú,于yú,邘yú,伃yú,余yú,妤yú,扵yú,欤yú,玗yú,玙yú,於yú,盂yú,臾yú,鱼yú,俞yú,兪yú,禺yú,竽yú,舁yú,茰yú,荢yú,娛yú,娯yú,娱yú,狳yú,谀yú,酑yú,馀yú,渔yú,萸yú,釪yú,隃yú,隅yú,雩yú,魚yú,堣yú,堬yú,崳yú,嵎yú,嵛yú,愉yú,揄yú,楰yú,畬yú,畭yú,硢yú,腴yú,逾yú,骬yú,愚yú,楡yú,榆yú,歈yú,牏yú,瑜yú,艅yú,虞yú,觎yú,漁yú,睮yú,窬yú,舆yú,褕yú,歶yú,羭yú,蕍yú,蝓yú,諛yú,雓yú,餘yú,魣yú,嬩yú,懙yú,覦yú,歟yú,璵yú,螸yú,輿yú,鍝yú,礖yú,謣yú,髃yú,鮽yú,旟yú,籅yú,騟yú,鯲yú,鰅yú,鷠yú,鸆yú,萮yú,芌yú,喩yú,媀yú,貗yú,衧yú,湡yú,澞yú,頨yǔ,蝺yǔ,藇yǔ,予yǔ,与yǔ,伛yǔ,宇yǔ,屿yǔ,羽yǔ,雨yǔ,俁yǔ,俣yǔ,挧yǔ,禹yǔ,语yǔ,圄yǔ,祤yǔ,偊yǔ,匬yǔ,圉yǔ,庾yǔ,敔yǔ,鄅yǔ,萭yǔ,傴yǔ,寙yǔ,斞yǔ,楀yǔ,瑀yǔ,瘐yǔ,與yǔ,語yǔ,窳yǔ,龉yǔ,噳yǔ,嶼yǔ,貐yǔ,斔yǔ,麌yǔ,蘌yǔ,齬yǔ,穥yǔ,峿yǔ,閼yù,穀yù,蟈yù,僪yù,鐍yù,肀yù,翑yù,衘yù,獝yù,玉yù,驭yù,圫yù,聿yù,芋yù,妪yù,忬yù,饫yù,育yù,郁yù,彧yù,昱yù,狱yù,秗yù,俼yù,峪yù,浴yù,砡yù,钰yù,预yù,喐yù,域yù,堉yù,悆yù,惐yù,欲yù,淢yù,淯yù,袬yù,逳yù,阈yù,喅yù,喻yù,寓yù,庽yù,御yù,棛yù,棜yù,棫yù,焴yù,琙yù,矞yù,裕yù,遇yù,飫yù,馭yù,鹆yù,愈yù,滪yù,煜yù,稢yù,罭yù,蒮yù,蓣yù,誉yù,鈺yù,預yù,嶎yù,戫yù,毓yù,獄yù,瘉yù,緎yù,蜟yù,蜮yù,輍yù,銉yù,隩yù,噊yù,慾yù,稶yù,蓹yù,薁yù,豫yù,遹yù,鋊yù,鳿yù,澦yù,燏yù,燠yù,蕷yù,諭yù,錥yù,閾yù,鴥yù,鴧yù,鴪yù,礇yù,禦yù,魊yù,鹬yù,癒yù,礜yù,篽yù,繘yù,鵒yù,櫲yù,饇yù,蘛yù,譽yù,轝yù,鐭yù,霱yù,欎yù,驈yù,鬻yù,籞yù,鱊yù,鷸yù,鸒yù,欝yù,軉yù,鬰yù,鬱yù,灪yù,爩yù,灹yù,吁yù,谕yù,嫗yù,儥yù,籲yù,裷yuān,嫚yuān,囦yuān,鸢yuān,剈yuān,冤yuān,弲yuān,悁yuān,眢yuān,鸳yuān,寃yuān,渁yuān,渆yuān,渊yuān,渕yuān,淵yuān,葾yuān,棩yuān,蒬yuān,蜎yuān,鹓yuān,箢yuān,鳶yuān,蜵yuān,駌yuān,鋺yuān,鴛yuān,嬽yuān,鵷yuān,灁yuān,鼝yuān,蝝yuān,鼘yuān,喛yuán,楥yuán,芫yuán,元yuán,贠yuán,邧yuán,员yuán,园yuán,沅yuán,杬yuán,垣yuán,爰yuán,貟yuán,原yuán,員yuán,圆yuán,笎yuán,袁yuán,厡yuán,酛yuán,圎yuán,援yuán,湲yuán,猨yuán,缘yuán,鈨yuán,鼋yuán,園yuán,圓yuán,塬yuán,媴yuán,源yuán,溒yuán,猿yuán,獂yuán,蒝yuán,榞yuán,榬yuán,辕yuán,緣yuán,縁yuán,蝯yuán,橼yuán,羱yuán,薗yuán,螈yuán,謜yuán,轅yuán,黿yuán,鎱yuán,櫞yuán,邍yuán,騵yuán,鶢yuán,鶰yuán,厵yuán,傆yuán,媛yuán,褑yuán,褤yuán,嫄yuán,远yuǎn,盶yuǎn,遠yuǎn,逺yuǎn,肙yuàn,妴yuàn,苑yuàn,怨yuàn,院yuàn,垸yuàn,衏yuàn,掾yuàn,瑗yuàn,禐yuàn,愿yuàn,裫yuàn,噮yuàn,願yuàn,哕yue,噦yuē,曰yuē,曱yuē,约yuē,約yuē,矱yuē,彟yuē,彠yuē,矆yuè,妜yuè,髺yuè,哾yuè,趯yuè,月yuè,戉yuè,汋yuè,岄yuè,抈yuè,礿yuè,岳yuè,玥yuè,恱yuè,悅yuè,悦yuè,蚎yuè,蚏yuè,軏yuè,钺yuè,阅yuè,捳yuè,跀yuè,跃yuè,粤yuè,越yuè,鈅yuè,粵yuè,鉞yuè,閱yuè,閲yuè,嬳yuè,樾yuè,篗yuè,嶽yuè,籆yuè,瀹yuè,蘥yuè,爚yuè,禴yuè,躍yuè,鸑yuè,籰yuè,龥yuè,鸙yuè,躒yuè,刖yuè,龠yuè,涒yūn,轀yūn,蒀yūn,煴yūn,蒕yūn,熅yūn,奫yūn,赟yūn,頵yūn,贇yūn,氲yūn,氳yūn,晕yūn,暈yūn,云yún,勻yún,匀yún,伝yún,呍yún,囩yún,妘yún,抣yún,纭yún,芸yún,昀yún,畇yún,眃yún,秐yún,郧yún,涢yún,紜yún,耘yún,鄖yún,雲yún,愪yún,溳yún,筼yún,蒷yún,熉yún,澐yún,蕓yún,鋆yún,橒yún,篔yún,縜yún,繧yún,荺yún,沄yún,允yǔn,夽yǔn,狁yǔn,玧yǔn,陨yǔn,殒yǔn,喗yǔn,鈗yǔn,隕yǔn,殞yǔn,馻yǔn,磒yǔn,霣yǔn,齫yǔn,齳yǔn,抎yǔn,緷yùn,孕yùn,运yùn,枟yùn,郓yùn,恽yùn,鄆yùn,酝yùn,傊yùn,惲yùn,愠yùn,運yùn,慍yùn,韫yùn,韵yùn,熨yùn,蕴yùn,賱yùn,醖yùn,醞yùn,餫yùn,韗yùn,韞yùn,蘊yùn,韻yùn,腪yùn,噈zā,帀zā,匝zā,沞zā,咂zā,拶zā,沯zā,桚zā,紮zā,鉔zā,臜zā,臢zā,砸zá,韴zá,雑zá,襍zá,雜zá,雥zá,囋zá,杂zá,咋zǎ,災zāi,灾zāi,甾zāi,哉zāi,栽zāi,烖zāi,渽zāi,溨zāi,睵zāi,賳zāi,宰zǎi,载zǎi,崽zǎi,載zǎi,仔zǎi,再zài,在zài,扗zài,洅zài,傤zài,酨zài,儎zài,篸zān,兂zān,糌zān,簪zān,簮zān,鐕zān,撍zān,咱zán,偺zán,喒zǎn,昝zǎn,寁zǎn,儧zǎn,攒zǎn,儹zǎn,趱zǎn,趲zǎn,揝zǎn,穳zàn,暂zàn,暫zàn,賛zàn,赞zàn,錾zàn,鄼zàn,濽zàn,蹔zàn,酂zàn,瓉zàn,贊zàn,鏨zàn,瓒zàn,灒zàn,讃zàn,瓚zàn,禶zàn,襸zàn,讚zàn,饡zàn,酇zàn,匨zāng,蔵zāng,牂zāng,羘zāng,赃zāng,賍zāng,臧zāng,賘zāng,贓zāng,髒zāng,贜zāng,脏zāng,驵zǎng,駔zǎng,奘zàng,弉zàng,塟zàng,葬zàng,銺zàng,臓zàng,臟zàng,傮zāo,遭zāo,糟zāo,醩zāo,蹧zāo,凿záo,鑿záo,早zǎo,枣zǎo,栆zǎo,蚤zǎo,棗zǎo,璅zǎo,澡zǎo,璪zǎo,薻zǎo,藻zǎo,灶zào,皁zào,皂zào,唕zào,唣zào,造zào,梍zào,慥zào,煰zào,艁zào,噪zào,簉zào,燥zào,竃zào,譟zào,趮zào,竈zào,躁zào,啫zē,伬zé,则zé,択zé,沢zé,择zé,泎zé,泽zé,责zé,迮zé,則zé,啧zé,帻zé,笮zé,舴zé,責zé,溭zé,嘖zé,嫧zé,幘zé,箦zé,蔶zé,樍zé,歵zé,諎zé,赜zé,擇zé,皟zé,瞔zé,礋zé,謮zé,賾zé,蠌zé,齚zé,齰zé,鸅zé,讁zé,葃zé,澤zé,仄zè,夨zè,庂zè,汄zè,昃zè,昗zè,捑zè,崱zè,贼zéi,賊zéi,鲗zéi,蠈zéi,鰂zéi,鱡zéi,怎zěn,谮zèn,囎zèn,譛zèn,曽zēng,増zēng,鄫zēng,增zēng,憎zēng,缯zēng,橧zēng,熷zēng,璔zēng,矰zēng,磳zēng,罾zēng,繒zēng,譄zēng,鱛zēng,縡zēng,鬷zěng,锃zèng,鋥zèng,甑zèng,赠zèng,贈zèng,馇zha,餷zha,蹅zhā,紥zhā,迊zhā,抯zhā,挓zhā,柤zhā,哳zhā,偧zhā,揸zhā,渣zhā,溠zhā,楂zhā,劄zhā,皶zhā,箚zhā,樝zhā,皻zhā,譇zhā,齄zhā,齇zhā,扎zhā,摣zhā,藸zhā,囃zhā,喳zhā,箑zhá,耫zhá,札zhá,轧zhá,軋zhá,闸zhá,蚻zhá,铡zhá,牐zhá,閘zhá,霅zhá,鍘zhá,譗zhá,挿zhǎ,揷zhǎ,厏zhǎ,苲zhǎ,砟zhǎ,鲊zhǎ,鲝zhǎ,踷zhǎ,鮓zhǎ,鮺zhǎ,眨zhǎ,吒zhà,乍zhà,诈zhà,咤zhà,奓zhà,炸zhà,宱zhà,痄zhà,蚱zhà,詐zhà,搾zhà,榨zhà,醡zhà,拃zhà,柞zhà,夈zhāi,粂zhāi,捚zhāi,斋zhāi,斎zhāi,榸zhāi,齋zhāi,摘zhāi,檡zhái,宅zhái,翟zhái,窄zhǎi,鉙zhǎi,骴zhài,簀zhài,债zhài,砦zhài,債zhài,寨zhài,瘵zhài,沾zhān,毡zhān,旃zhān,栴zhān,粘zhān,蛅zhān,惉zhān,詀zhān,趈zhān,詹zhān,閚zhān,谵zhān,嶦zhān,薝zhān,邅zhān,霑zhān,氊zhān,瞻zhān,鹯zhān,旜zhān,譫zhān,饘zhān,鳣zhān,驙zhān,魙zhān,鸇zhān,覱zhān,氈zhān,讝zhán,斩zhǎn,飐zhǎn,展zhǎn,盏zhǎn,崭zhǎn,斬zhǎn,琖zhǎn,搌zhǎn,盞zhǎn,嶃zhǎn,嶄zhǎn,榐zhǎn,颭zhǎn,嫸zhǎn,醆zhǎn,蹍zhǎn,欃zhàn,占zhàn,佔zhàn,战zhàn,栈zhàn,桟zhàn,站zhàn,偡zhàn,绽zhàn,菚zhàn,棧zhàn,湛zhàn,戦zhàn,綻zhàn,嶘zhàn,輚zhàn,戰zhàn,虥zhàn,虦zhàn,轏zhàn,蘸zhàn,驏zhàn,张zhāng,張zhāng,章zhāng,鄣zhāng,嫜zhāng,彰zhāng,慞zhāng,漳zhāng,獐zhāng,粻zhāng,蔁zhāng,遧zhāng,暲zhāng,樟zhāng,璋zhāng,餦zhāng,蟑zhāng,鏱zhāng,騿zhāng,鱆zhāng,麞zhāng,涱zhāng,傽zhāng,长zhǎng,仧zhǎng,長zhǎng,镸zhǎng,仉zhǎng,涨zhǎng,掌zhǎng,漲zhǎng,幥zhǎng,礃zhǎng,鞝zhǎng,鐣zhǎng,丈zhàng,仗zhàng,扙zhàng,杖zhàng,胀zhàng,账zhàng,粀zhàng,帳zhàng,脹zhàng,痮zhàng,障zhàng,墇zhàng,嶂zhàng,幛zhàng,賬zhàng,瘬zhàng,瘴zhàng,瞕zhàng,帐zhàng,鼌zhāo,鼂zhāo,謿zhāo,皽zhāo,佋zhāo,钊zhāo,妱zhāo,巶zhāo,招zhāo,昭zhāo,炤zhāo,盄zhāo,釗zhāo,鉊zhāo,駋zhāo,鍣zhāo,爫zhǎo,沼zhǎo,瑵zhǎo,爪zhǎo,找zhǎo,召zhào,兆zhào,诏zhào,枛zhào,垗zhào,狣zhào,赵zhào,笊zhào,肁zhào,旐zhào,棹zhào,罀zhào,詔zhào,照zhào,罩zhào,肇zhào,肈zhào,趙zhào,曌zhào,燳zhào,鮡zhào,櫂zhào,瞾zhào,羄zhào,啅zhào,龑yan,著zhe,着zhe,蜇zhē,嫬zhē,遮zhē,嗻zhē,摂zhé,歽zhé,砓zhé,籷zhé,虴zhé,哲zhé,埑zhé,粍zhé,袩zhé,啠zhé,悊zhé,晢zhé,晣zhé,辄zhé,喆zhé,蛰zhé,詟zhé,谪zhé,摺zhé,輒zhé,磔zhé,輙zhé,辙zhé,蟄zhé,嚞zhé,謫zhé,鮿zhé,轍zhé,襵zhé,讋zhé,厇zhé,謺zhé,者zhě,锗zhě,赭zhě,褶zhě,鍺zhě,这zhè,柘zhè,浙zhè,這zhè,淛zhè,蔗zhè,樜zhè,鹧zhè,蟅zhè,鷓zhè,趂zhēn,贞zhēn,针zhēn,侦zhēn,浈zhēn,珍zhēn,珎zhēn,貞zhēn,帪zhēn,栕zhēn,眞zhēn,真zhēn,砧zhēn,祯zhēn,針zhēn,偵zhēn,敒zhēn,桭zhēn,酙zhēn,寊zhēn,湞zhēn,遉zhēn,搸zhēn,斟zhēn,楨zhēn,獉zhēn,甄zhēn,禎zhēn,蒖zhēn,蓁zhēn,鉁zhēn,靕zhēn,榛zhēn,殝zhēn,瑧zhēn,禛zhēn,潧zhēn,樼zhēn,澵zhēn,臻zhēn,薽zhēn,錱zhēn,轃zhēn,鍖zhēn,鱵zhēn,胗zhēn,侲zhēn,揕zhēn,鎭zhēn,帧zhēn,幀zhēn,朾zhēn,椹zhēn,桢zhēn,箴zhēn,屒zhén,诊zhěn,抮zhěn,枕zhěn,姫zhěn,弫zhěn,昣zhěn,轸zhěn,畛zhěn,疹zhěn,眕zhěn,袗zhěn,聄zhěn,萙zhěn,裖zhěn,覙zhěn,診zhěn,軫zhěn,缜zhěn,稹zhěn,駗zhěn,縝zhěn,縥zhěn,辴zhěn,鬒zhěn,嫃zhěn,謓zhèn,迧zhèn,圳zhèn,阵zhèn,纼zhèn,挋zhèn,陣zhèn,鸩zhèn,振zhèn,朕zhèn,栚zhèn,紖zhèn,眹zhèn,赈zhèn,塦zhèn,絼zhèn,蜄zhèn,敶zhèn,誫zhèn,賑zhèn,鋴zhèn,镇zhèn,鴆zhèn,鎮zhèn,震zhèn,嶒zhēng,脀zhēng,凧zhēng,争zhēng,佂zhēng,姃zhēng,征zhēng,怔zhēng,爭zhēng,峥zhēng,炡zhēng,狰zhēng,烝zhēng,眐zhēng,钲zhēng,埩zhēng,崝zhēng,崢zhēng,猙zhēng,睁zhēng,聇zhēng,铮zhēng,媜zhēng,筝zhēng,徰zhēng,蒸zhēng,鉦zhēng,箏zhēng,徵zhēng,踭zhēng,篜zhēng,錚zhēng,鬇zhēng,癥zhēng,糽zhēng,睜zhēng,氶zhěng,抍zhěng,拯zhěng,塣zhěng,晸zhěng,愸zhěng,撜zhěng,整zhěng,憕zhèng,徎zhèng,挣zhèng,掙zhèng,正zhèng,证zhèng,诤zhèng,郑zhèng,政zhèng,症zhèng,証zhèng,鄭zhèng,鴊zhèng,證zhèng,諍zhèng,之zhī,支zhī,卮zhī,汁zhī,芝zhī,巵zhī,枝zhī,知zhī,织zhī,肢zhī,徔zhī,栀zhī,祗zhī,秓zhī,秖zhī,胑zhī,胝zhī,衼zhī,倁zhī,疷zhī,祬zhī,秪zhī,脂zhī,隻zhī,梔zhī,椥zhī,搘zhī,禔zhī,綕zhī,榰zhī,蜘zhī,馶zhī,鳷zhī,謢zhī,鴲zhī,織zhī,蘵zhī,鼅zhī,禵zhī,只zhī,鉄zhí,执zhí,侄zhí,坧zhí,直zhí,姪zhí,値zhí,值zhí,聀zhí,釞zhí,埴zhí,執zhí,职zhí,植zhí,殖zhí,絷zhí,跖zhí,墌zhí,摭zhí,馽zhí,嬂zhí,慹zhí,漐zhí,踯zhí,膱zhí,縶zhí,職zhí,蟙zhí,蹠zhí,軄zhí,躑zhí,秇zhí,埶zhí,戠zhí,禃zhí,茝zhǐ,絺zhǐ,觝zhǐ,徴zhǐ,止zhǐ,凪zhǐ,劧zhǐ,旨zhǐ,阯zhǐ,址zhǐ,坁zhǐ,帋zhǐ,沚zhǐ,纸zhǐ,芷zhǐ,抧zhǐ,祉zhǐ,茋zhǐ,咫zhǐ,恉zhǐ,指zhǐ,枳zhǐ,洔zhǐ,砋zhǐ,轵zhǐ,淽zhǐ,疻zhǐ,紙zhǐ,訨zhǐ,趾zhǐ,軹zhǐ,黹zhǐ,酯zhǐ,藢zhǐ,襧zhǐ,汦zhǐ,胵zhì,歭zhì,遟zhì,迣zhì,鶨zhì,亊zhì,銴zhì,至zhì,芖zhì,志zhì,忮zhì,扻zhì,豸zhì,厔zhì,垁zhì,帙zhì,帜zhì,治zhì,炙zhì,质zhì,郅zhì,俧zhì,峙zhì,庢zhì,庤zhì,栉zhì,洷zhì,祑zhì,陟zhì,娡zhì,徏zhì,挚zhì,晊zhì,桎zhì,狾zhì,秩zhì,致zhì,袟zhì,贽zhì,轾zhì,徝zhì,掷zhì,梽zhì,猘zhì,畤zhì,痔zhì,秲zhì,秷zhì,窒zhì,紩zhì,翐zhì,袠zhì,觗zhì,貭zhì,铚zhì,鸷zhì,傂zhì,崻zhì,彘zhì,智zhì,滞zhì,痣zhì,蛭zhì,骘zhì,廌zhì,滍zhì,稙zhì,稚zhì,置zhì,跱zhì,輊zhì,锧zhì,雉zhì,槜zhì,滯zhì,潌zhì,瘈zhì,製zhì,覟zhì,誌zhì,銍zhì,幟zhì,憄zhì,摯zhì,潪zhì,熫zhì,稺zhì,膣zhì,觯zhì,質zhì,踬zhì,鋕zhì,旘zhì,瀄zhì,緻zhì,隲zhì,鴙zhì,儨zhì,劕zhì,懥zhì,擲zhì,櫛zhì,懫zhì,贄zhì,櫍zhì,瓆zhì,觶zhì,騭zhì,礩zhì,豑zhì,騺zhì,驇zhì,躓zhì,鷙zhì,鑕zhì,豒zhì,制zhì,偫zhì,筫zhì,駤zhì,徸zhōng,蝩zhōng,中zhōng,伀zhōng,汷zhōng,刣zhōng,妐zhōng,彸zhōng,忠zhōng,炂zhōng,终zhōng,柊zhōng,盅zhōng,衳zhōng,钟zhōng,舯zhōng,衷zhōng,終zhōng,鈡zhōng,幒zhōng,蔠zhōng,锺zhōng,螤zhōng,鴤zhōng,螽zhōng,鍾zhōng,鼨zhōng,蹱zhōng,鐘zhōng,籦zhōng,衆zhōng,迚zhōng,肿zhǒng,种zhǒng,冢zhǒng,喠zhǒng,尰zhǒng,塚zhǒng,歱zhǒng,腫zhǒng,瘇zhǒng,種zhǒng,踵zhǒng,煄zhǒng,緟zhòng,仲zhòng,众zhòng,妕zhòng,狆zhòng,祌zhòng,茽zhòng,衶zhòng,重zhòng,蚛zhòng,偅zhòng,眾zhòng,堹zhòng,媑zhòng,筗zhòng,諥zhòng,啁zhōu,州zhōu,舟zhōu,诌zhōu,侜zhōu,周zhōu,洲zhōu,炿zhōu,诪zhōu,珘zhōu,辀zhōu,郮zhōu,婤zhōu,徟zhōu,矪zhōu,週zhōu,喌zhōu,粥zhōu,赒zhōu,輈zhōu,銂zhōu,賙zhōu,輖zhōu,霌zhōu,駲zhōu,嚋zhōu,盩zhōu,謅zhōu,譸zhōu,僽zhōu,諏zhōu,烐zhōu,妯zhóu,轴zhóu,軸zhóu,碡zhóu,肘zhǒu,帚zhǒu,菷zhǒu,晭zhǒu,睭zhǒu,箒zhǒu,鯞zhǒu,疛zhǒu,椆zhòu,詶zhòu,薵zhòu,纣zhòu,伷zhòu,呪zhòu,咒zhòu,宙zhòu,绉zhòu,冑zhòu,咮zhòu,昼zhòu,紂zhòu,胄zhòu,荮zhòu,晝zhòu,皱zhòu,酎zhòu,粙zhòu,葤zhòu,詋zhòu,甃zhòu,皺zhòu,駎zhòu,噣zhòu,縐zhòu,骤zhòu,籕zhòu,籒zhòu,驟zhòu,籀zhòu,蕏zhū,藷zhū,朱zhū,劯zhū,侏zhū,诛zhū,邾zhū,洙zhū,茱zhū,株zhū,珠zhū,诸zhū,猪zhū,硃zhū,袾zhū,铢zhū,絑zhū,蛛zhū,誅zhū,跦zhū,槠zhū,潴zhū,蝫zhū,銖zhū,橥zhū,諸zhū,豬zhū,駯zhū,鮢zhū,瀦zhū,櫧zhū,櫫zhū,鼄zhū,鯺zhū,蠩zhū,秼zhū,騶zhū,鴸zhū,薥zhú,鸀zhú,朮zhú,竹zhú,竺zhú,炢zhú,茿zhú,烛zhú,逐zhú,笜zhú,舳zhú,瘃zhú,蓫zhú,燭zhú,蠋zhú,躅zhú,鱁zhú,劚zhú,孎zhú,灟zhú,斸zhú,曯zhú,欘zhú,蠾zhú,钃zhú,劅zhú,斀zhú,爥zhú,主zhǔ,宔zhǔ,拄zhǔ,砫zhǔ,罜zhǔ,渚zhǔ,煑zhǔ,煮zhǔ,詝zhǔ,嘱zhǔ,濐zhǔ,麈zhǔ,瞩zhǔ,囑zhǔ,矚zhǔ,尌zhù,伫zhù,佇zhù,住zhù,助zhù,纻zhù,苎zhù,坾zhù,杼zhù,苧zhù,贮zhù,驻zhù,壴zhù,柱zhù,柷zhù,殶zhù,炷zhù,祝zhù,疰zhù,眝zhù,祩zhù,竚zhù,莇zhù,紵zhù,紸zhù,羜zhù,蛀zhù,嵀zhù,筑zhù,註zhù,貯zhù,跓zhù,軴zhù,铸zhù,筯zhù,鉒zhù,馵zhù,墸zhù,箸zhù,翥zhù,樦zhù,鋳zhù,駐zhù,築zhù,篫zhù,霔zhù,麆zhù,鑄zhù,櫡zhù,注zhù,飳zhù,抓zhuā,檛zhuā,膼zhuā,髽zhuā,跩zhuǎi,睉zhuài,拽zhuài,耑zhuān,专zhuān,専zhuān,砖zhuān,專zhuān,鄟zhuān,瑼zhuān,膞zhuān,磚zhuān,諯zhuān,蟤zhuān,顓zhuān,颛zhuān,转zhuǎn,転zhuǎn,竱zhuǎn,轉zhuǎn,簨zhuàn,灷zhuàn,啭zhuàn,堟zhuàn,蒃zhuàn,瑑zhuàn,僎zhuàn,撰zhuàn,篆zhuàn,馔zhuàn,饌zhuàn,囀zhuàn,籑zhuàn,僝zhuàn,妆zhuāng,追zhuī,骓zhuī,椎zhuī,锥zhuī,錐zhuī,騅zhuī,鵻zhuī,沝zhuǐ,倕zhuì,埀zhuì,腏zhuì,笍zhuì,娷zhuì,缀zhuì,惴zhuì,甀zhuì,缒zhuì,畷zhuì,膇zhuì,墜zhuì,綴zhuì,赘zhuì,縋zhuì,諈zhuì,醊zhuì,錣zhuì,餟zhuì,礈zhuì,贅zhuì,轛zhuì,鑆zhuì,坠zhuì,湻zhūn,宒zhūn,迍zhūn,肫zhūn,窀zhūn,谆zhūn,諄zhūn,衠zhūn,訰zhūn,准zhǔn,準zhǔn,綧zhǔn,稕zhǔn,凖zhǔn,鐯zhuo,拙zhuō,炪zhuō,倬zhuō,捉zhuō,桌zhuō,涿zhuō,棳zhuō,琸zhuō,窧zhuō,槕zhuō,蠿zhuō,矠zhuó,卓zhuó,圴zhuó,犳zhuó,灼zhuó,妰zhuó,茁zhuó,斫zhuó,浊zhuó,丵zhuó,浞zhuó,诼zhuó,酌zhuó,啄zhuó,娺zhuó,梲zhuó,斮zhuó,晫zhuó,椓zhuó,琢zhuó,斱zhuó,硺zhuó,窡zhuó,罬zhuó,撯zhuó,擆zhuó,斲zhuó,禚zhuó,諁zhuó,諑zhuó,濁zhuó,擢zhuó,斵zhuó,濯zhuó,镯zhuó,鵫zhuó,灂zhuó,蠗zhuó,鐲zhuó,籗zhuó,鷟zhuó,籱zhuó,烵zhuó,謶zhuó,薋zī,菑zī,吱zī,孜zī,茊zī,兹zī,咨zī,姕zī,姿zī,茲zī,栥zī,紎zī,赀zī,资zī,崰zī,淄zī,秶zī,缁zī,谘zī,赼zī,嗞zī,嵫zī,椔zī,湽zī,滋zī,粢zī,葘zī,辎zī,鄑zī,孶zī,禌zī,觜zī,貲zī,資zī,趑zī,锱zī,緇zī,鈭zī,镃zī,龇zī,輜zī,鼒zī,澬zī,諮zī,趦zī,輺zī,錙zī,髭zī,鲻zī,鍿zī,頾zī,頿zī,鯔zī,鶅zī,鰦zī,齜zī,訾zī,訿zī,芓zī,孳zī,鎡zī,茈zǐ,泚zǐ,籽zǐ,子zǐ,姉zǐ,姊zǐ,杍zǐ,矷zǐ,秄zǐ,呰zǐ,秭zǐ,耔zǐ,虸zǐ,笫zǐ,梓zǐ,釨zǐ,啙zǐ,紫zǐ,滓zǐ,榟zǐ,橴zǐ,自zì,茡zì,倳zì,剚zì,恣zì,牸zì,渍zì,眥zì,眦zì,胔zì,胾zì,漬zì,字zì,唨zo,潨zōng,宗zōng,倧zōng,综zōng,骔zōng,堫zōng,嵏zōng,嵕zōng,惾zōng,棕zōng,猣zōng,腙zōng,葼zōng,朡zōng,椶zōng,嵸zōng,稯zōng,緃zōng,熧zōng,緵zōng,翪zōng,蝬zōng,踨zōng,踪zōng,磫zōng,豵zōng,蹤zōng,騌zōng,鬃zōng,騣zōng,鬉zōng,鯮zōng,鯼zōng,鑁zōng,綜zōng,潀zóng,潈zóng,蓯zǒng,熜zǒng,緫zǒng,总zǒng,偬zǒng,捴zǒng,惣zǒng,愡zǒng,揔zǒng,搃zǒng,傯zǒng,蓗zǒng,摠zǒng,総zǒng,燪zǒng,總zǒng,鍯zǒng,鏓zǒng,縦zǒng,縂zǒng,纵zòng,昮zòng,疭zòng,倊zòng,猔zòng,碂zòng,粽zòng,糉zòng,瘲zòng,錝zòng,縱zòng,邹zōu,驺zōu,诹zōu,陬zōu,菆zōu,棷zōu,棸zōu,鄒zōu,緅zōu,鄹zōu,鯫zōu,黀zōu,齺zōu,芻zōu,鲰zōu,辶zǒu,赱zǒu,走zǒu,鯐zǒu,搊zǒu,奏zòu,揍zòu,租zū,菹zū,錊zū,伜zú,倅zú,紣zú,綷zú,顇zú,卆zú,足zú,卒zú,哫zú,崒zú,崪zú,族zú,稡zú,箤zú,踤zú,踿zú,镞zú,鏃zú,诅zǔ,阻zǔ,俎zǔ,爼zǔ,祖zǔ,組zǔ,詛zǔ,靻zǔ,鎺zǔ,组zǔ,鉆zuān,劗zuān,躜zuān,鑚zuān,躦zuān,繤zuǎn,缵zuǎn,纂zuǎn,纉zuǎn,籫zuǎn,纘zuǎn,欑zuàn,赚zuàn,賺zuàn,鑽zuàn,钻zuàn,攥zuàn,厜zuī,嗺zuī,樶zuī,蟕zuī,纗zuī,嶉zuǐ,槯zuǐ,嶊zuǐ,噿zuǐ,濢zuǐ,璻zuǐ,嘴zuǐ,睟zuì,枠zuì,栬zuì,絊zuì,酔zuì,晬zuì,最zuì,祽zuì,罪zuì,辠zuì,蕞zuì,醉zuì,嶵zuì,檇zuì,檌zuì,穝zuì,墫zūn,尊zūn,嶟zūn,遵zūn,樽zūn,繜zūn,罇zūn,鶎zūn,鐏zūn,鱒zūn,鷷zūn,鳟zūn,僔zǔn,噂zǔn,撙zǔn,譐zǔn,拵zùn,捘zùn,銌zùn,咗zuo,昨zuó,秨zuó,捽zuó,椊zuó,稓zuó,筰zuó,鈼zuó,阝zuǒ,左zuǒ,佐zuǒ,繓zuǒ,酢zuò,作zuò,坐zuò,阼zuò,岝zuò,岞zuò,怍zuò,侳zuò,祚zuò,胙zuò,唑zuò,座zuò,袏zuò,做zuò,葄zuò,蓙zuò,飵zuò,糳zuò,疮chuāng,牕chuāng,噇chuáng,闖chuǎng,剏chuàng,霜shuāng,欆shuāng,驦shuāng,慡shuǎng,灀shuàng,窓chuāng,瘡chuāng,闯chuǎng,仺chuàng,剙chuàng,雙shuāng,礵shuāng,鸘shuāng,樉shuǎng,谁shuí,鹴shuāng,爽shuǎng,鏯shuǎng,孀shuāng,孇shuāng,騻shuāng,焋zhuàng,幢zhuàng,撞zhuàng,隹zhuī,傱shuǎn,"; +const hzpy = + '吖�?阿�?啊�?锕�?錒�?嗄�?厑ae,哎āi,哀āi,唉āi,埃āi,挨āi,溾āi,锿āi,鎄āi,啀ái,捱ái,皑ái,凒ái,嵦ái,溰ái,嘊ái,敱ái,敳ái,皚ái,癌ái,娾ái,隑ái,剴ái,騃ái,毐ǎi,昹ǎi,矮ǎi,蔼ǎi,躷ǎi,濭ǎi,藹ǎi,譪ǎi,霭ǎi,靄ǎi,鯦ǎi,噯ài,艾ài,伌ài,爱ài,砹ài,硋ài,隘ài,嗌ài,塧ài,嫒ài,愛ài,碍ài,叆ài,暧ài,瑷ài,僾ài,壒ài,嬡ài,懓ài,薆ài,懝ài,曖ài,賹ài,餲ài,鴱ài,皧ài,瞹ài,馤ài,礙ài,譺ài,鑀ài,鱫ài,靉ài,閡ài,欬ài,焥ài,堨ài,乂ài,嗳ài,璦ài,安ān,侒ān,峖ān,桉ān,氨ān,庵ān,谙ān,媕ān,萻ān,葊ān,痷ān,腤ān,鹌ān,蓭ān,誝ān,鞌ān,鞍ān,盦ān,闇ān,馣ān,鮟ān,盫ān,鵪ān,韽ān,鶕ān,啽ān,厰ān,鴳ān,諳ān,玵án,雸án,儑án,垵ǎn,俺ǎn,唵ǎn,埯ǎn,铵ǎn,隌ǎn,揞ǎn,晻ǎn,罯ǎn,銨ǎn,碪ǎn,犴àn,岸àn,按àn,洝àn,荌àn,案àn,胺àn,豻àn,堓àn,婩àn,貋àn,錌àn,黯àn,頇àn,屽àn,垾àn,遃àn,暗àn,肮āng,骯āng,岇áng,昂áng,昻áng,卬áng,枊àng,盎àng,醠àng,凹āo,垇āo,柪āo,軪āo,爊āo,熝āo,眑āo,泑āo,梎āo,敖áo,厫áo,隞áo,嗷áo,嗸áo,嶅áo,廒áo,滶áo,獒áo,獓áo,遨áo,摮áo,璈áo,蔜áo,磝áo,翱áo,聱áo,螯áo,翶áo,謷áo,翺áo,鳌áo,鏖áo,鰲áo,鷔áo,鼇áo,慠áo,鏕áo,嚻áo,熬áo,抝ǎo,芺ǎo,袄ǎo,媪ǎo,镺ǎo,媼ǎo,襖ǎo,郩ǎo,鴁ǎo,蝹ǎo,坳ào,岙ào,扷ào,岰ào,傲ào,奡ào,奥ào,嫯ào,奧ào,澚ào,墺ào,嶴ào,澳ào,懊ào,擙ào,謸ào,鏊ào,驁ào,骜ào,吧ba,八bā,仈bā,巴bā,叭bā,扒bā,朳bā,玐bā,夿bā,岜bā,芭bā,疤bā,哵bā,捌bā,笆bā,粑bā,紦bā,羓bā,蚆bā,釟bā,鲃bā,魞bā,鈀bā,柭bā,丷bā,峇bā,豝bā,叐bá,犮bá,抜bá,坺bá,妭bá,拔bá,茇bá,炦bá,癹bá,胈bá,釛bá,菝bá,詙bá,跋bá,軷bá,颰bá,魃bá,墢bá,鼥bá,把bǎ,钯bǎ,靶bǎ,坝bà,弝bà,爸bà,罢bà,鲅bà,罷bà,鮁bà,覇bà,矲bà,霸bà,壩bà,灞bà,欛bà,鲌bà,鮊bà,皅bà,挀bāi,掰bāi,白bái,百bǎi,佰bǎi,柏bǎi,栢bǎi,捭bǎi,竡bǎi,粨bǎi,絔bǎi,摆bǎi,擺bǎi,襬bǎi,庍bài,拝bài,败bài,拜bài,敗bài,稗bài,粺bài,鞁bài,薭bài,贁bài,韛bài,扳bān,攽bān,朌bān,班bān,般bān,颁bān,斑bān,搬bān,斒bān,頒bān,瘢bān,螁bān,螌bān,褩bān,癍bān,辬bān,籓bān,肦bān,鳻bān,搫bān,阪bǎn,坂bǎn,岅bǎn,昄bǎn,板bǎn,版bǎn,钣bǎn,粄bǎn,舨bǎn,鈑bǎn,蝂bǎn,魬bǎn,覂bǎn,瓪bǎn,办bàn,半bàn,伴bàn,扮bàn,姅bàn,怑bàn,拌bàn,绊bàn,秚bàn,湴bàn,絆bàn,鉡bàn,靽bàn,辦bàn,瓣bàn,跘bàn,邦bāng,峀bāng,垹bāng,帮bāng,捠bāng,梆bāng,浜bāng,邫bāng,幚bāng,縍bāng,幫bāng,鞤bāng,幇bāng,绑bǎng,綁bǎng,榜bǎng,牓bǎng,膀bǎng,騯bǎng,玤bàng,蚌bàng,傍bàng,棒bàng,棓bàng,硥bàng,谤bàng,塝bàng,徬bàng,稖bàng,蒡bàng,蜯bàng,镑bàng,艕bàng,謗bàng,鎊bàng,埲bàng,蚄bàng,蛖bàng,嫎bàng,勹bāo,包bāo,佨bāo,孢bāo,胞bāo,剝bāo,笣bāo,煲bāo,龅bāo,蕔bāo,褒bāo,闁bāo,襃bāo,齙bāo,剥bāo,枹bāo,裦bāo,苞bāo,窇báo,嫑báo,雹báo,铇báo,薄báo,宝bǎo,怉bǎo,饱bǎo,保bǎo,鸨bǎo,珤bǎo,堡bǎo,堢bǎo,媬bǎo,葆bǎo,寚bǎo,飹bǎo,飽bǎo,褓bǎo,駂bǎo,鳵bǎo,緥bǎo,賲bǎo,藵bǎo,寳bǎo,寶bǎo,靌bǎo,宀bǎo,鴇bǎo,勽bào,报bào,抱bào,豹bào,菢bào,袌bào,報bào,鉋bào,鲍bào,靤bào,骲bào,暴bào,髱bào,虣bào,鮑bào,儤bào,曓bào,爆bào,忁bào,鑤bào,蚫bào,瀑bào,萡be,呗bei,唄bei,陂bēi,卑bēi,盃bēi,桮bēi,悲bēi,揹bēi,碑bēi,鹎bēi,藣bēi,鵯bēi,柸bēi,錍bēi,椑bēi,諀bēi,杯bēi,喺béi,北běi,鉳běi,垻bèi,贝bèi,狈bèi,貝bèi,邶bèi,备bèi,昁bèi,牬bèi,苝bèi,背bèi,钡bèi,俻bèi,倍bèi,悖bèi,狽bèi,被bèi,偝bèi,偹bèi,梖bèi,珼bèi,備bèi,僃bèi,惫bèi,焙bèi,琲bèi,軰bèi,辈bèi,愂bèi,碚bèi,禙bèi,蓓bèi,蛽bèi,犕bèi,褙bèi,誖bèi,骳bèi,輩bèi,鋇bèi,憊bèi,糒bèi,鞴bèi,鐾bèi,鐴bèi,杮bèi,韝bèi,棑bèi,哱bèi,鄁bèi,奔bēn,泍bēn,贲bēn,倴bēn,渀bēn,逩bēn,犇bēn,賁bēn,錛bēn,喯bēn,锛bēn,本běn,苯běn,奙běn,畚běn,楍běn,翉běn,夲běn,坌bèn,捹bèn,桳bèn,笨bèn,撪bèn,獖bèn,輽bèn,炃bèn,燌bèn,夯bèn,伻bēng,祊bēng,奟bēng,崩bēng,绷bēng,絣bēng,閍bēng,嵭bēng,痭bēng,嘣bēng,綳bēng,繃bēng,嗙bēng,挷bēng,傰bēng,搒bēng,甭béng,埄běng,菶běng,琣běng,鞛běng,琫běng,泵bèng,迸bèng,逬bèng,跰bèng,塴bèng,甏bèng,镚bèng,蹦bèng,鏰bèng,錋bèng,皀bī,屄bī,偪bī,毴bī,逼bī,豍bī,螕bī,鲾bī,鎞bī,鵖bī,鰏bī,悂bī,鈚bī,柲bí,荸bí,鼻bí,嬶bí,匕bǐ,比bǐ,夶bǐ,朼bǐ,佊bǐ,妣bǐ,沘bǐ,疕bǐ,彼bǐ,柀bǐ,秕bǐ,俾bǐ,笔bǐ,粃bǐ,粊bǐ,舭bǐ,啚bǐ,筆bǐ,鄙bǐ,聛bǐ,貏bǐ,箄bǐ,崥bǐ,魮bǐ,娝bǐ,箃bǐ,吡bǐ,匂bì,币bì,必bì,毕bì,闭bì,佖bì,坒bì,庇bì,诐bì,邲bì,妼bì,怭bì,枈bì,畀bì,苾bì,哔bì,毖bì,珌bì,疪bì,胇bì,荜bì,陛bì,毙bì,狴bì,畢bì,袐bì,铋bì,婢bì,庳bì,敝bì,梐bì,萆bì,萞bì,閇bì,閉bì,堛bì,弻bì,弼bì,愊bì,愎bì,湢bì,皕bì,禆bì,筚bì,貱bì,赑bì,嗶bì,彃bì,楅bì,滗bì,滭bì,煏bì,痹bì,痺bì,腷bì,蓖bì,蓽bì,蜌bì,裨bì,跸bì,鉍bì,閟bì,飶bì,幣bì,弊bì,熚bì,獙bì,碧bì,稫bì,箅bì,箆bì,綼bì,蔽bì,馝bì,幤bì,潷bì,獘bì,罼bì,襅bì,駜bì,髲bì,壁bì,嬖bì,廦bì,篦bì,篳bì,縪bì,薜bì,觱bì,避bì,鮅bì,斃bì,濞bì,臂bì,蹕bì,鞞bì,髀bì,奰bì,璧bì,鄨bì,饆bì,繴bì,襞bì,鏎bì,鞸bì,韠bì,躃bì,躄bì,魓bì,贔bì,驆bì,鷝bì,鷩bì,鼊bì,咇bì,鮩bì,畐bì,踾bì,鶝bì,闬bì,閈bì,祕bì,鴓bì,怶bì,旇bì,翍bì,肶bì,笓bì,鸊bì,肸bì,畁bì,詖bì,鄪bì,襣bì,边biān,砭biān,笾biān,猵biān,编biān,萹biān,煸biān,牑biān,甂biān,箯biān,編biān,蝙biān,獱biān,邉biān,鍽biān,鳊biān,邊biān,鞭biān,鯿biān,籩biān,糄biān,揙biān,臱biān,鯾biān,炞biǎn,贬biǎn,扁biǎn,窆biǎn,匾biǎn,貶biǎn,惼biǎn,碥biǎn,稨biǎn,褊biǎn,鴘biǎn,藊biǎn,釆biǎn,辧biǎn,疺biǎn,覵biǎn,鶣biǎn,卞biàn,弁biàn,忭biàn,抃biàn,汳biàn,汴biàn,苄biàn,峅biàn,便biàn,变biàn,変biàn,昪biàn,覍biàn,缏biàn,遍biàn,閞biàn,辡biàn,緶biàn,艑biàn,辨biàn,辩biàn,辫biàn,辮biàn,辯biàn,變biàn,彪biāo,标biāo,飑biāo,骉biāo,髟biāo,淲biāo,猋biāo,脿biāo,墂biāo,幖biāo,滮biāo,蔈biāo,骠biāo,標biāo,熛biāo,膘biāo,麃biāo,瘭biāo,镖biāo,飙biāo,飚biāo,儦biāo,颷biāo,瀌biāo,藨biāo,謤biāo,爂biāo,臕biāo,贆biāo,鏢biāo,穮biāo,镳biāo,飆biāo,飇biāo,飈biāo,飊biāo,驃biāo,鑣biāo,驫biāo,摽biāo,膔biāo,篻biāo,僄biāo,徱biāo,表biǎo,婊biǎo,裱biǎo,褾biǎo,錶biǎo,檦biǎo,諘biǎo,俵biào,鳔biào,鰾biào,憋biē,鳖biē,鱉biē,鼈biē,虌biē,龞biē,蟞biē,別bié,别bié,莂bié,蛂bié,徶bié,襒bié,蹩bié,穪bié,瘪biě,癟biě,彆biè,汃bīn,邠bīn,砏bīn,宾bīn,彬bīn,斌bīn,椕bīn,滨bīn,缤bīn,槟bīn,瑸bīn,豩bīn,賓bīn,賔bīn,镔bīn,儐bīn,濒bīn,濱bīn,濵bīn,虨bīn,豳bīn,璸bīn,瀕bīn,霦bīn,繽bīn,蠙bīn,鑌bīn,顮bīn,檳bīn,玢bīn,訜bīn,傧bīn,氞bìn,摈bìn,殡bìn,膑bìn,髩bìn,擯bìn,鬂bìn,臏bìn,髌bìn,鬓bìn,髕bìn,鬢bìn,殯bìn,仌bīng,氷bīng,冰bīng,兵bīng,栟bīng,掤bīng,梹bīng,鋲bīng,幷bīng,丙bǐng,邴bǐng,陃bǐng,怲bǐng,抦bǐng,秉bǐng,苪bǐng,昞bǐng,昺bǐng,柄bǐng,炳bǐng,饼bǐng,眪bǐng,窉bǐng,蛃bǐng,禀bǐng,鈵bǐng,鉼bǐng,鞆bǐng,餅bǐng,餠bǐng,燷bǐng,庰bǐng,偋bǐng,寎bǐng,綆bǐng,稟bǐng,癛bǐng,癝bǐng,琕bǐng,棅bǐng,并bìng,並bìng,併bìng,垪bìng,倂bìng,栤bìng,病bìng,竝bìng,傡bìng,摒bìng,誁bìng,靐bìng,疒bìng,啵bo,蔔bo,卜bo,噃bo,趵bō,癶bō,拨bō,波bō,玻bō,袚bō,袯bō,钵bō,饽bō,紴bō,缽bō,菠bō,碆bō,鉢bō,僠bō,嶓bō,撥bō,播bō,餑bō,磻bō,蹳bō,驋bō,鱍bō,帗bō,盋bō,脖bó,仢bó,伯bó,孛bó,犻bó,驳bó,帛bó,泊bó,狛bó,苩bó,侼bó,勃bó,胉bó,郣bó,亳bó,挬bó,浡bó,瓟bó,秡bó,钹bó,铂bó,桲bó,淿bó,舶bó,博bó,渤bó,湐bó,葧bó,鹁bó,愽bó,搏bó,猼bó,鈸bó,鉑bó,馎bó,僰bó,煿bó,箔bó,膊bó,艊bó,馛bó,駁bó,踣bó,鋍bó,镈bó,壆bó,馞bó,駮bó,豰bó,嚗bó,懪bó,礡bó,簙bó,鎛bó,餺bó,鵓bó,犦bó,髆bó,髉bó,欂bó,襮bó,礴bó,鑮bó,肑bó,茀bó,袹bó,穛bó,彴bó,瓝bó,牔bó,蚾bǒ,箥bǒ,跛bǒ,簸bò,孹bò,擘bò,檗bò,糪bò,譒bò,蘗bò,襎bò,檘bò,蔢bò,峬bū,庯bū,逋bū,钸bū,晡bū,鈽bū,誧bū,餔bū,鵏bū,秿bū,陠bū,鯆bū,轐bú,醭bú,不bú,輹bú,卟bǔ,补bǔ,哺bǔ,捕bǔ,補bǔ,鳪bǔ,獛bǔ,鸔bǔ,擈bǔ,佈bù,吥bù,步bù,咘bù,怖bù,歨bù,歩bù,钚bù,勏bù,埗bù,悑bù,捗bù,荹bù,部bù,埠bù,瓿bù,鈈bù,廍bù,蔀bù,踄bù,郶bù,篰bù,餢bù,簿bù,尃bù,箁bù,抪bù,柨bù,布bù,擦cā,攃cā,礤cǎ,礸cǎ,遪cà,偲cāi,猜cāi,揌cāi,才cái,材cái,财cái,財cái,戝cái,裁cái,采cǎi,倸cǎi,埰cǎi,婇cǎi,寀cǎi,彩cǎi,採cǎi,睬cǎi,跴cǎi,綵cǎi,踩cǎi,菜cài,棌cài,蔡cài,縩cài,乲cal,参cān,參cān,飡cān,骖cān,喰cān,湌cān,傪cān,嬠cān,餐cān,驂cān,嵾cān,飱cān,残cán,蚕cán,惭cán,殘cán,慚cán,蝅cán,慙cán,蠶cán,蠺cán,惨cǎn,慘cǎn,噆cǎn,憯cǎn,黪cǎn,黲cǎn,灿càn,粲càn,儏càn,澯càn,薒càn,燦càn,璨càn,爘càn,謲càn,仓cāng,沧cāng,苍cāng,倉cāng,舱cāng,凔cāng,嵢cāng,滄cāng,獊cāng,蒼cāng,濸cāng,艙cāng,螥cāng,罉cāng,藏cáng,欌cáng,鑶cáng,賶càng,撡cāo,操cāo,糙cāo,曺cáo,嘈cáo,嶆cáo,漕cáo,蓸cáo,槽cáo,褿cáo,艚cáo,螬cáo,鏪cáo,慒cáo,曹cáo,艹cǎo,艸cǎo,草cǎo,愺cǎo,懆cǎo,騲cǎo,慅cǎo,肏cào,鄵cào,襙cào,冊cè,册cè,侧cè,厕cè,恻cè,拺cè,测cè,荝cè,敇cè,側cè,粣cè,萗cè,廁cè,惻cè,測cè,策cè,萴cè,筞cè,蓛cè,墄cè,箣cè,憡cè,刂cè,厠cè,膥cēn,岑cén,梣cén,涔cén,硶cén,噌cēng,层céng,層céng,竲céng,驓céng,曾céng,蹭cèng,硛ceok,硳ceok,岾ceom,猠ceon,乽ceor,嚓chā,叉chā,扠chā,芆chā,杈chā,肞chā,臿chā,訍chā,偛chā,嗏chā,插chā,銟chā,锸chā,艖chā,疀chā,鍤chā,鎈chā,垞chá,查chá,査chá,茬chá,茶chá,嵖chá,猹chá,靫chá,槎chá,察chá,碴chá,褨chá,檫chá,搽chá,衩chǎ,镲chǎ,鑔chǎ,奼chà,汊chà,岔chà,侘chà,诧chà,剎chà,姹chà,差chà,紁chà,詫chà,拆chāi,钗chāi,釵chāi,犲chái,侪chái,柴chái,祡chái,豺chái,儕chái,喍chái,虿chài,袃chài,瘥chài,蠆chài,囆chài,辿chān,觇chān,梴chān,掺chān,搀chān,覘chān,裧chān,摻chān,鋓chān,幨chān,襜chān,攙chān,嚵chān,脠chān,婵chán,谗chán,孱chán,棎chán,湹chán,禅chán,馋chán,嬋chán,煘chán,缠chán,獑chán,蝉chán,誗chán,鋋chán,儃chán,廛chán,潹chán,潺chán,緾chán,磛chán,禪chán,毚chán,鄽chán,瀍chán,蟬chán,儳chán,劖chán,蟾chán,酁chán,壥chán,巉chán,瀺chán,纏chán,纒chán,躔chán,艬chán,讒chán,鑱chán,饞chán,繟chán,澶chán,镵chán,产chǎn,刬chǎn,旵chǎn,丳chǎn,浐chǎn,剗chǎn,谄chǎn,產chǎn,産chǎn,铲chǎn,阐chǎn,蒇chǎn,剷chǎn,嵼chǎn,摌chǎn,滻chǎn,幝chǎn,蕆chǎn,諂chǎn,閳chǎn,燀chǎn,簅chǎn,冁chǎn,醦chǎn,闡chǎn,囅chǎn,灛chǎn,讇chǎn,墠chǎn,骣chǎn,鏟chǎn,忏chàn,硟chàn,摲chàn,懴chàn,颤chàn,懺chàn,羼chàn,韂chàn,顫chàn,伥chāng,昌chāng,倀chāng,娼chāng,淐chāng,猖chāng,菖chāng,阊chāng,晿chāng,椙chāng,琩chāng,裮chāng,锠chāng,錩chāng,閶chāng,鲳chāng,鯧chāng,鼚chāng,兏cháng,肠cháng,苌cháng,尝cháng,偿cháng,常cháng,徜cháng,瓺cháng,萇cháng,甞cháng,腸cháng,嘗cháng,嫦cháng,瑺cháng,膓cháng,鋿cháng,償cháng,嚐cháng,蟐cháng,鲿cháng,鏛cháng,鱨cháng,棖cháng,尙cháng,厂chǎng,场chǎng,昶chǎng,場chǎng,敞chǎng,僘chǎng,廠chǎng,氅chǎng,鋹chǎng,惝chǎng,怅chàng,玚chàng,畅chàng,倡chàng,鬯chàng,唱chàng,悵chàng,暢chàng,畼chàng,誯chàng,韔chàng,抄chāo,弨chāo,怊chāo,欩chāo,钞chāo,焯chāo,超chāo,鈔chāo,繛chāo,樔chāo,绰chāo,綽chāo,綤chāo,牊cháo,巢cháo,巣cháo,朝cháo,鄛cháo,漅cháo,嘲cháo,潮cháo,窲cháo,罺cháo,轈cháo,晁cháo,吵chǎo,炒chǎo,眧chǎo,煼chǎo,麨chǎo,巐chǎo,粆chǎo,仦chào,耖chào,觘chào,趠chào,车chē,車chē,砗chē,唓chē,硨chē,蛼chē,莗chē,扯chě,偖chě,撦chě,彻chè,坼chè,迠chè,烢chè,聅chè,掣chè,硩chè,頙chè,徹chè,撤chè,澈chè,勶chè,瞮chè,爡chè,喢chè,賝chen,伧chen,傖chen,抻chēn,郴chēn,棽chēn,琛chēn,嗔chēn,綝chēn,諃chēn,尘chén,臣chén,忱chén,沉chén,辰chén,陈chén,茞chén,宸chén,烥chén,莐chén,陳chén,敐chén,晨chén,訦chén,谌chén,揨chén,煁chén,蔯chén,塵chén,樄chén,瘎chén,霃chén,螴chén,諶chén,麎chén,曟chén,鷐chén,薼chén,趻chěn,碜chěn,墋chěn,夦chěn,磣chěn,踸chěn,贂chěn,衬chèn,疢chèn,龀chèn,趁chèn,榇chèn,齓chèn,齔chèn,嚫chèn,谶chèn,襯chèn,讖chèn,瀋chèn,称chēng,稱chēng,阷chēng,泟chēng,柽chēng,爯chēng,棦chēng,浾chēng,偁chēng,蛏chēng,铛chēng,牚chēng,琤chēng,赪chēng,憆chēng,摚chēng,靗chēng,撐chēng,撑chēng,緽chēng,橕chēng,瞠chēng,赬chēng,頳chēng,檉chēng,竀chēng,蟶chēng,鏳chēng,鏿chēng,饓chēng,鐺chēng,丞chéng,成chéng,呈chéng,承chéng,枨chéng,诚chéng,郕chéng,乗chéng,城chéng,娍chéng,宬chéng,峸chéng,洆chéng,荿chéng,乘chéng,埕chéng,挰chéng,珹chéng,掁chéng,窚chéng,脭chéng,铖chéng,堘chéng,惩chéng,椉chéng,程chéng,筬chéng,絾chéng,裎chéng,塖chéng,溗chéng,碀chéng,誠chéng,畻chéng,酲chéng,鋮chéng,澄chéng,橙chéng,檙chéng,鯎chéng,瀓chéng,懲chéng,騬chéng,塍chéng,悜chěng,逞chěng,骋chěng,庱chěng,睈chěng,騁chěng,秤chèng,吃chī,妛chī,杘chī,侙chī,哧chī,蚩chī,鸱chī,瓻chī,眵chī,笞chī,訵chī,嗤chī,媸chī,摛chī,痴chī,瞝chī,螭chī,鴟chī,鵄chī,癡chī,魑chī,齝chī,攡chī,麶chī,彲chī,黐chī,蚳chī,摴chī,彨chī,弛chí,池chí,驰chí,迟chí,岻chí,茌chí,持chí,竾chí,淔chí,筂chí,貾chí,遅chí,馳chí,墀chí,踟chí,遲chí,篪chí,謘chí,尺chǐ,叺chǐ,呎chǐ,肔chǐ,卶chǐ,齿chǐ,垑chǐ,胣chǐ,恥chǐ,耻chǐ,蚇chǐ,豉chǐ,欼chǐ,歯chǐ,裭chǐ,鉹chǐ,褫chǐ,齒chǐ,侈chǐ,彳chì,叱chì,斥chì,灻chì,赤chì,饬chì,抶chì,勅chì,恜chì,炽chì,翄chì,翅chì,烾chì,痓chì,啻chì,湁chì,飭chì,傺chì,痸chì,腟chì,鉓chì,雴chì,憏chì,翤chì,遫chì,慗chì,瘛chì,翨chì,熾chì,懘chì,趩chì,饎chì,鶒chì,鷘chì,餝chì,歗chì,敕chì,充chōng,冲chōng,忡chōng,茺chōng,珫chōng,翀chōng,舂chōng,嘃chōng,摏chōng,憃chōng,憧chōng,衝chōng,罿chōng,艟chōng,蹖chōng,褈chōng,傭chōng,浺chōng,虫chóng,崇chóng,崈chóng,隀chóng,蟲chóng,宠chǒng,埫chǒng,寵chǒng,沖chòng,铳chòng,銃chòng,抽chōu,紬chōu,瘳chōu,篘chōu,犨chōu,犫chōu,跾chōu,掫chōu,仇chóu,俦chóu,栦chóu,惆chóu,绸chóu,菗chóu,畴chóu,絒chóu,愁chóu,皗chóu,稠chóu,筹chóu,酧chóu,酬chóu,綢chóu,踌chóu,儔chóu,雔chóu,嬦chóu,懤chóu,雠chóu,疇chóu,籌chóu,躊chóu,讎chóu,讐chóu,擣chóu,燽chóu,丑chǒu,丒chǒu,吜chǒu,杽chǒu,侴chǒu,瞅chǒu,醜chǒu,矁chǒu,魗chǒu,臭chòu,遚chòu,殠chòu,榋chu,橻chu,屮chū,出chū,岀chū,初chū,樗chū,貙chū,齣chū,刍chú,除chú,厨chú,滁chú,蒢chú,豠chú,锄chú,耡chú,蒭chú,蜍chú,趎chú,鉏chú,雏chú,犓chú,廚chú,篨chú,鋤chú,橱chú,懨chú,幮chú,櫉chú,蟵chú,躇chú,雛chú,櫥chú,蹰chú,鶵chú,躕chú,媰chú,杵chǔ,础chǔ,储chǔ,楮chǔ,禇chǔ,楚chǔ,褚chǔ,濋chǔ,儲chǔ,檚chǔ,璴chǔ,礎chǔ,齭chǔ,齼chǔ,処chǔ,椘chǔ,亍chù,处chù,竌chù,怵chù,拀chù,绌chù,豖chù,竐chù,俶chù,敊chù,珿chù,絀chù,處chù,傗chù,琡chù,搐chù,触chù,踀chù,閦chù,儊chù,憷chù,斶chù,歜chù,臅chù,黜chù,觸chù,矗chù,觕chù,畜chù,鄐chù,搋chuāi,揣chuāi,膗chuái,嘬chuài,踹chuài,膪chuài,巛chuān,川chuān,氚chuān,穿chuān,剶chuān,瑏chuān,传chuán,舡chuán,船chuán,猭chuán,遄chuán,傳chuán,椽chuán,歂chuán,暷chuán,輲chuán,甎chuán,舛chuǎn,荈chuǎn,喘chuǎn,僢chuǎn,堾chuǎn,踳chuǎn,汌chuàn,串chuàn,玔chuàn,钏chuàn,釧chuàn,賗chuàn,刅chuāng,炊chuī,龡chuī,圌chuí,垂chuí,桘chuí,陲chuí,捶chuí,菙chuí,棰chuí,槌chuí,锤chuí,箠chuí,顀chuí,錘chuí,鰆chun,旾chūn,杶chūn,春chūn,萅chūn,媋chūn,暙chūn,椿chūn,槆chūn,瑃chūn,箺chūn,蝽chūn,橁chūn,輴chūn,櫄chūn,鶞chūn,纯chún,陙chún,唇chún,浱chún,純chún,莼chún,淳chún,脣chún,犉chún,滣chún,鹑chún,漘chún,醇chún,醕chún,鯙chún,鶉chún,蒓chún,偆chǔn,萶chǔn,惷chǔn,睶chǔn,賰chǔn,蠢chǔn,踔chuō,戳chuō,啜chuò,辵chuò,娕chuò,娖chuò,惙chuò,涰chuò,逴chuò,辍chuò,酫chuò,龊chuò,擉chuò,磭chuò,歠chuò,嚽chuò,齪chuò,鑡chuò,齱chuò,婼chuò,鋜chuò,輟chuò,呲cī,玼cī,疵cī,趀cī,偨cī,縒cī,跐cī,髊cī,齹cī,枱cī,词cí,珁cí,垐cí,柌cí,祠cí,茨cí,瓷cí,詞cí,辝cí,慈cí,甆cí,辞cí,鈶cí,雌cí,鹚cí,糍cí,辤cí,飺cí,餈cí,嬨cí,濨cí,鴜cí,礠cí,辭cí,鶿cí,鷀cí,磁cí,此cǐ,佌cǐ,皉cǐ,朿cì,次cì,佽cì,刺cì,刾cì,庛cì,茦cì,栨cì,莿cì,絘cì,赐cì,螆cì,賜cì,蛓cì,嗭cis,囱cōng,匆cōng,囪cōng,苁cōng,忩cōng,枞cōng,茐cōng,怱cōng,悤cōng,棇cōng,焧cōng,葱cōng,楤cōng,漗cōng,聡cōng,蔥cōng,骢cōng,暰cōng,樅cōng,樬cōng,瑽cōng,璁cōng,聪cōng,瞛cōng,篵cōng,聰cōng,蟌cōng,繱cōng,鏦cōng,騘cōng,驄cōng,聦cōng,从cóng,從cóng,丛cóng,従cóng,婃cóng,孮cóng,徖cóng,悰cóng,淙cóng,琮cóng,漎cóng,誴cóng,賨cóng,賩cóng,樷cóng,藂cóng,叢cóng,灇cóng,欉cóng,爜cóng,憁còng,謥còng,凑còu,湊còu,楱còu,腠còu,辏còu,輳còu,粗cū,麁cū,麄cū,麤cū,徂cú,殂cú,蔖cǔ,促cù,猝cù,媨cù,瘄cù,蔟cù,誎cù,趗cù,憱cù,醋cù,瘯cù,簇cù,縬cù,鼀cù,蹴cù,蹵cù,顣cù,蹙cù,汆cuān,撺cuān,镩cuān,蹿cuān,攛cuān,躥cuān,鑹cuān,攅cuán,櫕cuán,巑cuán,攢cuán,窜cuàn,熶cuàn,篡cuàn,殩cuàn,篹cuàn,簒cuàn,竄cuàn,爨cuàn,乼cui,崔cuī,催cuī,凗cuī,墔cuī,摧cuī,榱cuī,獕cuī,磪cuī,鏙cuī,漼cuī,慛cuī,璀cuǐ,皠cuǐ,熣cuǐ,繀cuǐ,忰cuì,疩cuì,翆cuì,脃cuì,脆cuì,啐cuì,啛cuì,悴cuì,淬cuì,萃cuì,毳cuì,焠cuì,瘁cuì,粹cuì,膵cuì,膬cuì,竁cuì,臎cuì,琗cuì,粋cuì,脺cuì,翠cuì,邨cūn,村cūn,皴cūn,澊cūn,竴cūn,存cún,刌cǔn,忖cǔn,寸cùn,籿cùn,襊cuō,搓cuō,瑳cuō,遳cuō,磋cuō,撮cuō,蹉cuō,醝cuō,虘cuó,嵯cuó,痤cuó,矬cuó,蒫cuó,鹾cuó,鹺cuó,嵳cuó,脞cuǒ,剉cuò,剒cuò,厝cuò,夎cuò,挫cuò,莝cuò,莡cuò,措cuò,逪cuò,棤cuò,锉cuò,蓌cuò,错cuò,銼cuò,錯cuò,疸da,咑dā,哒dā,耷dā,畣dā,搭dā,嗒dā,噠dā,撘dā,鎝dā,笚dā,矺dā,褡dā,墶dá,达dá,迏dá,迖dá,妲dá,怛dá,垯dá,炟dá,羍dá,荅dá,荙dá,剳dá,匒dá,笪dá,逹dá,溚dá,答dá,詚dá,達dá,跶dá,瘩dá,靼dá,薘dá,鞑dá,燵dá,蟽dá,鎉dá,躂dá,鐽dá,韃dá,龖dá,龘dá,搨dá,繨dá,打dǎ,觰dǎ,大dà,亣dà,眔dà,橽dà,汏dà,呆dāi,獃dāi,懛dāi,歹dǎi,傣dǎi,逮dǎi,代dài,轪dài,侢dài,垈dài,岱dài,帒dài,甙dài,绐dài,迨dài,带dài,待dài,柋dài,殆dài,玳dài,贷dài,帯dài,軑dài,埭dài,帶dài,紿dài,蚮dài,袋dài,軚dài,貸dài,軩dài,瑇dài,廗dài,叇dài,曃dài,緿dài,鮘dài,鴏dài,戴dài,艜dài,黛dài,簤dài,蹛dài,瀻dài,霴dài,襶dài,靆dài,螮dài,蝳dài,跢dài,箉dài,骀dài,怠dài,黱dài,愖dān,丹dān,妉dān,单dān,担dān,単dān,眈dān,砃dān,耼dān,耽dān,郸dān,聃dān,躭dān,酖dān,單dān,媅dān,殚dān,瘅dān,匰dān,箪dān,褝dān,鄲dān,頕dān,儋dān,勯dān,擔dān,殫dān,癉dān,襌dān,簞dān,瓭dān,卩dān,亻dān,娊dān,噡dān,聸dān,伔dǎn,刐dǎn,狚dǎn,玬dǎn,胆dǎn,衴dǎn,紞dǎn,掸dǎn,亶dǎn,馾dǎn,撣dǎn,澸dǎn,黕dǎn,膽dǎn,丼dǎn,抌dǎn,赕dǎn,賧dǎn,黵dǎn,黮dǎn,繵dàn,譂dàn,旦dàn,但dàn,帎dàn,沊dàn,泹dàn,诞dàn,柦dàn,疍dàn,啖dàn,啗dàn,弹dàn,惮dàn,淡dàn,蛋dàn,啿dàn,氮dàn,腅dàn,蜑dàn,觛dàn,窞dàn,誕dàn,僤dàn,噉dàn,髧dàn,嘾dàn,彈dàn,憚dàn,憺dàn,澹dàn,禫dàn,餤dàn,駳dàn,鴠dàn,甔dàn,癚dàn,嚪dàn,贉dàn,霮dàn,饏dàn,蟺dàn,倓dàn,惔dàn,弾dàn,醈dàn,撢dàn,萏dàn,当dāng,珰dāng,裆dāng,筜dāng,儅dāng,噹dāng,澢dāng,璫dāng,襠dāng,簹dāng,艡dāng,蟷dāng,當dāng,挡dǎng,党dǎng,谠dǎng,擋dǎng,譡dǎng,黨dǎng,灙dǎng,欓dǎng,讜dǎng,氹dàng,凼dàng,圵dàng,宕dàng,砀dàng,垱dàng,荡dàng,档dàng,菪dàng,瓽dàng,逿dàng,潒dàng,碭dàng,瞊dàng,蕩dàng,趤dàng,壋dàng,檔dàng,璗dàng,盪dàng,礑dàng,簜dàng,蘯dàng,闣dàng,愓dàng,嵣dàng,偒dàng,雼dàng,裯dāo,刀dāo,叨dāo,屶dāo,忉dāo,氘dāo,舠dāo,釖dāo,鱽dāo,魛dāo,虭dāo,捯dáo,导dǎo,岛dǎo,陦dǎo,倒dǎo,宲dǎo,捣dǎo,祷dǎo,禂dǎo,搗dǎo,隝dǎo,嶋dǎo,嶌dǎo,槝dǎo,導dǎo,隯dǎo,壔dǎo,嶹dǎo,蹈dǎo,禱dǎo,菿dǎo,島dǎo,帱dào,幬dào,到dào,悼dào,盗dào,椡dào,盜dào,道dào,稲dào,翢dào,噵dào,稻dào,衜dào,檤dào,衟dào,翿dào,軇dào,瓙dào,纛dào,箌dào,的de,嘚dē,恴dé,得dé,淂dé,悳dé,惪dé,锝dé,徳dé,德dé,鍀dé,棏dé,揼dem,扥den,扽den,灯dēng,登dēng,豋dēng,噔dēng,嬁dēng,燈dēng,璒dēng,竳dēng,簦dēng,艠dēng,覴dēng,蹬dēng,墱dēng,戥děng,等děng,澂dèng,邓dèng,僜dèng,凳dèng,鄧dèng,隥dèng,嶝dèng,瞪dèng,磴dèng,镫dèng,櫈dèng,鐙dèng,仾dī,低dī,奃dī,彽dī,袛dī,啲dī,埞dī,羝dī,隄dī,堤dī,趆dī,嘀dī,滴dī,磾dī,鍉dī,鞮dī,氐dī,牴dī,碮dī,踧dí,镝dí,廸dí,狄dí,籴dí,苖dí,迪dí,唙dí,敌dí,涤dí,荻dí,梑dí,笛dí,觌dí,靮dí,滌dí,髢dí,嫡dí,蔋dí,蔐dí,頔dí,魡dí,敵dí,篴dí,嚁dí,藡dí,豴dí,糴dí,覿dí,鸐dí,藋dí,鬄dí,樀dí,蹢dí,鏑dí,泜dǐ,诋dǐ,邸dǐ,阺dǐ,呧dǐ,坻dǐ,底dǐ,弤dǐ,抵dǐ,拞dǐ,柢dǐ,砥dǐ,掋dǐ,菧dǐ,詆dǐ,軧dǐ,聜dǐ,骶dǐ,鯳dǐ,坘dǐ,厎dǐ,赿dì,地dì,弚dì,坔dì,弟dì,旳dì,杕dì,玓dì,怟dì,枤dì,苐dì,帝dì,埊dì,娣dì,递dì,逓dì,偙dì,啇dì,梊dì,焍dì,眱dì,祶dì,第dì,菂dì,谛dì,釱dì,媂dì,棣dì,睇dì,缔dì,蒂dì,僀dì,禘dì,腣dì,遞dì,鉪dì,馰dì,墑dì,墬dì,摕dì,碲dì,蝃dì,遰dì,慸dì,甋dì,締dì,嶳dì,諦dì,踶dì,弔dì,嵽dì,諟dì,珶dì,渧dì,蹏dì,揥dì,墆dì,疐dì,俤dì,蔕dì,嗲diǎ,敁diān,掂diān,傎diān,厧diān,嵮diān,滇diān,槙diān,瘨diān,颠diān,蹎diān,巅diān,顚diān,顛diān,癫diān,巓diān,巔diān,攧diān,癲diān,齻diān,槇diān,典diǎn,点diǎn,婰diǎn,敟diǎn,椣diǎn,碘diǎn,蒧diǎn,蕇diǎn,踮diǎn,點diǎn,痶diǎn,丶diǎn,奌diǎn,电diàn,佃diàn,甸diàn,坫diàn,店diàn,垫diàn,扂diàn,玷diàn,钿diàn,唸diàn,婝diàn,惦diàn,淀diàn,奠diàn,琔diàn,殿diàn,蜔diàn,鈿diàn,電diàn,墊diàn,橂diàn,澱diàn,靛diàn,磹diàn,癜diàn,簟diàn,驔diàn,腍diàn,橝diàn,壂diàn,刁diāo,叼diāo,汈diāo,刟diāo,凋diāo,奝diāo,弴diāo,彫diāo,蛁diāo,琱diāo,貂diāo,碉diāo,鳭diāo,殦diāo,雕diāo,鮉diāo,鲷diāo,簓diāo,鼦diāo,鯛diāo,鵰diāo,颩diāo,矵diāo,錭diāo,淍diāo,屌diǎo,鸼diǎo,鵃diǎo,扚diǎo,伄diào,吊diào,钓diào,窎diào,訋diào,调diào,掉diào,釣diào,铞diào,鈟diào,竨diào,銱diào,雿diào,調diào,瘹diào,窵diào,鋽diào,鑃diào,誂diào,嬥diào,絩diào,爹diē,跌diē,褺diē,跮dié,苵dié,迭dié,垤dié,峌dié,恎dié,绖dié,胅dié,瓞dié,眣dié,耊dié,啑dié,戜dié,谍dié,喋dié,堞dié,幉dié,惵dié,揲dié,畳dié,絰dié,耋dié,臷dié,詄dié,趃dié,叠dié,殜dié,牃dié,牒dié,镻dié,碟dié,蜨dié,褋dié,艓dié,蝶dié,諜dié,蹀dié,鲽dié,曡dié,鰈dié,疉dié,疊dié,氎dié,渉dié,崼dié,鮙dié,跕dié,鐡dié,怢dié,槢dié,挃dié,柣dié,螲dié,疂dié,眰diè,嚸dim,丁dīng,仃dīng,叮dīng,帄dīng,玎dīng,甼dīng,疔dīng,盯dīng,耵dīng,靪dīng,奵dīng,町dīng,虰dīng,酊dǐng,顶dǐng,頂dǐng,鼎dǐng,鼑dǐng,薡dǐng,鐤dǐng,顁dǐng,艼dǐng,濎dǐng,嵿dǐng,钉dìng,釘dìng,订dìng,忊dìng,饤dìng,矴dìng,定dìng,訂dìng,飣dìng,啶dìng,萣dìng,椗dìng,腚dìng,碇dìng,锭dìng,碠dìng,聢dìng,錠dìng,磸dìng,铤dìng,鋌dìng,掟dìng,丟diū,丢diū,铥diū,銩diū,东dōng,冬dōng,咚dōng,東dōng,苳dōng,昸dōng,氡dōng,倲dōng,鸫dōng,埬dōng,娻dōng,崬dōng,涷dōng,笗dōng,菄dōng,氭dōng,蝀dōng,鮗dōng,鼕dōng,鯟dōng,鶇dōng,鶫dōng,徚dōng,夂dōng,岽dōng,揰dǒng,董dǒng,墥dǒng,嬞dǒng,懂dǒng,箽dǒng,蕫dǒng,諌dǒng,湩dǒng,动dòng,冻dòng,侗dòng,垌dòng,峒dòng,峝dòng,恫dòng,挏dòng,栋dòng,洞dòng,胨dòng,迵dòng,凍dòng,戙dòng,胴dòng,動dòng,崠dòng,硐dòng,棟dòng,腖dòng,働dòng,詷dòng,駧dòng,霘dòng,狫dòng,烔dòng,絧dòng,衕dòng,勭dòng,騆dòng,姛dòng,瞗dōu,吺dōu,剅dōu,唗dōu,都dōu,兜dōu,兠dōu,蔸dōu,橷dōu,篼dōu,侸dōu,艔dóu,乧dǒu,阧dǒu,抖dǒu,枓dǒu,陡dǒu,蚪dǒu,鈄dǒu,斗dòu,豆dòu,郖dòu,浢dòu,荳dòu,逗dòu,饾dòu,鬥dòu,梪dòu,毭dòu,脰dòu,酘dòu,痘dòu,閗dòu,窦dòu,鬦dòu,鋀dòu,餖dòu,斣dòu,闘dòu,竇dòu,鬪dòu,鬭dòu,凟dòu,鬬dòu,剢dū,阇dū,嘟dū,督dū,醏dū,闍dū,厾dū,毒dú,涜dú,读dú,渎dú,椟dú,牍dú,犊dú,裻dú,読dú,獨dú,錖dú,匵dú,嬻dú,瀆dú,櫝dú,殰dú,牘dú,犢dú,瓄dú,皾dú,騳dú,讀dú,豄dú,贕dú,韣dú,髑dú,鑟dú,韇dú,韥dú,黷dú,讟dú,独dú,樚dú,襡dú,襩dú,黩dú,笃dǔ,堵dǔ,帾dǔ,琽dǔ,赌dǔ,睹dǔ,覩dǔ,賭dǔ,篤dǔ,暏dǔ,笁dǔ,陼dǔ,芏dù,妒dù,杜dù,肚dù,妬dù,度dù,荰dù,秺dù,渡dù,镀dù,螙dù,殬dù,鍍dù,蠧dù,蠹dù,剫dù,晵dù,靯dù,篅duān,偳duān,媏duān,端duān,褍duān,鍴duān,剬duān,短duǎn,段duàn,断duàn,塅duàn,缎duàn,葮duàn,椴duàn,煅duàn,瑖duàn,腶duàn,碫duàn,锻duàn,緞duàn,毈duàn,簖duàn,鍛duàn,斷duàn,躖duàn,煆duàn,籪duàn,叾dug,搥duī,鎚duī,垖duī,堆duī,塠duī,嵟duī,痽duī,磓duī,頧duī,鴭duī,鐜duī,埻duī,謉duǐ,錞duì,队duì,对duì,兊duì,兌duì,兑duì,対duì,祋duì,怼duì,陮duì,隊duì,碓duì,綐duì,對duì,憝duì,濧duì,薱duì,镦duì,懟duì,瀩duì,譈duì,譵duì,憞duì,鋭duì,杸duì,吨dūn,惇dūn,敦dūn,蜳dūn,墩dūn,墪dūn,壿dūn,撴dūn,獤dūn,噸dūn,撉dūn,橔dūn,犜dūn,礅dūn,蹲dūn,蹾dūn,驐dūn,鐓dūn,盹dǔn,趸dǔn,躉dǔn,伅dùn,囤dùn,庉dùn,沌dùn,炖dùn,盾dùn,砘dùn,逇dùn,钝dùn,遁dùn,鈍dùn,腞dùn,頓dùn,碷dùn,遯dùn,潡dùn,燉dùn,踲dùn,楯dùn,腯dùn,顿dùn,多duō,夛duō,咄duō,哆duō,茤duō,剟duō,崜duō,敠duō,毲duō,裰duō,嚉duō,掇duō,仛duó,夺duó,铎duó,敓duó,敚duó,喥duó,敪duó,鈬duó,奪duó,凙duó,踱duó,鮵duó,鐸duó,跿duó,沰duó,痥duó,奲duǒ,朵duǒ,朶duǒ,哚duǒ,垛duǒ,挅duǒ,挆duǒ,埵duǒ,缍duǒ,椯duǒ,趓duǒ,躱duǒ,躲duǒ,綞duǒ,亸duǒ,鬌duǒ,嚲duǒ,垜duǒ,橢duǒ,硾duǒ,吋duò,刴duò,剁duò,沲duò,陊duò,陏duò,饳duò,柮duò,桗duò,堕duò,舵duò,惰duò,跥duò,跺duò,飿duò,墮duò,嶞duò,憜duò,墯duò,鵽duò,隓duò,貀duò,詑duò,駄duò,媠duò,嫷duò,尮duò,呃e,妸�?妿�?娿�?婀ē,匼�?讹�?吪�?囮�?迗�?俄�?娥�?峨�?峩�?涐�?莪�?珴�?訛�?睋�?鈋�?锇�?鹅�?蛾�?磀é,誐�?鋨�?頟�?额�?魤�?額�?鵝�?鵞�?譌�?騀é,佮�?鰪�?皒�?欸�?枙�?砈�?鵈�?玀ě,閜�?砵�?惡�?厄�?歺�?屵�?戹�?岋�?阨�?扼�?阸�?呝�?砐�?轭�?咢�?咹�?垩�?姶�?峉�?匎�?恶�?砨�?蚅�?饿�?偔�?卾�?堊�?悪�?硆�?谔�?軛�?鄂�?阏�?堮�?崿�?愕�?湂�?萼�?豟�?軶�?遏�?廅�?搤�?搹�?琧�?腭�?詻�?僫�?蝁�?锷�?鹗�?蕚�?遻�?頞�?颚�?餓�?噩�?擜�?覨�?諤�?餩�?鍔�?鳄�?歞�?顎�?櫮�?鰐�?鶚�?讍�?齶�?鱷�?齃�?啈�?搕�?礘�?魥�?蘁�?齾�?苊�?遌�?鑩�?诶ēi,誒ēi,奀ēn,恩ēn,蒽ēn,煾ēn,唔én,峎ěn,摁èn,嗯èn,鞥eng,仒eo,乻eol,旕eos,儿ér,而ér,児ér,侕ér,兒ér,陑ér,峏ér,洏ér,耏ér,荋ér,栭ér,胹ér,唲ér,袻ér,鸸ér,粫ér,聏ér,輀ér,隭ér,髵ér,鮞ér,鴯ér,轜ér,咡ér,杒ér,陾ér,輭ér,鲕ér,尒ěr,尓ěr,尔ěr,耳ěr,迩ěr,洱ěr,饵ěr,栮ěr,毦ěr,珥ěr,铒ěr,爾ěr,鉺ěr,餌ěr,駬ěr,薾ěr,邇ěr,趰ěr,嬭ěr,二èr,弍èr,弐èr,佴èr,刵èr,贰èr,衈èr,貳èr,誀èr,樲èr,髶èr,貮èr,发fā,沷fā,発fā,發fā,彂fā,髪fā,橃fā,醗fā,乏fá,伐fá,姂fá,垡fá,罚fá,阀fá,栰fá,傠fá,筏fá,瞂fá,罰fá,閥fá,罸fá,藅fá,汎fá,佱fǎ,法fǎ,鍅fǎ,灋fǎ,砝fǎ,珐fà,琺fà,髮fà,蕟fà,帆fān,忛fān,犿fān,番fān,勫fān,墦fān,嬏fān,幡fān,憣fān,旙fān,旛fān,翻fān,藩fān,轓fān,颿fān,飜fān,鱕fān,蕃fān,凡fán,凢fán,凣fán,匥fán,杋fán,柉fán,籵fán,钒fán,舤fán,烦fán,舧fán,笲fán,釩fán,棥fán,煩fán,緐fán,樊fán,橎fán,燔fán,璠fán,薠fán,繁fán,繙fán,羳fán,蹯fán,瀿fán,礬fán,蘩fán,鐇fán,蠜fán,鷭fán,氾fán,瀪fán,渢fán,伋fán,舩fán,矾fán,反fǎn,仮fǎn,辺fǎn,返fǎn,攵fǎn,犭fǎn,払fǎn,犯fàn,奿fàn,泛fàn,饭fàn,范fàn,贩fàn,畈fàn,訉fàn,軓fàn,梵fàn,盕fàn,笵fàn,販fàn,軬fàn,飯fàn,飰fàn,滼fàn,嬎fàn,範fàn,嬔fàn,婏fàn,方fāng,邡fāng,坊fāng,芳fāng,牥fāng,钫fāng,淓fāng,堏fāng,鈁fāng,錺fāng,鴋fāng,埅fāng,枋fāng,防fáng,妨fáng,房fáng,肪fáng,鲂fáng,魴fáng,仿fǎng,访fǎng,纺fǎng,昉fǎng,昘fǎng,瓬fǎng,眆fǎng,倣fǎng,旊fǎng,紡fǎng,舫fǎng,訪fǎng,髣fǎng,鶭fǎng,放fàng,飞fēi,妃fēi,非fēi,飛fēi,啡fēi,婓fēi,婔fēi,渄fēi,绯fēi,菲fēi,扉fēi,猆fēi,靟fēi,裶fēi,緋fēi,蜚fēi,霏fēi,鲱fēi,餥fēi,馡fēi,騑fēi,騛fēi,鯡fēi,飝fēi,奜fēi,肥féi,淝féi,暃féi,腓féi,蜰féi,棐féi,萉féi,蟦féi,朏fěi,胐fěi,匪fěi,诽fěi,悱fěi,斐fěi,榧fěi,翡fěi,蕜fěi,誹fěi,篚fěi,襏fèi,吠fèi,废fèi,沸fèi,狒fèi,肺fèi,昲fèi,费fèi,俷fèi,剕fèi,厞fèi,疿fèi,屝fèi,廃fèi,費fèi,痱fèi,廢fèi,曊fèi,癈fèi,鼣fèi,濷fèi,櫠fèi,鐨fèi,靅fèi,蕡fèi,芾fèi,笰fèi,紼fèi,髴fèi,柹fèi,胏fèi,镄fèi,吩fēn,帉fēn,纷fēn,芬fēn,昐fēn,氛fēn,竕fēn,紛fēn,翂fēn,棻fēn,躮fēn,酚fēn,鈖fēn,雰fēn,朆fēn,餴fēn,饙fēn,錀fēn,坟fén,妢fén,岎fén,汾fén,枌fén,梤fén,羒fén,蚠fén,蚡fén,棼fén,焚fén,蒶fén,馚fén,隫fén,墳fén,幩fén,魵fén,橨fén,燓fén,豮fén,鼢fén,羵fén,鼖fén,豶fén,轒fén,馩fén,黂fén,鐼fén,粉fěn,瞓fěn,黺fěn,分fèn,份fèn,坋fèn,弅fèn,奋fèn,忿fèn,秎fèn,偾fèn,愤fèn,粪fèn,僨fèn,憤fèn,奮fèn,膹fèn,糞fèn,鲼fèn,瀵fèn,鱝fèn,丰fēng,风fēng,仹fēng,凨fēng,凬fēng,妦fēng,沣fēng,沨fēng,枫fēng,封fēng,疯fēng,盽fēng,砜fēng,風fēng,峯fēng,峰fēng,偑fēng,桻fēng,烽fēng,琒fēng,崶fēng,溄fēng,猦fēng,葑fēng,锋fēng,楓fēng,犎fēng,蜂fēng,瘋fēng,碸fēng,僼fēng,篈fēng,鄷fēng,鋒fēng,檒fēng,豐fēng,鎽fēng,酆fēng,寷fēng,灃fēng,蘴fēng,靊fēng,飌fēng,麷fēng,豊fēng,凮fēng,鏠fēng,冯féng,捀féng,浲féng,逢féng,堸féng,馮féng,綘féng,缝féng,艂féng,縫féng,讽fěng,唪fěng,諷fěng,凤fèng,奉fèng,甮fèng,俸fèng,湗fèng,焨fèng,煈fèng,鳯fèng,鳳fèng,鴌fèng,賵fèng,蘕fèng,赗fèng,覅fiao,仏fó,佛fó,坲fó,梻fó,垺fóu,紑fóu,缶fǒu,否fǒu,缹fǒu,缻fǒu,雬fǒu,鴀fǒu,芣fǒu,夫fū,邞fū,呋fū,姇fū,枎fū,玞fū,肤fū,怤fū,砆fū,胕fū,荂fū,衭fū,娐fū,荴fū,旉fū,紨fū,趺fū,酜fū,麸fū,稃fū,跗fū,鈇fū,筟fū,綒fū,鄜fū,孵fū,豧fū,敷fū,膚fū,鳺fū,麩fū,糐fū,麬fū,麱fū,懯fū,烰fū,琈fū,粰fū,璷fū,伕fú,乀fú,伏fú,凫fú,甶fú,冹fú,刜fú,孚fú,扶fú,芙fú,咈fú,岪fú,彿fú,怫fú,拂fú,服fú,泭fú,绂fú,绋fú,苻fú,俘fú,垘fú,柫fú,氟fú,洑fú,炥fú,玸fú,祓fú,罘fú,茯fú,郛fú,韨fú,鳬fú,哹fú,栿fú,浮fú,畗fú,砩fú,蚨fú,匐fú,桴fú,涪fú,符fú,紱fú,翇fú,艴fú,菔fú,虙fú,袱fú,幅fú,棴fú,罦fú,葍fú,福fú,綍fú,艀fú,蜉fú,辐fú,鉘fú,鉜fú,颫fú,鳧fú,榑fú,稪fú,箙fú,複fú,韍fú,幞fú,澓fú,蝠fú,鴔fú,諨fú,輻fú,鮄fú,癁fú,鮲fú,黻fú,鵩fú,坿fú,汱fú,酻fú,弗fú,畉fú,絥fú,抚fǔ,甫fǔ,府fǔ,弣fǔ,拊fǔ,斧fǔ,俌fǔ,郙fǔ,俯fǔ,釜fǔ,釡fǔ,捬fǔ,辅fǔ,椨fǔ,焤fǔ,盙fǔ,腑fǔ,滏fǔ,腐fǔ,輔fǔ,撫fǔ,鬴fǔ,簠fǔ,黼fǔ,蚥fǔ,窗chuāng,窻chuāng,傸chuǎng,创chuàng,創chuàng,庄zhuāng,妝zhuāng,荘zhuāng,娤zhuāng,桩zhuāng,讣fù,付fù,妇fù,负fù,附fù,咐fù,竎fù,阜fù,驸fù,复fù,峊fù,祔fù,訃fù,負fù,赴fù,袝fù,偩fù,冨fù,副fù,婦fù,蚹fù,傅fù,媍fù,富fù,復fù,蛗fù,覄fù,詂fù,赋fù,椱fù,缚fù,腹fù,鲋fù,禣fù,褔fù,赙fù,緮fù,蕧fù,蝜fù,蝮fù,賦fù,駙fù,縛fù,鮒fù,賻fù,鍑fù,鍢fù,鳆fù,覆fù,馥fù,鰒fù,軵fù,邚fù,柎fù,父fù,萯fù,旮gā,伽gā,嘎gā,夾gā,呷gā,钆gá,尜gá,釓gá,噶gá,錷gá,嘠gá,尕gǎ,玍gǎ,尬gà,魀gà,侅gāi,该gāi,郂gāi,陔gāi,垓gāi,姟gāi,峐gāi,荄gāi,晐gāi,赅gāi,畡gāi,祴gāi,絯gāi,該gāi,豥gāi,賅gāi,賌gāi,忋gǎi,改gǎi,鎅gǎi,絠gǎi,丐gài,乢gài,匃gài,匄gài,钙gài,盖gài,摡gài,溉gài,葢gài,鈣gài,戤gài,概gài,蓋gài,槩gài,槪gài,漑gài,瓂gài,甘gān,忓gān,芉gān,迀gān,攼gān,玕gān,肝gān,坩gān,泔gān,柑gān,竿gān,疳gān,酐gān,粓gān,亁gān,凲gān,尲gān,尴gān,筸gān,漧gān,鳱gān,尶gān,尷gān,魐gān,矸gān,虷gān,釬gān,乹gān,諴gān,飦gān,苷gān,杆gǎn,仠gǎn,皯gǎn,秆gǎn,衦gǎn,赶gǎn,敢gǎn,桿gǎn,笴gǎn,稈gǎn,感gǎn,澉gǎn,趕gǎn,橄gǎn,擀gǎn,簳gǎn,鱤gǎn,篢gǎn,豃gǎn,扞gǎn,鰔gǎn,扜gǎn,鳡gǎn,干gàn,旰gàn,汵gàn,盰gàn,绀gàn,倝gàn,凎gàn,淦gàn,紺gàn,詌gàn,骭gàn,幹gàn,檊gàn,赣gàn,贛gàn,灨gàn,贑gàn,佄gàn,錎gàn,棡gang,冈gāng,罓gāng,冮gāng,刚gāng,阬gāng,纲gāng,肛gāng,岡gāng,牨gāng,疘gāng,矼gāng,钢gāng,剛gāng,罡gāng,堈gāng,釭gāng,犅gāng,堽gāng,綱gāng,罁gāng,鋼gāng,鎠gāng,頏gāng,缸gāng,岗gǎng,崗gǎng,港gǎng,犺gǎng,掆gàng,杠gàng,焵gàng,筻gàng,槓gàng,戆gàng,戇gàng,戅gàng,皋gāo,羔gāo,高gāo,皐gāo,髙gāo,臯gāo,滜gāo,睾gāo,膏gāo,槹gāo,橰gāo,篙gāo,糕gāo,餻gāo,櫜gāo,韟gāo,鷎gāo,鼛gāo,鷱gāo,獋gāo,槔gāo,夰gǎo,杲gǎo,菒gǎo,稁gǎo,搞gǎo,缟gǎo,槀gǎo,槁gǎo,獔gǎo,稾gǎo,稿gǎo,镐gǎo,縞gǎo,藁gǎo,檺gǎo,藳gǎo,鎬gǎo,筶gǎo,澔gǎo,吿gào,勂gào,诰gào,郜gào,峼gào,祮gào,祰gào,锆gào,暠gào,禞gào,誥gào,鋯gào,告gào,戈gē,圪gē,犵gē,纥gē,戓gē,肐gē,牫gē,疙gē,牱gē,紇gē,哥gē,胳gē,袼gē,鸽gē,割gē,搁gē,彁gē,歌gē,戨gē,鴐gē,鴚gē,擱gē,謌gē,鴿gē,鎶gē,咯gē,滒gē,杚gé,呄gé,匌gé,挌gé,阁gé,革gé,敋gé,格gé,鬲gé,愅gé,臵gé,裓gé,隔gé,嗝gé,塥gé,滆gé,觡gé,搿gé,膈gé,閣gé,镉gé,鞈gé,韐gé,骼gé,諽gé,鮯gé,櫊gé,鎘gé,韚gé,轕gé,鞷gé,騔gé,秴gé,詥gé,佫gé,嘅gé,猲gé,槅gé,閤gě,葛gě,哿gě,舸gě,鲄gě,个gè,各gè,虼gè,個gè,硌gè,铬gè,箇gè,鉻gè,獦gè,吤gè,给gěi,給gěi,根gēn,跟gēn,哏gén,亘gèn,艮gèn,茛gèn,揯gèn,搄gèn,亙gèn,刯gēng,庚gēng,畊gēng,浭gēng,耕gēng,掶gēng,菮gēng,椩gēng,焿gēng,絚gēng,赓gēng,鹒gēng,緪gēng,縆gēng,賡gēng,羹gēng,鶊gēng,絙gēng,郠gěng,哽gěng,埂gěng,峺gěng,挭gěng,耿gěng,莄gěng,梗gěng,鲠gěng,骾gěng,鯁gěng,郉gěng,绠gěng,更gèng,堩gèng,暅gèng,啹geu,喼gib,嗰go,工gōng,弓gōng,公gōng,厷gōng,功gōng,攻gōng,杛gōng,糼gōng,肱gōng,宫gōng,宮gōng,恭gōng,蚣gōng,躬gōng,龚gōng,匑gōng,塨gōng,愩gōng,觥gōng,躳gōng,匔gōng,碽gōng,髸gōng,觵gōng,龔gōng,魟gōng,幊gōng,巩gǒng,汞gǒng,拱gǒng,唝gǒng,拲gǒng,栱gǒng,珙gǒng,輁gǒng,鞏gǒng,嗊gǒng,銾gǒng,供gòng,共gòng,贡gòng,羾gòng,貢gòng,慐gòng,熕gòng,渱gòng,勾gōu,沟gōu,钩gōu,袧gōu,缑gōu,鈎gōu,溝gōu,鉤gōu,緱gōu,褠gōu,篝gōu,簼gōu,鞲gōu,冓gōu,搆gōu,抅gōu,泃gōu,軥gōu,鴝gōu,鸜gōu,佝gōu,岣gǒu,狗gǒu,苟gǒu,枸gǒu,玽gǒu,耇gǒu,耉gǒu,笱gǒu,耈gǒu,蚼gǒu,豿gǒu,坸gòu,构gòu,诟gòu,购gòu,垢gòu,姤gòu,够gòu,夠gòu,訽gòu,媾gòu,彀gòu,詬gòu,遘gòu,雊gòu,構gòu,煹gòu,觏gòu,撀gòu,覯gòu,購gòu,傋gòu,茩gòu,估gū,咕gū,姑gū,孤gū,沽gū,泒gū,柧gū,轱gū,唂gū,唃gū,罛gū,鸪gū,笟gū,菇gū,蛄gū,蓇gū,觚gū,軱gū,軲gū,辜gū,酤gū,毂gū,箍gū,箛gū,嫴gū,篐gū,橭gū,鮕gū,鴣gū,轂gū,苽gū,菰gū,鶻gú,鹘gǔ,古gǔ,扢gǔ,汩gǔ,诂gǔ,谷gǔ,股gǔ,峠gǔ,牯gǔ,骨gǔ,罟gǔ,逧gǔ,钴gǔ,傦gǔ,啒gǔ,淈gǔ,脵gǔ,蛊gǔ,蛌gǔ,尳gǔ,愲gǔ,焸gǔ,硲gǔ,詁gǔ,馉gǔ,榾gǔ,鈷gǔ,鼓gǔ,鼔gǔ,嘏gǔ,榖gǔ,皷gǔ,縎gǔ,糓gǔ,薣gǔ,濲gǔ,臌gǔ,餶gǔ,瀔gǔ,瞽gǔ,抇gǔ,嗀gǔ,羖gǔ,固gù,怘gù,故gù,凅gù,顾gù,堌gù,崓gù,崮gù,梏gù,牿gù,棝gù,祻gù,雇gù,痼gù,稒gù,锢gù,頋gù,僱gù,錮gù,鲴gù,鯝gù,顧gù,盬gù,瓜guā,刮guā,胍guā,鸹guā,焻guā,煱guā,颪guā,趏guā,劀guā,緺guā,銽guā,鴰guā,騧guā,呱guā,諣guā,栝guā,歄guā,冎guǎ,叧guǎ,剐guǎ,剮guǎ,啩guǎ,寡guǎ,卦guà,坬guà,诖guà,挂guà,掛guà,罣guà,絓guà,罫guà,褂guà,詿guà,乖guāi,拐guǎi,枴guǎi,柺guǎi,夬guài,叏guài,怪guài,恠guài,关guān,观guān,官guān,覌guān,倌guān,萖guān,棺guān,蒄guān,窤guān,瘝guān,癏guān,観guān,鳏guān,關guān,鰥guān,觀guān,鱞guān,馆guǎn,痯guǎn,筦guǎn,管guǎn,舘guǎn,錧guǎn,館guǎn,躀guǎn,鳤guǎn,輨guǎn,冠guàn,卝guàn,毌guàn,丱guàn,贯guàn,泴guàn,悺guàn,惯guàn,掼guàn,涫guàn,貫guàn,悹guàn,祼guàn,慣guàn,摜guàn,潅guàn,遦guàn,樌guàn,盥guàn,罆guàn,雚guàn,鏆guàn,灌guàn,爟guàn,瓘guàn,矔guàn,鹳guàn,罐guàn,鑵guàn,鸛guàn,鱹guàn,懽guàn,礶guàn,光guāng,灮guāng,侊guāng,炗guāng,炚guāng,炛guāng,咣guāng,垙guāng,姯guāng,洸guāng,茪guāng,桄guāng,烡guāng,珖guāng,胱guāng,硄guāng,僙guāng,輄guāng,銧guāng,黆guāng,欟guāng,趪guāng,挄guāng,广guǎng,広guǎng,犷guǎng,廣guǎng,臩guǎng,獷guǎng,俇guàng,逛guàng,臦guàng,撗guàng,櫎guàng,归guī,圭guī,妫guī,龟guī,规guī,邽guī,皈guī,茥guī,闺guī,帰guī,珪guī,胿guī,亀guī,硅guī,袿guī,規guī,椝guī,瑰guī,郌guī,嫢guī,摫guī,閨guī,鲑guī,嶲guī,槻guī,槼guī,璝guī,瞡guī,膭guī,鮭guī,龜guī,巂guī,歸guī,鬶guī,瓌guī,鬹guī,櫷guī,佹guī,櫰guī,螝guī,槣guī,鴂guī,鴃guī,傀guī,潙guī,雟guī,嬀guī,宄guǐ,氿guǐ,轨guǐ,庋guǐ,匦guǐ,诡guǐ,陒guǐ,垝guǐ,癸guǐ,軌guǐ,鬼guǐ,庪guǐ,匭guǐ,晷guǐ,湀guǐ,蛫guǐ,觤guǐ,詭guǐ,厬guǐ,簋guǐ,蟡guǐ,攱guǐ,朹guǐ,祪guǐ,猤guì,媯guì,刽guì,刿guì,攰guì,昋guì,柜guì,炅guì,贵guì,桂guì,椢guì,筀guì,貴guì,蓕guì,跪guì,瞆guì,劊guì,劌guì,撌guì,槶guì,瞶guì,櫃guì,襘guì,鳜guì,鞼guì,鱖guì,鱥guì,桧guì,絵guì,檜guì,赽guì,趹guì,嶡guì,禬guì,衮gǔn,惃gǔn,绲gǔn,袞gǔn,辊gǔn,滚gǔn,蓘gǔn,滾gǔn,緄gǔn,蔉gǔn,磙gǔn,輥gǔn,鲧gǔn,鮌gǔn,鯀gǔn,琯gùn,棍gùn,棞gùn,睔gùn,睴gùn,璭gùn,謴gùn,呙guō,埚guō,郭guō,啯guō,崞guō,楇guō,聒guō,鈛guō,锅guō,墎guō,瘑guō,嘓guō,彉guō,蝈guō,鍋guō,彍guō,鐹guō,矌guō,簂guó,囯guó,囶guó,囻guó,国guó,圀guó,國guó,帼guó,掴guó,腘guó,幗guó,摑guó,漍guó,聝guó,蔮guó,膕guó,虢guó,馘guó,慖guó,果guǒ,惈guǒ,淉guǒ,猓guǒ,菓guǒ,馃guǒ,椁guǒ,褁guǒ,槨guǒ,粿guǒ,綶guǒ,蜾guǒ,裹guǒ,輠guǒ,餜guǒ,錁guǒ,过guò,過guò,妎hā,铪hā,鉿hā,哈hā,蛤há,孩hái,骸hái,還hái,还hái,海hǎi,胲hǎi,烸hǎi,塰hǎi,酼hǎi,醢hǎi,亥hài,骇hài,害hài,氦hài,嗐hài,餀hài,駭hài,駴hài,嚡hài,饚hài,乤hal,兯han,爳han,顸hān,哻hān,蚶hān,酣hān,谽hān,馠hān,魽hān,鼾hān,欦hān,憨hān,榦hán,邗hán,含hán,邯hán,函hán,咁hán,肣hán,凾hán,唅hán,圅hán,娢hán,浛hán,崡hán,晗hán,梒hán,涵hán,焓hán,寒hán,嵅hán,韩hán,甝hán,筨hán,蜬hán,澏hán,鋡hán,韓hán,馯hán,椷hán,罕hǎn,浫hǎn,喊hǎn,蔊hǎn,鬫hǎn,糮hǎn,厈hǎn,汉hàn,汗hàn,旱hàn,悍hàn,捍hàn,晘hàn,涆hàn,猂hàn,莟hàn,晥hàn,焊hàn,琀hàn,菡hàn,皔hàn,睅hàn,傼hàn,蛿hàn,撖hàn,漢hàn,蜭hàn,暵hàn,熯hàn,銲hàn,鋎hàn,憾hàn,撼hàn,翰hàn,螒hàn,頷hàn,顄hàn,駻hàn,譀hàn,雗hàn,瀚hàn,鶾hàn,澣hàn,颔hàn,魧hāng,苀háng,迒háng,斻háng,杭háng,垳háng,绗háng,笐háng,蚢háng,颃háng,貥háng,筕háng,絎háng,行háng,航háng,沆hàng,茠hāo,蒿hāo,嚆hāo,薅hāo,竓háo,蚝háo,毫háo,椃háo,嗥háo,獆háo,噑háo,豪háo,嘷háo,儫háo,曍háo,嚎háo,壕háo,濠háo,籇háo,蠔háo,譹háo,虠háo,諕háo,呺háo,郝hǎo,好hǎo,号hào,昊hào,昦hào,哠hào,恏hào,悎hào,浩hào,耗hào,晧hào,淏hào,傐hào,皓hào,滈hào,聕hào,號hào,暤hào,暭hào,皜hào,皞hào,皡hào,薃hào,皥hào,颢hào,灏hào,顥hào,鰝hào,灝hào,鄗hào,藃hào,诃hē,呵hē,抲hē,欱hē,喝hē,訶hē,嗬hē,蠚hē,禾hé,合hé,何hé,劾hé,咊hé,和hé,姀hé,河hé,峆hé,曷hé,柇hé,盇hé,籺hé,阂hé,饸hé,哬hé,敆hé,核hé,盉hé,盍hé,啝hé,涸hé,渮hé,盒hé,菏hé,萂hé,龁hé,惒hé,粭hé,訸hé,颌hé,楁hé,鉌hé,阖hé,熆hé,鹖hé,麧hé,澕hé,頜hé,篕hé,翮hé,螛hé,礉hé,闔hé,鞨hé,齕hé,覈hé,鶡hé,皬hé,鑉hé,龢hé,餄hé,荷hé,魺hé,垎hè,贺hè,隺hè,寉hè,焃hè,湼hè,賀hè,嗃hè,煂hè,碋hè,熇hè,褐hè,赫hè,鹤hè,翯hè,壑hè,癋hè,燺hè,爀hè,靍hè,靎hè,鸖hè,靏hè,鶮hè,謞hè,鶴hè,嗨hēi,黒hēi,黑hēi,嘿hēi,潶hēi,嬒hèi,噷hēn,拫hén,痕hén,鞎hén,佷hěn,很hěn,狠hěn,詪hěn,恨hèn,亨hēng,哼hēng,悙hēng,涥hēng,脝hēng,姮héng,恆héng,恒héng,桁héng,烆héng,珩héng,胻héng,横héng,橫héng,衡héng,鴴héng,鵆héng,蘅héng,鑅héng,鸻héng,堼hèng,叿hōng,灴hōng,轰hōng,訇hōng,烘hōng,軣hōng,揈hōng,渹hōng,焢hōng,硡hōng,薨hōng,輷hōng,嚝hōng,鍧hōng,轟hōng,仜hóng,妅hóng,红hóng,吰hóng,宏hóng,汯hóng,玒hóng,纮hóng,闳hóng,宖hóng,泓hóng,玜hóng,苰hóng,垬hóng,娂hóng,洪hóng,竑hóng,紅hóng,荭hóng,虹hóng,浤hóng,紘hóng,翃hóng,耾hóng,硔hóng,紭hóng,谹hóng,鸿hóng,竤hóng,粠hóng,葓hóng,鈜hóng,閎hóng,綋hóng,翝hóng,谼hóng,潂hóng,鉷hóng,鞃hóng,篊hóng,鋐hóng,彋hóng,蕻hóng,霐hóng,黉hóng,霟hóng,鴻hóng,黌hóng,舼hóng,瓨hóng,弘hóng,葒hóng,哄hǒng,晎hǒng,讧hòng,訌hòng,閧hòng,撔hòng,澋hòng,澒hòng,闀hòng,闂hòng,腄hóu,侯hóu,矦hóu,喉hóu,帿hóu,猴hóu,葔hóu,瘊hóu,睺hóu,銗hóu,篌hóu,糇hóu,翭hóu,骺hóu,鍭hóu,餱hóu,鯸hóu,翵hóu,吼hǒu,犼hǒu,呴hǒu,后hòu,郈hòu,厚hòu,垕hòu,後hòu,洉hòu,逅hòu,候hòu,鄇hòu,堠hòu,鲎hòu,鲘hòu,鮜hòu,鱟hòu,豞hòu,鋘hu,乎hū,匢hū,呼hū,垀hū,忽hū,昒hū,曶hū,泘hū,苸hū,烀hū,轷hū,匫hū,唿hū,惚hū,淴hū,虖hū,軤hū,雽hū,嘑hū,寣hū,滹hū,雐hū,歑hū,謼hū,芔hū,戯hū,戱hū,鹄hú,鵠hú,囫hú,弧hú,狐hú,瓳hú,胡hú,壶hú,壷hú,斛hú,焀hú,喖hú,壺hú,媩hú,湖hú,猢hú,絗hú,葫hú,楜hú,煳hú,瑚hú,嘝hú,蔛hú,鹕hú,槲hú,箶hú,糊hú,蝴hú,衚hú,縠hú,螜hú,醐hú,頶hú,觳hú,鍸hú,餬hú,瀫hú,鬍hú,鰗hú,鶘hú,鶦hú,沍hú,礐hú,瓡hú,俿hǔ,虍hǔ,乕hǔ,汻hǔ,虎hǔ,浒hǔ,唬hǔ,萀hǔ,琥hǔ,虝hǔ,滸hǔ,箎hǔ,錿hǔ,鯱hǔ,互hù,弖hù,戶hù,户hù,戸hù,冴hù,芐hù,帍hù,护hù,沪hù,岵hù,怙hù,戽hù,昈hù,枑hù,祜hù,笏hù,粐hù,婟hù,扈hù,瓠hù,綔hù,鄠hù,嫭hù,嫮hù,摢hù,滬hù,蔰hù,槴hù,熩hù,鳸hù,簄hù,鍙hù,護hù,鳠hù,韄hù,頀hù,鱯hù,鸌hù,濩hù,穫hù,觷hù,魱hù,冱hù,鹱hù,花huā,芲huā,埖huā,婲huā,椛huā,硴huā,糀huā,誮huā,錵huā,蘤huā,蕐huā,砉huā,华huá,哗huá,姡huá,骅huá,華huá,铧huá,滑huá,猾huá,嘩huá,撶huá,璍huá,螖huá,鏵huá,驊huá,鷨huá,划huá,化huà,杹huà,画huà,话huà,崋huà,桦huà,婳huà,畫huà,嬅huà,畵huà,觟huà,話huà,劃huà,摦huà,槬huà,樺huà,嫿huà,澅huà,諙huà,黊huà,繣huà,舙huà,蘳huà,譮huà,檴huà,怀huái,淮huái,槐huái,褢huái,踝huái,懐huái,褱huái,懷huái,耲huái,蘹huái,佪huái,徊huái,坏huài,咶huài,壊huài,壞huài,蘾huài,欢huān,歓huān,鴅huān,懁huān,鵍huān,酄huān,嚾huān,獾huān,歡huān,貛huān,讙huān,驩huān,貆huān,环huán,峘huán,洹huán,狟huán,荁huán,桓huán,萈huán,萑huán,堚huán,寏huán,雈huán,綄huán,羦huán,锾huán,阛huán,寰huán,澴huán,缳huán,環huán,豲huán,鍰huán,镮huán,鹮huán,糫huán,繯huán,轘huán,鐶huán,鬟huán,瞏huán,鉮huán,圜huán,闤huán,睆huǎn,缓huǎn,緩huǎn,攌huǎn,幻huàn,奂huàn,肒huàn,奐huàn,宦huàn,唤huàn,换huàn,浣huàn,涣huàn,烉huàn,患huàn,梙huàn,焕huàn,逭huàn,喚huàn,嵈huàn,愌huàn,換huàn,渙huàn,痪huàn,煥huàn,豢huàn,漶huàn,瘓huàn,槵huàn,鲩huàn,擐huàn,瞣huàn,藧huàn,鯇huàn,鯶huàn,鰀huàn,圂huàn,蠸huàn,瑍huàn,巟huāng,肓huāng,荒huāng,衁huāng,塃huāng,慌huāng,皇huáng,偟huáng,凰huáng,隍huáng,黃huáng,黄huáng,喤huáng,堭huáng,媓huáng,崲huáng,徨huáng,湟huáng,葟huáng,遑huáng,楻huáng,煌huáng,瑝huáng,墴huáng,潢huáng,獚huáng,锽huáng,熿huáng,璜huáng,篁huáng,艎huáng,蝗huáng,癀huáng,磺huáng,穔huáng,諻huáng,簧huáng,蟥huáng,鍠huáng,餭huáng,鳇huáng,鐄huáng,騜huáng,鰉huáng,鷬huáng,惶huáng,鱑huáng,怳huǎng,恍huǎng,炾huǎng,宺huǎng,晃huǎng,晄huǎng,奛huǎng,谎huǎng,幌huǎng,愰huǎng,詤huǎng,縨huǎng,謊huǎng,皩huǎng,兤huǎng,滉huàng,榥huàng,曂huàng,皝huàng,鎤huàng,鰴hui,灰huī,灳huī,诙huī,咴huī,恢huī,拻huī,挥huī,虺huī,晖huī,烣huī,珲huī,豗huī,婎huī,媈huī,揮huī,翚huī,辉huī,暉huī,楎huī,琿huī,禈huī,詼huī,幑huī,睳huī,噅huī,噕huī,翬huī,輝huī,麾huī,徽huī,隳huī,瀈huī,洃huī,煇huí,囘huí,回huí,囬huí,廻huí,廽huí,恛huí,洄huí,茴huí,迴huí,烠huí,逥huí,痐huí,蛔huí,蛕huí,蜖huí,鮰huí,藱huí,悔huǐ,毇huǐ,檓huǐ,燬huǐ,譭huǐ,泋huǐ,毁huǐ,烜huǐ,卉huì,屷huì,汇huì,会huì,讳huì,浍huì,绘huì,荟huì,诲huì,恚huì,恵huì,烩huì,贿huì,彗huì,晦huì,秽huì,喙huì,惠huì,缋huì,翙huì,阓huì,匯huì,彙huì,彚huì,會huì,毀huì,滙huì,詯huì,賄huì,嘒huì,蔧huì,誨huì,圚huì,寭huì,慧huì,憓huì,暳huì,槥huì,潓huì,蕙huì,徻huì,橞huì,澮huì,獩huì,璤huì,薈huì,薉huì,諱huì,檅huì,燴huì,篲huì,餯huì,嚖huì,瞺huì,穢huì,繢huì,蟪huì,櫘huì,繪huì,翽huì,譓huì,儶huì,鏸huì,闠huì,孈huì,鐬huì,靧huì,韢huì,譿huì,顪huì,銊huì,叀huì,僡huì,懳huì,昏hūn,昬hūn,荤hūn,婚hūn,惛hūn,涽hūn,阍hūn,惽hūn,棔hūn,葷hūn,睧hūn,閽hūn,焄hūn,蔒hūn,睯hūn,忶hún,浑hún,馄hún,渾hún,魂hún,餛hún,繉hún,轋hún,鼲hún,混hún,梱hún,湷hún,诨hùn,俒hùn,倱hùn,掍hùn,焝hùn,溷hùn,慁hùn,觨hùn,諢hùn,吙huō,耠huō,锪huō,劐huō,鍃huō,豁huō,攉huō,騞huō,搉huō,佸huó,秮huó,活huó,火huǒ,伙huǒ,邩huǒ,钬huǒ,鈥huǒ,夥huǒ,沎huò,或huò,货huò,咟huò,俰huò,捇huò,眓huò,获huò,閄huò,剨huò,掝huò,祸huò,貨huò,惑huò,旤huò,湱huò,禍huò,奯huò,獲huò,霍huò,謋huò,镬huò,嚯huò,瀖huò,耯huò,藿huò,蠖huò,嚿huò,曤huò,臛huò,癨huò,矐huò,鑊huò,靃huò,謔huò,篧huò,擭huò,夻hwa,丌jī,讥jī,击jī,刉jī,叽jī,饥jī,乩jī,圾jī,机jī,玑jī,肌jī,芨jī,矶jī,鸡jī,枅jī,咭jī,剞jī,唧jī,姬jī,屐jī,积jī,笄jī,飢jī,基jī,喞jī,嵆jī,嵇jī,攲jī,敧jī,犄jī,筓jī,缉jī,赍jī,嗘jī,稘jī,跻jī,鳮jī,僟jī,毄jī,箕jī,銈jī,嘰jī,撃jī,樭jī,畿jī,稽jī,緝jī,觭jī,賫jī,躸jī,齑jī,墼jī,憿jī,機jī,激jī,璣jī,禨jī,積jī,錤jī,隮jī,擊jī,磯jī,簊jī,羁jī,賷jī,鄿jī,櫅jī,耭jī,雞jī,譏jī,韲jī,鶏jī,譤jī,鐖jī,癪jī,躋jī,鞿jī,鷄jī,齎jī,羇jī,虀jī,鑇jī,覉jī,鑙jī,齏jī,羈jī,鸄jī,覊jī,庴jī,垍jī,諅jī,踦jī,璂jī,踑jī,谿jī,刏jī,畸jī,簎jí,諔jí,堲jí,蠀jí,亼jí,及jí,吉jí,彶jí,忣jí,汲jí,级jí,即jí,极jí,亟jí,佶jí,郆jí,卽jí,叝jí,姞jí,急jí,狤jí,皍jí,笈jí,級jí,揤jí,疾jí,觙jí,偮jí,卙jí,楖jí,焏jí,脨jí,谻jí,戢jí,棘jí,極jí,湒jí,集jí,塉jí,嫉jí,愱jí,楫jí,蒺jí,蝍jí,趌jí,辑jí,槉jí,耤jí,膌jí,銡jí,嶯jí,潗jí,瘠jí,箿jí,蕀jí,蕺jí,踖jí,鞊jí,鹡jí,橶jí,檝jí,濈jí,螏jí,輯jí,襋jí,蹐jí,艥jí,籍jí,轚jí,鏶jí,霵jí,鶺jí,鷑jí,躤jí,雦jí,雧jí,嵴jí,尐jí,淁jí,吇jí,莋jí,岌jí,殛jí,鍓jí,颳jǐ,几jǐ,己jǐ,丮jǐ,妀jǐ,犱jǐ,泲jǐ,虮jǐ,挤jǐ,脊jǐ,掎jǐ,鱾jǐ,幾jǐ,戟jǐ,麂jǐ,魢jǐ,撠jǐ,擠jǐ,穖jǐ,蟣jǐ,済jǐ,畟jì,迹jì,绩jì,勣jì,彑jì,旡jì,计jì,记jì,伎jì,纪jì,坖jì,妓jì,忌jì,技jì,芰jì,芶jì,际jì,剂jì,季jì,哜jì,峜jì,既jì,洎jì,济jì,紀jì,茍jì,計jì,剤jì,紒jì,继jì,觊jì,記jì,偈jì,寄jì,徛jì,悸jì,旣jì,梞jì,祭jì,萕jì,惎jì,臮jì,葪jì,蔇jì,兾jì,痵jì,継jì,蓟jì,裚jì,跡jì,際jì,墍jì,暨jì,漃jì,漈jì,禝jì,稩jì,穊jì,誋jì,跽jì,霁jì,鲚jì,稷jì,鲫jì,冀jì,劑jì,曁jì,穄jì,縘jì,薊jì,襀jì,髻jì,嚌jì,檕jì,濟jì,繋jì,罽jì,覬jì,鮆jì,檵jì,璾jì,蹟jì,鯽jì,鵋jì,齌jì,廭jì,懻jì,癠jì,穧jì,糭jì,繫jì,骥jì,鯚jì,瀱jì,繼jì,蘮jì,鱀jì,蘻jì,霽jì,鰶jì,鰿jì,鱭jì,驥jì,訐jì,魝jì,櫭jì,帺jì,褀jì,鬾jì,懠jì,蟿jì,汥jì,鯯jì,齍jì,績jì,寂jì,暩jì,蘎jì,筴jiā,加jiā,抸jiā,佳jiā,泇jiā,迦jiā,枷jiā,毠jiā,浃jiā,珈jiā,埉jiā,家jiā,浹jiā,痂jiā,梜jiā,耞jiā,袈jiā,猳jiā,葭jiā,跏jiā,犌jiā,腵jiā,鉫jiā,嘉jiā,镓jiā,糘jiā,豭jiā,貑jiā,鎵jiā,麚jiā,椵jiā,挟jiā,挾jiā,笳jiā,夹jiá,袷jiá,裌jiá,圿jiá,扴jiá,郏jiá,荚jiá,郟jiá,唊jiá,恝jiá,莢jiá,戛jiá,脥jiá,铗jiá,蛱jiá,颊jiá,蛺jiá,跲jiá,鋏jiá,頬jiá,頰jiá,鴶jiá,鵊jiá,忦jiá,戞jiá,岬jiǎ,甲jiǎ,叚jiǎ,玾jiǎ,胛jiǎ,斚jiǎ,贾jiǎ,钾jiǎ,婽jiǎ,徦jiǎ,斝jiǎ,賈jiǎ,鉀jiǎ,榎jiǎ,槚jiǎ,瘕jiǎ,檟jiǎ,夓jiǎ,假jiǎ,价jià,驾jià,架jià,嫁jià,幏jià,榢jià,價jià,稼jià,駕jià,戋jiān,奸jiān,尖jiān,幵jiān,坚jiān,歼jiān,间jiān,冿jiān,戔jiān,肩jiān,艰jiān,姦jiān,姧jiān,兼jiān,监jiān,堅jiān,惤jiān,猏jiān,笺jiān,菅jiān,菺jiān,牋jiān,犍jiān,缄jiān,葌jiān,葏jiān,間jiān,靬jiān,搛jiān,椾jiān,煎jiān,瑊jiān,睷jiān,碊jiān,缣jiān,蒹jiān,監jiān,箋jiān,樫jiān,熞jiān,緘jiān,蕑jiān,蕳jiān,鲣jiān,鳽jiān,鹣jiān,熸jiān,篯jiān,縑jiān,艱jiān,鞬jiān,餰jiān,馢jiān,麉jiān,瀐jiān,鞯jiān,鳒jiān,殱jiān,礛jiān,覸jiān,鵳jiān,瀸jiān,櫼jiān,殲jiān,譼jiān,鰜jiān,鶼jiān,籛jiān,韀jiān,鰹jiān,囏jiān,虃jiān,鑯jiān,韉jiān,揃jiān,鐗jiān,鐧jiān,閒jiān,黚jiān,傔jiān,攕jiān,纎jiān,钘jiān,鈃jiān,銒jiān,籈jiān,湔jiān,囝jiǎn,拣jiǎn,枧jiǎn,俭jiǎn,茧jiǎn,倹jiǎn,挸jiǎn,捡jiǎn,笕jiǎn,减jiǎn,剪jiǎn,帴jiǎn,梘jiǎn,检jiǎn,湕jiǎn,趼jiǎn,揀jiǎn,検jiǎn,減jiǎn,睑jiǎn,硷jiǎn,裥jiǎn,詃jiǎn,锏jiǎn,弿jiǎn,瑐jiǎn,筧jiǎn,简jiǎn,絸jiǎn,谫jiǎn,彅jiǎn,戩jiǎn,碱jiǎn,儉jiǎn,翦jiǎn,撿jiǎn,檢jiǎn,藆jiǎn,襇jiǎn,襉jiǎn,謇jiǎn,蹇jiǎn,瞼jiǎn,礆jiǎn,簡jiǎn,繭jiǎn,謭jiǎn,鬋jiǎn,鰎jiǎn,鹸jiǎn,瀽jiǎn,蠒jiǎn,鹻jiǎn,譾jiǎn,襺jiǎn,鹼jiǎn,堿jiǎn,偂jiǎn,銭jiǎn,醎jiǎn,鹹jiǎn,涀jiǎn,橏jiǎn,柬jiǎn,戬jiǎn,见jiàn,件jiàn,見jiàn,侟jiàn,饯jiàn,剑jiàn,洊jiàn,牮jiàn,荐jiàn,贱jiàn,俴jiàn,健jiàn,剣jiàn,栫jiàn,涧jiàn,珔jiàn,舰jiàn,剱jiàn,徤jiàn,渐jiàn,袸jiàn,谏jiàn,釼jiàn,寋jiàn,旔jiàn,楗jiàn,毽jiàn,溅jiàn,腱jiàn,臶jiàn,葥jiàn,践jiàn,鉴jiàn,键jiàn,僭jiàn,榗jiàn,漸jiàn,劍jiàn,劎jiàn,墹jiàn,澗jiàn,箭jiàn,糋jiàn,諓jiàn,賤jiàn,趝jiàn,踐jiàn,踺jiàn,劒jiàn,劔jiàn,橺jiàn,薦jiàn,諫jiàn,鍵jiàn,餞jiàn,瞯jiàn,瞷jiàn,磵jiàn,礀jiàn,螹jiàn,鍳jiàn,濺jiàn,繝jiàn,瀳jiàn,鏩jiàn,艦jiàn,轞jiàn,鑑jiàn,鑒jiàn,鑬jiàn,鑳jiàn,鐱jiàn,揵jiàn,蔪jiàn,橌jiàn,廴jiàn,譖jiàn,鋻jiàn,建jiàn,賎jiàn,擶jiàn,江jiāng,姜jiāng,将jiāng,茳jiāng,浆jiāng,畕jiāng,豇jiāng,葁jiāng,摪jiāng,翞jiāng,僵jiāng,漿jiāng,螀jiāng,壃jiāng,彊jiāng,缰jiāng,薑jiāng,殭jiāng,螿jiāng,鳉jiāng,疅jiāng,礓jiāng,疆jiāng,繮jiāng,韁jiāng,鱂jiāng,將jiāng,畺jiāng,糡jiāng,橿jiāng,讲jiǎng,奖jiǎng,桨jiǎng,蒋jiǎng,勥jiǎng,奨jiǎng,奬jiǎng,蔣jiǎng,槳jiǎng,獎jiǎng,耩jiǎng,膙jiǎng,講jiǎng,顜jiǎng,塂jiǎng,匞jiàng,匠jiàng,夅jiàng,弜jiàng,杢jiàng,降jiàng,绛jiàng,弶jiàng,袶jiàng,絳jiàng,酱jiàng,摾jiàng,滰jiàng,嵹jiàng,犟jiàng,醤jiàng,糨jiàng,醬jiàng,櫤jiàng,謽jiàng,蔃jiàng,洚jiàng,艽jiāo,芁jiāo,交jiāo,郊jiāo,姣jiāo,娇jiāo,峧jiāo,浇jiāo,茭jiāo,骄jiāo,胶jiāo,椒jiāo,焳jiāo,蛟jiāo,跤jiāo,僬jiāo,嘄jiāo,鲛jiāo,嬌jiāo,嶕jiāo,嶣jiāo,憍jiāo,澆jiāo,膠jiāo,蕉jiāo,燋jiāo,膲jiāo,礁jiāo,穚jiāo,鮫jiāo,鹪jiāo,簥jiāo,蟭jiāo,轇jiāo,鐎jiāo,驕jiāo,鷦jiāo,鷮jiāo,儌jiāo,撟jiāo,挍jiāo,教jiāo,骹jiāo,嫶jiāo,萩jiāo,嘐jiāo,憢jiāo,焦jiāo,櫵jiáo,嚼jiáo,臫jiǎo,佼jiǎo,挢jiǎo,狡jiǎo,绞jiǎo,饺jiǎo,晈jiǎo,笅jiǎo,皎jiǎo,矫jiǎo,脚jiǎo,铰jiǎo,搅jiǎo,筊jiǎo,絞jiǎo,剿jiǎo,勦jiǎo,敫jiǎo,湬jiǎo,煍jiǎo,腳jiǎo,賋jiǎo,摷jiǎo,暞jiǎo,踋jiǎo,鉸jiǎo,劋jiǎo,撹jiǎo,徼jiǎo,敽jiǎo,敿jiǎo,缴jiǎo,曒jiǎo,璬jiǎo,矯jiǎo,皦jiǎo,蟜jiǎo,鵤jiǎo,繳jiǎo,譑jiǎo,孂jiǎo,纐jiǎo,攪jiǎo,灚jiǎo,鱎jiǎo,潐jiǎo,糸jiǎo,蹻jiǎo,釥jiǎo,纟jiǎo,恔jiǎo,角jiǎo,餃jiǎo,叫jiào,呌jiào,訆jiào,珓jiào,轿jiào,较jiào,窖jiào,滘jiào,較jiào,嘂jiào,嘦jiào,斠jiào,漖jiào,酵jiào,噍jiào,噭jiào,嬓jiào,獥jiào,藠jiào,趭jiào,轎jiào,醮jiào,譥jiào,皭jiào,釂jiào,觉jiào,覐jiào,覚jiào,覺jiào,趫jiào,敎jiào,阶jiē,疖jiē,皆jiē,接jiē,掲jiē,痎jiē,秸jiē,菨jiē,喈jiē,嗟jiē,堦jiē,媘jiē,嫅jiē,揭jiē,椄jiē,湝jiē,脻jiē,街jiē,煯jiē,稭jiē,鞂jiē,蝔jiē,擑jiē,癤jiē,鶛jiē,节jiē,節jiē,袓jiē,謯jiē,階jiē,卪jié,孑jié,讦jié,刦jié,刧jié,劫jié,岊jié,昅jié,刼jié,劼jié,疌jié,衱jié,诘jié,拮jié,洁jié,结jié,迼jié,倢jié,桀jié,桝jié,莭jié,偼jié,婕jié,崨jié,捷jié,袺jié,傑jié,媫jié,結jié,蛣jié,颉jié,嵥jié,楬jié,楶jié,滐jié,睫jié,蜐jié,詰jié,截jié,榤jié,碣jié,竭jié,蓵jié,鲒jié,潔jié,羯jié,誱jié,踕jié,頡jié,幯jié,擳jié,嶻jié,擮jié,礍jié,鍻jié,鮚jié,巀jié,蠞jié,蠘jié,蠽jié,洯jié,絜jié,搩jié,杰jié,鉣jié,姐jiě,毑jiě,媎jiě,解jiě,觧jiě,檞jiě,飷jiě,丯jiè,介jiè,岕jiè,庎jiè,戒jiè,芥jiè,屆jiè,届jiè,斺jiè,玠jiè,界jiè,畍jiè,疥jiè,砎jiè,衸jiè,诫jiè,借jiè,蚧jiè,徣jiè,堺jiè,楐jiè,琾jiè,蛶jiè,骱jiè,犗jiè,誡jiè,魪jiè,藉jiè,繲jiè,雃jiè,嶰jiè,唶jiè,褯jiè,巾jīn,今jīn,斤jīn,钅jīn,兓jīn,金jīn,釒jīn,津jīn,矜jīn,砛jīn,荕jīn,衿jīn,觔jīn,埐jīn,珒jīn,紟jīn,惍jīn,琎jīn,堻jīn,琻jīn,筋jīn,嶜jīn,璡jīn,鹶jīn,黅jīn,襟jīn,濜jīn,仅jǐn,巹jǐn,紧jǐn,堇jǐn,菫jǐn,僅jǐn,厪jǐn,谨jǐn,锦jǐn,嫤jǐn,廑jǐn,漌jǐn,緊jǐn,蓳jǐn,馑jǐn,槿jǐn,瑾jǐn,錦jǐn,謹jǐn,饉jǐn,儘jǐn,婜jǐn,斳jǐn,卺jǐn,笒jìn,盡jìn,劤jìn,尽jìn,劲jìn,妗jìn,近jìn,进jìn,侭jìn,枃jìn,勁jìn,荩jìn,晉jìn,晋jìn,浸jìn,烬jìn,赆jìn,祲jìn,進jìn,煡jìn,缙jìn,寖jìn,搢jìn,溍jìn,禁jìn,靳jìn,墐jìn,慬jìn,瑨jìn,僸jìn,凚jìn,歏jìn,殣jìn,觐jìn,噤jìn,濅jìn,縉jìn,賮jìn,嚍jìn,壗jìn,藎jìn,燼jìn,璶jìn,覲jìn,贐jìn,齽jìn,馸jìn,臸jìn,浕jìn,嬧jìn,坕jīng,坙jīng,巠jīng,京jīng,泾jīng,经jīng,茎jīng,亰jīng,秔jīng,荆jīng,荊jīng,涇jīng,莖jīng,婛jīng,惊jīng,旌jīng,旍jīng,猄jīng,経jīng,菁jīng,晶jīng,稉jīng,腈jīng,粳jīng,經jīng,兢jīng,精jīng,聙jīng,橸jīng,鲸jīng,鵛jīng,鯨jīng,鶁jīng,麖jīng,鼱jīng,驚jīng,麠jīng,徑jīng,仱jīng,靑jīng,睛jīng,井jǐng,阱jǐng,刭jǐng,坓jǐng,宑jǐng,汫jǐng,汬jǐng,肼jǐng,剄jǐng,穽jǐng,颈jǐng,景jǐng,儆jǐng,幜jǐng,璄jǐng,憼jǐng,暻jǐng,燝jǐng,璟jǐng,璥jǐng,頸jǐng,蟼jǐng,警jǐng,擏jǐng,憬jǐng,妌jìng,净jìng,弪jìng,径jìng,迳jìng,浄jìng,胫jìng,凈jìng,弳jìng,痉jìng,竞jìng,逕jìng,婙jìng,婧jìng,桱jìng,梷jìng,淨jìng,竫jìng,脛jìng,敬jìng,痙jìng,竧jìng,傹jìng,靖jìng,境jìng,獍jìng,誩jìng,静jìng,頚jìng,曔jìng,镜jìng,靜jìng,瀞jìng,鏡jìng,競jìng,竸jìng,葝jìng,儬jìng,陘jìng,竟jìng,冋jiōng,扃jiōng,埛jiōng,絅jiōng,駉jiōng,駫jiōng,冏jiōng,浻jiōng,扄jiōng,銄jiōng,囧jiǒng,迥jiǒng,侰jiǒng,炯jiǒng,逈jiǒng,烱jiǒng,煚jiǒng,窘jiǒng,颎jiǒng,綗jiǒng,僒jiǒng,煛jiǒng,熲jiǒng,澃jiǒng,燛jiǒng,褧jiǒng,顈jiǒng,蘔jiǒng,宭jiǒng,蘏jiǒng,丩jiū,勼jiū,纠jiū,朻jiū,究jiū,糺jiū,鸠jiū,赳jiū,阄jiū,萛jiū,啾jiū,揪jiū,揫jiū,鳩jiū,摎jiū,鬏jiū,鬮jiū,稵jiū,糾jiū,九jiǔ,久jiǔ,乆jiǔ,乣jiǔ,奺jiǔ,汣jiǔ,杦jiǔ,灸jiǔ,玖jiǔ,舏jiǔ,韭jiǔ,紤jiǔ,酒jiǔ,镹jiǔ,韮jiǔ,匛jiù,旧jiù,臼jiù,疚jiù,柩jiù,柾jiù,倃jiù,桕jiù,厩jiù,救jiù,就jiù,廄jiù,匓jiù,舅jiù,僦jiù,廏jiù,廐jiù,慦jiù,殧jiù,舊jiù,鹫jiù,麔jiù,匶jiù,齨jiù,鷲jiù,咎jiù,欍jou,鶪ju,伡jū,俥jū,凥jū,匊jū,居jū,狙jū,苴jū,驹jū,倶jū,挶jū,捄jū,疽jū,痀jū,眗jū,砠jū,罝jū,陱jū,娵jū,婅jū,婮jū,崌jū,掬jū,梮jū,涺jū,椐jū,琚jū,腒jū,趄jū,跔jū,锔jū,裾jū,雎jū,艍jū,蜛jū,踘jū,鋦jū,駒jū,鮈jū,鴡jū,鞠jū,鞫jū,鶋jū,臄jū,揟jū,拘jū,諊jū,局jú,泦jú,侷jú,狊jú,桔jú,毩jú,淗jú,焗jú,菊jú,郹jú,椈jú,毱jú,湨jú,犑jú,輂jú,粷jú,蓻jú,趜jú,躹jú,閰jú,檋jú,駶jú,鵙jú,蹫jú,鵴jú,巈jú,蘜jú,鼰jú,鼳jú,驧jú,趉jú,郥jú,橘jú,咀jǔ,弆jǔ,沮jǔ,举jǔ,矩jǔ,莒jǔ,挙jǔ,椇jǔ,筥jǔ,榉jǔ,榘jǔ,蒟jǔ,龃jǔ,聥jǔ,舉jǔ,踽jǔ,擧jǔ,櫸jǔ,齟jǔ,襷jǔ,籧jǔ,郰jǔ,欅jǔ,句jù,巨jù,讵jù,姖jù,岠jù,怇jù,拒jù,洰jù,苣jù,邭jù,具jù,怚jù,拠jù,昛jù,歫jù,炬jù,秬jù,钜jù,俱jù,倨jù,冣jù,剧jù,粔jù,耟jù,蚷jù,埧jù,埾jù,惧jù,詎jù,距jù,焣jù,犋jù,跙jù,鉅jù,飓jù,虡jù,豦jù,锯jù,愳jù,窭jù,聚jù,駏jù,劇jù,勮jù,屦jù,踞jù,鮔jù,壉jù,懅jù,據jù,澽jù,遽jù,鋸jù,屨jù,颶jù,簴jù,躆jù,醵jù,懼jù,鐻jù,爠jù,坥jù,螶jù,忂jù,葅jù,蒩jù,珇jù,据jù,姢juān,娟juān,捐juān,涓juān,脧juān,裐juān,鹃juān,勬juān,鋑juān,鋗juān,镌juān,鎸juān,鵑juān,鐫juān,蠲juān,勌juān,瓹juān,梋juān,鞙juān,朘juān,呟juǎn,帣juǎn,埍juǎn,捲juǎn,菤juǎn,锩juǎn,臇juǎn,錈juǎn,埢juǎn,踡juǎn,蕋juǎn,卷juàn,劵juàn,弮juàn,倦juàn,桊juàn,狷juàn,绢juàn,淃juàn,眷juàn,鄄juàn,睊juàn,絭juàn,罥juàn,睠juàn,絹juàn,慻juàn,蔨juàn,餋juàn,獧juàn,羂juàn,圏juàn,棬juàn,惓juàn,韏juàn,讂juàn,縳juàn,襈juàn,奆juàn,噘juē,撅juē,撧juē,屩juē,屫juē,繑juē,亅jué,孓jué,决jué,刔jué,氒jué,诀jué,抉jué,決jué,芵jué,泬jué,玦jué,玨jué,挗jué,珏jué,砄jué,绝jué,虳jué,捔jué,欮jué,蚗jué,崛jué,掘jué,斍jué,桷jué,殌jué,焆jué,觖jué,逫jué,傕jué,厥jué,絕jué,絶jué,鈌jué,劂jué,勪jué,瑴jué,谲jué,嶥jué,憰jué,潏jué,熦jué,爴jué,獗jué,瘚jué,蕝jué,蕨jué,憠jué,橛jué,镼jué,爵jué,镢jué,蟨jué,蟩jué,爑jué,譎jué,蹷jué,鶌jué,矍jué,鐝jué,灍jué,爝jué,觼jué,彏jué,戄jué,攫jué,玃jué,鷢jué,欔jué,矡jué,龣jué,貜jué,躩jué,钁jué,璚jué,匷jué,啳jué,吷jué,疦jué,弡jué,穱jué,孒jué,訣jué,橜jué,蹶juě,倔juè,誳juè,君jūn,均jūn,汮jūn,姰jūn,袀jūn,軍jūn,钧jūn,莙jūn,蚐jūn,桾jūn,皲jūn,菌jūn,鈞jūn,碅jūn,筠jūn,皸jūn,皹jūn,覠jūn,銁jūn,銞jūn,鲪jūn,麇jūn,鍕jūn,鮶jūn,麏jūn,麕jūn,军jūn,隽jùn,雋jùn,呁jùn,俊jùn,郡jùn,陖jùn,峻jùn,捃jùn,晙jùn,馂jùn,骏jùn,焌jùn,珺jùn,畯jùn,竣jùn,箘jùn,箟jùn,蜠jùn,儁jùn,寯jùn,懏jùn,餕jùn,燇jùn,駿jùn,鵔jùn,鵕jùn,鵘jùn,葰jùn,埈jùn,咔kā,咖kā,喀kā,衉kā,哢kā,呿kā,卡kǎ,佧kǎ,垰kǎ,裃kǎ,鉲kǎ,胩kǎ,开kāi,奒kāi,揩kāi,锎kāi,開kāi,鐦kāi,凯kǎi,剀kǎi,垲kǎi,恺kǎi,闿kǎi,铠kǎi,凱kǎi,慨kǎi,蒈kǎi,塏kǎi,愷kǎi,楷kǎi,輆kǎi,暟kǎi,锴kǎi,鍇kǎi,鎧kǎi,闓kǎi,颽kǎi,喫kài,噄kài,忾kài,烗kài,勓kài,愾kài,鎎kài,愒kài,欯kài,炌kài,乫kal,刊kān,栞kān,勘kān,龛kān,堪kān,嵁kān,戡kān,龕kān,槛kǎn,檻kǎn,冚kǎn,坎kǎn,侃kǎn,砍kǎn,莰kǎn,偘kǎn,埳kǎn,惂kǎn,欿kǎn,塪kǎn,輡kǎn,竷kǎn,轗kǎn,衎kǎn,看kàn,崁kàn,墈kàn,阚kàn,瞰kàn,磡kàn,闞kàn,矙kàn,輱kàn,忼kāng,砊kāng,粇kāng,康kāng,嫝kāng,嵻kāng,慷kāng,漮kāng,槺kāng,穅kāng,糠kāng,躿kāng,鏮kāng,鱇kāng,闶kāng,閌kāng,扛káng,摃káng,亢kàng,伉kàng,匟kàng,囥kàng,抗kàng,炕kàng,钪kàng,鈧kàng,邟kàng,尻kāo,髛kāo,嵪kāo,訄kāo,薧kǎo,攷kǎo,考kǎo,拷kǎo,洘kǎo,栲kǎo,烤kǎo,铐kào,犒kào,銬kào,鲓kào,靠kào,鮳kào,鯌kào,焅kào,屙kē,蚵kē,苛kē,柯kē,牁kē,珂kē,胢kē,轲kē,疴kē,趷kē,钶kē,嵙kē,棵kē,痾kē,萪kē,軻kē,颏kē,犐kē,稞kē,窠kē,鈳kē,榼kē,薖kē,颗kē,樖kē,瞌kē,磕kē,蝌kē,頦kē,醘kē,顆kē,髁kē,礚kē,嗑kē,窼kē,簻kē,科kē,壳ké,咳ké,揢ké,翗ké,嶱ké,殼ké,毼kě,磆kě,坷kě,可kě,岢kě,炣kě,渇kě,嵑kě,敤kě,渴kě,袔kè,悈kè,歁kè,克kè,刻kè,剋kè,勀kè,勊kè,客kè,恪kè,娔kè,尅kè,课kè,堁kè,氪kè,骒kè,缂kè,愙kè,溘kè,锞kè,碦kè,課kè,礊kè,騍kè,硞kè,艐kè,緙kè,肎kěn,肯kěn,肻kěn,垦kěn,恳kěn,啃kěn,豤kěn,貇kěn,墾kěn,錹kěn,懇kěn,頎kěn,掯kèn,裉kèn,褃kèn,硍kèn,妔kēng,踁kēng,劥kēng,吭kēng,坈kēng,坑kēng,挳kēng,硁kēng,牼kēng,硜kēng,铿kēng,硻kēng,誙kēng,銵kēng,鏗kēng,摼kēng,殸kēng,揁kēng,鍞kēng,巪keo,乬keol,唟keos,厼keum,怾ki,空kōng,倥kōng,埪kōng,崆kōng,悾kōng,硿kōng,箜kōng,躻kōng,錓kōng,鵼kōng,椌kōng,宆kōng,孔kǒng,恐kǒng,控kòng,鞚kòng,羫kòng,廤kos,抠kōu,芤kōu,眍kōu,剾kōu,彄kōu,摳kōu,瞘kōu,劶kǒu,竘kǒu,口kǒu,叩kòu,扣kòu,怐kòu,敂kòu,冦kòu,宼kòu,寇kòu,釦kòu,窛kòu,筘kòu,滱kòu,蔲kòu,蔻kòu,瞉kòu,簆kòu,鷇kòu,搰kū,刳kū,矻kū,郀kū,枯kū,哭kū,桍kū,堀kū,崫kū,圐kū,跍kū,窟kū,骷kū,泏kū,窋kū,狜kǔ,苦kǔ,楛kǔ,齁kù,捁kù,库kù,俈kù,绔kù,庫kù,秙kù,袴kù,喾kù,絝kù,裤kù,瘔kù,酷kù,褲kù,嚳kù,鮬kù,恗kuā,夸kuā,姱kuā,晇kuā,舿kuā,誇kuā,侉kuǎ,咵kuǎ,垮kuǎ,銙kuǎ,顝kuǎ,挎kuà,胯kuà,跨kuà,骻kuà,擓kuai,蒯kuǎi,璯kuài,駃kuài,巜kuài,凷kuài,圦kuài,块kuài,快kuài,侩kuài,郐kuài,哙kuài,狯kuài,脍kuài,塊kuài,筷kuài,鲙kuài,儈kuài,鄶kuài,噲kuài,廥kuài,獪kuài,膾kuài,旝kuài,糩kuài,鱠kuài,蕢kuài,宽kuān,寛kuān,寬kuān,髋kuān,鑧kuān,髖kuān,欵kuǎn,款kuǎn,歀kuǎn,窽kuǎn,窾kuǎn,梡kuǎn,匡kuāng,劻kuāng,诓kuāng,邼kuāng,匩kuāng,哐kuāng,恇kuāng,洭kuāng,筐kuāng,筺kuāng,誆kuāng,軭kuāng,狂kuáng,狅kuáng,诳kuáng,軖kuáng,軠kuáng,誑kuáng,鵟kuáng,夼kuǎng,儣kuǎng,懭kuǎng,爌kuǎng,邝kuàng,圹kuàng,况kuàng,旷kuàng,岲kuàng,況kuàng,矿kuàng,昿kuàng,贶kuàng,框kuàng,眖kuàng,砿kuàng,眶kuàng,絋kuàng,絖kuàng,貺kuàng,軦kuàng,鉱kuàng,鋛kuàng,鄺kuàng,壙kuàng,黋kuàng,懬kuàng,曠kuàng,礦kuàng,穬kuàng,纊kuàng,鑛kuàng,纩kuàng,亏kuī,刲kuī,悝kuī,盔kuī,窥kuī,聧kuī,窺kuī,虧kuī,闚kuī,巋kuī,蘬kuī,岿kuī,奎kuí,晆kuí,逵kuí,鄈kuí,頄kuí,馗kuí,喹kuí,揆kuí,葵kuí,骙kuí,戣kuí,暌kuí,楏kuí,楑kuí,魁kuí,睽kuí,蝰kuí,頯kuí,櫆kuí,藈kuí,鍷kuí,騤kuí,夔kuí,蘷kuí,虁kuí,躨kuí,鍨kuí,卼kuǐ,煃kuǐ,跬kuǐ,頍kuǐ,蹞kuǐ,尯kuǐ,匮kuì,欳kuì,喟kuì,媿kuì,愦kuì,愧kuì,溃kuì,蒉kuì,馈kuì,匱kuì,嘳kuì,嬇kuì,憒kuì,潰kuì,聩kuì,聭kuì,樻kuì,殨kuì,餽kuì,簣kuì,聵kuì,籄kuì,鐀kuì,饋kuì,鑎kuì,篑kuì,坤kūn,昆kūn,晜kūn,堃kūn,堒kūn,婫kūn,崐kūn,崑kūn,猑kūn,菎kūn,裈kūn,焜kūn,琨kūn,髠kūn,裩kūn,锟kūn,髡kūn,尡kūn,潉kūn,蜫kūn,褌kūn,髨kūn,熴kūn,瑻kūn,醌kūn,錕kūn,鲲kūn,臗kūn,騉kūn,鯤kūn,鵾kūn,鶤kūn,鹍kūn,悃kǔn,捆kǔn,阃kǔn,壸kǔn,祵kǔn,硱kǔn,稇kǔn,裍kǔn,壼kǔn,稛kǔn,綑kǔn,閫kǔn,閸kǔn,困kùn,睏kùn,涃kùn,秳kuò,漷kuò,扩kuò,拡kuò,括kuò,桰kuò,筈kuò,萿kuò,葀kuò,蛞kuò,阔kuò,廓kuò,頢kuò,擴kuò,濶kuò,闊kuò,鞟kuò,韕kuò,懖kuò,霩kuò,鞹kuò,鬠kuò,穒kweok,鞡la,垃lā,拉lā,柆lā,啦lā,菈lā,搚lā,邋lā,磖lā,翋lā,旯lá,砬lá,揦lá,喇lǎ,藞lǎ,嚹lǎ,剌là,溂là,腊là,揧là,楋là,瘌là,牎chuāng,床chuáng,漺chuǎng,怆chuàng,愴chuàng,莊zhuāng,粧zhuāng,装zhuāng,裝zhuāng,樁zhuāng,蜡là,蝋là,辢là,辣là,蝲là,臈là,攋là,爉là,臘là,鬎là,櫴là,瓎là,镴là,鯻là,鑞là,儠là,擸là,鱲là,蠟là,来lái,來lái,俫lái,倈lái,崃lái,徕lái,涞lái,莱lái,郲lái,婡lái,崍lái,庲lái,徠lái,梾lái,淶lái,猍lái,萊lái,逨lái,棶lái,琜lái,筙lái,铼lái,箂lái,錸lái,騋lái,鯠lái,鶆lái,麳lái,顂lái,勑lài,誺lài,赉lài,睐lài,睞lài,赖lài,賚lài,濑lài,賴lài,頼lài,癞lài,鵣lài,瀨lài,瀬lài,籁lài,藾lài,癩lài,襰lài,籟lài,唻lài,暕lán,兰lán,岚lán,拦lán,栏lán,婪lán,嵐lán,葻lán,阑lán,蓝lán,谰lán,厱lán,褴lán,儖lán,斓lán,篮lán,懢lán,燣lán,藍lán,襕lán,镧lán,闌lán,璼lán,襤lán,譋lán,幱lán,攔lán,瀾lán,灆lán,籃lán,繿lán,蘭lán,斕lán,欄lán,礷lán,襴lán,囒lán,灡lán,籣lán,欗lán,讕lán,躝lán,鑭lán,钄lán,韊lán,惏lán,澜lán,襽lán,览lǎn,浨lǎn,揽lǎn,缆lǎn,榄lǎn,漤lǎn,罱lǎn,醂lǎn,壈lǎn,懒lǎn,覧lǎn,擥lǎn,懶lǎn,孄lǎn,覽lǎn,孏lǎn,攬lǎn,欖lǎn,爦lǎn,纜lǎn,灠lǎn,顲lǎn,蘫làn,嬾làn,烂làn,滥làn,燗làn,嚂làn,壏làn,濫làn,爛làn,爤làn,瓓làn,糷làn,湅làn,煉làn,爁làn,唥lang,啷lāng,羮láng,勆láng,郎láng,郞láng,欴láng,狼láng,嫏láng,廊láng,桹láng,琅láng,蓈láng,榔láng,瑯láng,硠láng,稂láng,锒láng,筤láng,艆láng,蜋láng,郒láng,螂láng,躴láng,鋃láng,鎯láng,阆láng,閬láng,哴láng,悢lǎng,朗lǎng,朖lǎng,烺lǎng,塱lǎng,蓢lǎng,樃lǎng,誏lǎng,朤lǎng,俍lǎng,脼lǎng,莨làng,埌làng,浪làng,蒗làng,捞lāo,粩lāo,撈lāo,劳láo,労láo,牢láo,窂láo,哰láo,崂láo,浶láo,勞láo,痨láo,僗láo,嶗láo,憥láo,朥láo,癆láo,磱láo,簩láo,蟧láo,醪láo,鐒láo,顟láo,髝láo,轑láo,嫪láo,憦láo,铹láo,耂lǎo,老lǎo,佬lǎo,咾lǎo,姥lǎo,恅lǎo,荖lǎo,栳lǎo,珯lǎo,硓lǎo,铑lǎo,蛯lǎo,銠lǎo,橑lǎo,鮱lǎo,唠lào,嘮lào,烙lào,嗠lào,耢lào,酪lào,澇lào,橯lào,耮lào,軂lào,涝lào,饹le,了le,餎le,牞lè,仂lè,阞lè,乐lè,叻lè,忇lè,扐lè,氻lè,艻lè,玏lè,泐lè,竻lè,砳lè,勒lè,楽lè,韷lè,樂lè,簕lè,鳓lè,鰳lè,頛lei,嘞lei,雷léi,嫘léi,缧léi,蔂léi,樏léi,畾léi,檑léi,縲léi,镭léi,櫑léi,瓃léi,羸léi,礧léi,罍léi,蘲léi,鐳léi,轠léi,壨léi,鑘léi,靁léi,虆léi,鱩léi,欙léi,纝léi,鼺léi,磥léi,攂léi,腂lěi,瘣lěi,厽lěi,耒lěi,诔lěi,垒lěi,絫lěi,傫lěi,誄lěi,磊lěi,蕌lěi,蕾lěi,儡lěi,壘lěi,癗lěi,藟lěi,櫐lěi,矋lěi,礨lěi,灅lěi,蠝lěi,蘽lěi,讄lěi,儽lěi,鑸lěi,鸓lěi,洡lěi,礌lěi,塁lěi,纍lèi,肋lèi,泪lèi,类lèi,涙lèi,淚lèi,累lèi,酹lèi,銇lèi,頪lèi,擂lèi,錑lèi,颣lèi,類lèi,纇lèi,蘱lèi,禷lèi,祱lèi,塄léng,棱léng,楞léng,碐léng,稜léng,踜léng,薐léng,輘léng,冷lěng,倰lèng,堎lèng,愣lèng,睖lèng,瓈li,唎lī,粚lí,刕lí,厘lí,剓lí,梨lí,狸lí,荲lí,骊lí,悡lí,梸lí,犁lí,菞lí,喱lí,棃lí,犂lí,鹂lí,剺lí,漓lí,睝lí,筣lí,缡lí,艃lí,蓠lí,蜊lí,嫠lí,孷lí,樆lí,璃lí,盠lí,竰lí,氂lí,犛lí,糎lí,蔾lí,鋫lí,鲡lí,黎lí,篱lí,縭lí,罹lí,錅lí,蟍lí,謧lí,醨lí,嚟lí,藜lí,邌lí,釐lí,離lí,鯏lí,鏫lí,鯬lí,鵹lí,黧lí,囄lí,灕lí,蘺lí,蠡lí,蠫lí,孋lí,廲lí,劙lí,鑗lí,籬lí,驪lí,鱺lí,鸝lí,婯lí,儷lí,矖lí,纚lí,离lí,褵lí,穲lí,礼lǐ,李lǐ,里lǐ,俚lǐ,峛lǐ,哩lǐ,娌lǐ,峲lǐ,浬lǐ,逦lǐ,理lǐ,裡lǐ,锂lǐ,粴lǐ,裏lǐ,鋰lǐ,鲤lǐ,澧lǐ,禮lǐ,鯉lǐ,蟸lǐ,醴lǐ,鳢lǐ,邐lǐ,鱧lǐ,欐lǐ,欚lǐ,銐lì,脷lì,莉lì,力lì,历lì,厉lì,屴lì,立lì,吏lì,朸lì,丽lì,利lì,励lì,呖lì,坜lì,沥lì,苈lì,例lì,岦lì,戾lì,枥lì,沴lì,疠lì,苙lì,隶lì,俐lì,俪lì,栃lì,栎lì,疬lì,砅lì,茘lì,荔lì,轹lì,郦lì,娳lì,悧lì,栗lì,栛lì,栵lì,涖lì,猁lì,珕lì,砺lì,砾lì,秝lì,莅lì,唳lì,悷lì,琍lì,笠lì,粒lì,粝lì,蚸lì,蛎lì,傈lì,凓lì,厤lì,棙lì,痢lì,蛠lì,詈lì,雳lì,塛lì,慄lì,搮lì,溧lì,蒚lì,蒞lì,鉝lì,鳨lì,厯lì,厲lì,暦lì,歴lì,瑮lì,綟lì,蜧lì,勵lì,曆lì,歷lì,篥lì,隷lì,鴗lì,巁lì,檪lì,濿lì,癘lì,磿lì,隸lì,鬁lì,儮lì,櫔lì,爄lì,犡lì,禲lì,蠇lì,嚦lì,壢lì,攊lì,櫟lì,瀝lì,瓅lì,礪lì,藶lì,麗lì,櫪lì,爏lì,瓑lì,皪lì,盭lì,礫lì,糲lì,蠣lì,癧lì,礰lì,酈lì,鷅lì,麜lì,囇lì,攦lì,轢lì,讈lì,轣lì,攭lì,瓥lì,靂lì,鱱lì,靋lì,觻lì,鱳lì,叓lì,蝷lì,赲lì,曞lì,嫾liān,奁lián,连lián,帘lián,怜lián,涟lián,莲lián,連lián,梿lián,联lián,裢lián,亷lián,嗹lián,廉lián,慩lián,溓lián,漣lián,蓮lián,奩lián,熑lián,覝lián,劆lián,匳lián,噒lián,憐lián,磏lián,聨lián,聫lián,褳lián,鲢lián,濂lián,濓lián,縺lián,翴lián,聮lián,薕lián,螊lián,櫣lián,燫lián,聯lián,臁lián,蹥lián,謰lián,鎌lián,镰lián,簾lián,蠊lián,譧lián,鐮lián,鰱lián,籢lián,籨lián,槤lián,僆lián,匲lián,鬑lián,敛liǎn,琏liǎn,脸liǎn,裣liǎn,摙liǎn,璉liǎn,蔹liǎn,嬚liǎn,斂liǎn,歛liǎn,臉liǎn,鄻liǎn,襝liǎn,羷liǎn,蘝liǎn,蘞liǎn,薟liǎn,练liàn,炼liàn,恋liàn,浰liàn,殓liàn,堜liàn,媡liàn,链liàn,楝liàn,瑓liàn,潋liàn,稴liàn,練liàn,澰liàn,錬liàn,殮liàn,鍊liàn,鏈liàn,瀲liàn,鰊liàn,戀liàn,纞liàn,孌liàn,攣liàn,萰liàn,簗liāng,良liáng,凉liáng,梁liáng,涼liáng,椋liáng,辌liáng,粮liáng,粱liáng,墚liáng,綡liáng,輬liáng,糧liáng,駺liáng,樑liáng,冫liǎng,俩liǎng,倆liǎng,両liǎng,两liǎng,兩liǎng,唡liǎng,啢liǎng,掚liǎng,裲liǎng,緉liǎng,蜽liǎng,魉liǎng,魎liǎng,倞liàng,靓liàng,靚liàng,踉liàng,亮liàng,谅liàng,辆liàng,喨liàng,晾liàng,湸liàng,量liàng,煷liàng,輌liàng,諒liàng,輛liàng,鍄liàng,蹽liāo,樛liáo,潦liáo,辽liáo,疗liáo,僚liáo,寥liáo,嵺liáo,憀liáo,漻liáo,膋liáo,嘹liáo,嫽liáo,寮liáo,嶚liáo,嶛liáo,憭liáo,撩liáo,敹liáo,獠liáo,缭liáo,遼liáo,暸liáo,燎liáo,璙liáo,窷liáo,膫liáo,療liáo,竂liáo,鹩liáo,屪liáo,廫liáo,簝liáo,蟟liáo,豂liáo,賿liáo,蹘liáo,爎liáo,髎liáo,飉liáo,鷯liáo,镽liáo,尞liáo,镠liáo,鏐liáo,僇liáo,聊liáo,繚liáo,钌liǎo,釕liǎo,鄝liǎo,蓼liǎo,爒liǎo,瞭liǎo,廖liào,镣liào,鐐liào,尥liào,炓liào,料liào,撂liào,蟉liào,鴷lie,咧liě,毟liě,挘liě,埓liě,忚liě,列liè,劣liè,冽liè,姴liè,峢liè,挒liè,洌liè,茢liè,迾liè,埒liè,浖liè,烈liè,烮liè,捩liè,猎liè,猟liè,脟liè,蛚liè,裂liè,煭liè,睙liè,聗liè,趔liè,巤liè,颲liè,鮤liè,獵liè,犣liè,躐liè,鬛liè,哷liè,劦liè,奊liè,劽liè,鬣liè,拎līn,邻lín,林lín,临lín,啉lín,崊lín,淋lín,晽lín,琳lín,粦lín,痳lín,碄lín,箖lín,粼lín,鄰lín,隣lín,嶙lín,潾lín,獜lín,遴lín,斴lín,暽lín,燐lín,璘lín,辚lín,霖lín,瞵lín,磷lín,繗lín,翷lín,麐lín,轔lín,壣lín,瀶lín,鏻lín,鳞lín,驎lín,麟lín,鱗lín,疄lín,蹸lín,魿lín,涁lín,臨lín,菻lǐn,亃lǐn,僯lǐn,凛lǐn,凜lǐn,撛lǐn,廩lǐn,廪lǐn,懍lǐn,懔lǐn,澟lǐn,檁lǐn,檩lǐn,伈lǐn,吝lìn,恡lìn,赁lìn,焛lìn,賃lìn,蔺lìn,橉lìn,甐lìn,膦lìn,閵lìn,藺lìn,躏lìn,躙lìn,躪lìn,轥lìn,悋lìn,伶líng,刢líng,灵líng,囹líng,坽líng,夌líng,姈líng,岺líng,彾líng,泠líng,狑líng,苓líng,昤líng,柃líng,玲líng,瓴líng,凌líng,皊líng,砱líng,秢líng,竛líng,铃líng,陵líng,鸰líng,婈líng,崚líng,掕líng,棂líng,淩líng,琌líng,笭líng,紷líng,绫líng,羚líng,翎líng,聆líng,舲líng,菱líng,蛉líng,衑líng,祾líng,詅líng,跉líng,蓤líng,裬líng,鈴líng,閝líng,零líng,龄líng,綾líng,蔆líng,霊líng,駖líng,澪líng,蕶líng,錂líng,霗líng,鲮líng,鴒líng,鹷líng,燯líng,霛líng,霝líng,齢líng,瀮líng,酃líng,鯪líng,孁líng,蘦líng,齡líng,櫺líng,靈líng,欞líng,爧líng,麢líng,龗líng,阾líng,袊líng,靇líng,朎líng,軨líng,醽líng,岭lǐng,领lǐng,領lǐng,嶺lǐng,令lìng,另lìng,呤lìng,炩lìng,溜liū,熘liū,澑liū,蹓liū,刘liú,沠liú,畄liú,浏liú,流liú,留liú,旈liú,琉liú,畱liú,硫liú,裗liú,媹liú,嵧liú,旒liú,蓅liú,遛liú,馏liú,骝liú,榴liú,瑠liú,飗liú,劉liú,瑬liú,瘤liú,磂liú,镏liú,駠liú,鹠liú,橊liú,璢liú,疁liú,癅liú,駵liú,嚠liú,懰liú,瀏liú,藰liú,鎏liú,鎦liú,餾liú,麍liú,鐂liú,騮liú,飅liú,鰡liú,鶹liú,驑liú,蒥liú,飀liú,柳liǔ,栁liǔ,桞liǔ,珋liǔ,桺liǔ,绺liǔ,锍liǔ,綹liǔ,熮liǔ,罶liǔ,鋶liǔ,橮liǔ,羀liǔ,嬼liǔ,畂liù,六liù,翏liù,塯liù,廇liù,磟liù,鹨liù,霤liù,雡liù,鬸liù,鷚liù,飂liù,囖lō,谾lóng,龙lóng,屸lóng,咙lóng,泷lóng,茏lóng,昽lóng,栊lóng,珑lóng,胧lóng,眬lóng,砻lóng,笼lóng,聋lóng,隆lóng,湰lóng,嶐lóng,槞lóng,漋lóng,蕯lóng,癃lóng,窿lóng,篭lóng,龍lóng,巃lóng,巄lóng,瀧lóng,蘢lóng,鏧lóng,霳lóng,曨lóng,櫳lóng,爖lóng,瓏lóng,矓lóng,礱lóng,礲lóng,襱lóng,籠lóng,聾lóng,蠪lóng,蠬lóng,龓lóng,豅lóng,躘lóng,鑨lóng,驡lóng,鸗lóng,滝lóng,嚨lóng,朧lǒng,陇lǒng,垄lǒng,垅lǒng,儱lǒng,隴lǒng,壟lǒng,壠lǒng,攏lǒng,竉lǒng,徿lǒng,拢lǒng,梇lòng,衖lòng,贚lòng,喽lou,嘍lou,窶lóu,娄lóu,婁lóu,溇lóu,蒌lóu,楼lóu,廔lóu,慺lóu,蔞lóu,遱lóu,樓lóu,熡lóu,耧lóu,蝼lóu,艛lóu,螻lóu,謱lóu,軁lóu,髅lóu,鞻lóu,髏lóu,漊lóu,屚lóu,膢lóu,耬lóu,嵝lǒu,搂lǒu,塿lǒu,嶁lǒu,摟lǒu,甊lǒu,篓lǒu,簍lǒu,陋lòu,漏lòu,瘘lòu,镂lòu,瘺lòu,鏤lòu,氌lu,氇lu,噜lū,撸lū,嚕lū,擼lū,卢lú,芦lú,垆lú,枦lú,泸lú,炉lú,栌lú,胪lú,轳lú,舮lú,鸬lú,玈lú,舻lú,颅lú,鈩lú,鲈lú,魲lú,盧lú,嚧lú,壚lú,廬lú,攎lú,瀘lú,獹lú,蘆lú,櫨lú,爐lú,瓐lú,臚lú,矑lú,纑lú,罏lú,艫lú,蠦lú,轤lú,鑪lú,顱lú,髗lú,鱸lú,鸕lú,黸lú,鹵lú,塷lú,庐lú,籚lú,卤lǔ,虏lǔ,挔lǔ,捛lǔ,掳lǔ,硵lǔ,鲁lǔ,虜lǔ,滷lǔ,蓾lǔ,樐lǔ,澛lǔ,魯lǔ,擄lǔ,橹lǔ,磠lǔ,镥lǔ,櫓lǔ,艣lǔ,鏀lǔ,艪lǔ,鐪lǔ,鑥lǔ,瀂lǔ,露lù,圥lù,甪lù,陆lù,侓lù,坴lù,彔lù,录lù,峍lù,勎lù,赂lù,辂lù,陸lù,娽lù,淕lù,淥lù,渌lù,硉lù,菉lù,逯lù,鹿lù,椂lù,琭lù,祿lù,剹lù,勠lù,盝lù,睩lù,碌lù,稑lù,賂lù,路lù,輅lù,塶lù,廘lù,摝lù,漉lù,箓lù,粶lù,蔍lù,戮lù,膟lù,觮lù,趢lù,踛lù,辘lù,醁lù,潞lù,穋lù,錄lù,録lù,錴lù,璐lù,簏lù,螰lù,鴼lù,簶lù,蹗lù,轆lù,騄lù,鹭lù,簬lù,簵lù,鯥lù,鵦lù,鵱lù,麓lù,鏴lù,騼lù,籙lù,虂lù,鷺lù,緑lù,攄lù,禄lù,蕗lù,娈luán,孪luán,峦luán,挛luán,栾luán,鸾luán,脔luán,滦luán,銮luán,鵉luán,奱luán,孿luán,巒luán,曫luán,欒luán,灓luán,羉luán,臠luán,圞luán,灤luán,虊luán,鑾luán,癴luán,癵luán,鸞luán,圝luán,卵luǎn,乱luàn,釠luàn,亂luàn,乿luàn,掠luě,稤luě,略luè,畧luè,锊luè,圙luè,鋝luè,鋢luè,剠luè,擽luè,抡lún,掄lún,仑lún,伦lún,囵lún,沦lún,纶lún,轮lún,倫lún,陯lún,圇lún,婨lún,崘lún,崙lún,惀lún,淪lún,菕lún,棆lún,腀lún,碖lún,綸lún,蜦lún,踚lún,輪lún,磮lún,鯩lún,耣lún,稐lǔn,埨lǔn,侖lùn,溣lùn,論lùn,论lùn,頱luō,囉luō,啰luō,罗luó,猡luó,脶luó,萝luó,逻luó,椤luó,腡luó,锣luó,箩luó,骡luó,镙luó,螺luó,羅luó,覶luó,鏍luó,儸luó,覼luó,騾luó,蘿luó,邏luó,欏luó,鸁luó,鑼luó,饠luó,驘luó,攞luó,籮luó,剆luǒ,倮luǒ,砢luǒ,蓏luǒ,裸luǒ,躶luǒ,瘰luǒ,蠃luǒ,臝luǒ,曪luǒ,癳luǒ,茖luò,蛒luò,硦luò,泺luò,峈luò,洛luò,络luò,荦luò,骆luò,洜luò,珞luò,笿luò,絡luò,落luò,摞luò,漯luò,犖luò,雒luò,鮥luò,鵅luò,濼luò,纙luò,挼luò,跞luò,駱luò,瞜lǘ,瘻lǘ,驴lǘ,闾lǘ,榈lǘ,馿lǘ,氀lǘ,櫚lǘ,藘lǘ,曥lǘ,鷜lǘ,驢lǘ,閭lǘ,偻lǚ,僂lǚ,吕lǚ,呂lǚ,侣lǚ,郘lǚ,侶lǚ,旅lǚ,梠lǚ,焒lǚ,祣lǚ,稆lǚ,铝lǚ,屡lǚ,絽lǚ,缕lǚ,屢lǚ,膂lǚ,膐lǚ,褛lǚ,鋁lǚ,履lǚ,褸lǚ,儢lǚ,縷lǚ,穭lǚ,捋lǚ,穞lǚ,寠lǜ,滤lǜ,濾lǜ,寽lǜ,垏lǜ,律lǜ,虑lǜ,率lǜ,绿lǜ,嵂lǜ,氯lǜ,葎lǜ,綠lǜ,慮lǜ,箻lǜ,勴lǜ,繂lǜ,櫖lǜ,爈lǜ,鑢lǜ,卛lǜ,亇ma,吗ma,嗎ma,嘛ma,妈mā,媽mā,痲mā,孖mā,麻má,嫲má,蔴má,犘má,蟆má,蟇má,尛má,马mǎ,犸mǎ,玛mǎ,码mǎ,蚂mǎ,馬mǎ,溤mǎ,獁mǎ,遤mǎ,瑪mǎ,碼mǎ,螞mǎ,鷌mǎ,鰢mǎ,傌mǎ,榪mǎ,鎷mǎ,杩mà,祃mà,閁mà,骂mà,睰mà,嘜mà,禡mà,罵mà,駡mà,礣mà,鬕mà,貍mái,埋mái,霾mái,买mǎi,荬mǎi,買mǎi,嘪mǎi,蕒mǎi,鷶mǎi,唛mài,劢mài,佅mài,売mài,麦mài,卖mài,脈mài,麥mài,衇mài,勱mài,賣mài,邁mài,霡mài,霢mài,迈mài,颟mān,顢mān,姏mán,悗mán,蛮mán,慲mán,摱mán,馒mán,槾mán,樠mán,瞒mán,瞞mán,鞔mán,饅mán,鳗mán,鬗mán,鬘mán,蠻mán,矕mán,僈mán,屘mǎn,満mǎn,睌mǎn,满mǎn,滿mǎn,螨mǎn,襔mǎn,蟎mǎn,鏋mǎn,曼màn,谩màn,墁màn,幔màn,慢màn,漫màn,獌màn,缦màn,蔄màn,蔓màn,熳màn,澷màn,镘màn,縵màn,蟃màn,鏝màn,蘰màn,鰻màn,謾màn,牤māng,朚máng,龒máng,邙máng,吂máng,忙máng,汒máng,芒máng,尨máng,杗máng,杧máng,盲máng,厖máng,恾máng,笀máng,茫máng,哤máng,娏máng,浝máng,狵máng,牻máng,硭máng,釯máng,铓máng,痝máng,鋩máng,駹máng,蘉máng,氓máng,甿máng,庬máng,鹲máng,鸏máng,莽mǎng,茻mǎng,壾mǎng,漭mǎng,蟒mǎng,蠎mǎng,莾mǎng,匁mangmi,猫māo,貓māo,毛máo,矛máo,枆máo,牦máo,茅máo,旄máo,渵máo,軞máo,酕máo,堥máo,锚máo,緢máo,髦máo,髳máo,錨máo,蟊máo,鶜máo,茆máo,罞máo,鉾máo,冇mǎo,戼mǎo,峁mǎo,泖mǎo,昴mǎo,铆mǎo,笷mǎo,蓩mǎo,鉚mǎo,卯mǎo,秏mào,冃mào,皃mào,芼mào,冐mào,茂mào,冒mào,贸mào,耄mào,袤mào,覒mào,媢mào,帽mào,貿mào,鄚mào,愗mào,暓mào,楙mào,毷mào,瑁mào,貌mào,鄮mào,蝐mào,懋mào,霿mào,獏mào,毣mào,萺mào,瞀mào,唜mas,么me,嚜me,麼me,麽me,庅mē,嚒mē,孭mē,濹mè,嚰mè,沒méi,没méi,枚méi,玫méi,苺méi,栂méi,眉méi,脄méi,莓méi,梅méi,珻méi,脢méi,郿méi,堳méi,媒méi,嵋méi,湄méi,湈méi,睂méi,葿méi,楣méi,楳méi,煤méi,瑂méi,禖méi,腜méi,塺méi,槑méi,酶méi,镅méi,鹛méi,鋂méi,霉méi,徾méi,鎇méi,矀méi,攗méi,蘪méi,鶥méi,攟méi,黴méi,坆méi,猸méi,羙měi,毎měi,每měi,凂měi,美měi,挴měi,浼měi,媄měi,渼měi,媺měi,镁měi,嬍měi,燘měi,躾měi,鎂měi,黣měi,嵄měi,眊mèi,妹mèi,抺mèi,沬mèi,昧mèi,祙mèi,袂mèi,眛mèi,媚mèi,寐mèi,痗mèi,跊mèi,鬽mèi,煝mèi,睸mèi,魅mèi,篃mèi,蝞mèi,櫗mèi,氼mèi,们men,們men,椚mēn,门mén,扪mén,钔mén,門mén,閅mén,捫mén,菛mén,璊mén,穈mén,鍆mén,虋mén,怋mén,玣mén,殙mèn,闷mèn,焖mèn,悶mèn,暪mèn,燜mèn,懑mèn,懣mèn,掹mēng,擝mēng,懞mēng,虻méng,冡méng,莔méng,萌méng,萠méng,盟méng,甍méng,儚méng,橗méng,瞢méng,蕄méng,蝱méng,鄳méng,鄸méng,幪méng,濛méng,獴méng,曚méng,朦méng,檬méng,氋méng,礞méng,鯍méng,艨méng,矒méng,靀méng,饛méng,顭méng,蒙méng,鼆méng,夣méng,懜méng,溕méng,矇měng,勐měng,猛měng,锰měng,艋měng,蜢měng,錳měng,懵měng,蠓měng,鯭měng,黽měng,瓾měng,夢mèng,孟mèng,梦mèng,霥mèng,踎meo,咪mī,瞇mī,眯mī,冞mí,弥mí,祢mí,迷mí,袮mí,猕mí,谜mí,蒾mí,詸mí,謎mí,醚mí,彌mí,糜mí,縻mí,麊mí,麋mí,禰mí,靡mí,獼mí,麛mí,爢mí,瓕mí,蘼mí,镾mí,醾mí,醿mí,鸍mí,釄mí,檷mí,籋mí,罙mí,擟mí,米mǐ,羋mǐ,芈mǐ,侎mǐ,沵mǐ,弭mǐ,洣mǐ,敉mǐ,粎mǐ,脒mǐ,葞mǐ,蝆mǐ,蔝mǐ,銤mǐ,瀰mǐ,孊mǐ,灖mǐ,渳mǐ,哋mì,汨mì,沕mì,宓mì,泌mì,觅mì,峚mì,宻mì,秘mì,密mì,淧mì,覓mì,覔mì,幂mì,谧mì,塓mì,幎mì,覛mì,嘧mì,榓mì,漞mì,熐mì,蔤mì,蜜mì,鼏mì,冪mì,樒mì,幦mì,濗mì,藌mì,謐mì,櫁mì,簚mì,羃mì,鑖mì,蓂mì,滵mì,芇mián,眠mián,婂mián,绵mián,媔mián,棉mián,綿mián,緜mián,蝒mián,嬵mián,檰mián,櫋mián,矈mián,矊mián,蠠mián,矏mián,厸miǎn,丏miǎn,汅miǎn,免miǎn,沔miǎn,黾miǎn,俛miǎn,勉miǎn,眄miǎn,娩miǎn,偭miǎn,冕miǎn,勔miǎn,喕miǎn,愐miǎn,湎miǎn,缅miǎn,葂miǎn,腼miǎn,緬miǎn,鮸miǎn,渑miǎn,澠miǎn,靦miǎn,靣miàn,面miàn,糆miàn,麪miàn,麫miàn,麺miàn,麵miàn,喵miāo,苗miáo,媌miáo,瞄miáo,鹋miáo,嫹miáo,鶓miáo,鱙miáo,描miáo,訬miǎo,仯miǎo,杪miǎo,眇miǎo,秒miǎo,淼miǎo,渺miǎo,缈miǎo,篎miǎo,緲miǎo,藐miǎo,邈miǎo,妙miào,庙miào,竗miào,庿miào,廟miào,吀miē,咩miē,哶miē,灭miè,搣miè,滅miè,薎miè,幭miè,懱miè,篾miè,蠛miè,衊miè,鱴miè,蔑miè,民mín,垊mín,姄mín,岷mín,旻mín,旼mín,玟mín,苠mín,珉mín,盿mín,冧mín,罠mín,崏mín,捪mín,琘mín,琝mín,暋mín,瑉mín,痻mín,碈mín,鈱mín,賯mín,錉mín,鍲mín,缗mín,湏mǐn,緍mǐn,緡mǐn,皿mǐn,冺mǐn,刡mǐn,闵mǐn,抿mǐn,泯mǐn,勄mǐn,敃mǐn,闽mǐn,悯mǐn,敏mǐn,笢mǐn,笽mǐn,湣mǐn,閔mǐn,愍mǐn,敯mǐn,閩mǐn,慜mǐn,憫mǐn,潣mǐn,簢mǐn,鳘mǐn,鰵mǐn,僶mǐn,名míng,明míng,鸣míng,洺míng,眀míng,茗míng,冥míng,朙míng,眳míng,铭míng,鄍míng,嫇míng,溟míng,猽míng,暝míng,榠míng,銘míng,鳴míng,瞑míng,螟míng,覭míng,佲mǐng,凕mǐng,慏mǐng,酩mǐng,姳mǐng,命mìng,掵mìng,詺mìng,谬miù,缪miù,繆miù,謬miù,摸mō,嚤mō,嬤mó,嬷mó,戂mó,攠mó,谟mó,嫫mó,馍mó,摹mó,模mó,膜mó,摩mó,魹mó,橅mó,磨mó,糢mó,謨mó,謩mó,擵mó,饃mó,蘑mó,髍mó,魔mó,劘mó,饝mó,嚩mó,懡mǒ,麿mǒ,狢mò,貈mò,貉mò,脉mò,瀎mò,抹mò,末mò,劰mò,圽mò,妺mò,怽mò,歿mò,殁mò,沫mò,茉mò,陌mò,帞mò,昩mò,枺mò,皌mò,眜mò,眿mò,砞mò,秣mò,莈mò,眽mò,粖mò,絈mò,蛨mò,貃mò,嗼mò,塻mò,寞mò,漠mò,蓦mò,貊mò,銆mò,墨mò,嫼mò,暯mò,瘼mò,瞐mò,瞙mò,镆mò,魩mò,黙mò,縸mò,默mò,貘mò,藦mò,蟔mò,鏌mò,爅mò,礳mò,纆mò,耱mò,艒mò,莫mò,驀mò,乮mol,哞mōu,呣móu,蛑móu,蝥móu,牟móu,侔móu,劺móu,恈móu,洠móu,眸móu,谋móu,謀móu,鍪móu,鴾móu,麰móu,鞪móu,某mǒu,呒mú,嘸mú,毪mú,氁mú,母mǔ,亩mǔ,牡mǔ,姆mǔ,拇mǔ,牳mǔ,畆mǔ,畒mǔ,胟mǔ,畝mǔ,畞mǔ,砪mǔ,畮mǔ,鉧mǔ,踇mǔ,坶mǔ,峔mǔ,朷mù,木mù,仫mù,目mù,凩mù,沐mù,狇mù,炑mù,牧mù,苜mù,莯mù,蚞mù,钼mù,募mù,雮mù,墓mù,幕mù,慔mù,楘mù,睦mù,鉬mù,慕mù,暮mù,樢mù,霂mù,穆mù,幙mù,旀myeo,椧myeong,秅ná,拏ná,拿ná,挐ná,誽ná,镎ná,鎿ná,乸ná,詉ná,蒘ná,訤ná,哪nǎ,雫nǎ,郍nǎ,那nà,吶nà,妠nà,纳nà,肭nà,娜nà,钠nà,納nà,袦nà,捺nà,笝nà,豽nà,軜nà,鈉nà,嗱nà,蒳nà,靹nà,魶nà,呐nà,內nà,篛nà,衲nà,腉nái,熋nái,摨nái,孻nái,螚nái,搱nái,乃nǎi,奶nǎi,艿nǎi,氖nǎi,疓nǎi,妳nǎi,廼nǎi,迺nǎi,倷nǎi,釢nǎi,奈nài,柰nài,萘nài,渿nài,鼐nài,褦nài,錼nài,耐nài,囡nān,男nán,抩nán,枏nán,枬nán,侽nán,南nán,柟nán,娚nán,畘nán,莮nán,难nán,喃nán,遖nán,暔nán,楠nán,煵nán,諵nán,難nán,萳nán,嫨nǎn,赧nǎn,揇nǎn,湳nǎn,腩nǎn,戁nǎn,蝻nǎn,婻nàn,囔nāng,涳náng,乪náng,嚢náng,囊náng,蠰náng,鬞náng,馕náng,欜náng,饢náng,搑náng,崀nǎng,擃nǎng,曩nǎng,攮nǎng,灢nǎng,瀼nǎng,儾nàng,齉nàng,孬nāo,檂nāo,巙náo,呶náo,怓náo,挠náo,峱náo,硇náo,铙náo,猱náo,蛲náo,碙náo,撓náo,獶náo,蟯náo,夒náo,譊náo,鐃náo,巎náo,獿náo,憹náo,蝚náo,嶩náo,垴nǎo,恼nǎo,悩nǎo,脑nǎo,匘nǎo,脳nǎo,堖nǎo,惱nǎo,嫐nǎo,瑙nǎo,腦nǎo,碯nǎo,闹nào,婥nào,淖nào,閙nào,鬧nào,臑nào,呢ne,讷nè,抐nè,眲nè,訥nè,娞něi,馁něi,腇něi,餒něi,鮾něi,鯘něi,浽něi,内nèi,氝nèi,焾nem,嫩nèn,媆nèn,嫰nèn,竜néng,能néng,莻neus,鈪ngag,銰ngai,啱ngam,妮nī,尼ní,坭ní,怩ní,泥ní,籾ní,倪ní,屔ní,秜ní,郳ní,铌ní,埿ní,婗ní,猊ní,蚭ní,棿ní,跜ní,鈮ní,蜺ní,觬ní,貎ní,霓ní,鲵ní,鯢ní,麑ní,齯ní,臡ní,抳ní,蛪ní,腝ní,淣ní,聻nǐ,濔nǐ,伱nǐ,你nǐ,拟nǐ,狔nǐ,苨nǐ,柅nǐ,旎nǐ,晲nǐ,孴nǐ,鉨nǐ,馜nǐ,隬nǐ,擬nǐ,薿nǐ,鑈nǐ,儞nǐ,伲nì,迡nì,昵nì,胒nì,逆nì,匿nì,痆nì,眤nì,堄nì,惄nì,嫟nì,愵nì,溺nì,睨nì,腻nì,暱nì,縌nì,膩nì,嬺nì,灄nì,孨nì,拈niān,蔫niān,年nián,秊nián,哖nián,秥nián,鮎nián,鲶nián,鵇nián,黏nián,鯰nián,姩nián,鲇nián,跈niǎn,涊niǎn,捻niǎn,淰niǎn,辇niǎn,撚niǎn,撵niǎn,碾niǎn,輦niǎn,簐niǎn,攆niǎn,蹨niǎn,躎niǎn,辗niǎn,輾niǎn,卄niàn,廿niàn,念niàn,埝niàn,艌niàn,娘niáng,嬢niáng,醸niáng,酿niàng,釀niàng,茮niǎo,尦niǎo,鸟niǎo,袅niǎo,鳥niǎo,嫋niǎo,裊niǎo,蔦niǎo,嬝niǎo,褭niǎo,嬲niǎo,茑niǎo,尿niào,脲niào,捏niē,揑niē,乜niè,帇niè,圼niè,苶niè,枿niè,陧niè,涅niè,聂niè,臬niè,啮niè,惗niè,菍niè,隉niè,喦niè,敜niè,嗫niè,嵲niè,踂niè,摰niè,槷niè,踗niè,踙niè,镊niè,镍niè,嶭niè,篞niè,臲niè,錜niè,颞niè,蹑niè,嚙niè,聶niè,鎳niè,闑niè,孼niè,孽niè,櫱niè,蘖niè,囁niè,齧niè,巕niè,糱niè,糵niè,蠥niè,囓niè,躡niè,鑷niè,顳niè,諗niè,囐niè,銸niè,鋷niè,讘niè,脌nīn,囜nín,您nín,恁nín,拰nǐn,宁níng,咛níng,狞níng,柠níng,聍níng,寍níng,寕níng,寜níng,寧níng,儜níng,凝níng,嚀níng,嬣níng,獰níng,薴níng,檸níng,聹níng,鑏níng,鬡níng,鸋níng,甯níng,濘níng,鬤níng,拧nǐng,擰nǐng,矃nǐng,橣nǐng,佞nìng,侫nìng,泞nìng,寗nìng,澝nìng,妞niū,牛niú,牜niú,忸niǔ,扭niǔ,沑niǔ,狃niǔ,纽niǔ,杻niǔ,炄niǔ,钮niǔ,紐niǔ,莥niǔ,鈕niǔ,靵niǔ,拗niù,莀nóng,农nóng,侬nóng,哝nóng,浓nóng,脓nóng,秾nóng,儂nóng,辳nóng,噥nóng,濃nóng,蕽nóng,禯nóng,膿nóng,穠nóng,襛nóng,醲nóng,欁nóng,癑nóng,農nóng,繷nǒng,廾nòng,弄nòng,挊nòng,挵nòng,齈nòng,羺nóu,譨nóu,啂nǒu,槈nòu,耨nòu,獳nòu,檽nòu,鎒nòu,鐞nòu,譳nòu,嬬nòu,奴nú,驽nú,笯nú,駑nú,砮nú,孥nú,伮nǔ,努nǔ,弩nǔ,胬nǔ,怒nù,傉nù,搙nù,奻nuán,渜nuán,暖nuǎn,煗nuǎn,餪nuǎn,疟nuè,虐nuè,瘧nuè,硸nuè,黁nun,燶nung,挪nuó,梛nuó,傩nuó,搻nuó,儺nuó,橠nuó,袲nuǒ,诺nuò,喏nuò,掿nuò,逽nuò,搦nuò,锘nuò,榒nuò,稬nuò,諾nuò,蹃nuò,糑nuò,懦nuò,懧nuò,糥nuò,穤nuò,糯nuò,堧nuò,耎nuò,愞nuò,女nǚ,钕nǚ,籹nǚ,釹nǚ,衂nǜ,恧nǜ,朒nǜ,衄nǜ,筽o,噢�?哦�?夞oes,乯ol,鞰on,吽ōu,讴ōu,欧ōu,殴ōu,瓯ōu,鸥ōu,塸ōu,歐ōu,毆ōu,熰ōu,甌ōu,膒ōu,鴎ōu,櫙ōu,藲ōu,謳ōu,鏂ōu,鷗ōu,沤ōu,蓲ōu,敺ōu,醧ōu,漚ōu,齵óu,澫ǒu,吘ǒu,呕ǒu,偶ǒu,腢ǒu,嘔ǒu,耦ǒu,蕅ǒu,藕ǒu,怄òu,慪òu,妑pā,趴pā,舥pā,啪pā,葩pā,帊pā,杷pá,爬pá,耙pá,掱pá,琶pá,筢pá,潖pá,跁pá,帕pà,怕pà,袙pà,拍pāi,俳pái,徘pái,排pái,猅pái,牌pái,輫pái,簰pái,犤pái,哌pài,派pài,蒎pài,鎃pài,湃pài,磗pak,眅pān,畨pān,潘pān,攀pān,膰pán,爿pán,柈pán,盘pán,媻pán,幋pán,蒰pán,槃pán,盤pán,磐pán,縏pán,蹒pán,瀊pán,蟠pán,蹣pán,鎜pán,鞶pán,踫pán,宷pán,洀pán,闆pǎn,坢pǎn,盻pǎn,眫pàn,冸pàn,判pàn,沜pàn,泮pàn,叛pàn,牉pàn,盼pàn,畔pàn,袢pàn,詊pàn,溿pàn,頖pàn,鋬pàn,鵥pàn,襻pàn,鑻pàn,炍pàn,乓pāng,汸pāng,沗pāng,肨pāng,胮pāng,雱pāng,滂pāng,膖pāng,霶pāng,磅páng,趽páng,彷páng,夆páng,厐páng,庞páng,逄páng,旁páng,舽páng,篣páng,螃páng,鳑páng,龐páng,鰟páng,蠭páng,髈páng,龎páng,耪pǎng,覫pǎng,炐pàng,胖pàng,抛pāo,拋pāo,脬pāo,刨páo,咆páo,垉páo,庖páo,狍páo,炰páo,爮páo,袍páo,匏páo,軳páo,鞄páo,褜páo,麅páo,颮páo,跑pǎo,窌pào,炮pào,奅pào,泡pào,皰pào,砲pào,萢pào,麭pào,礟pào,礮pào,犥pào,疱pào,妚pēi,呸pēi,怌pēi,肧pēi,胚pēi,衃pēi,醅pēi,抷pēi,阫péi,陪péi,陫péi,培péi,毰péi,赔péi,锫péi,裴péi,裵péi,賠péi,錇péi,駍péi,婄péi,俖pěi,茷pèi,攈pèi,伂pèi,沛pèi,佩pèi,帔pèi,姵pèi,旆pèi,浿pèi,珮pèi,配pèi,笩pèi,蓜pèi,辔pèi,馷pèi,嶏pèi,霈pèi,轡pèi,斾pèi,喷pēn,噴pēn,濆pēn,歕pēn,衯pén,瓫pén,盆pén,湓pén,葐pén,呠pěn,翸pěn,匉pēng,怦pēng,抨pēng,泙pēng,恲pēng,胓pēng,砰pēng,烹pēng,硑pēng,軯pēng,閛pēng,漰pēng,嘭pēng,磞pēng,弸pēng,荓pēng,軿pēng,輧pēng,梈pēng,芃péng,朋péng,竼péng,倗péng,莑péng,堋péng,彭péng,棚péng,椖péng,塜péng,塳péng,漨péng,硼péng,稝péng,蓬péng,鹏péng,槰péng,樥péng,憉péng,澎péng,輣péng,篷péng,膨péng,韸péng,髼péng,蟚péng,蟛péng,鬅péng,纄péng,韼péng,鵬péng,鬔péng,鑝péng,淜péng,熢péng,摓pěng,捧pěng,淎pěng,皏pěng,剻pěng,掽pèng,椪pèng,碰pèng,浌peol,巼phas,闏phdeng,乶phoi,喸phos,榌pi,伓pī,伾pī,批pī,纰pī,邳pī,坯pī,披pī,炋pī,狉pī,狓pī,砒pī,秛pī,秠pī,紕pī,耚pī,豾pī,釽pī,鉟pī,銔pī,劈pī,磇pī,駓pī,噼pī,錃pī,魾pī,憵pī,礔pī,礕pī,霹pī,鲏pī,鮍pī,丕pī,髬pī,铍pí,鈹pí,皮pí,阰pí,芘pí,岯pí,枇pí,毞pí,毗pí,毘pí,疲pí,蚍pí,郫pí,陴pí,啤pí,埤pí,蚽pí,豼pí,焷pí,脾pí,腗pí,罴pí,膍pí,蜱pí,隦pí,壀pí,篺pí,螷pí,貔pí,簲pí,羆pí,鵧pí,朇pí,鼙pí,蠯pí,猈pí,琵pí,匹pǐ,庀pǐ,仳pǐ,圮pǐ,苉pǐ,脴pǐ,痞pǐ,銢pǐ,鴄pǐ,噽pǐ,癖pǐ,嚭pǐ,顖pǐ,擗pǐ,辟pì,鈲pì,闢pì,屁pì,淠pì,渒pì,揊pì,媲pì,嫓pì,睤pì,睥pì,潎pì,僻pì,澼pì,嚊pì,甓pì,疈pì,譬pì,鷿pì,囨piān,偏piān,媥piān,犏piān,篇piān,翩piān,骈pián,胼pián,楄pián,楩pián,賆pián,諚pián,骿pián,蹁pián,駢pián,騈pián,徧pián,腁pián,覑piǎn,谝piǎn,貵piǎn,諞piǎn,片piàn,骗piàn,魸piàn,騗piàn,騙piàn,剽piāo,彯piāo,漂piāo,缥piāo,飘piāo,磦piāo,旚piāo,縹piāo,翲piāo,螵piāo,飄piāo,魒piāo,薸piáo,闝piáo,嫖piáo,瓢piáo,莩piǎo,殍piǎo,瞟piǎo,醥piǎo,皫piǎo,顠piǎo,飃piào,票piào,勡piào,嘌piào,慓piào,覕piē,氕piē,撆piē,暼piē,瞥piē,撇piě,丿piě,苤piě,鐅piě,嫳piè,拚pīn,姘pīn,拼pīn,礗pīn,穦pīn,馪pīn,驞pīn,贫pín,貧pín,嫔pín,频pín,頻pín,嬪pín,薲pín,嚬pín,矉pín,颦pín,顰pín,蘋pín,玭pín,品pǐn,榀pǐn,朩pìn,牝pìn,汖pìn,聘pìn,娉pīng,乒pīng,甹pīng,俜pīng,涄pīng,砯pīng,艵pīng,竮pīng,頩pīng,冖píng,平píng,评píng,凭píng,坪píng,岼píng,苹píng,郱píng,屏píng,帡píng,枰píng,洴píng,玶píng,娦píng,瓶píng,屛píng,帲píng,萍píng,蚲píng,塀píng,幈píng,焩píng,甁píng,缾píng,聠píng,蓱píng,蛢píng,評píng,鲆píng,凴píng,慿píng,憑píng,鮃píng,簈píng,呯píng,箳píng,鏺po,钋pō,坡pō,岥pō,泼pō,釙pō,颇pō,溌pō,酦pō,潑pō,醱pō,頗pō,攴pō,巿pó,婆pó,嘙pó,鄱pó,皤pó,謈pó,櫇pó,叵pǒ,尀pǒ,钷pǒ,笸pǒ,鉕pǒ,駊pǒ,屰pò,廹pò,岶pò,迫pò,敀pò,昢pò,洦pò,珀pò,烞pò,破pò,砶pò,粕pò,奤pò,蒪pò,魄pò,皛pò,頮pōu,剖pōu,颒pōu,抙pōu,捊pōu,抔póu,掊póu,裒póu,咅pǒu,哣pǒu,犃pǒu,兺ppun,哛ppun,巬pu,巭pu,扑pū,炇pū,痡pū,駇pū,噗pū,撲pū,鋪pū,潽pū,襆pú,脯pú,蜅pú,仆pú,圤pú,匍pú,莆pú,菩pú,菐pú,葡pú,蒱pú,蒲pú,僕pú,酺pú,墣pú,璞pú,瞨pú,穙pú,镤pú,贌pú,纀pú,鏷pú,襥pú,濮pú,朴pǔ,圃pǔ,埔pǔ,浦pǔ,烳pǔ,普pǔ,圑pǔ,溥pǔ,暜pǔ,谱pǔ,樸pǔ,氆pǔ,諩pǔ,檏pǔ,镨pǔ,譜pǔ,蹼pǔ,鐠pǔ,铺pù,舖pù,舗pù,曝pù,七qī,沏qī,妻qī,恓qī,柒qī,倛qī,凄qī,栖qī,桤qī,缼qī,郪qī,娸qī,戚qī,捿qī,桼qī,淒qī,萋qī,朞qī,期qī,棲qī,欺qī,紪qī,褄qī,僛qī,嘁qī,慽qī,榿qī,漆qī,緀qī,磎qī,諆qī,諿qī,霋qī,蹊qī,魌qī,鏚qī,鶈qī,碕qī,螇qī,傶qī,迉qī,軙qí,荎qí,饑qí,亓qí,祁qí,齐qí,圻qí,岐qí,岓qí,忯qí,芪qí,亝qí,其qí,奇qí,斉qí,歧qí,祇qí,祈qí,肵qí,疧qí,竒qí,剘qí,斊qí,旂qí,脐qí,蚑qí,蚔qí,蚚qí,颀qí,埼qí,崎qí,掑qí,淇qí,渏qí,猉qí,畦qí,萁qí,跂qí,軝qí,釮qí,骐qí,骑qí,嵜qí,棊qí,棋qí,琦qí,琪qí,祺qí,蛴qí,愭qí,碁qí,鬿qí,旗qí,粸qí,綥qí,綦qí,綨qí,緕qí,蜝qí,蜞qí,齊qí,禥qí,蕲qí,螧qí,鲯qí,濝qí,藄qí,檱qí,櫀qí,簱qí,臍qí,騎qí,騏qí,鳍qí,蘄qí,鵸qí,鶀qí,麒qí,籏qí,纃qí,艩qí,蠐qí,鬐qí,騹qí,魕qí,鰭qí,玂qí,麡qí,荠qí,薺qí,扺qí,耆qí,鯕qí,袳qǐ,乞qǐ,邔qǐ,企qǐ,屺qǐ,岂qǐ,芑qǐ,启qǐ,呇qǐ,杞qǐ,玘qǐ,盀qǐ,唘qǐ,豈qǐ,起qǐ,啓qǐ,啔qǐ,啟qǐ,绮qǐ,棨qǐ,綮qǐ,綺qǐ,諬qǐ,簯qǐ,闙qǐ,梩qǐ,婍qǐ,鼜qì,悽qì,槭qì,气qì,讫qì,気qì,汔qì,迄qì,弃qì,汽qì,芞qì,呮qì,泣qì,炁qì,盵qì,咠qì,契qì,砌qì,栔qì,氣qì,訖qì,唭qì,夡qì,棄qì,湆qì,湇qì,葺qì,碛qì,摖qì,暣qì,甈qì,碶qì,噐qì,憇qì,器qì,憩qì,磜qì,磧qì,磩qì,罊qì,趞qì,洓qì,慼qì,欫qì,掐qiā,葜qiā,愘qiā,搳qiā,拤qiá,跒qiǎ,酠qiǎ,鞐qiǎ,圶qià,冾qià,恰qià,洽qià,殎qià,硈qià,髂qià,磍qià,帢qià,千qiān,仟qiān,阡qiān,圱qiān,圲qiān,奷qiān,扦qiān,汘qiān,芊qiān,迁qiān,佥qiān,岍qiān,杄qiān,汧qiān,茾qiān,竏qiān,臤qiān,钎qiān,拪qiān,牵qiān,粁qiān,悭qiān,蚈qiān,铅qiān,牽qiān,釺qiān,谦qiān,鈆qiān,僉qiān,愆qiān,签qiān,鉛qiān,骞qiān,鹐qiān,慳qiān,搴qiān,撁qiān,箞qiān,諐qiān,遷qiān,褰qiān,謙qiān,顅qiān,檶qiān,攐qiān,攑qiān,櫏qiān,簽qiān,鵮qiān,攓qiān,騫qiān,鬜qiān,鬝qiān,籤qiān,韆qiān,鋟qiān,扡qiān,杴qiān,孅qiān,藖qiān,谸qiān,鏲qiān,朁qián,岒qián,忴qián,扲qián,拑qián,前qián,荨qián,钤qián,歬qián,虔qián,钱qián,钳qián,乾qián,掮qián,軡qián,媊qián,鈐qián,鉗qián,榩qián,箝qián,潜qián,羬qián,橬qián,錢qián,黔qián,鎆qián,騝qián,濳qián,騚qián,灊qián,籖qián,鰬qián,潛qián,蚙qián,煔qián,燂qián,葴qián,鍼qián,墘qián,浅qiǎn,肷qiǎn,淺qiǎn,嵰qiǎn,遣qiǎn,槏qiǎn,膁qiǎn,蜸qiǎn,谴qiǎn,缱qiǎn,譴qiǎn,鑓qiǎn,繾qiǎn,欠qiàn,刋qiàn,伣qiàn,芡qiàn,俔qiàn,茜qiàn,倩qiàn,悓qiàn,堑qiàn,嵌qiàn,棈qiàn,椠qiàn,嗛qiàn,皘qiàn,蒨qiàn,塹qiàn,歉qiàn,綪qiàn,蔳qiàn,儙qiàn,槧qiàn,篏qiàn,輤qiàn,篟qiàn,壍qiàn,嬱qiàn,縴qiàn,廞qiàn,鸧qiāng,鶬qiāng,羌qiāng,戕qiāng,戗qiāng,斨qiāng,枪qiāng,玱qiāng,猐qiāng,琷qiāng,跄qiāng,嗴qiāng,獇qiāng,腔qiāng,溬qiāng,蜣qiāng,锖qiāng,嶈qiāng,戧qiāng,槍qiāng,牄qiāng,瑲qiāng,锵qiāng,篬qiāng,錆qiāng,蹌qiāng,镪qiāng,蹡qiāng,鏘qiāng,鏹qiāng,啌qiāng,鎗qiāng,強qiáng,强qiáng,墙qiáng,嫱qiáng,蔷qiáng,樯qiáng,漒qiáng,墻qiáng,嬙qiáng,廧qiáng,薔qiáng,檣qiáng,牆qiáng,謒qiáng,艢qiáng,蘠qiáng,抢qiǎng,羟qiǎng,搶qiǎng,羥qiǎng,墏qiǎng,摤qiǎng,繈qiǎng,襁qiǎng,繦qiǎng,嗆qiàng,炝qiàng,唴qiàng,羻qiàng,呛qiàng,熗qiàng,悄qiāo,硗qiāo,郻qiāo,跷qiāo,鄡qiāo,鄥qiāo,劁qiāo,敲qiāo,踍qiāo,锹qiāo,碻qiāo,頝qiāo,墽qiāo,幧qiāo,橇qiāo,燆qiāo,缲qiāo,鍫qiāo,鍬qiāo,繰qiāo,趬qiāo,鐰qiāo,鞽qiāo,塙qiāo,毃qiāo,鏒qiāo,橾qiāo,喿qiāo,蹺qiāo,峤qiáo,嶠qiáo,乔qiáo,侨qiáo,荍qiáo,荞qiáo,桥qiáo,硚qiáo,菬qiáo,喬qiáo,睄qiáo,僑qiáo,槗qiáo,谯qiáo,嘺qiáo,憔qiáo,蕎qiáo,鞒qiáo,樵qiáo,橋qiáo,犞qiáo,癄qiáo,瞧qiáo,礄qiáo,藮qiáo,譙qiáo,鐈qiáo,墧qiáo,顦qiáo,磽qiǎo,巧qiǎo,愀qiǎo,髜qiǎo,偢qiào,墝qiào,俏qiào,诮qiào,陗qiào,峭qiào,帩qiào,窍qiào,翘qiào,誚qiào,髚qiào,僺qiào,撬qiào,鞘qiào,韒qiào,竅qiào,翹qiào,鞩qiào,躈qiào,踃qiào,切qiē,苆qiē,癿qié,茄qié,聺qié,且qiě,詧qiè,慊qiè,厒qiè,怯qiè,匧qiè,窃qiè,倿qiè,悏qiè,挈qiè,惬qiè,笡qiè,愜qiè,朅qiè,箧qiè,緁qiè,锲qiè,篋qiè,踥qiè,穕qiè,藒qiè,鍥qiè,鯜qiè,鐑qiè,竊qiè,籡qiè,帹qiè,郄qiè,郤qiè,稧qiè,妾qiè,亲qīn,侵qīn,钦qīn,衾qīn,菳qīn,媇qīn,嵚qīn,綅qīn,誛qīn,嶔qīn,親qīn,顉qīn,駸qīn,鮼qīn,寴qīn,欽qīn,骎qīn,鈂qín,庈qín,芩qín,芹qín,埁qín,珡qín,矝qín,秦qín,耹qín,菦qín,捦qín,琴qín,琹qín,禽qín,鈙qín,雂qín,勤qín,嗪qín,嫀qín,靲qín,噙qín,擒qín,鳹qín,懄qín,檎qín,澿qín,瘽qín,螓qín,懃qín,蠄qín,鬵qín,溱qín,坅qǐn,昑qǐn,笉qǐn,梫qǐn,赾qǐn,寑qǐn,锓qǐn,寝qǐn,寢qǐn,螼qǐn,儭qìn,櫬qìn,吢qìn,吣qìn,抋qìn,沁qìn,唚qìn,菣qìn,搇qìn,撳qìn,瀙qìn,藽qìn,鈊qìn,揿qìn,鶄qīng,青qīng,氢qīng,轻qīng,倾qīng,卿qīng,郬qīng,圊qīng,埥qīng,氫qīng,淸qīng,清qīng,軽qīng,傾qīng,廎qīng,蜻qīng,輕qīng,鲭qīng,鯖qīng,鑋qīng,庼qīng,漀qīng,靘qīng,夝qíng,甠qíng,勍qíng,情qíng,硘qíng,晴qíng,棾qíng,氰qíng,暒qíng,樈qíng,擎qíng,檠qíng,黥qíng,殑qíng,苘qǐng,顷qǐng,请qǐng,頃qǐng,請qǐng,檾qǐng,謦qǐng,庆qìng,摐chuāng,牀chuáng,磢chuǎng,刱chuàng,吹chuī,糚zhuāng,庒zhuāng,漴zhuàng,丬zhuàng,壮zhuàng,凊qìng,掅qìng,碃qìng,箐qìng,慶qìng,磬qìng,罄qìng,櫦qìng,濪qìng,藭qiong,跫qióng,銎qióng,卭qióng,邛qióng,穷qióng,穹qióng,茕qióng,桏qióng,笻qióng,筇qióng,赹qióng,惸qióng,焪qióng,焭qióng,琼qióng,蛩qióng,蛬qióng,煢qióng,熍qióng,睘qióng,窮qióng,儝qióng,憌qióng,橩qióng,瓊qióng,竆qióng,嬛qióng,琁qióng,藑qióng,湫qiū,丘qiū,丠qiū,邱qiū,坵qiū,恘qiū,秋qiū,秌qiū,寈qiū,蚯qiū,媝qiū,楸qiū,鹙qiū,篍qiū,緧qiū,蝵qiū,穐qiū,趥qiū,鳅qiū,蟗qiū,鞦qiū,鞧qiū,蘒qiū,鰌qiū,鰍qiū,鱃qiū,龝qiū,逎qiū,櫹qiū,鶖qiū,叴qiú,囚qiú,扏qiú,犰qiú,玌qiú,肍qiú,求qiú,虬qiú,泅qiú,虯qiú,俅qiú,觓qiú,訅qiú,酋qiú,唒qiú,浗qiú,紌qiú,莍qiú,逑qiú,釚qiú,梂qiú,殏qiú,毬qiú,球qiú,釻qiú,崷qiú,巯qiú,湭qiú,皳qiú,盚qiú,遒qiú,煪qiú,絿qiú,蛷qiú,裘qiú,巰qiú,觩qiú,賕qiú,璆qiú,銶qiú,醔qiú,鮂qiú,鼽qiú,鯄qiú,鵭qiú,蠤qiú,鰽qiú,厹qiú,赇qiú,搝qiǔ,糗qiǔ,趍qū,匚qū,区qū,伹qū,匤qū,岖qū,诎qū,阹qū,驱qū,屈qū,岨qū,岴qū,抾qū,浀qū,祛qū,胠qū,袪qū,區qū,蛆qū,躯qū,筁qū,粬qū,蛐qū,詘qū,趋qū,嶇qū,駆qū,憈qū,駈qū,麹qū,髷qū,趨qū,麯qū,軀qū,麴qū,黢qū,驅qū,鰸qū,鱋qū,紶qū,厺qū,佉qū,跼qú,瞿qú,佢qú,劬qú,斪qú,朐qú,胊qú,菃qú,衐qú,鸲qú,淭qú,渠qú,絇qú,葋qú,蕖qú,璖qú,磲qú,璩qú,鼩qú,蘧qú,灈qú,戵qú,欋qú,氍qú,臞qú,癯qú,蠷qú,衢qú,躣qú,蠼qú,鑺qú,臒qú,蟝qú,曲qǔ,取qǔ,娶qǔ,詓qǔ,竬qǔ,龋qǔ,齲qǔ,去qù,刞qù,耝qù,阒qù,觑qù,趣qù,閴qù,麮qù,闃qù,覰qù,覷qù,鼁qù,覻qù,迲qù,峑quān,恮quān,悛quān,圈quān,駩quān,騡quān,鐉quān,腃quān,全quán,权quán,佺quán,诠quán,姾quán,泉quán,洤quán,荃quán,拳quán,辁quán,婘quán,痊quán,硂quán,铨quán,湶quán,犈quán,筌quán,絟quán,葲quán,搼quán,楾quán,瑔quán,觠quán,詮quán,跧quán,輇quán,蜷quán,銓quán,権quán,縓quán,醛quán,闎quán,鳈quán,鬈quán,巏quán,鰁quán,權quán,齤quán,颧quán,顴quán,灥quán,譔quán,牷quán,孉quán,犬quǎn,甽quǎn,畎quǎn,烇quǎn,绻quǎn,綣quǎn,虇quǎn,劝quàn,券quàn,巻quàn,牶quàn,椦quàn,勧quàn,勸quàn,炔quē,缺quē,蒛quē,瘸qué,却què,卻què,崅què,悫què,雀què,确què,阕què,皵què,碏què,阙què,鹊què,愨què,榷què,慤què,確què,燩què,闋què,闕què,鵲què,礭què,殻què,埆què,踆qūn,夋qūn,囷qūn,峮qūn,逡qūn,帬qún,裙qún,羣qún,群qún,裠qún,亽ra,罖ra,囕ram,呥rán,肰rán,衻rán,袇rán,蚦rán,袡rán,蚺rán,然rán,髥rán,嘫rán,髯rán,燃rán,繎rán,冄rán,冉rǎn,姌rǎn,苒rǎn,染rǎn,珃rǎn,媣rǎn,蒅rǎn,孃ráng,穣ráng,獽ráng,禳ráng,瓤ráng,穰ráng,躟ráng,壌rǎng,嚷rǎng,壤rǎng,攘rǎng,爙rǎng,让ràng,懹ràng,譲ràng,讓ràng,荛ráo,饶ráo,桡ráo,橈ráo,襓ráo,饒ráo,犪ráo,嬈ráo,娆ráo,扰rǎo,隢rǎo,擾rǎo,遶rǎo,绕rào,繞rào,惹rě,热rè,熱rè,渃rè,綛ren,人rén,仁rén,壬rén,忈rén,朲rén,忎rén,秂rén,芢rén,鈓rén,魜rén,銋rén,鵀rén,姙rén,忍rěn,荏rěn,栠rěn,栣rěn,荵rěn,秹rěn,稔rěn,躵rěn,刃rèn,刄rèn,认rèn,仞rèn,仭rèn,讱rèn,任rèn,屻rèn,扨rèn,纫rèn,妊rèn,牣rèn,纴rèn,肕rèn,轫rèn,韧rèn,饪rèn,紉rèn,衽rèn,紝rèn,訒rèn,軔rèn,梕rèn,袵rèn,絍rèn,靭rèn,靱rèn,韌rèn,飪rèn,認rèn,餁rèn,扔rēng,仍réng,辸réng,礽réng,芿réng,日rì,驲rì,囸rì,釰rì,鈤rì,馹rì,戎róng,肜róng,栄róng,狨róng,绒róng,茙róng,茸róng,荣róng,容róng,峵róng,毧róng,烿róng,嵘róng,絨róng,羢róng,嫆róng,搈róng,摉róng,榵róng,溶róng,蓉róng,榕róng,榮róng,熔róng,瑢róng,穁róng,蝾róng,褣róng,镕róng,氄róng,縙róng,融róng,螎róng,駥róng,嬫róng,嶸róng,爃róng,鎔róng,瀜róng,蠑róng,媶róng,曧róng,冗rǒng,宂rǒng,傇rǒng,穃ròng,禸róu,柔róu,粈róu,媃róu,揉róu,渘róu,葇róu,瑈róu,腬róu,糅róu,蹂róu,輮róu,鍒róu,鞣róu,瓇róu,騥róu,鰇róu,鶔róu,楺rǒu,煣rǒu,韖rǒu,肉ròu,宍ròu,嶿rū,如rú,侞rú,帤rú,茹rú,桇rú,袽rú,铷rú,渪rú,筎rú,銣rú,蕠rú,儒rú,鴑rú,嚅rú,孺rú,濡rú,薷rú,鴽rú,曘rú,燸rú,襦rú,蠕rú,颥rú,醹rú,顬rú,偄rú,鱬rú,汝rǔ,肗rǔ,乳rǔ,辱rǔ,鄏rǔ,擩rǔ,入rù,扖rù,込rù,杁rù,洳rù,嗕rù,媷rù,溽rù,缛rù,蓐rù,鳰rù,褥rù,縟rù,壖ruán,阮ruǎn,朊ruǎn,软ruǎn,軟ruǎn,碝ruǎn,緛ruǎn,蝡ruǎn,瓀ruǎn,礝ruǎn,瑌ruǎn,撋ruí,桵ruí,甤ruí,緌ruí,蕤ruí,蕊ruǐ,橤ruǐ,繠ruǐ,蘂ruǐ,蘃ruǐ,惢ruǐ,芮ruì,枘ruì,蚋ruì,锐ruì,瑞ruì,睿ruì,銳ruì,叡ruì,壡ruì,润rùn,閏rùn,閠rùn,潤rùn,橍rùn,闰rùn,叒ruò,若ruò,偌ruò,弱ruò,鄀ruò,焫ruò,楉ruò,嵶ruò,蒻ruò,箬ruò,爇ruò,鰙ruò,鰯ruò,鶸ruò,仨sā,桬sā,撒sā,洒sǎ,訯sǎ,靸sǎ,灑sǎ,卅sà,飒sà,脎sà,萨sà,隡sà,馺sà,颯sà,薩sà,櫒sà,栍saeng,毢sāi,塞sāi,毸sāi,腮sāi,嘥sāi,噻sāi,鳃sāi,顋sāi,鰓sāi,嗮sǎi,赛sài,僿sài,賽sài,簺sài,虄sal,厁san,壭san,三sān,弎sān,叁sān,毵sān,毶sān,毿sān,犙sān,鬖sān,糂sān,糝sān,糣sān,彡sān,氵sān,伞sǎn,傘sǎn,馓sǎn,橵sǎn,糤sǎn,繖sǎn,饊sǎn,散sàn,俕sàn,閐sàn,潵sàn,桒sāng,桑sāng,槡sāng,嗓sǎng,搡sǎng,褬sǎng,颡sǎng,鎟sǎng,顙sǎng,磉sǎng,丧sàng,喪sàng,掻sāo,搔sāo,溞sāo,骚sāo,缫sāo,繅sāo,鳋sāo,颾sāo,騒sāo,騷sāo,鰠sāo,鱢sāo,扫sǎo,掃sǎo,嫂sǎo,臊sào,埽sào,瘙sào,氉sào,矂sào,髞sào,色sè,涩sè,啬sè,渋sè,铯sè,歮sè,嗇sè,瑟sè,歰sè,銫sè,澁sè,懎sè,擌sè,濇sè,濏sè,瘷sè,穑sè,澀sè,璱sè,瀒sè,穡sè,繬sè,穯sè,轖sè,鏼sè,譅sè,飋sè,愬sè,鎍sè,溹sè,栜sè,裇sed,聓sei,森sēn,僧sēng,鬙sēng,閪seo,縇seon,杀shā,沙shā,纱shā,乷shā,刹shā,砂shā,唦shā,挱shā,殺shā,猀shā,紗shā,莎shā,铩shā,痧shā,硰shā,蔱shā,裟shā,樧shā,魦shā,鲨shā,閷shā,鯊shā,鯋shā,繺shā,賖shā,啥shá,傻shǎ,儍shǎ,繌shǎ,倽shà,唼shà,萐shà,歃shà,煞shà,翜shà,翣shà,閯shà,霎shà,厦shà,廈shà,筛shāi,篩shāi,簁shāi,簛shāi,酾shāi,釃shāi,摋shǎi,晒shài,曬shài,纔shān,穇shān,凵shān,襂shān,山shān,邖shān,圸shān,删shān,杉shān,杣shān,芟shān,姍shān,姗shān,衫shān,钐shān,埏shān,狦shān,珊shān,舢shān,痁shān,軕shān,笘shān,釤shān,閊shān,跚shān,剼shān,搧shān,嘇shān,幓shān,煽shān,潸shān,澘shān,曑shān,檆shān,膻shān,鯅shān,羴shān,羶shān,炶shān,苫shān,柵shān,栅shān,刪shān,闪shǎn,陕shǎn,陝shǎn,閃shǎn,晱shǎn,睒shǎn,熌shǎn,覢shǎn,曏shǎn,笧shàn,讪shàn,汕shàn,疝shàn,扇shàn,訕shàn,赸shàn,傓shàn,善shàn,椫shàn,銏shàn,骟shàn,僐shàn,鄯shàn,缮shàn,嬗shàn,擅shàn,敾shàn,樿shàn,膳shàn,磰shàn,謆shàn,赡shàn,繕shàn,蟮shàn,譱shàn,贍shàn,鐥shàn,饍shàn,騸shàn,鳝shàn,灗shàn,鱔shàn,鱣shàn,墡shàn,裳shang,塲shāng,伤shāng,殇shāng,商shāng,觞shāng,傷shāng,墒shāng,慯shāng,滳shāng,蔏shāng,殤shāng,熵shāng,螪shāng,觴shāng,謪shāng,鬺shāng,坰shǎng,垧shǎng,晌shǎng,赏shǎng,賞shǎng,鑜shǎng,丄shàng,上shàng,仩shàng,尚shàng,恦shàng,绱shàng,緔shàng,弰shāo,捎shāo,梢shāo,烧shāo,焼shāo,稍shāo,筲shāo,艄shāo,蛸shāo,輎shāo,蕱shāo,燒shāo,髾shāo,鮹shāo,娋shāo,旓shāo,杓sháo,勺sháo,芍sháo,柖sháo,玿sháo,韶sháo,少shǎo,劭shào,卲shào,邵shào,绍shào,哨shào,袑shào,紹shào,潲shào,奢shē,猞shē,赊shē,輋shē,賒shē,檨shē,畲shē,舌shé,佘shé,蛇shé,蛥shé,磼shé,折shé,舍shě,捨shě,厍shè,设shè,社shè,舎shè,厙shè,射shè,涉shè,涻shè,設shè,赦shè,弽shè,慑shè,摄shè,滠shè,慴shè,摵shè,蔎shè,韘shè,騇shè,懾shè,攝shè,麝shè,欇shè,挕shè,蠂shè,堔shen,叄shēn,糁shēn,申shēn,屾shēn,扟shēn,伸shēn,身shēn,侁shēn,呻shēn,妽shēn,籶shēn,绅shēn,诜shēn,柛shēn,氠shēn,珅shēn,穼shēn,籸shēn,娠shēn,峷shēn,甡shēn,眒shēn,砷shēn,深shēn,紳shēn,兟shēn,椮shēn,葠shēn,裑shēn,訷shēn,罧shēn,蓡shēn,詵shēn,甧shēn,蔘shēn,燊shēn,薓shēn,駪shēn,鲹shēn,鯓shēn,鵢shēn,鯵shēn,鰺shēn,莘shēn,叅shēn,神shén,榊shén,鰰shén,棯shěn,槮shěn,邥shěn,弞shěn,沈shěn,审shěn,矤shěn,矧shěn,谂shěn,谉shěn,婶shěn,渖shěn,訠shěn,審shěn,頣shěn,魫shěn,曋shěn,瞫shěn,嬸shěn,覾shěn,讅shěn,哂shěn,肾shèn,侺shèn,昚shèn,甚shèn,胂shèn,眘shèn,渗shèn,祳shèn,脤shèn,腎shèn,愼shèn,慎shèn,瘆shèn,蜃shèn,滲shèn,鋠shèn,瘮shèn,葚shèn,升shēng,生shēng,阩shēng,呏shēng,声shēng,斘shēng,昇shēng,枡shēng,泩shēng,苼shēng,殅shēng,牲shēng,珄shēng,竔shēng,陞shēng,曻shēng,陹shēng,笙shēng,湦shēng,焺shēng,甥shēng,鉎shēng,聲shēng,鍟shēng,鵿shēng,鼪shēng,绳shéng,縄shéng,憴shéng,繩shéng,譝shéng,省shěng,眚shěng,偗shěng,渻shěng,胜shèng,圣shèng,晟shèng,晠shèng,剰shèng,盛shèng,剩shèng,勝shèng,貹shèng,嵊shèng,聖shèng,墭shèng,榺shèng,蕂shèng,橳shèng,賸shèng,鳾shi,觢shi,尸shī,师shī,呞shī,虱shī,诗shī,邿shī,鸤shī,屍shī,施shī,浉shī,狮shī,師shī,絁shī,湤shī,湿shī,葹shī,溮shī,溼shī,獅shī,蒒shī,蓍shī,詩shī,瑡shī,鳲shī,蝨shī,鲺shī,濕shī,鍦shī,鯴shī,鰤shī,鶳shī,襹shī,籭shī,魳shī,失shī,褷shī,匙shí,十shí,什shí,石shí,辻shí,佦shí,时shí,竍shí,识shí,实shí,実shí,旹shí,飠shí,峕shí,拾shí,炻shí,祏shí,蚀shí,食shí,埘shí,寔shí,湜shí,遈shí,塒shí,嵵shí,溡shí,鉐shí,實shí,榯shí,蝕shí,鉽shí,篒shí,鲥shí,鮖shí,鼫shí,識shí,鼭shí,鰣shí,時shí,史shǐ,矢shǐ,乨shǐ,豕shǐ,使shǐ,始shǐ,驶shǐ,兘shǐ,屎shǐ,榁shǐ,鉂shǐ,駛shǐ,笶shǐ,饣shì,莳shì,蒔shì,士shì,氏shì,礻shì,世shì,丗shì,仕shì,市shì,示shì,卋shì,式shì,事shì,侍shì,势shì,呩shì,视shì,试shì,饰shì,冟shì,室shì,恀shì,恃shì,拭shì,枾shì,柿shì,眂shì,贳shì,适shì,栻shì,烒shì,眎shì,眡shì,舐shì,轼shì,逝shì,铈shì,視shì,釈shì,弑shì,揓shì,谥shì,貰shì,释shì,勢shì,嗜shì,弒shì,煶shì,睗shì,筮shì,試shì,軾shì,鈰shì,鉃shì,飾shì,舓shì,誓shì,適shì,奭shì,噬shì,嬕shì,澨shì,諡shì,遾shì,螫shì,簭shì,籂shì,襫shì,釋shì,鰘shì,佀shì,鎩shì,是shì,収shōu,收shōu,手shǒu,守shǒu,垨shǒu,首shǒu,艏shǒu,醻shòu,寿shòu,受shòu,狩shòu,兽shòu,售shòu,授shòu,绶shòu,痩shòu,膄shòu,壽shòu,瘦shòu,綬shòu,夀shòu,獣shòu,獸shòu,鏉shòu,书shū,殳shū,抒shū,纾shū,叔shū,枢shū,姝shū,柕shū,倏shū,倐shū,書shū,殊shū,紓shū,掓shū,梳shū,淑shū,焂shū,菽shū,軗shū,鄃shū,疎shū,疏shū,舒shū,摅shū,毹shū,毺shū,綀shū,输shū,踈shū,樞shū,蔬shū,輸shū,鮛shū,瀭shū,鵨shū,陎shū,尗shú,秫shú,婌shú,孰shú,赎shú,塾shú,熟shú,璹shú,贖shú,暑shǔ,黍shǔ,署shǔ,鼠shǔ,鼡shǔ,蜀shǔ,潻shǔ,薯shǔ,曙shǔ,癙shǔ,糬shǔ,籔shǔ,蠴shǔ,鱰shǔ,属shǔ,屬shǔ,鱪shǔ,丨shù,术shù,戍shù,束shù,沭shù,述shù,怷shù,树shù,竖shù,荗shù,恕shù,庶shù,庻shù,絉shù,蒁shù,術shù,裋shù,数shù,竪shù,腧shù,墅shù,漱shù,潄shù,數shù,豎shù,樹shù,濖shù,錰shù,鏣shù,鶐shù,虪shù,捒shù,忄shù,澍shù,刷shuā,唰shuā,耍shuǎ,誜shuà,缞shuāi,縗shuāi,衰shuāi,摔shuāi,甩shuǎi,帅shuài,帥shuài,蟀shuài,闩shuān,拴shuān,閂shuān,栓shuān,涮shuàn,腨shuàn,双shuāng,脽shuí,誰shuí,水shuǐ,氺shuǐ,閖shuǐ,帨shuì,涗shuì,涚shuì,稅shuì,税shuì,裞shuì,説shuì,睡shuì,吮shǔn,顺shùn,舜shùn,順shùn,蕣shùn,橓shùn,瞚shùn,瞤shùn,瞬shùn,鬊shùn,说shuō,說shuō,妁shuò,烁shuò,朔shuò,铄shuò,欶shuò,硕shuò,矟shuò,搠shuò,蒴shuò,槊shuò,碩shuò,爍shuò,鑠shuò,洬shuò,燿shuò,鎙shuò,愢sī,厶sī,丝sī,司sī,糹sī,私sī,咝sī,泀sī,俬sī,思sī,恖sī,鸶sī,媤sī,斯sī,絲sī,缌sī,蛳sī,楒sī,禗sī,鉰sī,飔sī,凘sī,厮sī,榹sī,禠sī,罳sī,锶sī,嘶sī,噝sī,廝sī,撕sī,澌sī,緦sī,蕬sī,螄sī,鍶sī,蟖sī,蟴sī,颸sī,騦sī,鐁sī,鷥sī,鼶sī,鷉sī,銯sī,死sǐ,灬sì,巳sì,亖sì,四sì,罒sì,寺sì,汜sì,伺sì,似sì,姒sì,泤sì,祀sì,価sì,孠sì,泗sì,饲sì,驷sì,俟sì,娰sì,柶sì,牭sì,洍sì,涘sì,肂sì,飤sì,笥sì,耜sì,釲sì,竢sì,覗sì,嗣sì,肆sì,貄sì,鈻sì,飼sì,禩sì,駟sì,儩sì,瀃sì,兕sì,蕼sì,螦so,乺sol,忪sōng,松sōng,枀sōng,枩sōng,娀sōng,柗sōng,倯sōng,凇sōng,梥sōng,崧sōng,庺sōng,淞sōng,菘sōng,嵩sōng,硹sōng,蜙sōng,憽sōng,檧sōng,濍sōng,怂sǒng,悚sǒng,耸sǒng,竦sǒng,愯sǒng,嵷sǒng,慫sǒng,聳sǒng,駷sǒng,鬆sòng,讼sòng,宋sòng,诵sòng,送sòng,颂sòng,訟sòng,頌sòng,誦sòng,餸sòng,鎹sòng,凁sōu,捜sōu,鄋sōu,嗖sōu,廀sōu,廋sōu,搜sōu,溲sōu,獀sōu,蒐sōu,蓃sōu,馊sōu,飕sōu,摗sōu,锼sōu,螋sōu,醙sōu,鎪sōu,餿sōu,颼sōu,騪sōu,叜sōu,艘sōu,叟sǒu,傁sǒu,嗾sǒu,瞍sǒu,擞sǒu,薮sǒu,擻sǒu,藪sǒu,櫢sǒu,嗽sòu,瘶sòu,苏sū,甦sū,酥sū,稣sū,窣sū,穌sū,鯂sū,蘇sū,蘓sū,櫯sū,囌sū,卹sū,俗sú,玊sù,诉sù,泝sù,肃sù,涑sù,珟sù,素sù,速sù,殐sù,粛sù,骕sù,傃sù,粟sù,訴sù,谡sù,嗉sù,塐sù,塑sù,嫊sù,愫sù,溯sù,溸sù,肅sù,遡sù,鹔sù,僳sù,榡sù,蔌sù,觫sù,趚sù,遬sù,憟sù,樎sù,樕sù,潥sù,鋉sù,餗sù,縤sù,璛sù,簌sù,藗sù,謖sù,蹜sù,驌sù,鱐sù,鷫sù,埣sù,夙sù,膆sù,狻suān,痠suān,酸suān,匴suǎn,祘suàn,笇suàn,筭suàn,蒜suàn,算suàn,夊suī,芕suī,虽suī,倠suī,哸suī,荽suī,荾suī,眭suī,滖suī,睢suī,濉suī,鞖suī,雖suī,簑suī,绥suí,隋suí,随suí,遀suí,綏suí,隨suí,瓍suí,遂suí,瀡suǐ,髄suǐ,髓suǐ,亗suì,岁suì,砕suì,谇suì,歲suì,歳suì,煫suì,碎suì,隧suì,嬘suì,澻suì,穂suì,誶suì,賥suì,檖suì,燧suì,璲suì,禭suì,穗suì,穟suì,襚suì,邃suì,旞suì,繐suì,繸suì,鐆suì,鐩suì,祟suì,譢suì,孙sūn,狲sūn,荪sūn,孫sūn,飧sūn,搎sūn,猻sūn,蓀sūn,槂sūn,蕵sūn,薞sūn,畃sún,损sǔn,笋sǔn,隼sǔn,筍sǔn,損sǔn,榫sǔn,箰sǔn,鎨sǔn,巺sùn,潠sùn,嗍suō,唆suō,娑suō,莏suō,傞suō,桫suō,梭suō,睃suō,嗦suō,羧suō,蓑suō,摍suō,缩suō,趖suō,簔suō,縮suō,髿suō,鮻suō,挲suō,所suǒ,唢suǒ,索suǒ,琐suǒ,琑suǒ,锁suǒ,嗩suǒ,暛suǒ,溑suǒ,瑣suǒ,鎖suǒ,鎻suǒ,鏁suǒ,嵗suò,蜶suò,逤suò,侤ta,澾ta,她tā,他tā,它tā,祂tā,咜tā,趿tā,铊tā,塌tā,榙tā,溻tā,鉈tā,褟tā,遢tā,蹹tá,塔tǎ,墖tǎ,獭tǎ,鳎tǎ,獺tǎ,鰨tǎ,沓tà,挞tà,狧tà,闼tà,崉tà,涾tà,遝tà,阘tà,榻tà,毾tà,禢tà,撻tà,誻tà,踏tà,嚃tà,錔tà,嚺tà,濌tà,蹋tà,鞜tà,闒tà,鞳tà,闥tà,譶tà,躢tà,傝tà,襨tae,漦tāi,咍tāi,囼tāi,孡tāi,胎tāi,駘tāi,檯tāi,斄tái,台tái,邰tái,坮tái,苔tái,炱tái,炲tái,菭tái,跆tái,鲐tái,箈tái,臺tái,颱tái,儓tái,鮐tái,嬯tái,擡tái,薹tái,籉tái,抬tái,呔tǎi,忕tài,太tài,冭tài,夳tài,忲tài,汰tài,态tài,肽tài,钛tài,泰tài,粏tài,舦tài,酞tài,鈦tài,溙tài,燤tài,態tài,坍tān,贪tān,怹tān,啴tān,痑tān,舑tān,貪tān,摊tān,滩tān,嘽tān,潬tān,瘫tān,擹tān,攤tān,灘tān,癱tān,镡tán,蕁tán,坛tán,昙tán,谈tán,郯tán,婒tán,覃tán,榃tán,痰tán,锬tán,谭tán,墵tán,憛tán,潭tán,談tán,壇tán,曇tán,錟tán,檀tán,顃tán,罈tán,藫tán,壜tán,譚tán,貚tán,醰tán,譠tán,罎tán,鷤tán,埮tán,鐔tán,墰tán,忐tǎn,坦tǎn,袒tǎn,钽tǎn,菼tǎn,毯tǎn,鉭tǎn,嗿tǎn,憳tǎn,憻tǎn,醓tǎn,璮tǎn,襢tǎn,緂tǎn,暺tǎn,叹tàn,炭tàn,探tàn,湠tàn,僋tàn,嘆tàn,碳tàn,舕tàn,歎tàn,汤tāng,铴tāng,湯tāng,嘡tāng,劏tāng,羰tāng,蝪tāng,薚tāng,蹚tāng,鐋tāng,鞺tāng,闛tāng,耥tāng,鼞tāng,镗táng,鏜táng,饧táng,坣táng,唐táng,堂táng,傏táng,啺táng,棠táng,鄌táng,塘táng,搪táng,溏táng,蓎táng,隚táng,榶táng,漟táng,煻táng,瑭táng,禟táng,膅táng,樘táng,磄táng,糃táng,膛táng,橖táng,篖táng,糖táng,螗táng,踼táng,糛táng,赯táng,醣táng,餳táng,鎕táng,餹táng,饄táng,鶶táng,螳táng,攩tǎng,伖tǎng,帑tǎng,倘tǎng,淌tǎng,傥tǎng,躺tǎng,镋tǎng,鎲tǎng,儻tǎng,戃tǎng,曭tǎng,爣tǎng,矘tǎng,钂tǎng,烫tàng,摥tàng,趟tàng,燙tàng,漡tàng,焘tāo,轁tāo,涭tāo,仐tāo,弢tāo,绦tāo,掏tāo,絛tāo,詜tāo,嫍tāo,幍tāo,慆tāo,搯tāo,滔tāo,槄tāo,瑫tāo,韬tāo,飸tāo,縚tāo,縧tāo,濤tāo,謟tāo,鞱tāo,韜tāo,饕tāo,饀tāo,燾tāo,涛tāo,迯táo,咷táo,洮táo,逃táo,桃táo,陶táo,啕táo,梼táo,淘táo,萄táo,祹táo,裪táo,綯táo,蜪táo,鞀táo,醄táo,鞉táo,鋾táo,駣táo,檮táo,騊táo,鼗táo,绹táo,讨tǎo,討tǎo,套tào,畓tap,忑tè,特tè,貣tè,脦tè,犆tè,铽tè,慝tè,鋱tè,蟘tè,螣tè,鰧teng,膯tēng,鼟tēng,疼téng,痋téng,幐téng,腾téng,誊téng,漛téng,滕téng,邆téng,縢téng,駦téng,謄téng,儯téng,藤téng,騰téng,籐téng,籘téng,虅téng,驣téng,霯tèng,唞teo,朰teul,剔tī,梯tī,锑tī,踢tī,銻tī,鷈tī,鵜tī,躰tī,骵tī,軆tī,擿tī,姼tí,褆tí,扌tí,虒tí,磃tí,绨tí,偍tí,啼tí,媞tí,崹tí,惿tí,提tí,稊tí,缇tí,罤tí,遆tí,鹈tí,嗁tí,瑅tí,綈tí,徲tí,漽tí,緹tí,蕛tí,蝭tí,题tí,趧tí,蹄tí,醍tí,謕tí,鍗tí,題tí,鮷tí,騠tí,鯷tí,鶗tí,鶙tí,穉tí,厗tí,鳀tí,徥tǐ,体tǐ,挮tǐ,體tǐ,衹tǐ,戻tì,屉tì,剃tì,洟tì,倜tì,悌tì,涕tì,逖tì,屜tì,悐tì,惕tì,掦tì,逷tì,惖tì,替tì,裼tì,褅tì,歒tì,殢tì,髰tì,薙tì,嚏tì,鬀tì,嚔tì,瓋tì,籊tì,鐟tì,楴tì,天tiān,兲tiān,婖tiān,添tiān,酟tiān,靔tiān,黇tiān,靝tiān,呑tiān,瞋tián,田tián,屇tián,沺tián,恬tián,畋tián,畑tián,盷tián,胋tián,甛tián,甜tián,菾tián,湉tián,塡tián,填tián,搷tián,阗tián,碵tián,磌tián,窴tián,鴫tián,璳tián,闐tián,鷆tián,鷏tián,餂tián,寘tián,畠tián,鍩tiǎn,忝tiǎn,殄tiǎn,倎tiǎn,唺tiǎn,悿tiǎn,捵tiǎn,淟tiǎn,晪tiǎn,琠tiǎn,腆tiǎn,觍tiǎn,睓tiǎn,覥tiǎn,賟tiǎn,錪tiǎn,娗tiǎn,铦tiǎn,銛tiǎn,紾tiǎn,舔tiǎn,掭tiàn,瑱tiàn,睼tiàn,舚tiàn,旫tiāo,佻tiāo,庣tiāo,挑tiāo,祧tiāo,聎tiāo,苕tiáo,萔tiáo,芀tiáo,条tiáo,岧tiáo,岹tiáo,迢tiáo,祒tiáo,條tiáo,笤tiáo,蓚tiáo,蓨tiáo,龆tiáo,樤tiáo,蜩tiáo,鋚tiáo,髫tiáo,鲦tiáo,螩tiáo,鯈tiáo,鎥tiáo,齠tiáo,鰷tiáo,趒tiáo,銚tiáo,儵tiáo,鞗tiáo,宨tiǎo,晀tiǎo,朓tiǎo,脁tiǎo,窕tiǎo,窱tiǎo,眺tiào,粜tiào,覜tiào,跳tiào,頫tiào,糶tiào,怗tiē,贴tiē,萜tiē,聑tiē,貼tiē,帖tiē,蛈tiě,僣tiě,鴩tiě,鐵tiě,驖tiě,铁tiě,呫tiè,飻tiè,餮tiè,厅tīng,庁tīng,汀tīng,听tīng,耓tīng,厛tīng,烃tīng,烴tīng,綎tīng,鞓tīng,聴tīng,聼tīng,廰tīng,聽tīng,渟tīng,廳tīng,邒tíng,廷tíng,亭tíng,庭tíng,莛tíng,停tíng,婷tíng,嵉tíng,筳tíng,葶tíng,蜓tíng,楟tíng,榳tíng,閮tíng,霆tíng,聤tíng,蝏tíng,諪tíng,鼮tíng,珵tǐng,侱tǐng,圢tǐng,侹tǐng,挺tǐng,涏tǐng,梃tǐng,烶tǐng,珽tǐng,脡tǐng,颋tǐng,誔tǐng,頲tǐng,艇tǐng,乭tol,囲tōng,炵tōng,通tōng,痌tōng,嗵tōng,蓪tōng,樋tōng,熥tōng,爞tóng,冂tóng,燑tóng,仝tóng,同tóng,佟tóng,彤tóng,峂tóng,庝tóng,哃tóng,狪tóng,茼tóng,晍tóng,桐tóng,浵tóng,砼tóng,蚒tóng,秱tóng,铜tóng,童tóng,粡tóng,赨tóng,酮tóng,鉖tóng,僮tóng,鉵tóng,銅tóng,餇tóng,鲖tóng,潼tóng,獞tóng,曈tóng,朣tóng,橦tóng,氃tóng,犝tóng,膧tóng,瞳tóng,穜tóng,鮦tóng,眮tóng,统tǒng,捅tǒng,桶tǒng,筒tǒng,綂tǒng,統tǒng,恸tòng,痛tòng,慟tòng,憅tòng,偷tōu,偸tōu,鍮tōu,头tóu,投tóu,骰tóu,緰tóu,頭tóu,钭tǒu,妵tǒu,紏tǒu,敨tǒu,斢tǒu,黈tǒu,蘣tǒu,埱tòu,透tòu,綉tòu,宊tū,瑹tū,凸tū,禿tū,秃tū,突tū,涋tū,捸tū,堗tū,湥tū,痜tū,葖tū,嶀tū,鋵tū,鵚tū,鼵tū,唋tū,図tú,图tú,凃tú,峹tú,庩tú,徒tú,捈tú,涂tú,荼tú,途tú,屠tú,梌tú,揬tú,稌tú,塗tú,嵞tú,瘏tú,筡tú,鈯tú,圖tú,圗tú,廜tú,潳tú,酴tú,馟tú,鍎tú,駼tú,鵌tú,鶟tú,鷋tú,鷵tú,兎tú,菟tú,蒤tú,土tǔ,圡tǔ,吐tǔ,汢tǔ,钍tǔ,釷tǔ,迌tù,兔tù,莵tù,堍tù,鵵tù,湍tuān,猯tuān,煓tuān,蓴tuán,团tuán,団tuán,抟tuán,剸tuán,團tuán,塼tuán,慱tuán,摶tuán,槫tuán,漙tuán,篿tuán,檲tuán,鏄tuán,糰tuán,鷒tuán,鷻tuán,嫥tuán,鱄tuán,圕tuǎn,疃tuǎn,畽tuǎn,彖tuàn,湪tuàn,褖tuàn,貒tuàn,忒tuī,推tuī,蓷tuī,藬tuī,焞tuī,騩tuí,墤tuí,颓tuí,隤tuí,尵tuí,頹tuí,頺tuí,魋tuí,穨tuí,蘈tuí,蹪tuí,僓tuí,頽tuí,俀tuǐ,脮tuǐ,腿tuǐ,蹆tuǐ,骽tuǐ,退tuì,娧tuì,煺tuì,蛻tuì,蜕tuì,褪tuì,駾tuì,噋tūn,汭tūn,吞tūn,旽tūn,啍tūn,朜tūn,暾tūn,黗tūn,屯tún,忳tún,芚tún,饨tún,豚tún,軘tún,飩tún,鲀tún,魨tún,霕tún,臀tún,臋tún,坉tún,豘tún,氽tǔn,舃tuō,乇tuō,讬tuō,托tuō,汑tuō,饦tuō,杔tuō,侂tuō,咃tuō,拕tuō,拖tuō,侻tuō,挩tuō,捝tuō,莌tuō,袥tuō,託tuō,涶tuō,脱tuō,飥tuō,馲tuō,魠tuō,驝tuō,棁tuō,脫tuō,鱓tuó,鋖tuó,牠tuó,驮tuó,佗tuó,陀tuó,陁tuó,坨tuó,岮tuó,沱tuó,驼tuó,柁tuó,砣tuó,砤tuó,袉tuó,鸵tuó,紽tuó,堶tuó,跎tuó,酡tuó,碢tuó,馱tuó,槖tuó,踻tuó,駞tuó,橐tuó,鮀tuó,鴕tuó,鼧tuó,騨tuó,鼍tuó,驒tuó,鼉tuó,迆tuó,駝tuó,軃tuǒ,妥tuǒ,毤tuǒ,庹tuǒ,椭tuǒ,楕tuǒ,鵎tuǒ,拓tuò,柝tuò,唾tuò,萚tuò,跅tuò,毻tuò,箨tuò,蘀tuò,籜tuò,哇wa,窐wā,劸wā,徍wā,挖wā,洼wā,娲wā,畖wā,窊wā,媧wā,嗗wā,蛙wā,搲wā,溛wā,漥wā,窪wā,鼃wā,攨wā,屲wā,姽wá,譁wá,娃wá,瓦wǎ,佤wǎ,邷wǎ,咓wǎ,瓲wǎ,砙wǎ,韎wà,帓wà,靺wà,袜wà,聉wà,嗢wà,腽wà,膃wà,韈wà,韤wà,襪wà,咼wāi,瀤wāi,歪wāi,喎wāi,竵wāi,崴wǎi,外wài,顡wài,関wān,闗wān,夘wān,乛wān,弯wān,剜wān,婠wān,帵wān,塆wān,湾wān,睕wān,蜿wān,潫wān,豌wān,彎wān,壪wān,灣wān,埦wān,捥wān,丸wán,刓wán,汍wán,纨wán,芄wán,完wán,岏wán,忨wán,玩wán,笂wán,紈wán,捖wán,顽wán,烷wán,琓wán,貦wán,頑wán,蚖wán,抏wán,邜wǎn,宛wǎn,倇wǎn,唍wǎn,挽wǎn,晚wǎn,盌wǎn,莞wǎn,婉wǎn,惋wǎn,晩wǎn,梚wǎn,绾wǎn,脘wǎn,菀wǎn,晼wǎn,椀wǎn,琬wǎn,皖wǎn,碗wǎn,綩wǎn,綰wǎn,輓wǎn,鋔wǎn,鍐wǎn,莬wǎn,惌wǎn,魭wǎn,夗wǎn,畹wǎn,輐wàn,鄤wàn,孯wàn,掔wàn,万wàn,卍wàn,卐wàn,妧wàn,杤wàn,腕wàn,萬wàn,翫wàn,鋄wàn,薍wàn,錽wàn,贃wàn,鎫wàn,贎wàn,脕wàn,尩wāng,尪wāng,尫wāng,汪wāng,瀇wāng,亡wáng,仼wáng,彺wáng,莣wáng,蚟wáng,王wáng,抂wǎng,网wǎng,忹wǎng,往wǎng,徃wǎng,枉wǎng,罔wǎng,惘wǎng,菵wǎng,暀wǎng,棢wǎng,焹wǎng,蛧wǎng,辋wǎng,網wǎng,蝄wǎng,誷wǎng,輞wǎng,魍wǎng,迬wǎng,琞wàng,妄wàng,忘wàng,迋wàng,旺wàng,盳wàng,望wàng,朢wàng,威wēi,烓wēi,偎wēi,逶wēi,隇wēi,隈wēi,喴wēi,媁wēi,媙wēi,愄wēi,揋wēi,揻wēi,渨wēi,煀wēi,葨wēi,葳wēi,微wēi,椳wēi,楲wēi,溦wēi,煨wēi,詴wēi,縅wēi,蝛wēi,覣wēi,嶶wēi,薇wēi,燰wēi,鳂wēi,癐wēi,鰃wēi,鰄wēi,嵔wēi,蜲wēi,危wēi,巍wēi,恑wéi,撝wéi,囗wéi,为wéi,韦wéi,围wéi,帏wéi,沩wéi,违wéi,闱wéi,峗wéi,峞wéi,洈wéi,為wéi,韋wéi,桅wéi,涠wéi,唯wéi,帷wéi,惟wéi,维wéi,喡wéi,圍wéi,嵬wéi,幃wéi,湋wéi,溈wéi,琟wéi,潍wéi,維wéi,蓶wéi,鄬wéi,潿wéi,醀wéi,濰wéi,鍏wéi,闈wéi,鮠wéi,癓wéi,覹wéi,犩wéi,霺wéi,僞wéi,寪wéi,觹wéi,觽wéi,觿wéi,欈wéi,違wéi,趡wěi,磈wěi,瓗wěi,膸wěi,撱wěi,鰖wěi,伟wěi,伪wěi,尾wěi,纬wěi,芛wěi,苇wěi,委wěi,炜wěi,玮wěi,洧wěi,娓wěi,捤wěi,浘wěi,诿wěi,偉wěi,偽wěi,崣wěi,梶wěi,硊wěi,萎wěi,隗wěi,骩wěi,廆wěi,徫wěi,愇wěi,猥wěi,葦wěi,蒍wěi,骪wěi,骫wěi,暐wěi,椲wěi,煒wěi,瑋wěi,痿wěi,腲wěi,艉wěi,韪wěi,碨wěi,鲔wěi,緯wěi,蔿wěi,諉wěi,踓wěi,韑wěi,頠wěi,薳wěi,儰wěi,濻wěi,鍡wěi,鮪wěi,壝wěi,韙wěi,颹wěi,瀢wěi,韡wěi,亹wěi,斖wěi,茟wěi,蜹wèi,爲wèi,卫wèi,未wèi,位wèi,味wèi,苿wèi,畏wèi,胃wèi,叞wèi,軎wèi,尉wèi,菋wèi,谓wèi,喂wèi,媦wèi,渭wèi,猬wèi,煟wèi,墛wèi,蔚wèi,慰wèi,熭wèi,犚wèi,磑wèi,緭wèi,蝟wèi,衛wèi,懀wèi,濊wèi,璏wèi,罻wèi,衞wèi,謂wèi,錗wèi,餧wèi,鮇wèi,螱wèi,褽wèi,餵wèi,魏wèi,藯wèi,鏏wèi,霨wèi,鳚wèi,蘶wèi,饖wèi,讆wèi,躗wèi,讏wèi,躛wèi,荱wèi,蜼wèi,硙wèi,轊wèi,昷wēn,塭wēn,温wēn,榅wēn,殟wēn,溫wēn,瑥wēn,辒wēn,榲wēn,瘟wēn,豱wēn,輼wēn,鳁wēn,鎾wēn,饂wēn,鰛wēn,鰮wēn,褞wēn,缊wēn,緼wēn,蕰wēn,縕wēn,薀wēn,藴wēn,鴖wén,亠wén,文wén,彣wén,纹wén,炆wén,砇wén,闻wén,紋wén,蚉wén,蚊wén,珳wén,阌wén,鈫wén,雯wén,瘒wén,聞wén,馼wén,魰wén,鳼wén,鴍wén,螡wén,閺wén,閿wén,蟁wén,闅wén,鼤wén,闦wén,芠wén,呅wěn,忞wěn,歾wěn,刎wěn,吻wěn,呚wěn,忟wěn,抆wěn,呡wěn,紊wěn,桽wěn,脗wěn,稳wěn,穏wěn,穩wěn,肳wěn,问wèn,妏wèn,汶wèn,問wèn,渂wèn,搵wèn,絻wèn,顐wèn,璺wèn,翁wēng,嗡wēng,鹟wēng,螉wēng,鎓wēng,鶲wēng,滃wēng,奣wěng,塕wěng,嵡wěng,蓊wěng,瞈wěng,聬wěng,暡wěng,瓮wèng,蕹wèng,甕wèng,罋wèng,齆wèng,堝wō,濄wō,薶wō,捼wō,挝wō,倭wō,涡wō,莴wō,唩wō,涹wō,渦wō,猧wō,萵wō,喔wō,窝wō,窩wō,蜗wō,撾wō,蝸wō,踒wō,涴wó,我wǒ,婐wǒ,婑wǒ,捰wǒ,龏wò,蒦wò,嚄wò,雘wò,艧wò,踠wò,仴wò,沃wò,肟wò,臥wò,偓wò,捾wò,媉wò,幄wò,握wò,渥wò,硪wò,楃wò,腛wò,斡wò,瞃wò,濣wò,瓁wò,龌wò,齷wò,枂wò,馧wò,卧wò,扝wū,乌wū,圬wū,弙wū,污wū,邬wū,呜wū,杇wū,巫wū,屋wū,洿wū,钨wū,烏wū,趶wū,剭wū,窏wū,釫wū,鄔wū,嗚wū,誈wū,誣wū,箼wū,螐wū,鴮wū,鎢wū,鰞wū,兀wū,杅wū,诬wū,幠wú,譕wú,蟱wú,墲wú,亾wú,兦wú,无wú,毋wú,吳wú,吴wú,吾wú,呉wú,芜wú,郚wú,娪wú,梧wú,洖wú,浯wú,茣wú,珸wú,祦wú,鹀wú,無wú,禑wú,蜈wú,蕪wú,璑wú,鵐wú,鯃wú,鼯wú,鷡wú,俉wú,憮wú,橆wú,铻wú,鋙wú,莁wú,陚wǔ,瞴wǔ,娒wǔ,乄wǔ,五wǔ,午wǔ,仵wǔ,伍wǔ,妩wǔ,庑wǔ,忤wǔ,怃wǔ,迕wǔ,旿wǔ,武wǔ,玝wǔ,侮wǔ,倵wǔ,捂wǔ,娬wǔ,牾wǔ,珷wǔ,摀wǔ,熓wǔ,碔wǔ,鹉wǔ,瑦wǔ,舞wǔ,嫵wǔ,廡wǔ,潕wǔ,錻wǔ,儛wǔ,甒wǔ,鵡wǔ,躌wǔ,逜wǔ,膴wǔ,啎wǔ,噁wù,雺wù,渞wù,揾wù,坞wù,塢wù,勿wù,务wù,戊wù,阢wù,伆wù,屼wù,扤wù,岉wù,杌wù,忢wù,物wù,矹wù,敄wù,误wù,務wù,悞wù,悟wù,悮wù,粅wù,晤wù,焐wù,婺wù,嵍wù,痦wù,隖wù,靰wù,骛wù,奦wù,嵨wù,溩wù,雾wù,寤wù,熃wù,誤wù,鹜wù,鋈wù,窹wù,鼿wù,霧wù,齀wù,騖wù,鶩wù,芴wù,霚wù,扱xī,糦xī,宩xī,獡xī,蜤xī,燍xī,夕xī,兮xī,汐xī,西xī,覀xī,吸xī,希xī,扸xī,卥xī,昔xī,析xī,矽xī,穸xī,肹xī,俙xī,徆xī,怸xī,郗xī,饻xī,唏xī,奚xī,屖xī,息xī,悕xī,晞xī,氥xī,浠xī,牺xī,狶xī,莃xī,唽xī,悉xī,惜xī,桸xī,欷xī,淅xī,渓xī,烯xī,焁xī,焈xī,琋xī,硒xī,菥xī,赥xī,釸xī,傒xī,惁xī,晰xī,晳xī,焟xī,犀xī,睎xī,稀xī,粞xī,翕xī,翖xī,舾xī,鄎xī,厀xī,嵠xī,徯xī,溪xī,煕xī,皙xī,蒠xī,锡xī,僖xī,榽xī,熄xī,熙xī,緆xī,蜥xī,豨xī,餏xī,嘻xī,噏xī,嬆xī,嬉xī,膝xī,餙xī,凞xī,樨xī,橀xī,歙xī,熹xī,熺xī,熻xī,窸xī,羲xī,螅xī,錫xī,燨xī,犠xī,瞦xī,礂xī,蟋xī,豀xī,豯xī,貕xī,繥xī,鯑xī,鵗xī,譆xī,鏭xī,隵xī,巇xī,曦xī,爔xī,犧xī,酅xī,鼷xī,蠵xī,鸂xī,鑴xī,憘xī,暿xī,鱚xī,咥xī,訢xī,娭xī,瘜xī,醯xī,雭xí,习xí,郋xí,席xí,習xí,袭xí,觋xí,媳xí,椺xí,蒵xí,蓆xí,嶍xí,漝xí,覡xí,趘xí,薂xí,檄xí,謵xí,鎴xí,霫xí,鳛xí,飁xí,騱xí,騽xí,襲xí,鰼xí,驨xí,隰xí,囍xǐ,杫xǐ,枲xǐ,洗xǐ,玺xǐ,徙xǐ,铣xǐ,喜xǐ,葈xǐ,葸xǐ,鈢xǐ,屣xǐ,漇xǐ,蓰xǐ,銑xǐ,憙xǐ,橲xǐ,禧xǐ,諰xǐ,壐xǐ,縰xǐ,謑xǐ,蟢xǐ,蹝xǐ,璽xǐ,躧xǐ,鉩xǐ,欪xì,钑xì,鈒xì,匸xì,卌xì,戏xì,屃xì,系xì,饩xì,呬xì,忥xì,怬xì,细xì,係xì,恄xì,绤xì,釳xì,阋xì,塈xì,椞xì,舄xì,趇xì,隙xì,慀xì,滊xì,禊xì,綌xì,赩xì,隟xì,熂xì,犔xì,潟xì,澙xì,蕮xì,覤xì,黖xì,戲xì,磶xì,虩xì,餼xì,鬩xì,嚱xì,霼xì,衋xì,細xì,闟xì,虾xiā,谺xiā,傄xiā,閕xiā,敮xiā,颬xiā,瞎xiā,蝦xiā,鰕xiā,魻xiā,郃xiá,匣xiá,侠xiá,狎xiá,俠xiá,峡xiá,柙xiá,炠xiá,狭xiá,陜xiá,峽xiá,烚xiá,狹xiá,珨xiá,祫xiá,硖xiá,舺xiá,陿xiá,溊xiá,硤xiá,遐xiá,暇xiá,瑕xiá,筪xiá,碬xiá,舝xiá,辖xiá,縀xiá,蕸xiá,縖xiá,赮xiá,轄xiá,鍜xiá,霞xiá,鎋xiá,黠xiá,騢xiá,鶷xiá,睱xiá,翈xiá,昰xià,丅xià,下xià,吓xià,圷xià,夏xià,梺xià,嚇xià,懗xià,罅xià,鏬xià,疜xià,姺xiān,仙xiān,仚xiān,屳xiān,先xiān,奾xiān,纤xiān,佡xiān,忺xiān,氙xiān,祆xiān,秈xiān,苮xiān,枮xiān,籼xiān,珗xiān,莶xiān,掀xiān,酰xiān,锨xiān,僊xiān,僲xiān,嘕xiān,鲜xiān,暹xiān,韯xiān,憸xiān,鍁xiān,繊xiān,褼xiān,韱xiān,鮮xiān,馦xiān,蹮xiān,廯xiān,譣xiān,鶱xiān,襳xiān,躚xiān,纖xiān,鱻xiān,縿xiān,跹xiān,咞xián,闲xián,妶xián,弦xián,贤xián,咸xián,挦xián,涎xián,胘xián,娴xián,娹xián,婱xián,舷xián,蚿xián,衔xián,啣xián,痫xián,蛝xián,閑xián,鹇xián,嫌xián,甉xián,銜xián,嫺xián,嫻xián,憪xián,澖xián,誸xián,賢xián,癇xián,癎xián,礥xián,贒xián,鑦xián,鷳xián,鷴xián,鷼xián,伭xián,冼xiǎn,狝xiǎn,显xiǎn,险xiǎn,毨xiǎn,烍xiǎn,猃xiǎn,蚬xiǎn,険xiǎn,赻xiǎn,筅xiǎn,尟xiǎn,尠xiǎn,禒xiǎn,蜆xiǎn,跣xiǎn,箲xiǎn,險xiǎn,獫xiǎn,獮xiǎn,藓xiǎn,鍌xiǎn,燹xiǎn,顕xiǎn,幰xiǎn,攇xiǎn,櫶xiǎn,蘚xiǎn,玁xiǎn,韅xiǎn,顯xiǎn,灦xiǎn,搟xiǎn,县xiàn,岘xiàn,苋xiàn,现xiàn,线xiàn,臽xiàn,限xiàn,姭xiàn,宪xiàn,陥xiàn,哯xiàn,垷xiàn,娨xiàn,峴xiàn,晛xiàn,莧xiàn,陷xiàn,現xiàn,馅xiàn,睍xiàn,絤xiàn,缐xiàn,羡xiàn,献xiàn,粯xiàn,羨xiàn,腺xiàn,僩xiàn,僴xiàn,綫xiàn,誢xiàn,撊xiàn,線xiàn,鋧xiàn,憲xiàn,餡xiàn,豏xiàn,瀗xiàn,臔xiàn,獻xiàn,鏾xiàn,霰xiàn,鼸xiàn,脇xiàn,軐xiàn,県xiàn,縣xiàn,儴xiāng,勷xiāng,蘘xiāng,纕xiāng,乡xiāng,芗xiāng,香xiāng,郷xiāng,厢xiāng,鄉xiāng,鄊xiāng,廂xiāng,湘xiāng,缃xiāng,葙xiāng,鄕xiāng,楿xiāng,薌xiāng,箱xiāng,緗xiāng,膷xiāng,忀xiāng,骧xiāng,麘xiāng,欀xiāng,瓖xiāng,镶xiāng,鱜xiāng,鑲xiāng,驤xiāng,襄xiāng,佭xiáng,详xiáng,庠xiáng,栙xiáng,祥xiáng,絴xiáng,翔xiáng,詳xiáng,跭xiáng,享xiǎng,亯xiǎng,响xiǎng,蚃xiǎng,饷xiǎng,晑xiǎng,飨xiǎng,想xiǎng,餉xiǎng,鲞xiǎng,蠁xiǎng,鮝xiǎng,鯗xiǎng,響xiǎng,饗xiǎng,饟xiǎng,鱶xiǎng,傢xiàng,相xiàng,向xiàng,姠xiàng,巷xiàng,项xiàng,珦xiàng,象xiàng,缿xiàng,萫xiàng,項xiàng,像xiàng,勨xiàng,嶑xiàng,橡xiàng,襐xiàng,蟓xiàng,鐌xiàng,鱌xiàng,鋞xiàng,鬨xiàng,嚮xiàng,鵁xiāo,莦xiāo,颵xiāo,箾xiāo,潚xiāo,橚xiāo,灱xiāo,灲xiāo,枭xiāo,侾xiāo,哓xiāo,枵xiāo,骁xiāo,宯xiāo,宵xiāo,庨xiāo,恷xiāo,消xiāo,绡xiāo,虓xiāo,逍xiāo,鸮xiāo,啋xiāo,婋xiāo,梟xiāo,焇xiāo,猇xiāo,萧xiāo,痚xiāo,痟xiāo,硝xiāo,硣xiāo,窙xiāo,翛xiāo,萷xiāo,销xiāo,揱xiāo,綃xiāo,歊xiāo,箫xiāo,嘵xiāo,撨xiāo,獢xiāo,銷xiāo,霄xiāo,彇xiāo,膮xiāo,蕭xiāo,魈xiāo,鴞xiāo,穘xiāo,簘xiāo,蟂xiāo,蟏xiāo,鴵xiāo,嚣xiāo,瀟xiāo,簫xiāo,蟰xiāo,髇xiāo,囂xiāo,髐xiāo,鷍xiāo,驍xiāo,毊xiāo,虈xiāo,肖xiāo,哮xiāo,烋xiāo,潇xiāo,蠨xiāo,洨xiáo,崤xiáo,淆xiáo,誵xiáo,笹xiǎo,小xiǎo,晓xiǎo,暁xiǎo,筱xiǎo,筿xiǎo,曉xiǎo,篠xiǎo,謏xiǎo,皢xiǎo,孝xiào,効xiào,咲xiào,俲xiào,效xiào,校xiào,涍xiào,笑xiào,傚xiào,敩xiào,滧xiào,詨xiào,嘋xiào,嘨xiào,誟xiào,嘯xiào,熽xiào,斅xiào,斆xiào,澩xiào,啸xiào,些xiē,楔xiē,歇xiē,蝎xiē,蠍xiē,协xié,旪xié,邪xié,協xié,胁xié,垥xié,恊xié,拹xié,脋xié,衺xié,偕xié,斜xié,谐xié,翓xié,嗋xié,愶xié,携xié,瑎xié,綊xié,熁xié,膎xié,勰xié,撷xié,擕xié,緳xié,缬xié,蝢xié,鞋xié,諧xié,燲xié,擷xié,鞵xié,襭xié,攜xié,讗xié,龤xié,魼xié,脅xié,纈xié,写xiě,冩xiě,寫xiě,藛xiě,烲xiè,榝xiè,齛xiè,碿xiè,伳xiè,灺xiè,泄xiè,泻xiè,祄xiè,绁xiè,缷xiè,卸xiè,洩xiè,炧xiè,炨xiè,卨xiè,娎xiè,屑xiè,屓xiè,偰xiè,徢xiè,械xiè,焎xiè,禼xiè,亵xiè,媟xiè,屟xiè,渫xiè,絬xiè,谢xiè,僁xiè,塮xiè,榍xiè,榭xiè,褉xiè,噧xiè,屧xiè,暬xiè,韰xiè,廨xiè,懈xiè,澥xiè,獬xiè,糏xiè,薢xiè,薤xiè,邂xiè,燮xiè,褻xiè,謝xiè,夑xiè,瀉xiè,鞢xiè,瀣xiè,蟹xiè,蠏xiè,齘xiè,齥xiè,齂xiè,躠xiè,屭xiè,躞xiè,蝑xiè,揳xiè,爕xiè,噺xin,心xīn,邤xīn,妡xīn,忻xīn,芯xīn,辛xīn,昕xīn,杺xīn,欣xīn,盺xīn,俽xīn,惞xīn,锌xīn,新xīn,歆xīn,鋅xīn,嬜xīn,薪xīn,馨xīn,鑫xīn,馫xīn,枔xín,襑xín,潃xǐn,阠xìn,伩xìn,囟xìn,孞xìn,炘xìn,信xìn,脪xìn,衅xìn,訫xìn,焮xìn,舋xìn,釁xìn,狌xīng,星xīng,垶xīng,骍xīng,猩xīng,煋xīng,鷞shuāng,骦shuāng,縔shuǎng,艭shuāng,塽shuǎng,壯zhuàng,状zhuàng,狀zhuàng,壵zhuàng,梉zhuàng,瑆xīng,腥xīng,蛵xīng,觪xīng,箵xīng,篂xīng,謃xīng,鮏xīng,曐xīng,觲xīng,騂xīng,皨xīng,鯹xīng,嬹xīng,惺xīng,刑xíng,邢xíng,形xíng,陉xíng,侀xíng,哘xíng,型xíng,洐xíng,娙xíng,硎xíng,铏xíng,鉶xíng,裄xíng,睲xǐng,醒xǐng,擤xǐng,兴xìng,興xìng,杏xìng,姓xìng,幸xìng,性xìng,荇xìng,倖xìng,莕xìng,婞xìng,悻xìng,涬xìng,緈xìng,臖xìng,凶xiōng,兄xiōng,兇xiōng,匈xiōng,芎xiōng,讻xiōng,忷xiōng,汹xiōng,恟xiōng,洶xiōng,胷xiōng,胸xiōng,訩xiōng,詾xiōng,哅xiōng,雄xióng,熊xióng,诇xiòng,詗xiòng,敻xiòng,休xiū,俢xiū,修xiū,咻xiū,庥xiū,烌xiū,羞xiū,脙xiū,鸺xiū,臹xiū,貅xiū,馐xiū,樇xiū,銝xiū,髤xiū,髹xiū,鮴xiū,鵂xiū,饈xiū,鏅xiū,飍xiū,鎀xiū,苬xiú,宿xiǔ,朽xiǔ,綇xiǔ,滫xiǔ,糔xiǔ,臰xiù,秀xiù,岫xiù,珛xiù,绣xiù,袖xiù,琇xiù,锈xiù,溴xiù,璓xiù,螑xiù,繍xiù,繡xiù,鏥xiù,鏽xiù,齅xiù,嗅xiù,蓿xu,繻xū,圩xū,旴xū,疞xū,盱xū,欨xū,胥xū,须xū,顼xū,虗xū,虚xū,谞xū,媭xū,幁xū,欻xū,虛xū,須xū,楈xū,窢xū,頊xū,嘘xū,稰xū,需xū,魆xū,噓xū,墟xū,嬃xū,歔xū,縃xū,歘xū,諝xū,譃xū,魖xū,驉xū,鑐xū,鬚xū,姁xū,偦xū,戌xū,蕦xū,俆xú,徐xú,蒣xú,訏xǔ,许xǔ,诩xǔ,冔xǔ,栩xǔ,珝xǔ,許xǔ,湑xǔ,暊xǔ,詡xǔ,鄦xǔ,糈xǔ,醑xǔ,盨xǔ,滀xù,嘼xù,鉥xù,旭xù,伵xù,序xù,侐xù,沀xù,叙xù,恤xù,昫xù,洫xù,垿xù,欰xù,殈xù,烅xù,珬xù,勖xù,勗xù,敍xù,敘xù,烼xù,绪xù,续xù,酗xù,喣xù,壻xù,婿xù,朂xù,溆xù,絮xù,訹xù,慉xù,続xù,蓄xù,賉xù,槒xù,漵xù,潊xù,盢xù,瞁xù,緒xù,聟xù,稸xù,緖xù,瞲xù,藚xù,續xù,怴xù,芧xù,汿xù,煦xù,煖xuān,吅xuān,轩xuān,昍xuān,咺xuān,宣xuān,晅xuān,軒xuān,谖xuān,喧xuān,媗xuān,愃xuān,愋xuān,揎xuān,萱xuān,萲xuān,暄xuān,煊xuān,瑄xuān,蓒xuān,睻xuān,儇xuān,禤xuān,箮xuān,翧xuān,蝖xuān,蕿xuān,諠xuān,諼xuān,鍹xuān,駽xuān,矎xuān,翾xuān,藼xuān,蘐xuān,蠉xuān,譞xuān,鰚xuān,塇xuān,玹xuán,痃xuán,悬xuán,旋xuán,蜁xuán,嫙xuán,漩xuán,暶xuán,璇xuán,檈xuán,璿xuán,懸xuán,玆xuán,玄xuán,选xuǎn,選xuǎn,癣xuǎn,癬xuǎn,絃xuàn,夐xuàn,怰xuàn,泫xuàn,昡xuàn,炫xuàn,绚xuàn,眩xuàn,袨xuàn,铉xuàn,琄xuàn,眴xuàn,衒xuàn,絢xuàn,楦xuàn,鉉xuàn,碹xuàn,蔙xuàn,镟xuàn,颴xuàn,縼xuàn,繏xuàn,鏇xuàn,贙xuàn,駨xuàn,渲xuàn,疶xuē,蒆xuē,靴xuē,薛xuē,鞾xuē,削xuē,噱xué,穴xué,斈xué,乴xué,坹xué,学xué,岤xué,峃xué,茓xué,泶xué,袕xué,鸴xué,學xué,嶨xué,燢xué,雤xué,鷽xué,踅xué,雪xuě,樰xuě,膤xuě,艝xuě,轌xuě,鳕xuě,鱈xuě,血xuè,泧xuè,狘xuè,桖xuè,烕xuè,谑xuè,趐xuè,瀥xuè,坃xūn,勋xūn,埙xūn,塤xūn,熏xūn,窨xūn,勲xūn,勳xūn,薫xūn,嚑xūn,壎xūn,獯xūn,薰xūn,曛xūn,燻xūn,臐xūn,矄xūn,蘍xūn,壦xūn,爋xūn,纁xūn,醺xūn,勛xūn,郇xún,咰xún,寻xún,巡xún,旬xún,杊xún,询xún,峋xún,恂xún,浔xún,紃xún,荀xún,栒xún,桪xún,毥xún,珣xún,偱xún,尋xún,循xún,揗xún,詢xún,鄩xún,鲟xún,噚xún,潯xún,攳xún,樳xún,燅xún,燖xún,璕xún,蟳xún,鱏xún,鱘xún,侚xún,彐xún,撏xún,洵xún,浚xùn,濬xùn,鶽xùn,驯xùn,馴xùn,卂xùn,训xùn,伨xùn,汛xùn,迅xùn,徇xùn,狥xùn,迿xùn,逊xùn,殉xùn,訊xùn,訓xùn,訙xùn,奞xùn,巽xùn,殾xùn,遜xùn,愻xùn,賐xùn,噀xùn,蕈xùn,顨xùn,鑂xùn,稄xùn,讯xùn,呀ya,圧yā,丫yā,压yā,庘yā,押yā,鸦yā,桠yā,鸭yā,铔yā,椏yā,鴉yā,錏yā,鴨yā,壓yā,鵶yā,鐚yā,唖yā,亜yā,垭yā,俹yā,埡yā,孲yā,拁yá,疨yá,牙yá,伢yá,岈yá,芽yá,厓yá,枒yá,琊yá,笌yá,蚜yá,堐yá,崕yá,崖yá,涯yá,猚yá,瑘yá,睚yá,衙yá,漄yá,齖yá,庌yá,顔yá,釾yá,疋yǎ,厊yǎ,啞yǎ,痖yǎ,雅yǎ,瘂yǎ,蕥yǎ,挜yǎ,掗yǎ,哑yǎ,呾yà,輵yà,潝yà,劜yà,圠yà,亚yà,穵yà,襾yà,讶yà,犽yà,迓yà,亞yà,玡yà,娅yà,砑yà,氩yà,婭yà,訝yà,揠yà,氬yà,猰yà,圔yà,稏yà,窫yà,椻yà,鼼yà,聐yà,淊yān,咽yān,恹yān,剦yān,烟yān,珚yān,胭yān,偣yān,崦yān,淹yān,焉yān,菸yān,阉yān,湮yān,腌yān,傿yān,煙yān,鄢yān,嫣yān,漹yān,嶖yān,樮yān,醃yān,閹yān,嬮yān,篶yān,臙yān,黫yān,弇yān,硽yān,慇yān,黰yān,橪yān,阽yán,炏yán,挻yán,厃yán,唌yán,廵yán,讠yán,円yán,延yán,闫yán,严yán,妍yán,言yán,訁yán,岩yán,昖yán,沿yán,炎yán,郔yán,姸yán,娫yán,狿yán,研yán,莚yán,娮yán,盐yán,琂yán,硏yán,訮yán,閆yán,阎yán,嵒yán,嵓yán,綖yán,蜒yán,塩yán,揅yán,楌yán,詽yán,碞yán,蔅yán,颜yán,虤yán,閻yán,厳yán,檐yán,顏yán,嚴yán,壛yán,巌yán,簷yán,櫩yán,麙yán,壧yán,孍yán,巖yán,巗yán,巚yán,欕yán,礹yán,鹽yán,麣yán,黬yán,偐yán,贗yán,菴yǎn,剡yǎn,嬐yǎn,崄yǎn,嶮yǎn,抁yǎn,沇yǎn,乵yǎn,兖yǎn,奄yǎn,俨yǎn,兗yǎn,匽yǎn,衍yǎn,偃yǎn,厣yǎn,掩yǎn,眼yǎn,萒yǎn,郾yǎn,酓yǎn,嵃yǎn,愝yǎn,扊yǎn,揜yǎn,棪yǎn,渰yǎn,渷yǎn,琰yǎn,隒yǎn,椼yǎn,罨yǎn,演yǎn,褗yǎn,蝘yǎn,魇yǎn,噞yǎn,躽yǎn,檿yǎn,黡yǎn,厴yǎn,甗yǎn,鰋yǎn,鶠yǎn,黤yǎn,齞yǎn,儼yǎn,黭yǎn,顩yǎn,鼴yǎn,巘yǎn,曮yǎn,魘yǎn,鼹yǎn,齴yǎn,黶yǎn,掞yǎn,隁yǎn,喭yǎn,酀yǎn,龂yǎn,齗yǎn,阭yǎn,夵yǎn,裺yǎn,溎yàn,豜yàn,豣yàn,烻yàn,湺yàn,麲yàn,厌yàn,妟yàn,牪yàn,姲yàn,彥yàn,彦yàn,砚yàn,唁yàn,宴yàn,晏yàn,艳yàn,覎yàn,验yàn,焔yàn,谚yàn,堰yàn,敥yàn,焰yàn,焱yàn,猒yàn,硯yàn,葕yàn,雁yàn,滟yàn,鳫yàn,厭yàn,墕yàn,熖yàn,酽yàn,嬊yàn,谳yàn,餍yàn,鴈yàn,燄yàn,燕yàn,諺yàn,赝yàn,鬳yàn,曕yàn,騐yàn,験yàn,嚥yàn,嬿yàn,艶yàn,贋yàn,軅yàn,爓yàn,醶yàn,騴yàn,鷃yàn,灔yàn,觾yàn,讌yàn,饜yàn,驗yàn,鷰yàn,艷yàn,灎yàn,釅yàn,驠yàn,灧yàn,讞yàn,豓yàn,豔yàn,灩yàn,顑yàn,懕yàn,筵yàn,觃yàn,暥yàn,醼yàn,歍yāng,央yāng,咉yāng,姎yāng,抰yāng,泱yāng,殃yāng,胦yāng,眏yāng,秧yāng,鸯yāng,鉠yāng,雵yāng,鞅yāng,鍈yāng,鴦yāng,佒yāng,霙yāng,瑒yáng,婸yáng,扬yáng,羊yáng,阦yáng,旸yáng,杨yáng,炀yáng,佯yáng,劷yáng,氜yáng,疡yáng,钖yáng,飏yáng,垟yáng,徉yáng,昜yáng,洋yáng,羏yáng,烊yáng,珜yáng,眻yáng,陽yáng,崵yáng,崸yáng,揚yáng,蛘yáng,敭yáng,暘yáng,楊yáng,煬yáng,禓yáng,瘍yáng,諹yáng,輰yáng,鴹yáng,颺yáng,鐊yáng,鰑yáng,霷yáng,鸉yáng,阳yáng,鍚yáng,飬yǎng,勜yǎng,仰yǎng,坱yǎng,奍yǎng,岟yǎng,养yǎng,炴yǎng,氧yǎng,痒yǎng,紻yǎng,傟yǎng,楧yǎng,軮yǎng,慃yǎng,氱yǎng,羪yǎng,養yǎng,駚yǎng,懩yǎng,攁yǎng,瀁yǎng,癢yǎng,礢yǎng,柍yǎng,恙yàng,样yàng,羕yàng,詇yàng,様yàng,漾yàng,樣yàng,怏yàng,玅yāo,撽yāo,幺yāo,夭yāo,吆yāo,妖yāo,枖yāo,祅yāo,訞yāo,喓yāo,葽yāo,楆yāo,腰yāo,邀yāo,宎yāo,侥yáo,僥yáo,蕘yáo,匋yáo,恌yáo,铫yáo,爻yáo,尧yáo,尭yáo,肴yáo,垚yáo,姚yáo,峣yáo,轺yáo,倄yáo,珧yáo,窑yáo,傜yáo,堯yáo,揺yáo,殽yáo,谣yáo,軺yáo,嗂yáo,媱yáo,徭yáo,愮yáo,搖yáo,摇yáo,猺yáo,遙yáo,遥yáo,摿yáo,暚yáo,榣yáo,瑤yáo,瑶yáo,飖yáo,餆yáo,嶢yáo,嶤yáo,徺yáo,磘yáo,窯yáo,餚yáo,繇yáo,謠yáo,謡yáo,鎐yáo,鳐yáo,颻yáo,蘨yáo,顤yáo,鰩yáo,鷂yáo,踰yáo,烑yáo,窰yáo,噛yǎo,仸yǎo,岆yǎo,抭yǎo,杳yǎo,殀yǎo,狕yǎo,苭yǎo,咬yǎo,柼yǎo,窅yǎo,窈yǎo,舀yǎo,偠yǎo,婹yǎo,崾yǎo,溔yǎo,蓔yǎo,榚yǎo,闄yǎo,騕yǎo,齩yǎo,鷕yǎo,穾yǎo,鴢yǎo,烄yào,药yào,要yào,袎yào,窔yào,筄yào,葯yào,詏yào,熎yào,覞yào,靿yào,獟yào,鹞yào,薬yào,曜yào,艞yào,藥yào,矅yào,曣yào,耀yào,纅yào,讑yào,鑰yào,怮yào,箹yào,钥yào,籥yào,亪ye,椰yē,暍yē,噎yē,潱yē,蠮yē,耶yē,吔yē,倻yē,峫yé,爷yé,捓yé,揶yé,铘yé,爺yé,鋣yé,鎁yé,擨yé,蠱yě,虵yě,也yě,冶yě,埜yě,野yě,嘢yě,漜yě,壄yě,瓛yè,熀yè,殕yè,啘yè,鐷yè,緤yè,业yè,叶yè,曳yè,页yè,邺yè,夜yè,亱yè,枼yè,洂yè,頁yè,捙yè,晔yè,枽yè,烨yè,偞yè,掖yè,液yè,谒yè,殗yè,腋yè,葉yè,鄓yè,墷yè,楪yè,業yè,馌yè,僷yè,曄yè,曅yè,歋yè,燁yè,擖yè,擛yè,皣yè,瞱yè,靥yè,嶪yè,嶫yè,澲yè,謁yè,餣yè,嚈yè,擫yè,曗yè,瞸yè,鍱yè,擪yè,爗yè,礏yè,鎑yè,饁yè,鵺yè,靨yè,驜yè,鸈yè,黦yè,煠yè,抴yè,鄴yè,膶yen,岃yen,袆yī,褘yī,一yī,弌yī,辷yī,衤yī,伊yī,衣yī,医yī,吚yī,依yī,祎yī,咿yī,洢yī,猗yī,畩yī,郼yī,铱yī,壹yī,揖yī,欹yī,蛜yī,禕yī,嫛yī,漪yī,稦yī,銥yī,嬄yī,噫yī,夁yī,瑿yī,鹥yī,繄yī,檹yī,毉yī,醫yī,黟yī,譩yī,鷖yī,黳yī,悘yī,壱yī,耛yí,拸yí,訑yí,釶yí,鉇yí,箷yí,戺yí,珆yí,鴺yí,銕yí,狏yí,迱yí,彵yí,熈yí,仪yí,匜yí,圯yí,夷yí,冝yí,宐yí,杝yí,沂yí,诒yí,侇yí,宜yí,怡yí,沶yí,狋yí,衪yí,饴yí,咦yí,姨yí,峓yí,弬yí,恞yí,柂yí,瓵yí,荑yí,贻yí,迻yí,宧yí,巸yí,扅yí,桋yí,眙yí,胰yí,袘yí,痍yí,移yí,萓yí,媐yí,椬yí,羠yí,蛦yí,詒yí,貽yí,遗yí,暆yí,椸yí,誃yí,跠yí,頉yí,颐yí,飴yí,疑yí,儀yí,熪yí,遺yí,嶬yí,彛yí,彜yí,螔yí,頥yí,寲yí,嶷yí,簃yí,顊yí,鮧yí,彝yí,彞yí,謻yí,鏔yí,籎yí,觺yí,讉yí,鸃yí,貤yí,乁yí,栘yí,頤yí,钀yǐ,錡yǐ,裿yǐ,迤yǐ,酏yǐ,乙yǐ,已yǐ,以yǐ,钇yǐ,佁yǐ,攺yǐ,矣yǐ,苡yǐ,苢yǐ,庡yǐ,舣yǐ,蚁yǐ,釔yǐ,倚yǐ,扆yǐ,逘yǐ,偯yǐ,崺yǐ,旑yǐ,椅yǐ,鈘yǐ,鉯yǐ,鳦yǐ,旖yǐ,輢yǐ,敼yǐ,螘yǐ,檥yǐ,礒yǐ,艤yǐ,蟻yǐ,顗yǐ,轙yǐ,齮yǐ,肊yǐ,陭yǐ,嬟yǐ,醷yǐ,阤yǐ,叕yǐ,锜yǐ,歖yǐ,笖yǐ,昳yì,睪yì,欥yì,輗yì,掜yì,儗yì,謚yì,紲yì,絏yì,辥yì,义yì,亿yì,弋yì,刈yì,忆yì,艺yì,仡yì,匇yì,议yì,亦yì,伇yì,屹yì,异yì,忔yì,芅yì,伿yì,佚yì,劮yì,呓yì,坄yì,役yì,抑yì,曵yì,杙yì,耴yì,苅yì,译yì,邑yì,佾yì,呭yì,呹yì,妷yì,峄yì,怈yì,怿yì,易yì,枍yì,泆yì,炈yì,绎yì,诣yì,驿yì,俋yì,奕yì,帟yì,帠yì,弈yì,枻yì,浂yì,玴yì,疫yì,羿yì,衵yì,轶yì,唈yì,垼yì,悒yì,挹yì,栧yì,栺yì,欭yì,浥yì,浳yì,益yì,袣yì,谊yì,勚yì,埸yì,悥yì,殹yì,異yì,羛yì,翊yì,翌yì,萟yì,訲yì,訳yì,豙yì,豛yì,逸yì,釴yì,隿yì,幆yì,敡yì,晹yì,棭yì,殔yì,湙yì,焲yì,蛡yì,詍yì,跇yì,軼yì,鈠yì,骮yì,亄yì,意yì,溢yì,獈yì,痬yì,竩yì,缢yì,義yì,肄yì,裔yì,裛yì,詣yì,勩yì,嫕yì,廙yì,榏yì,潩yì,瘗yì,膉yì,蓺yì,蜴yì,靾yì,駅yì,億yì,撎yì,槸yì,毅yì,熠yì,熤yì,熼yì,瘞yì,镒yì,鹝yì,鹢yì,黓yì,劓yì,圛yì,墿yì,嬑yì,嶧yì,憶yì,懌yì,曀yì,殪yì,澺yì,燚yì,瘱yì,瞖yì,穓yì,縊yì,艗yì,薏yì,螠yì,褹yì,寱yì,斁yì,曎yì,檍yì,歝yì,燡yì,翳yì,翼yì,臆yì,貖yì,鮨yì,癔yì,藙yì,藝yì,贀yì,鎰yì,镱yì,繶yì,繹yì,豷yì,霬yì,鯣yì,鶂yì,鶃yì,鶍yì,瀷yì,蘙yì,譯yì,議yì,醳yì,饐yì,囈yì,鐿yì,鷁yì,鷊yì,襼yì,驛yì,鷧yì,虉yì,鷾yì,讛yì,齸yì,襗yì,樴yì,癦yì,焬yì,阣yì,兿yì,誼yì,燱yì,懿yì,鮣yin,乚yīn,囙yīn,因yīn,阥yīn,阴yīn,侌yīn,垔yīn,姻yīn,洇yīn,茵yīn,荫yīn,音yīn,骃yīn,栶yīn,殷yīn,氤yīn,陰yīn,凐yīn,秵yīn,裀yīn,铟yīn,陻yīn,堙yīn,婣yīn,愔yīn,筃yīn,絪yīn,歅yīn,溵yīn,禋yīn,蒑yīn,蔭yīn,瘖yīn,銦yīn,磤yīn,緸yīn,鞇yīn,諲yīn,霒yīn,駰yīn,噾yīn,濦yīn,闉yīn,霠yīn,韾yīn,喑yīn,玪yín,伒yín,乑yín,吟yín,犾yín,苂yín,斦yín,泿yín,圁yín,峾yín,烎yín,狺yín,珢yín,粌yín,荶yín,訔yín,唫yín,婬yín,寅yín,崟yín,崯yín,淫yín,訡yín,银yín,鈝yín,滛yín,碒yín,鄞yín,夤yín,蔩yín,訚yín,誾yín,銀yín,龈yín,噖yín,殥yín,嚚yín,檭yín,蟫yín,霪yín,齦yín,鷣yín,螾yín,垠yín,璌yín,赺yǐn,縯yǐn,尹yǐn,引yǐn,吲yǐn,饮yǐn,蚓yǐn,隐yǐn,淾yǐn,釿yǐn,鈏yǐn,飲yǐn,隠yǐn,靷yǐn,飮yǐn,朄yǐn,趛yǐn,檃yǐn,瘾yǐn,隱yǐn,嶾yǐn,濥yǐn,蘟yǐn,癮yǐn,讔yǐn,輑yǐn,櫽yǐn,堷yìn,梀yìn,隂yìn,印yìn,茚yìn,洕yìn,胤yìn,垽yìn,湚yìn,猌yìn,廕yìn,酳yìn,慭yìn,癊yìn,憖yìn,憗yìn,懚yìn,檼yìn,韹yīng,焽yīng,旲yīng,应yīng,応yīng,英yīng,偀yīng,桜yīng,珱yīng,莺yīng,啨yīng,婴yīng,媖yīng,愥yīng,渶yīng,朠yīng,煐yīng,瑛yīng,嫈yīng,碤yīng,锳yīng,嘤yīng,撄yīng,甇yīng,緓yīng,缨yīng,罂yīng,蝧yīng,賏yīng,樱yīng,璎yīng,噟yīng,罃yīng,褮yīng,鴬yīng,鹦yīng,嬰yīng,應yīng,膺yīng,韺yīng,甖yīng,鹰yīng,嚶yīng,孆yīng,孾yīng,攖yīng,瀴yīng,罌yīng,蘡yīng,櫻yīng,瓔yīng,礯yīng,譻yīng,鶯yīng,鑍yīng,纓yīng,蠳yīng,鷪yīng,軈yīng,鷹yīng,鸎yīng,鸚yīng,謍yīng,譍yīng,绬yīng,鶧yīng,夃yíng,俓yíng,泂yíng,嵤yíng,桯yíng,滎yíng,鎣yíng,盁yíng,迎yíng,茔yíng,盈yíng,荥yíng,荧yíng,莹yíng,萤yíng,营yíng,萦yíng,営yíng,溁yíng,溋yíng,萾yíng,僌yíng,塋yíng,楹yíng,滢yíng,蓥yíng,潆yíng,熒yíng,蝇yíng,瑩yíng,蝿yíng,嬴yíng,營yíng,縈yíng,螢yíng,濙yíng,濚yíng,濴yíng,藀yíng,覮yíng,赢yíng,巆yíng,攍yíng,攚yíng,瀛yíng,瀠yíng,蠅yíng,櫿yíng,灐yíng,籝yíng,灜yíng,贏yíng,籯yíng,耺yíng,蛍yíng,瀯yíng,瀅yíng,矨yǐng,郢yǐng,浧yǐng,梬yǐng,颍yǐng,颕yǐng,颖yǐng,摬yǐng,影yǐng,潁yǐng,瘿yǐng,穎yǐng,頴yǐng,巊yǐng,廮yǐng,鐛yǐng,癭yǐng,鱦yìng,映yìng,暎yìng,硬yìng,媵yìng,膡yìng,鞕yìng,嚛yo,哟yō,唷yō,喲yō,拥yōng,痈yōng,邕yōng,庸yōng,嗈yōng,鄘yōng,雍yōng,墉yōng,嫞yōng,慵yōng,滽yōng,槦yōng,牅yōng,銿yōng,噰yōng,壅yōng,擁yōng,澭yōng,郺yōng,镛yōng,臃yōng,癕yōng,雝yōng,鏞yōng,廱yōng,灉yōng,饔yōng,鱅yōng,鷛yōng,癰yōng,鳙yōng,揘yóng,喁yóng,鰫yóng,嵱yóng,筩yǒng,永yǒng,甬yǒng,咏yǒng,怺yǒng,泳yǒng,俑yǒng,勇yǒng,勈yǒng,栐yǒng,埇yǒng,悀yǒng,柡yǒng,涌yǒng,恿yǒng,傛yǒng,惥yǒng,愑yǒng,湧yǒng,硧yǒng,詠yǒng,彮yǒng,愹yǒng,蛹yǒng,慂yǒng,踊yǒng,禜yǒng,鲬yǒng,踴yǒng,鯒yǒng,塎yǒng,佣yòng,用yòng,苚yòng,砽yòng,醟yòng,妋yōu,优yōu,忧yōu,攸yōu,呦yōu,幽yōu,悠yōu,麀yōu,滺yōu,憂yōu,優yōu,鄾yōu,嚘yōu,懮yōu,瀀yōu,纋yōu,耰yōu,逌yōu,泈yōu,櫌yōu,蓧yóu,蚘yóu,揂yóu,汼yóu,汓yóu,蝤yóu,尣yóu,冘yóu,尢yóu,尤yóu,由yóu,沋yóu,犹yóu,邮yóu,怞yóu,油yóu,肬yóu,怣yóu,斿yóu,疣yóu,峳yóu,浟yóu,秞yóu,莜yóu,莤yóu,莸yóu,郵yóu,铀yóu,偤yóu,蚰yóu,訧yóu,逰yóu,游yóu,猶yóu,鱿yóu,楢yóu,猷yóu,鈾yóu,鲉yóu,輏yóu,駀yóu,蕕yóu,蝣yóu,魷yóu,輶yóu,鮋yóu,櫾yóu,邎yóu,庮yóu,甴yóu,遊yóu,羗yǒu,脩yǒu,戭yǒu,友yǒu,有yǒu,丣yǒu,卣yǒu,苃yǒu,酉yǒu,羑yǒu,羐yǒu,莠yǒu,梄yǒu,聈yǒu,脜yǒu,铕yǒu,湵yǒu,蒏yǒu,蜏yǒu,銪yǒu,槱yǒu,牖yǒu,牗yǒu,黝yǒu,栯yǒu,禉yǒu,痏yòu,褎yòu,褏yòu,銹yòu,柚yòu,又yòu,右yòu,幼yòu,佑yòu,侑yòu,孧yòu,狖yòu,糿yòu,哊yòu,囿yòu,姷yòu,宥yòu,峟yòu,牰yòu,祐yòu,诱yòu,迶yòu,唀yòu,蚴yòu,亴yòu,貁yòu,釉yòu,酭yòu,鼬yòu,誘yòu,纡yū,迂yū,迃yū,穻yū,陓yū,紆yū,虶yū,唹yū,淤yū,盓yū,瘀yū,箊yū,亐yū,丂yú,桙yú,婾yú,媮yú,悇yú,汙yú,汚yú,鱮yú,颙yú,顒yú,渝yú,于yú,邘yú,伃yú,余yú,妤yú,扵yú,欤yú,玗yú,玙yú,於yú,盂yú,臾yú,鱼yú,俞yú,兪yú,禺yú,竽yú,舁yú,茰yú,荢yú,娛yú,娯yú,娱yú,狳yú,谀yú,酑yú,馀yú,渔yú,萸yú,釪yú,隃yú,隅yú,雩yú,魚yú,堣yú,堬yú,崳yú,嵎yú,嵛yú,愉yú,揄yú,楰yú,畬yú,畭yú,硢yú,腴yú,逾yú,骬yú,愚yú,楡yú,榆yú,歈yú,牏yú,瑜yú,艅yú,虞yú,觎yú,漁yú,睮yú,窬yú,舆yú,褕yú,歶yú,羭yú,蕍yú,蝓yú,諛yú,雓yú,餘yú,魣yú,嬩yú,懙yú,覦yú,歟yú,璵yú,螸yú,輿yú,鍝yú,礖yú,謣yú,髃yú,鮽yú,旟yú,籅yú,騟yú,鯲yú,鰅yú,鷠yú,鸆yú,萮yú,芌yú,喩yú,媀yú,貗yú,衧yú,湡yú,澞yú,頨yǔ,蝺yǔ,藇yǔ,予yǔ,与yǔ,伛yǔ,宇yǔ,屿yǔ,羽yǔ,雨yǔ,俁yǔ,俣yǔ,挧yǔ,禹yǔ,语yǔ,圄yǔ,祤yǔ,偊yǔ,匬yǔ,圉yǔ,庾yǔ,敔yǔ,鄅yǔ,萭yǔ,傴yǔ,寙yǔ,斞yǔ,楀yǔ,瑀yǔ,瘐yǔ,與yǔ,語yǔ,窳yǔ,龉yǔ,噳yǔ,嶼yǔ,貐yǔ,斔yǔ,麌yǔ,蘌yǔ,齬yǔ,穥yǔ,峿yǔ,閼yù,穀yù,蟈yù,僪yù,鐍yù,肀yù,翑yù,衘yù,獝yù,玉yù,驭yù,圫yù,聿yù,芋yù,妪yù,忬yù,饫yù,育yù,郁yù,彧yù,昱yù,狱yù,秗yù,俼yù,峪yù,浴yù,砡yù,钰yù,预yù,喐yù,域yù,堉yù,悆yù,惐yù,欲yù,淢yù,淯yù,袬yù,逳yù,阈yù,喅yù,喻yù,寓yù,庽yù,御yù,棛yù,棜yù,棫yù,焴yù,琙yù,矞yù,裕yù,遇yù,飫yù,馭yù,鹆yù,愈yù,滪yù,煜yù,稢yù,罭yù,蒮yù,蓣yù,誉yù,鈺yù,預yù,嶎yù,戫yù,毓yù,獄yù,瘉yù,緎yù,蜟yù,蜮yù,輍yù,銉yù,隩yù,噊yù,慾yù,稶yù,蓹yù,薁yù,豫yù,遹yù,鋊yù,鳿yù,澦yù,燏yù,燠yù,蕷yù,諭yù,錥yù,閾yù,鴥yù,鴧yù,鴪yù,礇yù,禦yù,魊yù,鹬yù,癒yù,礜yù,篽yù,繘yù,鵒yù,櫲yù,饇yù,蘛yù,譽yù,轝yù,鐭yù,霱yù,欎yù,驈yù,鬻yù,籞yù,鱊yù,鷸yù,鸒yù,欝yù,軉yù,鬰yù,鬱yù,灪yù,爩yù,灹yù,吁yù,谕yù,嫗yù,儥yù,籲yù,裷yuān,嫚yuān,囦yuān,鸢yuān,剈yuān,冤yuān,弲yuān,悁yuān,眢yuān,鸳yuān,寃yuān,渁yuān,渆yuān,渊yuān,渕yuān,淵yuān,葾yuān,棩yuān,蒬yuān,蜎yuān,鹓yuān,箢yuān,鳶yuān,蜵yuān,駌yuān,鋺yuān,鴛yuān,嬽yuān,鵷yuān,灁yuān,鼝yuān,蝝yuān,鼘yuān,喛yuán,楥yuán,芫yuán,元yuán,贠yuán,邧yuán,员yuán,园yuán,沅yuán,杬yuán,垣yuán,爰yuán,貟yuán,原yuán,員yuán,圆yuán,笎yuán,袁yuán,厡yuán,酛yuán,圎yuán,援yuán,湲yuán,猨yuán,缘yuán,鈨yuán,鼋yuán,園yuán,圓yuán,塬yuán,媴yuán,源yuán,溒yuán,猿yuán,獂yuán,蒝yuán,榞yuán,榬yuán,辕yuán,緣yuán,縁yuán,蝯yuán,橼yuán,羱yuán,薗yuán,螈yuán,謜yuán,轅yuán,黿yuán,鎱yuán,櫞yuán,邍yuán,騵yuán,鶢yuán,鶰yuán,厵yuán,傆yuán,媛yuán,褑yuán,褤yuán,嫄yuán,远yuǎn,盶yuǎn,遠yuǎn,逺yuǎn,肙yuàn,妴yuàn,苑yuàn,怨yuàn,院yuàn,垸yuàn,衏yuàn,掾yuàn,瑗yuàn,禐yuàn,愿yuàn,裫yuàn,噮yuàn,願yuàn,哕yue,噦yuē,曰yuē,曱yuē,约yuē,約yuē,矱yuē,彟yuē,彠yuē,矆yuè,妜yuè,髺yuè,哾yuè,趯yuè,月yuè,戉yuè,汋yuè,岄yuè,抈yuè,礿yuè,岳yuè,玥yuè,恱yuè,悅yuè,悦yuè,蚎yuè,蚏yuè,軏yuè,钺yuè,阅yuè,捳yuè,跀yuè,跃yuè,粤yuè,越yuè,鈅yuè,粵yuè,鉞yuè,閱yuè,閲yuè,嬳yuè,樾yuè,篗yuè,嶽yuè,籆yuè,瀹yuè,蘥yuè,爚yuè,禴yuè,躍yuè,鸑yuè,籰yuè,龥yuè,鸙yuè,躒yuè,刖yuè,龠yuè,涒yūn,轀yūn,蒀yūn,煴yūn,蒕yūn,熅yūn,奫yūn,赟yūn,頵yūn,贇yūn,氲yūn,氳yūn,晕yūn,暈yūn,云yún,勻yún,匀yún,伝yún,呍yún,囩yún,妘yún,抣yún,纭yún,芸yún,昀yún,畇yún,眃yún,秐yún,郧yún,涢yún,紜yún,耘yún,鄖yún,雲yún,愪yún,溳yún,筼yún,蒷yún,熉yún,澐yún,蕓yún,鋆yún,橒yún,篔yún,縜yún,繧yún,荺yún,沄yún,允yǔn,夽yǔn,狁yǔn,玧yǔn,陨yǔn,殒yǔn,喗yǔn,鈗yǔn,隕yǔn,殞yǔn,馻yǔn,磒yǔn,霣yǔn,齫yǔn,齳yǔn,抎yǔn,緷yùn,孕yùn,运yùn,枟yùn,郓yùn,恽yùn,鄆yùn,酝yùn,傊yùn,惲yùn,愠yùn,運yùn,慍yùn,韫yùn,韵yùn,熨yùn,蕴yùn,賱yùn,醖yùn,醞yùn,餫yùn,韗yùn,韞yùn,蘊yùn,韻yùn,腪yùn,噈zā,帀zā,匝zā,沞zā,咂zā,拶zā,沯zā,桚zā,紮zā,鉔zā,臜zā,臢zā,砸zá,韴zá,雑zá,襍zá,雜zá,雥zá,囋zá,杂zá,咋zǎ,災zāi,灾zāi,甾zāi,哉zāi,栽zāi,烖zāi,渽zāi,溨zāi,睵zāi,賳zāi,宰zǎi,载zǎi,崽zǎi,載zǎi,仔zǎi,再zài,在zài,扗zài,洅zài,傤zài,酨zài,儎zài,篸zān,兂zān,糌zān,簪zān,簮zān,鐕zān,撍zān,咱zán,偺zán,喒zǎn,昝zǎn,寁zǎn,儧zǎn,攒zǎn,儹zǎn,趱zǎn,趲zǎn,揝zǎn,穳zàn,暂zàn,暫zàn,賛zàn,赞zàn,錾zàn,鄼zàn,濽zàn,蹔zàn,酂zàn,瓉zàn,贊zàn,鏨zàn,瓒zàn,灒zàn,讃zàn,瓚zàn,禶zàn,襸zàn,讚zàn,饡zàn,酇zàn,匨zāng,蔵zāng,牂zāng,羘zāng,赃zāng,賍zāng,臧zāng,賘zāng,贓zāng,髒zāng,贜zāng,脏zāng,驵zǎng,駔zǎng,奘zàng,弉zàng,塟zàng,葬zàng,銺zàng,臓zàng,臟zàng,傮zāo,遭zāo,糟zāo,醩zāo,蹧zāo,凿záo,鑿záo,早zǎo,枣zǎo,栆zǎo,蚤zǎo,棗zǎo,璅zǎo,澡zǎo,璪zǎo,薻zǎo,藻zǎo,灶zào,皁zào,皂zào,唕zào,唣zào,造zào,梍zào,慥zào,煰zào,艁zào,噪zào,簉zào,燥zào,竃zào,譟zào,趮zào,竈zào,躁zào,啫zē,伬zé,则zé,択zé,沢zé,择zé,泎zé,泽zé,责zé,迮zé,則zé,啧zé,帻zé,笮zé,舴zé,責zé,溭zé,嘖zé,嫧zé,幘zé,箦zé,蔶zé,樍zé,歵zé,諎zé,赜zé,擇zé,皟zé,瞔zé,礋zé,謮zé,賾zé,蠌zé,齚zé,齰zé,鸅zé,讁zé,葃zé,澤zé,仄zè,夨zè,庂zè,汄zè,昃zè,昗zè,捑zè,崱zè,贼zéi,賊zéi,鲗zéi,蠈zéi,鰂zéi,鱡zéi,怎zěn,谮zèn,囎zèn,譛zèn,曽zēng,増zēng,鄫zēng,增zēng,憎zēng,缯zēng,橧zēng,熷zēng,璔zēng,矰zēng,磳zēng,罾zēng,繒zēng,譄zēng,鱛zēng,縡zēng,鬷zěng,锃zèng,鋥zèng,甑zèng,赠zèng,贈zèng,馇zha,餷zha,蹅zhā,紥zhā,迊zhā,抯zhā,挓zhā,柤zhā,哳zhā,偧zhā,揸zhā,渣zhā,溠zhā,楂zhā,劄zhā,皶zhā,箚zhā,樝zhā,皻zhā,譇zhā,齄zhā,齇zhā,扎zhā,摣zhā,藸zhā,囃zhā,喳zhā,箑zhá,耫zhá,札zhá,轧zhá,軋zhá,闸zhá,蚻zhá,铡zhá,牐zhá,閘zhá,霅zhá,鍘zhá,譗zhá,挿zhǎ,揷zhǎ,厏zhǎ,苲zhǎ,砟zhǎ,鲊zhǎ,鲝zhǎ,踷zhǎ,鮓zhǎ,鮺zhǎ,眨zhǎ,吒zhà,乍zhà,诈zhà,咤zhà,奓zhà,炸zhà,宱zhà,痄zhà,蚱zhà,詐zhà,搾zhà,榨zhà,醡zhà,拃zhà,柞zhà,夈zhāi,粂zhāi,捚zhāi,斋zhāi,斎zhāi,榸zhāi,齋zhāi,摘zhāi,檡zhái,宅zhái,翟zhái,窄zhǎi,鉙zhǎi,骴zhài,簀zhài,债zhài,砦zhài,債zhài,寨zhài,瘵zhài,沾zhān,毡zhān,旃zhān,栴zhān,粘zhān,蛅zhān,惉zhān,詀zhān,趈zhān,詹zhān,閚zhān,谵zhān,嶦zhān,薝zhān,邅zhān,霑zhān,氊zhān,瞻zhān,鹯zhān,旜zhān,譫zhān,饘zhān,鳣zhān,驙zhān,魙zhān,鸇zhān,覱zhān,氈zhān,讝zhán,斩zhǎn,飐zhǎn,展zhǎn,盏zhǎn,崭zhǎn,斬zhǎn,琖zhǎn,搌zhǎn,盞zhǎn,嶃zhǎn,嶄zhǎn,榐zhǎn,颭zhǎn,嫸zhǎn,醆zhǎn,蹍zhǎn,欃zhàn,占zhàn,佔zhàn,战zhàn,栈zhàn,桟zhàn,站zhàn,偡zhàn,绽zhàn,菚zhàn,棧zhàn,湛zhàn,戦zhàn,綻zhàn,嶘zhàn,輚zhàn,戰zhàn,虥zhàn,虦zhàn,轏zhàn,蘸zhàn,驏zhàn,张zhāng,張zhāng,章zhāng,鄣zhāng,嫜zhāng,彰zhāng,慞zhāng,漳zhāng,獐zhāng,粻zhāng,蔁zhāng,遧zhāng,暲zhāng,樟zhāng,璋zhāng,餦zhāng,蟑zhāng,鏱zhāng,騿zhāng,鱆zhāng,麞zhāng,涱zhāng,傽zhāng,长zhǎng,仧zhǎng,長zhǎng,镸zhǎng,仉zhǎng,涨zhǎng,掌zhǎng,漲zhǎng,幥zhǎng,礃zhǎng,鞝zhǎng,鐣zhǎng,丈zhàng,仗zhàng,扙zhàng,杖zhàng,胀zhàng,账zhàng,粀zhàng,帳zhàng,脹zhàng,痮zhàng,障zhàng,墇zhàng,嶂zhàng,幛zhàng,賬zhàng,瘬zhàng,瘴zhàng,瞕zhàng,帐zhàng,鼌zhāo,鼂zhāo,謿zhāo,皽zhāo,佋zhāo,钊zhāo,妱zhāo,巶zhāo,招zhāo,昭zhāo,炤zhāo,盄zhāo,釗zhāo,鉊zhāo,駋zhāo,鍣zhāo,爫zhǎo,沼zhǎo,瑵zhǎo,爪zhǎo,找zhǎo,召zhào,兆zhào,诏zhào,枛zhào,垗zhào,狣zhào,赵zhào,笊zhào,肁zhào,旐zhào,棹zhào,罀zhào,詔zhào,照zhào,罩zhào,肇zhào,肈zhào,趙zhào,曌zhào,燳zhào,鮡zhào,櫂zhào,瞾zhào,羄zhào,啅zhào,龑yan,著zhe,着zhe,蜇zhē,嫬zhē,遮zhē,嗻zhē,摂zhé,歽zhé,砓zhé,籷zhé,虴zhé,哲zhé,埑zhé,粍zhé,袩zhé,啠zhé,悊zhé,晢zhé,晣zhé,辄zhé,喆zhé,蛰zhé,詟zhé,谪zhé,摺zhé,輒zhé,磔zhé,輙zhé,辙zhé,蟄zhé,嚞zhé,謫zhé,鮿zhé,轍zhé,襵zhé,讋zhé,厇zhé,謺zhé,者zhě,锗zhě,赭zhě,褶zhě,鍺zhě,这zhè,柘zhè,浙zhè,這zhè,淛zhè,蔗zhè,樜zhè,鹧zhè,蟅zhè,鷓zhè,趂zhēn,贞zhēn,针zhēn,侦zhēn,浈zhēn,珍zhēn,珎zhēn,貞zhēn,帪zhēn,栕zhēn,眞zhēn,真zhēn,砧zhēn,祯zhēn,針zhēn,偵zhēn,敒zhēn,桭zhēn,酙zhēn,寊zhēn,湞zhēn,遉zhēn,搸zhēn,斟zhēn,楨zhēn,獉zhēn,甄zhēn,禎zhēn,蒖zhēn,蓁zhēn,鉁zhēn,靕zhēn,榛zhēn,殝zhēn,瑧zhēn,禛zhēn,潧zhēn,樼zhēn,澵zhēn,臻zhēn,薽zhēn,錱zhēn,轃zhēn,鍖zhēn,鱵zhēn,胗zhēn,侲zhēn,揕zhēn,鎭zhēn,帧zhēn,幀zhēn,朾zhēn,椹zhēn,桢zhēn,箴zhēn,屒zhén,诊zhěn,抮zhěn,枕zhěn,姫zhěn,弫zhěn,昣zhěn,轸zhěn,畛zhěn,疹zhěn,眕zhěn,袗zhěn,聄zhěn,萙zhěn,裖zhěn,覙zhěn,診zhěn,軫zhěn,缜zhěn,稹zhěn,駗zhěn,縝zhěn,縥zhěn,辴zhěn,鬒zhěn,嫃zhěn,謓zhèn,迧zhèn,圳zhèn,阵zhèn,纼zhèn,挋zhèn,陣zhèn,鸩zhèn,振zhèn,朕zhèn,栚zhèn,紖zhèn,眹zhèn,赈zhèn,塦zhèn,絼zhèn,蜄zhèn,敶zhèn,誫zhèn,賑zhèn,鋴zhèn,镇zhèn,鴆zhèn,鎮zhèn,震zhèn,嶒zhēng,脀zhēng,凧zhēng,争zhēng,佂zhēng,姃zhēng,征zhēng,怔zhēng,爭zhēng,峥zhēng,炡zhēng,狰zhēng,烝zhēng,眐zhēng,钲zhēng,埩zhēng,崝zhēng,崢zhēng,猙zhēng,睁zhēng,聇zhēng,铮zhēng,媜zhēng,筝zhēng,徰zhēng,蒸zhēng,鉦zhēng,箏zhēng,徵zhēng,踭zhēng,篜zhēng,錚zhēng,鬇zhēng,癥zhēng,糽zhēng,睜zhēng,氶zhěng,抍zhěng,拯zhěng,塣zhěng,晸zhěng,愸zhěng,撜zhěng,整zhěng,憕zhèng,徎zhèng,挣zhèng,掙zhèng,正zhèng,证zhèng,诤zhèng,郑zhèng,政zhèng,症zhèng,証zhèng,鄭zhèng,鴊zhèng,證zhèng,諍zhèng,之zhī,支zhī,卮zhī,汁zhī,芝zhī,巵zhī,枝zhī,知zhī,织zhī,肢zhī,徔zhī,栀zhī,祗zhī,秓zhī,秖zhī,胑zhī,胝zhī,衼zhī,倁zhī,疷zhī,祬zhī,秪zhī,脂zhī,隻zhī,梔zhī,椥zhī,搘zhī,禔zhī,綕zhī,榰zhī,蜘zhī,馶zhī,鳷zhī,謢zhī,鴲zhī,織zhī,蘵zhī,鼅zhī,禵zhī,只zhī,鉄zhí,执zhí,侄zhí,坧zhí,直zhí,姪zhí,値zhí,值zhí,聀zhí,釞zhí,埴zhí,執zhí,职zhí,植zhí,殖zhí,絷zhí,跖zhí,墌zhí,摭zhí,馽zhí,嬂zhí,慹zhí,漐zhí,踯zhí,膱zhí,縶zhí,職zhí,蟙zhí,蹠zhí,軄zhí,躑zhí,秇zhí,埶zhí,戠zhí,禃zhí,茝zhǐ,絺zhǐ,觝zhǐ,徴zhǐ,止zhǐ,凪zhǐ,劧zhǐ,旨zhǐ,阯zhǐ,址zhǐ,坁zhǐ,帋zhǐ,沚zhǐ,纸zhǐ,芷zhǐ,抧zhǐ,祉zhǐ,茋zhǐ,咫zhǐ,恉zhǐ,指zhǐ,枳zhǐ,洔zhǐ,砋zhǐ,轵zhǐ,淽zhǐ,疻zhǐ,紙zhǐ,訨zhǐ,趾zhǐ,軹zhǐ,黹zhǐ,酯zhǐ,藢zhǐ,襧zhǐ,汦zhǐ,胵zhì,歭zhì,遟zhì,迣zhì,鶨zhì,亊zhì,銴zhì,至zhì,芖zhì,志zhì,忮zhì,扻zhì,豸zhì,厔zhì,垁zhì,帙zhì,帜zhì,治zhì,炙zhì,质zhì,郅zhì,俧zhì,峙zhì,庢zhì,庤zhì,栉zhì,洷zhì,祑zhì,陟zhì,娡zhì,徏zhì,挚zhì,晊zhì,桎zhì,狾zhì,秩zhì,致zhì,袟zhì,贽zhì,轾zhì,徝zhì,掷zhì,梽zhì,猘zhì,畤zhì,痔zhì,秲zhì,秷zhì,窒zhì,紩zhì,翐zhì,袠zhì,觗zhì,貭zhì,铚zhì,鸷zhì,傂zhì,崻zhì,彘zhì,智zhì,滞zhì,痣zhì,蛭zhì,骘zhì,廌zhì,滍zhì,稙zhì,稚zhì,置zhì,跱zhì,輊zhì,锧zhì,雉zhì,槜zhì,滯zhì,潌zhì,瘈zhì,製zhì,覟zhì,誌zhì,銍zhì,幟zhì,憄zhì,摯zhì,潪zhì,熫zhì,稺zhì,膣zhì,觯zhì,質zhì,踬zhì,鋕zhì,旘zhì,瀄zhì,緻zhì,隲zhì,鴙zhì,儨zhì,劕zhì,懥zhì,擲zhì,櫛zhì,懫zhì,贄zhì,櫍zhì,瓆zhì,觶zhì,騭zhì,礩zhì,豑zhì,騺zhì,驇zhì,躓zhì,鷙zhì,鑕zhì,豒zhì,制zhì,偫zhì,筫zhì,駤zhì,徸zhōng,蝩zhōng,中zhōng,伀zhōng,汷zhōng,刣zhōng,妐zhōng,彸zhōng,忠zhōng,炂zhōng,终zhōng,柊zhōng,盅zhōng,衳zhōng,钟zhōng,舯zhōng,衷zhōng,終zhōng,鈡zhōng,幒zhōng,蔠zhōng,锺zhōng,螤zhōng,鴤zhōng,螽zhōng,鍾zhōng,鼨zhōng,蹱zhōng,鐘zhōng,籦zhōng,衆zhōng,迚zhōng,肿zhǒng,种zhǒng,冢zhǒng,喠zhǒng,尰zhǒng,塚zhǒng,歱zhǒng,腫zhǒng,瘇zhǒng,種zhǒng,踵zhǒng,煄zhǒng,緟zhòng,仲zhòng,众zhòng,妕zhòng,狆zhòng,祌zhòng,茽zhòng,衶zhòng,重zhòng,蚛zhòng,偅zhòng,眾zhòng,堹zhòng,媑zhòng,筗zhòng,諥zhòng,啁zhōu,州zhōu,舟zhōu,诌zhōu,侜zhōu,周zhōu,洲zhōu,炿zhōu,诪zhōu,珘zhōu,辀zhōu,郮zhōu,婤zhōu,徟zhōu,矪zhōu,週zhōu,喌zhōu,粥zhōu,赒zhōu,輈zhōu,銂zhōu,賙zhōu,輖zhōu,霌zhōu,駲zhōu,嚋zhōu,盩zhōu,謅zhōu,譸zhōu,僽zhōu,諏zhōu,烐zhōu,妯zhóu,轴zhóu,軸zhóu,碡zhóu,肘zhǒu,帚zhǒu,菷zhǒu,晭zhǒu,睭zhǒu,箒zhǒu,鯞zhǒu,疛zhǒu,椆zhòu,詶zhòu,薵zhòu,纣zhòu,伷zhòu,呪zhòu,咒zhòu,宙zhòu,绉zhòu,冑zhòu,咮zhòu,昼zhòu,紂zhòu,胄zhòu,荮zhòu,晝zhòu,皱zhòu,酎zhòu,粙zhòu,葤zhòu,詋zhòu,甃zhòu,皺zhòu,駎zhòu,噣zhòu,縐zhòu,骤zhòu,籕zhòu,籒zhòu,驟zhòu,籀zhòu,蕏zhū,藷zhū,朱zhū,劯zhū,侏zhū,诛zhū,邾zhū,洙zhū,茱zhū,株zhū,珠zhū,诸zhū,猪zhū,硃zhū,袾zhū,铢zhū,絑zhū,蛛zhū,誅zhū,跦zhū,槠zhū,潴zhū,蝫zhū,銖zhū,橥zhū,諸zhū,豬zhū,駯zhū,鮢zhū,瀦zhū,櫧zhū,櫫zhū,鼄zhū,鯺zhū,蠩zhū,秼zhū,騶zhū,鴸zhū,薥zhú,鸀zhú,朮zhú,竹zhú,竺zhú,炢zhú,茿zhú,烛zhú,逐zhú,笜zhú,舳zhú,瘃zhú,蓫zhú,燭zhú,蠋zhú,躅zhú,鱁zhú,劚zhú,孎zhú,灟zhú,斸zhú,曯zhú,欘zhú,蠾zhú,钃zhú,劅zhú,斀zhú,爥zhú,主zhǔ,宔zhǔ,拄zhǔ,砫zhǔ,罜zhǔ,渚zhǔ,煑zhǔ,煮zhǔ,詝zhǔ,嘱zhǔ,濐zhǔ,麈zhǔ,瞩zhǔ,囑zhǔ,矚zhǔ,尌zhù,伫zhù,佇zhù,住zhù,助zhù,纻zhù,苎zhù,坾zhù,杼zhù,苧zhù,贮zhù,驻zhù,壴zhù,柱zhù,柷zhù,殶zhù,炷zhù,祝zhù,疰zhù,眝zhù,祩zhù,竚zhù,莇zhù,紵zhù,紸zhù,羜zhù,蛀zhù,嵀zhù,筑zhù,註zhù,貯zhù,跓zhù,軴zhù,铸zhù,筯zhù,鉒zhù,馵zhù,墸zhù,箸zhù,翥zhù,樦zhù,鋳zhù,駐zhù,築zhù,篫zhù,霔zhù,麆zhù,鑄zhù,櫡zhù,注zhù,飳zhù,抓zhuā,檛zhuā,膼zhuā,髽zhuā,跩zhuǎi,睉zhuài,拽zhuài,耑zhuān,专zhuān,専zhuān,砖zhuān,專zhuān,鄟zhuān,瑼zhuān,膞zhuān,磚zhuān,諯zhuān,蟤zhuān,顓zhuān,颛zhuān,转zhuǎn,転zhuǎn,竱zhuǎn,轉zhuǎn,簨zhuàn,灷zhuàn,啭zhuàn,堟zhuàn,蒃zhuàn,瑑zhuàn,僎zhuàn,撰zhuàn,篆zhuàn,馔zhuàn,饌zhuàn,囀zhuàn,籑zhuàn,僝zhuàn,妆zhuāng,追zhuī,骓zhuī,椎zhuī,锥zhuī,錐zhuī,騅zhuī,鵻zhuī,沝zhuǐ,倕zhuì,埀zhuì,腏zhuì,笍zhuì,娷zhuì,缀zhuì,惴zhuì,甀zhuì,缒zhuì,畷zhuì,膇zhuì,墜zhuì,綴zhuì,赘zhuì,縋zhuì,諈zhuì,醊zhuì,錣zhuì,餟zhuì,礈zhuì,贅zhuì,轛zhuì,鑆zhuì,坠zhuì,湻zhūn,宒zhūn,迍zhūn,肫zhūn,窀zhūn,谆zhūn,諄zhūn,衠zhūn,訰zhūn,准zhǔn,準zhǔn,綧zhǔn,稕zhǔn,凖zhǔn,鐯zhuo,拙zhuō,炪zhuō,倬zhuō,捉zhuō,桌zhuō,涿zhuō,棳zhuō,琸zhuō,窧zhuō,槕zhuō,蠿zhuō,矠zhuó,卓zhuó,圴zhuó,犳zhuó,灼zhuó,妰zhuó,茁zhuó,斫zhuó,浊zhuó,丵zhuó,浞zhuó,诼zhuó,酌zhuó,啄zhuó,娺zhuó,梲zhuó,斮zhuó,晫zhuó,椓zhuó,琢zhuó,斱zhuó,硺zhuó,窡zhuó,罬zhuó,撯zhuó,擆zhuó,斲zhuó,禚zhuó,諁zhuó,諑zhuó,濁zhuó,擢zhuó,斵zhuó,濯zhuó,镯zhuó,鵫zhuó,灂zhuó,蠗zhuó,鐲zhuó,籗zhuó,鷟zhuó,籱zhuó,烵zhuó,謶zhuó,薋zī,菑zī,吱zī,孜zī,茊zī,兹zī,咨zī,姕zī,姿zī,茲zī,栥zī,紎zī,赀zī,资zī,崰zī,淄zī,秶zī,缁zī,谘zī,赼zī,嗞zī,嵫zī,椔zī,湽zī,滋zī,粢zī,葘zī,辎zī,鄑zī,孶zī,禌zī,觜zī,貲zī,資zī,趑zī,锱zī,緇zī,鈭zī,镃zī,龇zī,輜zī,鼒zī,澬zī,諮zī,趦zī,輺zī,錙zī,髭zī,鲻zī,鍿zī,頾zī,頿zī,鯔zī,鶅zī,鰦zī,齜zī,訾zī,訿zī,芓zī,孳zī,鎡zī,茈zǐ,泚zǐ,籽zǐ,子zǐ,姉zǐ,姊zǐ,杍zǐ,矷zǐ,秄zǐ,呰zǐ,秭zǐ,耔zǐ,虸zǐ,笫zǐ,梓zǐ,釨zǐ,啙zǐ,紫zǐ,滓zǐ,榟zǐ,橴zǐ,自zì,茡zì,倳zì,剚zì,恣zì,牸zì,渍zì,眥zì,眦zì,胔zì,胾zì,漬zì,字zì,唨zo,潨zōng,宗zōng,倧zōng,综zōng,骔zōng,堫zōng,嵏zōng,嵕zōng,惾zōng,棕zōng,猣zōng,腙zōng,葼zōng,朡zōng,椶zōng,嵸zōng,稯zōng,緃zōng,熧zōng,緵zōng,翪zōng,蝬zōng,踨zōng,踪zōng,磫zōng,豵zōng,蹤zōng,騌zōng,鬃zōng,騣zōng,鬉zōng,鯮zōng,鯼zōng,鑁zōng,綜zōng,潀zóng,潈zóng,蓯zǒng,熜zǒng,緫zǒng,总zǒng,偬zǒng,捴zǒng,惣zǒng,愡zǒng,揔zǒng,搃zǒng,傯zǒng,蓗zǒng,摠zǒng,総zǒng,燪zǒng,總zǒng,鍯zǒng,鏓zǒng,縦zǒng,縂zǒng,纵zòng,昮zòng,疭zòng,倊zòng,猔zòng,碂zòng,粽zòng,糉zòng,瘲zòng,錝zòng,縱zòng,邹zōu,驺zōu,诹zōu,陬zōu,菆zōu,棷zōu,棸zōu,鄒zōu,緅zōu,鄹zōu,鯫zōu,黀zōu,齺zōu,芻zōu,鲰zōu,辶zǒu,赱zǒu,走zǒu,鯐zǒu,搊zǒu,奏zòu,揍zòu,租zū,菹zū,錊zū,伜zú,倅zú,紣zú,綷zú,顇zú,卆zú,足zú,卒zú,哫zú,崒zú,崪zú,族zú,稡zú,箤zú,踤zú,踿zú,镞zú,鏃zú,诅zǔ,阻zǔ,俎zǔ,爼zǔ,祖zǔ,組zǔ,詛zǔ,靻zǔ,鎺zǔ,组zǔ,鉆zuān,劗zuān,躜zuān,鑚zuān,躦zuān,繤zuǎn,缵zuǎn,纂zuǎn,纉zuǎn,籫zuǎn,纘zuǎn,欑zuàn,赚zuàn,賺zuàn,鑽zuàn,钻zuàn,攥zuàn,厜zuī,嗺zuī,樶zuī,蟕zuī,纗zuī,嶉zuǐ,槯zuǐ,嶊zuǐ,噿zuǐ,濢zuǐ,璻zuǐ,嘴zuǐ,睟zuì,枠zuì,栬zuì,絊zuì,酔zuì,晬zuì,最zuì,祽zuì,罪zuì,辠zuì,蕞zuì,醉zuì,嶵zuì,檇zuì,檌zuì,穝zuì,墫zūn,尊zūn,嶟zūn,遵zūn,樽zūn,繜zūn,罇zūn,鶎zūn,鐏zūn,鱒zūn,鷷zūn,鳟zūn,僔zǔn,噂zǔn,撙zǔn,譐zǔn,拵zùn,捘zùn,銌zùn,咗zuo,昨zuó,秨zuó,捽zuó,椊zuó,稓zuó,筰zuó,鈼zuó,阝zuǒ,左zuǒ,佐zuǒ,繓zuǒ,酢zuò,作zuò,坐zuò,阼zuò,岝zuò,岞zuò,怍zuò,侳zuò,祚zuò,胙zuò,唑zuò,座zuò,袏zuò,做zuò,葄zuò,蓙zuò,飵zuò,糳zuò,疮chuāng,牕chuāng,噇chuáng,闖chuǎng,剏chuàng,霜shuāng,欆shuāng,驦shuāng,慡shuǎng,灀shuàng,窓chuāng,瘡chuāng,闯chuǎng,仺chuàng,剙chuàng,雙shuāng,礵shuāng,鸘shuāng,樉shuǎng,谁shuí,鹴shuāng,爽shuǎng,鏯shuǎng,孀shuāng,孇shuāng,騻shuāng,焋zhuàng,幢zhuàng,撞zhuàng,隹zhuī,傱shuǎn,'; -function pinyin(word,splitStr) { - splitStr = splitStr === undefined ? ' ' : splitStr; - var str = ''; - var s; - for (var i = 0; i < word.length; i++) { - if (hzpy.indexOf(word.charAt(i)) != -1 && word.charCodeAt(i) > 200) { - s = 1; - while (hzpy.charAt(hzpy.indexOf(word.charAt(i)) + s) != ",") { - str += hzpy.charAt(hzpy.indexOf(word.charAt(i)) + s); - s++; - } - str += splitStr; - } - else { - str += word.charAt(i); - } +function pinyin(word, splitStr) { + splitStr = splitStr === undefined ? ' ' : splitStr; + var str = ''; + var s; + for (var i = 0; i < word.length; i++) { + if (hzpy.indexOf(word.charAt(i)) != -1 && word.charCodeAt(i) > 200) { + s = 1; + while (hzpy.charAt(hzpy.indexOf(word.charAt(i)) + s) != ',') { + str += hzpy.charAt(hzpy.indexOf(word.charAt(i)) + s); + s++; + } + str += splitStr; + } else { + str += word.charAt(i); } - return str; -} \ No newline at end of file + } + return str; +} + +window.pinyin = pinyin; diff --git a/packages/cherry-markdown/index.html b/packages/cherry-markdown/index.html index 434fb1f62..a78172a2f 100644 --- a/packages/cherry-markdown/index.html +++ b/packages/cherry-markdown/index.html @@ -41,6 +41,8 @@ From 1e8308b222631d6fd93d9c4d5d3e2442e4311107 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Mon, 26 Jan 2026 09:40:09 +0800 Subject: [PATCH 31/57] =?UTF-8?q?fix:=20=E5=B0=86=E6=88=AA=E5=9B=BE?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=A0=BC=E5=BC=8F=E4=BB=8E=20JPEG=20?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=20PNG=20(#1609)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/hungry-brooms-mate.md | 5 +++++ packages/cherry-markdown/src/utils/export.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/hungry-brooms-mate.md diff --git a/.changeset/hungry-brooms-mate.md b/.changeset/hungry-brooms-mate.md new file mode 100644 index 000000000..3c8705b62 --- /dev/null +++ b/.changeset/hungry-brooms-mate.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +fix: 将截图导出格式从 JPEG 改为 PNG diff --git a/packages/cherry-markdown/src/utils/export.js b/packages/cherry-markdown/src/utils/export.js index b82aad21b..eab00ca9e 100644 --- a/packages/cherry-markdown/src/utils/export.js +++ b/packages/cherry-markdown/src/utils/export.js @@ -123,7 +123,7 @@ export function exportScreenShot(previewDom, fileName) { scrollY: 0, scrollX: 0, }).then((canvas) => { - const imgData = canvas.toDataURL('image/jpeg'); + const imgData = canvas.toDataURL('image/png'); fileDownload(imgData, fileName); thenFinish(); }); From c6581157cb58db484d261368db70ea542d489b80 Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Wed, 28 Jan 2026 15:24:42 +0800 Subject: [PATCH 32/57] =?UTF-8?q?fix:=20#1610=20=E5=B8=A6=20~=20=E7=9A=84?= =?UTF-8?q?=E8=B6=85=E9=93=BE=E6=8E=A5=EF=BC=8C=E5=BC=95=E7=94=A8=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=90=8E=EF=BC=8C=E7=82=B9=E5=87=BB=E7=9A=84=E8=B6=85?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E5=8F=98=E6=88=90=E4=BA=86=20~T=20(#1611)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/cool-pumas-live.md | 5 +++++ packages/cherry-markdown/src/Engine.js | 20 ++++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 .changeset/cool-pumas-live.md diff --git a/.changeset/cool-pumas-live.md b/.changeset/cool-pumas-live.md new file mode 100644 index 000000000..9ce9d8af0 --- /dev/null +++ b/.changeset/cool-pumas-live.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +fix: #1610 带 ~ 的超链接,引用显示后,点击的超链接变成了 ~T diff --git a/packages/cherry-markdown/src/Engine.js b/packages/cherry-markdown/src/Engine.js index fda2f7d7d..0441d80d5 100644 --- a/packages/cherry-markdown/src/Engine.js +++ b/packages/cherry-markdown/src/Engine.js @@ -92,7 +92,7 @@ export default class Engine { if (this.urlProcessorMap[key]) { return this.urlProcessorMap[key]; } - let originUrl = this.dealAfterMakeHtml(url); + let originUrl = this.$decodeReservedKeywords(url); originUrl = originUrl.replace(/&/g, '&'); const ret = this.$cherry.options.callback.urlProcessor(originUrl, srcType, (/** @type {string} */ newUrl) => { if (newUrl) { @@ -212,8 +212,7 @@ export default class Engine { } $beforeMakeHtml(str) { - let $str = str.replace(/~/g, '~T'); - $str = $str.replace(/\$/g, '~D'); + let $str = this.$encodeReservedKeywords(str); $str = $str.replace(/\r\n/g, '\n'); // DOS to Unix $str = $str.replace(/\r/g, '\n'); // Mac to Unix // 避免正则性能问题,如/.+\n/.test(' '.repeat(99999)), 回溯次数过多 @@ -227,9 +226,7 @@ export default class Engine { } dealAfterMakeHtml(str) { - let $str = str.replace(/~D/g, '$'); - $str = $str.replace(/~T/g, '~'); - $str = $str.replace(/\\<\//g, '\\ { if (escapeChar === '&') { @@ -244,11 +241,22 @@ export default class Engine { return $str; } + // 替换预留关键字 + $encodeReservedKeywords(str) { + return str.replace(/~/g, '~T').replace(/\$/g, '~D'); + } + + // 还原预留关键字 + $decodeReservedKeywords(str) { + return str.replace(/~D/g, '$').replace(/~T/g, '~'); + } + $afterMakeHtml(str) { let $str = this.$fireHookAction(str, 'paragraph', 'afterMakeHtml', this.$dealSentenceByCache.bind(this)); // str = this._fireHookAction(str, 'sentence', 'afterMakeHtml'); $str = this.dealAfterMakeHtml($str); $str = UrlCache.restoreAll($str); + $str = this.$decodeReservedKeywords($str); return $str; } From 3d4e6bca940da60c013e4a6d615a3ba908b89005 Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Wed, 28 Jan 2026 16:17:59 +0800 Subject: [PATCH 33/57] =?UTF-8?q?fix:=20#1593=20=E9=A6=96=E6=AC=A1?= =?UTF-8?q?=E7=B2=98=E8=B4=B4html=E5=86=85=E5=AE=B9=E6=97=B6=EF=BC=8Ccherr?= =?UTF-8?q?y=E4=BC=9A=E9=BB=98=E8=AE=A4=E6=8A=8Ahtml=E8=BD=AC=E6=88=90Mark?= =?UTF-8?q?down=EF=BC=8C=E4=BD=86=E6=8F=90=E7=A4=BA=E7=9A=84=E5=8D=B4?= =?UTF-8?q?=E6=98=AFTEXT=20(#1612)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/curvy-words-sneeze.md | 5 +++++ packages/cherry-markdown/src/utils/pasteHelper.js | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 .changeset/curvy-words-sneeze.md diff --git a/.changeset/curvy-words-sneeze.md b/.changeset/curvy-words-sneeze.md new file mode 100644 index 000000000..cebafbc5a --- /dev/null +++ b/.changeset/curvy-words-sneeze.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +fix: #1593 首次粘贴html内容时,cherry会默认把html转成Markdown,但提示的却是TEXT diff --git a/packages/cherry-markdown/src/utils/pasteHelper.js b/packages/cherry-markdown/src/utils/pasteHelper.js index 640a75de4..f305dc594 100644 --- a/packages/cherry-markdown/src/utils/pasteHelper.js +++ b/packages/cherry-markdown/src/utils/pasteHelper.js @@ -224,9 +224,10 @@ const pasteHelper = { }, switchTextClick(event) { this.setTypeToLocalStorage('text'); - if (this.bubbleDom.getAttribute('data-type') === 'text') { - return; - } + // 由于默认是粘贴md,当记忆text的时候,会先转md再转text,所以这里的判断会有问题,不想再套娃解决了,直接注释掉 + // if (this.bubbleDom.getAttribute('data-type') === 'text') { + // return; + // } this.noHide = true; this.bubbleDom.setAttribute('data-type', 'text'); this.codemirror.doc.replaceSelection(this.html); From 0357b2da69bacd3badd2f81ac351eaaf71092577 Mon Sep 17 00:00:00 2001 From: novlan1 <1576271227@qq.com> Date: Thu, 29 Jan 2026 12:30:40 +0800 Subject: [PATCH 34/57] feat: add stream package (#1613) * feat: add stream package * docs: add docs of steam version * docs: update docs --------- Co-authored-by: sunsonliu --- .github/workflows/pr_preview-publish.yml | 1 + README.CN.md | 49 ++ README.md | 50 ++ examples/ai_chat_stream.html | 300 ++++++++++ .../assets/scripts/ai-chat-stream-demo.js | 316 +++++++++++ .../build/rollup.stream.config.js | 87 +++ packages/cherry-markdown/package.json | 8 +- packages/cherry-markdown/src/CherryStream.js | 520 ++++++++++++++++++ packages/cherry-markdown/src/Engine.js | 4 +- packages/cherry-markdown/src/Previewer.js | 83 ++- .../src/core/hooks/Suggester.js | 2 +- .../cherry-markdown/src/index.stream.core.js | 29 + packages/cherry-markdown/src/index.stream.js | 30 + 13 files changed, 1447 insertions(+), 32 deletions(-) create mode 100644 examples/ai_chat_stream.html create mode 100644 examples/assets/scripts/ai-chat-stream-demo.js create mode 100644 packages/cherry-markdown/build/rollup.stream.config.js create mode 100644 packages/cherry-markdown/src/CherryStream.js create mode 100644 packages/cherry-markdown/src/index.stream.core.js create mode 100644 packages/cherry-markdown/src/index.stream.js diff --git a/.github/workflows/pr_preview-publish.yml b/.github/workflows/pr_preview-publish.yml index d2dc904e7..7d19e1433 100644 --- a/.github/workflows/pr_preview-publish.yml +++ b/.github/workflows/pr_preview-publish.yml @@ -57,6 +57,7 @@ jobs: * [VIM 编辑模式](${{steps.deploy.outputs.url}}/vim.html) * [使用自带或自定义的 Mermaid.js](${{steps.deploy.outputs.url}}/mermaid.html) * [自定义代码块外层容器](${{steps.deploy.outputs.url}}/custom_codeblock_wrapper.html) + * [流式输出包](${{steps.deploy.outputs.url}}/ai_chat_stream.html) number: ${{ steps.pr.outputs.id }} diff --git a/README.CN.md b/README.CN.md index 1ee88c2ae..9bc1589d7 100644 --- a/README.CN.md +++ b/README.CN.md @@ -36,6 +36,7 @@ Cherry Markdown Writer 是一款 Javascript Markdown 编辑器,具有开箱即 - [表格编辑](https://tencent.github.io/cherry-markdown/examples/table.html) - [自动编号标题](https://tencent.github.io/cherry-markdown/examples/head_num.html) - [流式输入模式(AI chat 场景)](https://tencent.github.io/cherry-markdown/examples/ai_chat.html) +- [流式输入模式 - 可选插件懒加载](https://tencent.github.io/cherry-markdown/examples/ai_chat_stream.html) - [VIM 编辑模式](https://tencent.github.io/cherry-markdown/examples/vim.html) - [使用自带或自定义的 Mermaid.js](https://tencent.github.io/cherry-markdown/examples/mermaid.html) - [自定义代码块外层容器](https://tencent.github.io/cherry-markdown/examples/custom_codeblock_wrapper.html) @@ -246,6 +247,54 @@ const cherryInstance = new Cherry({ }); ```` +### 流式输出包(Stream Build) + +Cherry 提供了专为流式输出场景优化的构建包,该包不包含 mermaid、CodeMirror 等大型依赖,可实现按需懒加载,非常适合 AI Chat 等场景。 + +```javascript +import 'cherry-markdown/dist/cherry-markdown.css'; +import Cherry from 'cherry-markdown/dist/cherry-markdown.stream'; + +// 流式输出包默认不包含以下依赖,可按需加载: +// - mermaid(流程图) +// - CodeMirror(代码编辑器) + +const cherryInstance = new Cherry({ + id: 'markdown-container', +}); + +cherryInstance.setMarkdown('# welcome to cherry editor!'); +``` + +#### 为流式输出包加载 Mermaid 插件 + +```javascript +import 'cherry-markdown/dist/cherry-markdown.css'; +import Cherry from 'cherry-markdown/dist/cherry-markdown.stream'; +import CherryMermaidPlugin from 'cherry-markdown/dist/addons/cherry-code-block-mermaid-plugin'; +import mermaid from 'mermaid'; + +// 插件注册必须在 Cherry 实例化之前完成 +Cherry.usePlugin(CherryMermaidPlugin, { + mermaid, + mermaidAPI: mermaid, +}); + +const cherryInstance = new Cherry({ + id: 'markdown-container', +}); +``` + +#### 流式输出包与核心包的区别 + +| 构建包 | 文件 | 包含 Mermaid | 包含 CodeMirror | 适用场景 | +| ---------- | --------------------------- | ------------ | --------------- | ---------------- | +| 完整包 | `cherry-markdown.js` | ✅ | ✅ | 通用场景 | +| 核心包 | `cherry-markdown.core.js` | ❌ | ✅ | 不需要 Mermaid | +| 流式输出包 | `cherry-markdown.stream.js` | ❌ | ❌ | AI Chat 流式输出 | + +> 注意:MathJax/KaTeX 为外部依赖,通过 CDN 动态加载,不包含在任何构建包中。 + ### 异步加载 强烈推荐使用动态引入(Dynamic import),下面给出 webpack 动态引入的示例。 diff --git a/README.md b/README.md index 99d0517ae..85bc21d20 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ Cherry Markdown Writer is a Javascript Markdown editor. It has the advantages su - [Table WYSIWYG](https://tencent.github.io/cherry-markdown/examples/table.html) - [Headers with Auto Num](https://tencent.github.io/cherry-markdown/examples/head_num.html) - [Streaming rendering Mode (AI chat scenario)](https://tencent.github.io/cherry-markdown/examples/ai_chat.html) +- [Streaming Mode - Lazy Loading Plugins](https://tencent.github.io/cherry-markdown/examples/ai_chat_stream.html) - [VIM Editing Mode](https://tencent.github.io/cherry-markdown/examples/vim.html) - [Utilize Your Own Mermaid.js](https://tencent.github.io/cherry-markdown/examples/mermaid.html) - [Custom Code Block Wrapper](https://tencent.github.io/cherry-markdown/examples/custom_codeblock_wrapper.html) @@ -245,6 +246,55 @@ const cherryInstance = new Cherry({ }); ```` +### Stream Build + +Cherry provides a build package optimized for streaming output scenarios. This package does not include large dependencies like mermaid or CodeMirror, enabling on-demand lazy loading. It is ideal for AI Chat and similar scenarios. + +```javascript +import 'cherry-markdown/dist/cherry-markdown.css'; +import Cherry from 'cherry-markdown/dist/cherry-markdown.stream'; + +// The stream build does not include the following dependencies by default, +// which can be loaded on demand: +// - mermaid (flowcharts) +// - CodeMirror (code editor) + +const cherryInstance = new Cherry({ + id: 'markdown-container', +}); + +cherryInstance.setMarkdown('# welcome to cherry editor!'); +``` + +#### Loading Mermaid Plugin for Stream Build + +```javascript +import 'cherry-markdown/dist/cherry-markdown.css'; +import Cherry from 'cherry-markdown/dist/cherry-markdown.stream'; +import CherryMermaidPlugin from 'cherry-markdown/dist/addons/cherry-code-block-mermaid-plugin'; +import mermaid from 'mermaid'; + +// Plugin registration must be done before Cherry is instantiated +Cherry.usePlugin(CherryMermaidPlugin, { + mermaid, + mermaidAPI: mermaid, +}); + +const cherryInstance = new Cherry({ + id: 'markdown-container', +}); +``` + +#### Differences Between Stream Build and Core Build + +| Build | File | Mermaid | CodeMirror | Use Case | +| ------ | --------------------------- | ------- | ---------- | ----------------- | +| Full | `cherry-markdown.js` | ✅ | ✅ | General purpose | +| Core | `cherry-markdown.core.js` | ❌ | ✅ | Without Mermaid | +| Stream | `cherry-markdown.stream.js` | ❌ | ❌ | AI Chat streaming | + +> Note: MathJax/KaTeX are external dependencies loaded dynamically via CDN and are not included in any build package. + ### Dynamic import **recommend** Using Dynamic import, the following is an example of webpack Dynamic import. diff --git a/examples/ai_chat_stream.html b/examples/ai_chat_stream.html new file mode 100644 index 000000000..1ecb54b4f --- /dev/null +++ b/examples/ai_chat_stream.html @@ -0,0 +1,300 @@ + + + + + + + 流式输出md内容 - 插件懒加载 + + + + + + + +
+ +
+

🔌 插件懒加载选项(勾选后懒加载对应插件)

+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+ +
+ + + + + +
+ + + +
+ +
+ +
流式打印自定义内容
+
+
+ + + + + + \ No newline at end of file diff --git a/examples/assets/scripts/ai-chat-stream-demo.js b/examples/assets/scripts/ai-chat-stream-demo.js new file mode 100644 index 000000000..324becbc8 --- /dev/null +++ b/examples/assets/scripts/ai-chat-stream-demo.js @@ -0,0 +1,316 @@ +// 插件配置 +const pluginConfig = { + mermaid: { + loaded: false, + loading: false, + src: 'https://cdn.jsdelivr.net/npm/mermaid@11.6.0/dist/mermaid.min.js', + pluginSrc: '../packages/cherry-markdown/dist/addons/cherry-code-block-mermaid-plugin.js', + }, + katex: { + loaded: false, + loading: false, + src: 'https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js', + css: 'https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css', + }, + mathjax: { + loaded: false, + loading: false, + src: 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js', + }, +}; + +// 示例消息列表 +const msgList = [ + '### 概述\n通过以下方式打开Cherry Markdown的流式渲染能力:\n```javascript\nconst cherry = new Cherry({\n editor: {\n height: "auto",\n defaultModel: "previewOnly",\n },\n engine: {\n global: {\n flowSessionContext: true,\n flowSessionCursor: "default",\n },\n },\n});\n```\n', + '### 数学公式示例\n\n#### 行内公式\n质能方程:$E = mc^2$\n\n#### 块级公式\n高斯公式:\n$$\\oint_S \\vec{F} \\cdot d\\vec{A} = \\int_V (\\nabla \\cdot \\vec{F}) dV$$\n\n二次方程根:\n$$x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}$$\n', + '### Mermaid 流程图示例\n\n```mermaid\ngraph TD\n A[开始] --> B{是否加载插件?}\n B -->|是| C[懒加载插件]\n B -->|否| D[使用默认渲染]\n C --> E[渲染内容]\n D --> E\n E --> F[结束]\n```\n\n#### 时序图\n\n```mermaid\nsequenceDiagram\n participant 用户\n participant Cherry\n participant 插件\n 用户->>Cherry: setMarkdown()\n Cherry->>插件: 检查是否需要渲染\n 插件-->>Cherry: 返回渲染结果\n Cherry-->>用户: 显示内容\n```\n', + '### 综合示例\n\n#### 代码块\n```python\ndef fibonacci(n):\n if n <= 1:\n return n\n return fibonacci(n-1) + fibonacci(n-2)\n\nprint(fibonacci(10)) # 输出: 55\n```\n\n#### 表格\n| 插件 | 用途 | 大小 |\n|:----:|:-----|-----:|\n| Mermaid | 流程图、时序图 | ~2MB |\n| KaTeX | 数学公式(快) | ~300KB |\n| MathJax | 数学公式(全) | ~3MB |\n\n#### 数学公式\n欧拉公式:$e^{i\\pi} + 1 = 0$\n', +]; + +// 加载脚本 +function loadScript(src, id) { + return new Promise((resolve, reject) => { + if (document.getElementById(id)) { + resolve(); + return; + } + const script = document.createElement('script'); + script.id = id; + script.src = src; + script.onload = () => { + // 等待一小段时间确保脚本执行完毕并挂载到 window + setTimeout(resolve, 100); + }; + script.onerror = reject; + document.head.appendChild(script); + }); +} + +// 加载样式 +function loadCSS(href, id) { + return new Promise((resolve) => { + if (document.getElementById(id)) { + resolve(); + return; + } + const link = document.createElement('link'); + link.id = id; + link.rel = 'stylesheet'; + link.href = href; + link.onload = resolve; + document.head.appendChild(link); + }); +} + +// 更新插件状态显示 +function updatePluginStatus(plugin, status) { + const statusEl = document.querySelector(`.j-plugin-status[data-plugin="${plugin}"]`); + if (statusEl) { + statusEl.className = `plugin-status j-plugin-status ${status}`; + switch (status) { + case 'loading': + statusEl.textContent = '(加载中...)'; + break; + case 'loaded': + statusEl.textContent = '(已加载)'; + break; + default: + statusEl.textContent = ''; + } + } +} + +// 懒加载插件 +async function loadPlugin(plugin) { + const config = pluginConfig[plugin]; + if (config.loaded || config.loading) return; + + config.loading = true; + updatePluginStatus(plugin, 'loading'); + + try { + if (config.css) { + await loadCSS(config.css, `${plugin}-css`); + } + await loadScript(config.src, `${plugin}-js`); + + // mermaid 需要额外加载插件脚本 + if (plugin === 'mermaid' && config.pluginSrc) { + await loadScript(config.pluginSrc, `${plugin}-plugin-js`); + } + + // 特殊初始化 + if (plugin === 'mermaid' && window.mermaid && window.CherryCodeBlockMermaidPlugin) { + // 使用 usePlugin 注册 mermaid 插件 + Cherry.usePlugin(window.CherryCodeBlockMermaidPlugin, { + mermaid: window.mermaid, + mermaidAPI: window.mermaid, + }); + } + + config.loaded = true; + config.loading = false; + updatePluginStatus(plugin, 'loaded'); + console.log(`[Plugin] ${plugin} 加载完成`); + } catch (e) { + config.loading = false; + updatePluginStatus(plugin, ''); + console.error(`[Plugin] ${plugin} 加载失败:`, e); + } +} + +// 获取当前 Cherry 配置 +function getCherryConfig() { + const useMermaid = document.getElementById('plugin-mermaid').checked; + const useKatex = document.getElementById('plugin-katex').checked; + const useMathJax = document.getElementById('plugin-mathjax').checked; + + // 数学引擎配置 + let mathEngine = 'katex'; + let mathSrc = pluginConfig.katex.src; + let mathCss = pluginConfig.katex.css; + + if (useMathJax && !useKatex) { + mathEngine = 'MathJax'; + mathSrc = pluginConfig.mathjax.src; + mathCss = ''; + } + + return { + editor: { + height: 'auto', + defaultModel: 'previewOnly', + }, + engine: { + global: { + flowSessionContext: document.querySelector('.j-status-input').checked, + flowSessionCursor: 'default', + }, + syntax: { + codeBlock: { selfClosing: false }, + inlineCode: { selfClosing: false }, + header: { anchorStyle: 'none', selfClosing: false }, + table: { selfClosing: false }, + fontEmphasis: { selfClosing: false }, + link: { selfClosing: false }, + image: { selfClosing: false }, + mathBlock: { + selfClosing: false, + engine: mathEngine, + src: mathSrc, + css: mathCss, + }, + inlineMath: { + selfClosing: false, + engine: mathEngine, + }, + }, + }, + externals: { + // mermaid 通过 usePlugin 方式注册,不需要在这里配置 + }, + previewer: { + enablePreviewerBubble: false, + }, + }; +} + +/** + * AI Chat Stream 场景初始化 + */ +export function aiChatStreamScenario() { + // 初始化 DOM 元素 + const dialog = document.querySelector('.j-dialog'); + const msgTemplate = document.querySelector('.j-one-msg'); + const button = document.querySelector('.j-button'); + const buttonTips = document.querySelector('.j-button-tips'); + const pauseBtn = document.querySelector('.j-pause-button'); + const customTextarea = document.querySelector('.j-custom-textarea'); + const customButton = document.querySelector('.j-custom-button'); + + let currentCherry = null; + let printing = false; + let paused = false; + let currentMsgIndex = msgList.length; + let currentWordIndex = 0; + let interval = 30; + + buttonTips.innerHTML = currentMsgIndex; + + // 流式打印函数 + function beginPrint(msg) { + printing = true; + function step() { + if (paused) { + setTimeout(step, 100); + return; + } + const currentText = msg.substring(0, currentWordIndex); + currentCherry.setMarkdown(currentText); + try { + dialog.scrollTop = dialog.scrollHeight; + } catch (e) { } + if (currentWordIndex < msg.length) { + currentWordIndex++; + setTimeout(step, interval); + } else { + printing = false; + currentWordIndex = 0; + } + } + setTimeout(step, interval); + } + + // 插件复选框事件 + document.querySelectorAll('.j-plugin-checkbox').forEach(checkbox => { + checkbox.addEventListener('change', async function () { + const plugin = this.dataset.plugin; + + // KaTeX 和 MathJax 互斥 + if (plugin === 'katex' && this.checked) { + document.getElementById('plugin-mathjax').checked = false; + } else if (plugin === 'mathjax' && this.checked) { + document.getElementById('plugin-katex').checked = false; + } + + // 懒加载插件 + if (this.checked) { + await loadPlugin(plugin); + } + }); + }); + + // 流式适配开关 + document.querySelector('.j-status-input').addEventListener('change', function () { + interval = this.checked ? 30 : 50; + currentWordIndex = 0; + currentMsgIndex = msgList.length; + buttonTips.innerHTML = currentMsgIndex; + dialog.innerHTML = ''; + }); + + // 暂停/继续按钮 + pauseBtn.addEventListener('click', function () { + paused = !paused; + pauseBtn.innerText = paused ? '继续流式' : '暂停流式'; + }); + + // 获取消息按钮 + button.addEventListener('click', async function () { + if (printing || currentMsgIndex === 0) return; + + // 检查并加载需要的插件 + const checkboxes = document.querySelectorAll('.j-plugin-checkbox:checked'); + for (const cb of checkboxes) { + await loadPlugin(cb.dataset.plugin); + } + + const msg = msgTemplate.cloneNode(true); + msg.classList.remove('j-one-msg'); + const config = getCherryConfig(); + config.el = msg.querySelector('.chat-one-msg'); + currentCherry = new Cherry(config); + dialog.appendChild(msg); + + try { + dialog.scrollTop = dialog.scrollHeight; + } catch (e) { } + + beginPrint(msgList[msgList.length - currentMsgIndex]); + currentMsgIndex--; + buttonTips.innerHTML = currentMsgIndex; + }); + + // 自定义内容按钮 + customButton.addEventListener('click', async function () { + if (printing) return; + + const customContent = customTextarea.value.trim(); + if (!customContent) { + alert('请输入要流式打印的内容'); + return; + } + + // 检查并加载需要的插件 + const checkboxes = document.querySelectorAll('.j-plugin-checkbox:checked'); + for (const cb of checkboxes) { + await loadPlugin(cb.dataset.plugin); + } + + const msg = msgTemplate.cloneNode(true); + msg.classList.remove('j-one-msg'); + const config = getCherryConfig(); + config.el = msg.querySelector('.chat-one-msg'); + currentCherry = new Cherry(config); + dialog.appendChild(msg); + + try { + dialog.scrollTop = dialog.scrollHeight; + } catch (e) { } + + beginPrint(customContent); + }); + + // 默认加载 KaTeX + loadPlugin('katex'); +} diff --git a/packages/cherry-markdown/build/rollup.stream.config.js b/packages/cherry-markdown/build/rollup.stream.config.js new file mode 100644 index 000000000..ac695aded --- /dev/null +++ b/packages/cherry-markdown/build/rollup.stream.config.js @@ -0,0 +1,87 @@ +/** + * Copyright (C) 2021 Tencent. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import terser from '@rollup/plugin-terser'; +import baseConfig from './rollup.base.config.js'; + +const terserPlugin = (options = {}) => + terser({ + output: { + comments: false, + }, + compress: { + pure_funcs: ['console.log', 'console.info'], + }, + ecma: 5, + ...options, + }); + +const umdOutputConfig = { + ...baseConfig.output, + exports: 'named', + file: 'dist/cherry-markdown.stream.js', + format: 'umd', + name: 'Cherry', + sourcemap: false, + compact: true, + plugins: [terserPlugin()], + globals: { + mermaid: 'mermaid', + codemirror: 'CodeMirror', + 'codemirror/src/util/misc': 'CodeMirror', + }, +}; + +const esmOutputConfig = { + ...baseConfig.output, + file: 'dist/cherry-markdown.stream.esm.js', + format: 'esm', + name: 'Cherry', + sourcemap: false, + compact: true, + plugins: [ + terserPlugin({ + module: true, + ecma: 2015, + }), + ], +}; + +const options = { + ...baseConfig, + input: 'src/index.stream.core.js', + output: [umdOutputConfig, esmOutputConfig], +}; + +if (!Array.isArray(options.external)) { + options.external = []; +} +// 流式渲染包不需要mermaid和codemirror +options.external.push('mermaid'); +options.external.push('codemirror'); +options.external.push(/^codemirror\/.*/); // 排除所有codemirror子模块 + +/** 构建目标是否 node */ +const IS_COMMONJS_BUILD = process.env.BUILD_TARGET === 'commonjs'; + +if (IS_COMMONJS_BUILD) { + options.output = { + ...umdOutputConfig, + file: umdOutputConfig.file.replace(/\.js$/, '.common.js'), + format: 'cjs', + }; +} + +export default options; diff --git a/packages/cherry-markdown/package.json b/packages/cherry-markdown/package.json index b70969fa4..a18a82f11 100644 --- a/packages/cherry-markdown/package.json +++ b/packages/cherry-markdown/package.json @@ -26,13 +26,15 @@ "iconfont": "gulp", "dev:vite": "vite", "build": "run-s clean build:all build:cjs", - "build:all": "run-p iconfont build:styles build:types build:addons build:full build:core build:engine", - "build:cjs": "run-p build:core-cjs build:engine-cjs", + "build:all": "run-p iconfont build:styles build:types build:addons build:full build:core build:engine build:stream", + "build:cjs": "run-p build:core-cjs build:engine-cjs build:stream-cjs", "build:full": "cross-env NODE_ENV=production rollup --config build/build.js", "build:core": "cross-env CORE_BUILD=true NODE_ENV=production rollup --config build/rollup.core.config.js", "build:core-cjs": "cross-env BUILD_TARGET=commonjs CORE_BUILD=true NODE_ENV=production rollup --config build/rollup.core.config.js", "build:engine": "cross-env CORE_BUILD=true NODE_ENV=production rollup --config build/rollup.engine.config.js", "build:engine-cjs": "cross-env BUILD_TARGET=commonjs CORE_BUILD=true NODE_ENV=production rollup --config build/rollup.engine.config.js", + "build:stream": "cross-env NODE_ENV=production rollup --config build/rollup.stream.config.js", + "build:stream-cjs": "cross-env BUILD_TARGET=commonjs NODE_ENV=production rollup --config build/rollup.stream.config.js", "build:addons": "node build/addons.build.js", "build:types": "tsc --project tsconfig.json && node build/replacePaths.js", "build:styles": "cross-env NODE_ENV=production rollup --config build/rollup.styles.config.js", @@ -129,4 +131,4 @@ "optionalDependencies": { "mermaid": "9.4.3" } -} +} \ No newline at end of file diff --git a/packages/cherry-markdown/src/CherryStream.js b/packages/cherry-markdown/src/CherryStream.js new file mode 100644 index 000000000..55ca0cc6f --- /dev/null +++ b/packages/cherry-markdown/src/CherryStream.js @@ -0,0 +1,520 @@ +/** + * Copyright (C) 2021 Tencent. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import mergeWith from 'lodash/mergeWith'; +import Engine from './Engine'; +import Previewer from './Previewer'; +import { createElement } from './utils/dom'; +import { + customizer, + getThemeFromLocal, + testHasLocal, + getCodeThemeFromLocal, + getCodeWrapFromLocal, + saveCodeWrapToLocal, +} from './utils/config'; +import NestedError from './utils/error'; +import defaultConfig from './Cherry.config'; +import cloneDeep from 'lodash/cloneDeep'; +import Event from './Event'; +import locales from '@/locales/index'; + +import { urlProcessorProxy } from './UrlCache'; +import { CherryStatic } from './CherryStatic'; + +/** + * @typedef {import('~types/cherry').CherryOptions} CherryOptions + */ + +/** + * CherryStream - 专门用于流式渲染场景的精简版Cherry + * + * 特点: + * 1. 只包含Engine(解析引擎)和Previewer(预览区),不包含Editor(编辑器)和Toolbar(工具栏) + * 2. 不包含mermaid等大型依赖,包体积更小 + * 3. 适用于纯流式渲染场景,如AI对话、文档预览等 + */ +export default class CherryStream extends CherryStatic { + /** + * @protected + */ + static initialized = false; + /** + * @readonly + */ + static config = { + /** @type {CherryOptions} */ + defaults: defaultConfig, + }; + + /** + * @param {Partial} options + */ + constructor(options = {}) { + super(); + CherryStream.initialized = true; + const defaultConfigCopy = cloneDeep(CherryStream.config.defaults); + + /** + * @property + * @type {CherryOptions} + */ + this.options = mergeWith({}, defaultConfigCopy, options, customizer); + + // 强制设置为纯预览模式 + this.options.isPreviewOnly = true; + this.options.editor.defaultModel = 'previewOnly'; + this.options.toolbars.showToolbar = false; + + this.locales = locales; + if (this.options.locales) { + this.locales = { + ...this.options.locales, + ...this.locales, + }; + } + + // loading the locale + this.locale = this.locales[this.options.locale]; + + if (typeof this.options.engine.global.urlProcessor === 'function') { + this.options.engine.global.urlProcessor = urlProcessorProxy(this.options.engine.global.urlProcessor); + this.options.callback.urlProcessor = this.options.engine.global.urlProcessor; + } else { + this.options.callback.urlProcessor = urlProcessorProxy(this.options.callback.urlProcessor); + } + + this.status = { + toolbar: 'hide', + previewer: 'show', + editor: 'hide', + }; + + /** + * @property + * @type {string} 实例ID + */ + this.instanceId = `cherry-stream-${new Date().getTime()}${Math.random()}`; + this.options.instanceId = this.instanceId; + this.lastMarkdownText = ''; + this.$event = new Event(this.instanceId); + + if (this.options.engine.global.flowSessionCursor === 'default') { + this.options.engine.global.flowSessionCursor = ''; + } + + /** + * @type {import('./Engine').default} + */ + this.engine = new Engine(this.options, this); + this.init(); + } + + /** + * 初始化预览区 + * @private + */ + init() { + let mountEl = this.options.id ? document.getElementById(this.options.id) : this.options.el; + + if (!mountEl) { + if (!this.options.forceAppend) { + return false; + } + this.noMountEl = true; + mountEl = document.createElement('div'); + mountEl.id = this.options.id || 'cherry-markdown-stream'; + document.body.appendChild(mountEl); + } + + if (!mountEl.style.height) { + mountEl.style.height = this.options.editor.height; + } + this.cherryDom = mountEl; + + // 生成名称空间 + if (typeof this.options.themeNameSpace === 'string') { + this.nameSpace = this.options.themeNameSpace; + } else { + this.nameSpace = this.options.nameSpace; + } + + // 创建wrapper + const wrapperDom = this.createWrapper(); + + // 创建预览区 + const previewer = this.createPreviewer(); + + wrapperDom.classList.add('cherry--no-toolbar'); + wrapperDom.appendChild(previewer.options.previewerDom); + + this.wrapperDom = wrapperDom; + mountEl.appendChild(wrapperDom); + + this.$event.bindCallbacksByOptions(this.options); + + // 初始化预览区(不需要editor参数) + previewer.initWithoutEditor(); + + previewer.registerAfterUpdate(this.engine.mounted.bind(this.engine)); + + // 初始化内容 + this.initText(); + + this.$event.on('previewerClose', () => { + this.status.previewer = 'hide'; + }); + this.$event.on('previewerOpen', () => { + this.status.previewer = 'show'; + }); + + // 如果配置了初始化后根据hash自动滚动 + if (this.options.autoScrollByHashAfterInit) { + setTimeout(this.scrollByHash.bind(this)); + } + } + + /** + * @private + * @returns + */ + createWrapper() { + let mainTheme = ''; + let inlineCodeTheme = ''; + let codeBlockTheme = ''; + if (testHasLocal(this.nameSpace, 'theme')) { + mainTheme = getThemeFromLocal(true, this.nameSpace); + } else { + mainTheme = this.options.themeSettings.mainTheme; + mainTheme = mainTheme.replace(/theme__/g, ''); + const availableThemes = this.options.themeSettings.themeList.map((theme) => theme.className); + if (!availableThemes.includes(mainTheme)) { + mainTheme = 'default'; + } + mainTheme = `theme__${mainTheme}`; + } + // @ts-ignore + if (typeof this.options.engine.syntax.inlineCode.theme === 'string') { + inlineCodeTheme = + /** @type {{theme?: string;}} */ (this.options.engine.syntax.inlineCode).theme === 'black' ? 'black' : 'red'; + } else { + inlineCodeTheme = this.options.themeSettings.inlineCodeTheme === 'black' ? 'black' : 'red'; + } + // @ts-ignore + if (typeof this.options.engine.syntax.codeBlock.theme === 'string') { + codeBlockTheme = /** @type {{theme?: string;}} */ (this.options.engine.syntax.codeBlock).theme; + } else { + codeBlockTheme = this.options.themeSettings.codeBlockTheme; + } + if (testHasLocal(this.nameSpace, 'codeTheme')) { + codeBlockTheme = getCodeThemeFromLocal(this.nameSpace); + } + if (codeBlockTheme === 'dark') codeBlockTheme = 'tomorrow-night'; + else if (codeBlockTheme === 'light') codeBlockTheme = 'solarized-light'; + // @ts-ignore + const codeWrap = getCodeWrapFromLocal(this.nameSpace, this.options.engine.syntax.codeBlock.wrap); + const wrapperDom = createElement('div', ['cherry', 'clearfix', mainTheme].join(' '), { + 'data-inlineCodeTheme': inlineCodeTheme, + 'data-codeBlockTheme': codeBlockTheme, + 'data-codeWrap': codeWrap === 'wrap' ? 'wrap' : 'nowrap', + }); + this.wrapperDom = wrapperDom; + return wrapperDom; + } + + getCodeWrap() { + return this.wrapperDom.dataset.codeWrap || 'wrap'; + } + + setCodeWrap(codeWrap) { + this.wrapperDom.dataset.codeWrap = codeWrap === 'wrap' ? 'wrap' : 'nowrap'; + saveCodeWrapToLocal(this.nameSpace, codeWrap); + } + + /** + * @private + * @returns {import('@/Previewer').default} + */ + createPreviewer() { + /** @type {HTMLDivElement} */ + let previewer; + const anchorStyle = + (this.options.engine.syntax.header && this.options.engine.syntax.header.anchorStyle) || 'default'; + const autonumberClass = anchorStyle === 'autonumber' ? ' head-num' : ''; + const { className, dom, enablePreviewerBubble } = this.options.previewer; + let mainTheme = ''; + if (testHasLocal(this.nameSpace, 'theme')) { + mainTheme = getThemeFromLocal(true, this.nameSpace); + } else { + mainTheme = this.options.themeSettings.mainTheme; + } + const previewerClassName = [ + 'cherry-previewer cherry-markdown cherry-previewer--full', + className || '', + autonumberClass, + mainTheme, + ].join(' '); + if (dom) { + previewer = dom; + previewer.className += ` ${previewerClassName}`; + } else { + previewer = createElement('div', previewerClassName); + } + + this.previewer = new Previewer({ + $cherry: this, + previewerDom: previewer, + value: this.options.value || '', + isPreviewOnly: true, + enablePreviewerBubble: enablePreviewerBubble === true, // 流式渲染默认不开启预览区编辑功能,避免引入codemirror + lazyLoadImg: this.options.previewer.lazyLoadImg, + }); + + return this.previewer; + } + + /** + * @private + */ + initText() { + try { + const markdownText = this.options.value || ''; + this.lastMarkdownText = markdownText; + const html = this.engine.makeHtml(markdownText); + this.previewer.update(html); + this.$event.emit('afterInit', { markdownText, html }); + } catch (e) { + throw new NestedError(e); + } + } + + destroy() { + if (this.noMountEl) { + this.cherryDom.remove(); + } else { + this.wrapperDom.remove(); + } + this.$event.clearAll(); + } + + on(eventName, callback) { + if (this.$event.Events[eventName]) { + if (/^(afterInit|afterChange)$/.test(eventName)) { + return this.$event.on(eventName, (msg) => { + callback(msg.markdownText, msg.html); + }); + } + return this.$event.on(eventName, callback); + } + switch (eventName) { + case 'urlProcessor': + this.options.callback.urlProcessor = urlProcessorProxy(callback); + break; + default: + this.options.callback[eventName] = callback; + } + } + + off(eventName, callback) { + if (this.$event.Events[eventName]) { + return this.$event.off(eventName, callback); + } + this.options.callback[eventName] = () => {}; + } + + /** + * 滚动到hash位置 + */ + scrollByHash() { + if (location.hash) { + try { + const { hash } = location; + const testDom = document.getElementById(hash.replace('#', '')); + if (testDom && this.previewer.getDomContainer().contains(testDom)) { + location.hash = ''; + location.hash = hash; + } + } catch (error) { + // empty + } + } + } + + $t(str) { + return this.locale[str] ? this.locale[str] : str; + } + + addLocale(key, value) { + this.locale[key] = value; + } + + addLocales(locales) { + this.locale = Object.assign(this.locale, locales); + } + + getLocales() { + return this.locale; + } + + /** + * 获取实例id + * @returns {string} + * @public + */ + getInstanceId() { + return this.instanceId; + } + + /** + * 获取编辑器状态 + * @returns {Object} + */ + getStatus() { + return this.status; + } + + /** + * 获取markdown源码内容 + * @returns {string} markdown源码内容 + */ + getValue() { + return this.lastMarkdownText; + } + + /** + * 获取markdown源码内容 + * @returns {string} markdown源码内容 + */ + getMarkdown() { + return this.getValue(); + } + + /** + * 获取预览区内的html内容 + * @param {boolean} [wrapTheme=true] 是否在外层包裹主题class + * @returns {string} html内容 + */ + getHtml(wrapTheme = true) { + return this.previewer.getValue(wrapTheme); + } + + /** + * 获取Previewer 预览实例 + * @returns {Previewer} Previewer 预览实例 + */ + getPreviewer() { + return this.previewer; + } + + /** + * 获取目录,目录由head1~6组成 + * @returns {Array} 标题head数组 + */ + getToc() { + const str = this.getHtml(); + const headerList = []; + const headerRegex = /]*?) id="([^"]+?)"[^>]*?>(.+?)<\/h[0-6]>/g; + str.replace(headerRegex, (match, level, attrs, id, text) => { + const isInBlockquote = attrs.includes('data-in-blockquote="true"'); + headerList.push({ level: +level, id, text: text.replace(//, ''), isInBlockquote }); + return match; + }); + return headerList; + } + + /** + * 设置markdown内容并渲染(流式渲染核心方法) + * @param {string} content markdown内容 + */ + setValue(content) { + try { + const markdownText = content || ''; + if (markdownText !== this.lastMarkdownText) { + this.lastMarkdownText = markdownText; + const html = this.engine.makeHtml(markdownText); + this.previewer.update(html); + this.$event.emit('afterChange', { + markdownText, + html, + }); + } + } catch (e) { + throw new NestedError(e); + } + } + + /** + * 设置markdown内容并渲染 + * @param {string} content markdown内容 + */ + setMarkdown(content) { + return this.setValue(content); + } + + /** + * 强制重新渲染预览区域 + */ + refreshPreviewer() { + try { + const markdownText = this.getValue(); + const html = this.engine.makeHtml(markdownText); + this.previewer.refresh(html); + } catch (e) { + throw new NestedError(e); + } + } + + /** + * 导出预览区域内容 + * @public + * @param {'pdf' | 'img' | 'markdown' | 'html'} [type='pdf'] + * @param {string} [fileName] 导出文件名 + */ + export(type = 'pdf', fileName = '') { + this.previewer.export(type, fileName); + } + + /** + * 获取第一行文本 + * @param {string} defaultText 默认文本 + * @returns {string} 第一行文本 + */ + getFirstLineText(defaultText = '') { + let innerText = ''; + if (this.status.previewer === 'show') { + innerText = this.previewer.getDomContainer().innerText; + } else { + const { html } = this.previewer.options.previewerCache; + if (html) { + innerText = html.replace(/<\/[^>]+>/g, '\n').replace(/<[^>]+>/g, ''); + } else { + innerText = this.getValue().replace(/[#*|$>`]/g, ''); + } + } + return /^\s*([^\s][^\n]*)\n/.test(innerText) ? innerText.match(/^\s*([^\s][^\n]*)\n/)[1] : defaultText; + } + + /** + * 清空流程会话中添加的虚拟光标 + */ + clearFlowSessionCursor() { + if (this.options.engine.global.flowSessionCursor) { + this.previewer.getDom().innerHTML = this.previewer + .getDom() + // @ts-ignore + .innerHTML.replaceAll(this.options.engine.global.flowSessionCursor, ''); + } + } +} diff --git a/packages/cherry-markdown/src/Engine.js b/packages/cherry-markdown/src/Engine.js index 0441d80d5..143fcb0af 100644 --- a/packages/cherry-markdown/src/Engine.js +++ b/packages/cherry-markdown/src/Engine.js @@ -77,9 +77,9 @@ export default class Engine { this.timer = setTimeout(() => { this.$cherry.lastMarkdownText = ''; this.hashCache.clear(); - const markdownText = this.$cherry.editor.editor.getValue(); + const markdownText = this.$cherry.editor?.editor?.getValue() || ''; const html = this.makeHtml(markdownText); - this.$cherry.previewer.refresh(html); + this.$cherry.previewer?.refresh(html); this.$cherry.$event.emit('afterChange', { markdownText, html, diff --git a/packages/cherry-markdown/src/Previewer.js b/packages/cherry-markdown/src/Previewer.js index 1f300623a..9e97d7801 100644 --- a/packages/cherry-markdown/src/Previewer.js +++ b/packages/cherry-markdown/src/Previewer.js @@ -139,6 +139,31 @@ export default class Previewer { } } + /** + * 不依赖Editor的初始化方法,用于流式渲染场景 + * 与init方法的区别:不需要editor参数,不绑定拖拽和滚动同步,不初始化PreviewerBubble + */ + initWithoutEditor() { + /** + * @property + * @private + * @type {boolean} 禁用滚动事件监听 + */ + this.disableScrollListener = false; + this.editor = null; + // 流式渲染场景下,如果开启了预览区编辑功能才初始化PreviewerBubble + if (this.options.enablePreviewerBubble) { + this.$initPreviewerBubble(); + } + this.lazyLoadImg = new LazyLoadImg(this.options.lazyLoadImg, this); + this.lazyLoadImg.doLazyLoad(); + this.bindClick(); + this.onMouseDown(); + if (this.$cherry.options.previewer.isMobilePreview) { + this.changePreviewToMobile(true); + } + } + /** * “监听”编辑器的尺寸变化,变化时更新拖拽条的位置 */ @@ -216,7 +241,7 @@ export default class Previewer { calculateRealLayout(editorWidth) { // 根据editor的绝对宽度计算editor和previewer的百分比宽度 - const editorDomWidth = this.editor.options.editorDom.getBoundingClientRect().width; + const editorDomWidth = this.editor?.options?.editorDom?.getBoundingClientRect()?.width || 0; const previewerDomWidth = this.options.previewerDom.getBoundingClientRect().width; const totalWidth = editorDomWidth + previewerDomWidth; let editorPercentage = +(editorWidth / totalWidth).toFixed(3); @@ -241,7 +266,9 @@ export default class Previewer { $editorPercentage = '50%'; $previewerPercentage = '50%'; } - this.editor.options.editorDom.style.width = $editorPercentage; + if (this.editor?.options?.editorDom) { + this.editor.options.editorDom.style.width = $editorPercentage; + } this.options.previewerDom.style.width = $previewerPercentage; setTimeout(() => this.syncVirtualLayoutFromReal(), 0); @@ -249,6 +276,10 @@ export default class Previewer { syncVirtualLayoutFromReal() { // 通过editor和previewer的百分比宽度,同步更新mask和dragLine的px宽度及位置 + // 流式渲染场景下没有editor,直接返回 + if (!this.editor?.options?.editorDom) { + return; + } const editorPos = this.editor.options.editorDom.getBoundingClientRect(); const previewerPos = this.options.previewerDom.getBoundingClientRect(); const editorHeight = editorPos.height; @@ -283,7 +314,7 @@ export default class Previewer { calculateVirtualLayout(editorLeft, editorRight) { // 计算mask和dragline应处在的位置,按px计算 - const editorDomWidth = this.editor.options.editorDom.getBoundingClientRect().width; + const editorDomWidth = this.editor?.options?.editorDom?.getBoundingClientRect()?.width || 0; const previewerDomWidth = this.options.previewerDom.getBoundingClientRect().width; const totalWidth = editorDomWidth + previewerDomWidth; const startWidth = editorLeft.toFixed(0); @@ -331,7 +362,7 @@ export default class Previewer { window.event.returnValue = false; } - const editorLeft = this.editor.options.editorDom.getBoundingClientRect().left; + const editorLeft = this.editor?.options?.editorDom?.getBoundingClientRect()?.left || 0; const editorRight = mouseMoveEvent.clientX; const virtualLayout = this.calculateVirtualLayout(editorLeft, editorRight); this.setVirtualLayout(virtualLayout.startWidth, virtualLayout.leftWidth, virtualLayout.rightWidth); @@ -353,19 +384,19 @@ export default class Previewer { } // 重新设置editor和previewer宽度占比 - const editorLeft = this.editor.options.editorDom.getBoundingClientRect().left; + const editorLeft = this.editor?.options?.editorDom?.getBoundingClientRect()?.left || 0; const editorRight = mouseUpEvent.clientX; const layout = this.calculateRealLayout(editorRight - editorLeft); this.options.previewerCache.layout = layout; this.setRealLayout(layout.editorPercentage, layout.previewerPercentage); // 去掉蒙层和虚拟拖动条 - this.editor.options.editorDom.classList.remove('no-select'); + this.editor?.options?.editorDom?.classList?.remove('no-select'); this.options.previewerDom.classList.remove('no-select'); this.options.editorMaskDom.classList.remove('cherry-editor-mask--show'); this.options.previewerMaskDom.classList.remove('cherry-previewer-mask--show'); this.options.virtualDragLineDom.classList.remove('cherry-drag--show'); // 刷新codemirror宽度 - this.editor.editor.refresh(); + this.editor?.editor?.refresh(); // 取消事件绑定 removeEvent(document, 'mousemove', dragLineMouseMove, false); removeEvent(document, 'mouseup', dragLineMouseUp, false); @@ -388,7 +419,7 @@ export default class Previewer { this.syncVirtualLayoutFromReal(); - const editorLeft = this.editor.options.editorDom.getBoundingClientRect().left; + const editorLeft = this.editor?.options?.editorDom?.getBoundingClientRect()?.left || 0; const editorRight = mouseDownEvent.clientX; const virtualLayout = this.calculateVirtualLayout(editorLeft, editorRight); this.setVirtualLayout(virtualLayout.startWidth, virtualLayout.leftWidth, virtualLayout.rightWidth); @@ -398,7 +429,7 @@ export default class Previewer { this.options.editorMaskDom.classList.add('cherry-editor-mask--show'); this.options.previewerMaskDom.classList.add('cherry-previewer-mask--show'); this.options.previewerDom.classList.add('no-select'); - this.editor.options.editorDom.classList.add('no-select'); + this.editor?.options?.editorDom?.classList?.add('no-select'); // 绑定事件 addEvent(document, 'mousemove', dragLineMouseMove, false); addEvent(document, 'mouseup', dragLineMouseUp, false); @@ -423,12 +454,12 @@ export default class Previewer { return; } if (domContainer.scrollTop <= 0) { - this.editor.scrollToLineNum(0, 0, 1); + this.editor?.scrollToLineNum(0, 0, 1); return; } // 判定预览区域是否滚动到底部的逻辑,增加10px的冗余 if (domContainer.scrollTop + domContainer.offsetHeight + 10 > domContainer.scrollHeight) { - this.editor.scrollToLineNum(null); + this.editor?.scrollToLineNum(null); return; } const domPosition = domContainer.getBoundingClientRect(); @@ -446,7 +477,7 @@ export default class Previewer { } } if (!targetElement) { - this.editor.scrollToLineNum(0, 0, 1); + this.editor?.scrollToLineNum(0, 0, 1); return; } // markdown元素存在margin,getBoundingRect不能获取到margin @@ -463,7 +494,7 @@ export default class Previewer { // console.log('destLine:', lines, percent, // mdRect.height + marginTop + marginBottom, mdOffsetTop, mdElement); // if(mdOffsetTop < 0) { - return this.editor.scrollToLineNum(lines - lineNum, lineNum, percent); + return this.editor?.scrollToLineNum(lines - lineNum, lineNum, percent); // } // return this.editor.scrollToLineNum(lines - lineNum, 0, 0); }; @@ -711,7 +742,7 @@ export default class Previewer { this.applyingDomChanges = true; // 预览区未隐藏时,直接更新 const domContainer = this.getDomContainer(); - if (this.editor.selectAll) { + if (this.editor?.selectAll) { domContainer.innerHTML = ''; } let tmpDiv = null; @@ -747,25 +778,25 @@ export default class Previewer { this.$removeModelClass(); this.options.virtualDragLineDom.classList.add('cherry-drag--hidden'); const { previewerDom } = this.options; - const { editorDom } = this.editor.options; + const editorDom = this.editor?.options?.editorDom; if (isEditOnly) { previewerDom.classList.add('cherry-previewer--hidden'); - editorDom.classList.add('cherry-editor--full'); - previewerDom.classList.remove('cherry-preview--full'); - editorDom.classList.remove('cherry-editor--hidden'); + editorDom?.classList?.add('cherry-editor--full'); + previewerDom.classList.remove('cherry-previewer--full'); + editorDom?.classList?.remove('cherry-editor--hidden'); } else { - previewerDom.classList.add('cherry-preview--full'); - editorDom.classList.add('cherry-editor--hidden'); + previewerDom.classList.add('cherry-previewer--full'); + editorDom?.classList?.add('cherry-editor--hidden'); previewerDom.classList.remove('cherry-previewer--hidden'); - editorDom.classList.remove('cherry-editor--full'); + editorDom?.classList?.remove('cherry-editor--full'); /** * 如果是流式输出,并且没有开启预览区编辑,则需要移除不再需要的dom * 这里针对流式输出的场景简单移除dom,是符合预期的 * 但这种精简dom的方案在需要switchModel时会有问题 */ if (this.$cherry.options.engine.global.flowSessionContext && !this.options.enablePreviewerBubble) { - editorDom.remove(); - this.$cherry.toolbar.options.dom.remove(); + editorDom?.remove(); + this.$cherry.toolbar?.options?.dom?.remove(); this.$cherry.wrapperDom .querySelectorAll( '.cherry-dropdown,.cherry-drag,.cherry-editor-mask,.cherry-previewer-mask,.cherry-suggester-panel', @@ -784,7 +815,7 @@ export default class Previewer { }; } this.setRealLayout(fullEditorLayout.editorPercentage, fullEditorLayout.previewerPercentage); - setTimeout(() => this.editor.editor.refresh(), 0); + setTimeout(() => this.editor?.editor?.refresh(), 0); } previewOnly() { @@ -826,7 +857,7 @@ export default class Previewer { } $removeModelClass() { - this.editor.options.editorDom.classList.remove('cherry-editor--hidden', 'cherry-editor--full'); + this.editor?.options?.editorDom?.classList?.remove('cherry-editor--hidden', 'cherry-editor--full'); this.options.previewerDom.classList.remove('cherry-previewer--hidden', 'cherry-preview--full'); this.options.virtualDragLineDom.classList.remove('cherry-drag--hidden'); } @@ -845,7 +876,7 @@ export default class Previewer { this.$cherry.$event.emit('previewerOpen'); this.$cherry.$event.emit('editorOpen'); - setTimeout(() => this.editor.editor.refresh(), 0); + setTimeout(() => this.editor?.editor?.refresh(), 0); } doHtmlCache(html) { diff --git a/packages/cherry-markdown/src/core/hooks/Suggester.js b/packages/cherry-markdown/src/core/hooks/Suggester.js index 88ae09566..9bb0fdbd9 100644 --- a/packages/cherry-markdown/src/core/hooks/Suggester.js +++ b/packages/cherry-markdown/src/core/hooks/Suggester.js @@ -276,7 +276,7 @@ class SuggesterPanel { } bindEvent() { - if (!this.editor.options.showSuggestList) { + if (!this.editor?.options?.showSuggestList) { return; } let keyAction = false; diff --git a/packages/cherry-markdown/src/index.stream.core.js b/packages/cherry-markdown/src/index.stream.core.js new file mode 100644 index 000000000..b6592b52a --- /dev/null +++ b/packages/cherry-markdown/src/index.stream.core.js @@ -0,0 +1,29 @@ +/** + * Copyright (C) 2021 Tencent. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import Cherry from './CherryStream'; + +import SyntaxHookBase from './core/SyntaxBase'; +import MenuHookBase from './toolbars/MenuBase'; + +// in browser +if (typeof window !== 'undefined') { + // @ts-ignore + window.Cherry = Cherry; +} + +export { SyntaxHookBase, MenuHookBase }; + +export default Cherry; diff --git a/packages/cherry-markdown/src/index.stream.js b/packages/cherry-markdown/src/index.stream.js new file mode 100644 index 000000000..acf3a3926 --- /dev/null +++ b/packages/cherry-markdown/src/index.stream.js @@ -0,0 +1,30 @@ +/** + * Copyright (C) 2021 Tencent. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import Cherry from './index.stream.core'; + +// 完整版stream包可以按需引入mermaid等插件 +// import MermaidCodeEngine from './addons/cherry-code-block-mermaid-plugin'; +// import mermaid from 'mermaid'; +// const mermaidAPI = mermaid?.mermaidAPI; +// Cherry.usePlugin(MermaidCodeEngine, { +// mermaid, +// mermaidAPI, +// theme: 'default', +// sequence: { useMaxWidth: false, showSequenceNumbers: true }, +// }); + +export * from './index.stream.core'; +export default Cherry; From 3110c04de16182062fffb253b0b2060a82d633a8 Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Fri, 30 Jan 2026 09:18:01 +0800 Subject: [PATCH 35/57] =?UTF-8?q?feat:=20#1595=20onPaste=E7=B2=98=E8=B4=B4?= =?UTF-8?q?=E7=9A=84=E5=9B=9E=E8=B0=83=E5=87=BD=E6=95=B0=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E5=9B=9E=E8=B0=83=20(#1614)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/odd-rivers-swim.md | 5 + examples/assets/scripts/index-demo.js | 10 ++ packages/cherry-markdown/index.html | 18 ++- packages/cherry-markdown/src/Editor.js | 138 +++++++++++++----- packages/cherry-markdown/src/Engine.js | 3 +- .../cherry-markdown/src/utils/pasteHelper.js | 26 +--- packages/cherry-markdown/src/utils/regexp.js | 2 + packages/cherry-markdown/types/cherry.d.ts | 6 +- packages/cherry-markdown/types/editor.d.ts | 6 +- 9 files changed, 141 insertions(+), 73 deletions(-) create mode 100644 .changeset/odd-rivers-swim.md diff --git a/.changeset/odd-rivers-swim.md b/.changeset/odd-rivers-swim.md new file mode 100644 index 000000000..40724e8ee --- /dev/null +++ b/.changeset/odd-rivers-swim.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +feat: onPaste粘贴的回调函数支持异步回调 #1595 diff --git a/examples/assets/scripts/index-demo.js b/examples/assets/scripts/index-demo.js index da4d8aff0..078f45543 100644 --- a/examples/assets/scripts/index-demo.js +++ b/examples/assets/scripts/index-demo.js @@ -480,6 +480,16 @@ const basicConfig = { console.log(`url-processor`, url, srcType); return url; }, + // onPaste: (clipboardData, cherry, callback) => { + // setTimeout(() => { + // callback({ + // html: 'hello world !', + // htmlText: 'hello world !', + // mdText: '', + // }); + // }, 1000) + // return '<<正在处理中...>>'; + // }, }, editor: { id: 'cherry-text', diff --git a/packages/cherry-markdown/index.html b/packages/cherry-markdown/index.html index a78172a2f..4f724be53 100644 --- a/packages/cherry-markdown/index.html +++ b/packages/cherry-markdown/index.html @@ -83,22 +83,27 @@ switch (currentPath) { case '/': - CONFIG = Object.assign({}, basicConfig, { value: indexMd, ...devCompatibleConfig }); + basicConfig.callback.urlProcessor = devCompatibleConfig.callback.urlProcessor; + CONFIG = Object.assign({}, basicConfig, { value: indexMd }); break; case '/h5.html': - CONFIG = Object.assign({}, h5Config, { value: indexMd, ...devCompatibleConfig }); + h5Config.callback.urlProcessor = devCompatibleConfig.callback.urlProcessor; + CONFIG = Object.assign({}, h5Config, { value: indexMd }); break; case '/multiple.html': - CONFIG = Object.assign({}, multipleCherryConfig1, { value: indexMd, ...devCompatibleConfig }); + multipleCherryConfig1.callback.urlProcessor = devCompatibleConfig.callback.urlProcessor; + CONFIG = Object.assign({}, multipleCherryConfig1, { value: indexMd }); const CONFIG2 = Object.assign({}, multipleCherryConfig2, { value: indexMd, ...devCompatibleConfig }); window.cherry = new Cherry(CONFIG2); break; case '/notoolbar.html': - CONFIG = Object.assign({}, noToolbarConfig, { value: indexMd, ...devCompatibleConfig }); + noToolbarConfig.callback.urlProcessor = devCompatibleConfig.callback.urlProcessor; + CONFIG = Object.assign({}, noToolbarConfig, { value: indexMd }); break; case '/preview_only.html': - CONFIG = Object.assign({}, previewConfig, { value: indexMd, ...devCompatibleConfig }); + previewConfig.callback.urlProcessor = devCompatibleConfig.callback.urlProcessor; + CONFIG = Object.assign({}, previewConfig, { value: indexMd }); break; case '/xss.html': CONFIG = { @@ -112,7 +117,8 @@ }; break; case '/img.html': - CONFIG = Object.assign({}, imgConfig, { value: imgMd, ...devCompatibleConfig }); + imgConfig.callback.urlProcessor = devCompatibleConfig.callback.urlProcessor; + CONFIG = Object.assign({}, imgConfig, { value: imgMd }); break; case '/table.html': CONFIG = { diff --git a/packages/cherry-markdown/src/Editor.js b/packages/cherry-markdown/src/Editor.js index a97afd019..8656e0fd0 100644 --- a/packages/cherry-markdown/src/Editor.js +++ b/packages/cherry-markdown/src/Editor.js @@ -39,7 +39,7 @@ import { addEvent } from './utils/event'; import Logger from '@/Logger'; import { handleFileUploadCallback } from '@/utils/file'; import { createElement } from './utils/dom'; -import { longTextReg, base64Reg, imgDrawioXmlReg, createUrlReg } from './utils/regexp'; +import { longTextReg, base64Reg, imgDrawioXmlReg, createUrlReg, pasteWrapperReg } from './utils/regexp'; import { handleNewlineIndentList } from './utils/autoindent'; /** @@ -153,6 +153,17 @@ export default class Editor { if (this.$cherry.status.editor === 'hide') { return; } + this.formatBigData2Mark(pasteWrapperReg, 'cm-url paste-wrapper', (target, oneSearch) => { + const whole = oneSearch[0] ?? ''; + const id = oneSearch[1] ?? ''; + const bigString = oneSearch[2] ?? ''; + const targetChFrom = target.ch; + const targetChTo = targetChFrom + whole.length; + const targetLine = target.line; + const begin = { line: targetLine, ch: targetChFrom }; + const end = { line: targetLine, ch: targetChTo }; + return { bigString, begin, end, id }; + }); this.formatBigData2Mark(base64Reg, 'cm-url base64'); this.formatBigData2Mark(imgDrawioXmlReg, 'cm-url drawio'); this.formatBigData2Mark(longTextReg, 'cm-url long-text'); @@ -168,8 +179,22 @@ export default class Editor { * 把大字符串变成省略号 * @param {*} reg 正则 * @param {*} className 利用codemirror的MarkText生成的新元素的class + * @param {function} getBeginEnd 获取begin和end的函数 */ - formatBigData2Mark = (reg, className) => { + formatBigData2Mark = ( + reg, + className, + getBeginEnd = (target, oneSearch) => { + const bigString = oneSearch[2] ?? ''; + const targetChFrom = target.ch + oneSearch[1]?.length; + const targetChTo = targetChFrom + bigString.length; + const targetLine = target.line; + const begin = { line: targetLine, ch: targetChFrom }; + const end = { line: targetLine, ch: targetChTo }; + const id = ''; + return { bigString, begin, end, id }; + }, + ) => { const codemirror = this.editor; const searcher = codemirror.getSearchCursor(reg); @@ -179,17 +204,12 @@ export default class Editor { if (!target) { continue; } - const bigString = oneSearch[2] ?? ''; - const targetChFrom = target.ch + oneSearch[1]?.length; - const targetChTo = targetChFrom + bigString.length; - const targetLine = target.line; - const begin = { line: targetLine, ch: targetChFrom }; - const end = { line: targetLine, ch: targetChTo }; + const { bigString, begin, end, id } = getBeginEnd(target, oneSearch); // 如果所在区域已经有mark了,则不再增加mark if (codemirror.findMarks(begin, end).length > 0) { continue; } - const newSpan = createElement('span', `cm-string ${className}`, { title: bigString }); + const newSpan = createElement('span', `cm-string ${className}`, { title: bigString, 'data-id': id }); newSpan.textContent = bigString; codemirror.markText(begin, end, { replacedWith: newSpan, atomic: true }); } @@ -285,32 +305,72 @@ export default class Editor { /** * * @param {ClipboardEvent} e - * @param {CodeMirror.Editor} codemirror */ - onPaste(e, codemirror) { + onPaste(e) { let { clipboardData } = e; - if (clipboardData) { - this.handlePaste(e, clipboardData, codemirror); - } else { + if (!clipboardData) { ({ clipboardData } = window); - this.handlePaste(e, clipboardData, codemirror); + } + const needHandlePaste = this.handleThirdPaste(e, clipboardData); + if (needHandlePaste) { + this.handlePaste(e, clipboardData); + } + } + + onPasteCallback({ html, htmlText, mdText }) { + // @ts-ignore + const { randomId, _this } = this; + const allMarks = _this.editor.getAllMarks(); + for (let i = 0; i < allMarks.length; i++) { + const mark = allMarks[i]; + const span = mark.widgetNode.querySelector(`.paste-wrapper[data-id="${randomId}"]`); + if (span) { + const { from, to } = mark.find(); + mark.clear(); + _this.editor.setSelection(from, to); + if (mdText) { + _this.editor.replaceSelection(mdText, 'end'); + } else { + _this.formatHtml2MdWhenPaste(null, html, htmlText); + } + break; + } } } + /** + * 调用第三方的粘贴回调 + * @returns {boolean} true: 需要继续处理粘贴内容,false: 不需要继续处理粘贴内容 + */ + handleThirdPaste(event, clipboardData) { + // 生成一个随机id,用于有可能的异步回调 + const randomId = `cherry-paste-${Math.random().toString(36).slice(2)}${new Date().getTime()}`; + const onPasteRet = this.$cherry.options.callback.onPaste( + clipboardData, + this.$cherry, + this.onPasteCallback.bind({ randomId, _this: this }), + ); + if (onPasteRet !== false && typeof onPasteRet === 'string') { + event.preventDefault(); + // 是否命中语法糖 + if (/^<<[\s\S]+>>$/.test(onPasteRet)) { + const newText = `{{${randomId}|${onPasteRet.replace(/^<<([\s\S]+)>>$/, (whole, $1) => `<<${$1.replace(/[<>]/g, '')}>>`)}}}`; + this.editor.replaceSelection(newText); + } else { + this.editor.replaceSelection(onPasteRet, 'around'); + } + return false; + } + return true; + } + /** * * @param {ClipboardEvent} event * @param {ClipboardEvent['clipboardData']} clipboardData - * @param {CodeMirror.Editor} codemirror * @returns {boolean | void} */ - handlePaste(event, clipboardData, codemirror) { - const onPasteRet = this.$cherry.options.callback.onPaste(clipboardData, this.$cherry); - if (onPasteRet !== false && typeof onPasteRet === 'string') { - event.preventDefault(); - codemirror.replaceSelection(onPasteRet); - return; - } + handlePaste(event, clipboardData) { let html = clipboardData.getData('Text/Html'); const { items } = clipboardData; @@ -331,7 +391,6 @@ export default class Editor { ) { html = ''; } - const codemirrorDoc = codemirror.getDoc(); this.fileUploadCount = 0; // 只要有html内容,就不处理剪切板里的其他内容,这么做的后果是粘贴excel内容时,只会粘贴html内容,不会把excel对应的截图粘进来 for (let i = 0; !html && i < items.length; i++) { @@ -346,14 +405,14 @@ export default class Editor { return; } const mdStr = `${this.fileUploadCount > 1 ? '\n' : ''}${handleFileUploadCallback(url, params, file)}`; - codemirrorDoc.replaceSelection(mdStr); + this.editor.replaceSelection(mdStr, 'end'); // if (this.pasterHtml) { // // 如果同时粘贴了html内容和文件内容,则在文件上传完成后强制让光标处于非选中状态,以防止自动选中的html内容被文件内容替换掉 // const { line, ch } = codemirror.getCursor(); // codemirror.setSelection({ line, ch }, { line, ch }); - // codemirrorDoc.replaceSelection(mdStr, 'end'); + // this.editor.replaceSelection(mdStr, 'end'); // } else { - // codemirrorDoc.replaceSelection(mdStr); + // this.editor.replaceSelection(mdStr); // } }); event.preventDefault(); @@ -365,23 +424,22 @@ export default class Editor { if (!html || !this.options.convertWhenPaste) { return true; } + this.formatHtml2MdWhenPaste(event, html, htmlText); + } + formatHtml2MdWhenPaste(event, html, htmlText) { let divObj = document.createElement('DIV'); divObj.innerHTML = html; - html = divObj.innerHTML; - const mdText = htmlParser.run(html); + const mdText = htmlParser.run(divObj.innerHTML); if (typeof mdText === 'string' && mdText.trim().length > 0) { - const range = codemirror.listSelections(); - if (codemirror.getSelections().length <= 1 && range[0] && range[0].anchor) { - const currentCursor = {}; - currentCursor.line = range[0].anchor.line; - currentCursor.ch = range[0].anchor.ch; - codemirrorDoc.replaceSelection(mdText); - pasteHelper.showSwitchBtnAfterPasteHtml(this.$cherry, currentCursor, codemirror, htmlText, mdText); + const range = this.editor.listSelections(); + if (this.editor.getSelections().length <= 1 && range[0] && range[0].anchor) { + this.editor.replaceSelection(mdText, 'around'); + pasteHelper.showSwitchBtnAfterPasteHtml(this.$cherry.locale, this.editor, htmlText, mdText); } else { - codemirrorDoc.replaceSelection(mdText); + this.editor.replaceSelection(mdText, 'around'); } - event.preventDefault(); + event && event.preventDefault(); } divObj = null; } @@ -505,7 +563,7 @@ export default class Editor { }); editor.on('paste', (codemirror, evt) => { - this.options.onPaste.call(this, evt, codemirror); + this.options.onPaste.call(this, evt); }); if (this.options.autoScrollByCursor) { @@ -537,7 +595,7 @@ export default class Editor { const mdStr = handleFileUploadCallback(url, params, file); // 当批量上传文件时,每个被插入的文件中间需要加个换行,但单个上传文件的时候不需要加换行 const insertValue = i > 0 ? `\n${mdStr} ` : `${mdStr} `; - codemirror.replaceSelection(insertValue); + codemirror.replaceSelection(insertValue, 'end'); this.dealSpecialWords(); }); } diff --git a/packages/cherry-markdown/src/Engine.js b/packages/cherry-markdown/src/Engine.js index 143fcb0af..5fd7207e7 100644 --- a/packages/cherry-markdown/src/Engine.js +++ b/packages/cherry-markdown/src/Engine.js @@ -19,7 +19,7 @@ import NestedError, { $expectTarget, $expectInherit, $expectInstance } from './u import CryptoJS from 'crypto-js'; import SyntaxBase from './core/SyntaxBase'; import ParagraphBase from './core/ParagraphBase'; -import { PUNCTUATION, longTextReg, imgBase64Reg, imgDrawioXmlReg, base64Reg } from './utils/regexp'; +import { PUNCTUATION, longTextReg, imgBase64Reg, imgDrawioXmlReg, base64Reg, pasteWrapperReg } from './utils/regexp'; import { escapeHTMLSpecialChar } from './utils/sanitize'; import Logger from './Logger'; import { configureMathJax } from './utils/mathjax'; @@ -371,6 +371,7 @@ export default class Engine { this.cachedBigData[cacheKey] = m2; return `${m1}${cacheKey}}`; }); + $md = $md.replace(pasteWrapperReg, ''); return $md; } diff --git a/packages/cherry-markdown/src/utils/pasteHelper.js b/packages/cherry-markdown/src/utils/pasteHelper.js index f305dc594..98220537c 100644 --- a/packages/cherry-markdown/src/utils/pasteHelper.js +++ b/packages/cherry-markdown/src/utils/pasteHelper.js @@ -27,18 +27,16 @@ const pasteHelper = { /** * 核心方法,粘贴后展示切换按钮 * 只有粘贴html时才会出现切换按钮 - * @param {Object} currentCursor 当前的光标位置 * @param {Object} editor 编辑器对象 * @param {string} html html里的纯文本内容 * @param {string} md html对应的markdown源码 * @returns */ - showSwitchBtnAfterPasteHtml($cherry, currentCursor, editor, html, md) { + showSwitchBtnAfterPasteHtml(locale, editor, html, md) { if (html.trim() === md.trim()) { return; } - this.init($cherry, currentCursor, editor, html, md); - this.setSelection(); + this.init(locale, editor, html, md); this.bindListener(); this.initBubble(); this.showBubble(); @@ -48,13 +46,11 @@ const pasteHelper = { } }, - init($cherry, currentCursor, editor, html, md) { - this.$cherry = $cherry; + init(locale, editor, html, md) { this.html = html; this.md = md; this.codemirror = editor; - this.currentCursor = currentCursor; - this.locale = $cherry.locale; + this.locale = locale; }, /** @@ -77,14 +73,6 @@ const pasteHelper = { localStorage.setItem('cherry-paste-type', type); }, - /** - * 在编辑器中自动选中刚刚粘贴的内容 - */ - setSelection() { - const { /* sticky, xRel, */ ...end } = this.codemirror.getCursor(); - const begin = this.currentCursor; - this.codemirror.setSelection(begin, end); - }, /** * 绑定事件 * 当编辑器选中区域改变、内容改变时,隐藏切换按钮 @@ -215,8 +203,7 @@ const pasteHelper = { } this.noHide = true; this.bubbleDom.setAttribute('data-type', 'md'); - this.codemirror.doc.replaceSelection(this.md); - this.setSelection(); + this.codemirror.doc.replaceSelection(this.md, 'around'); this.showBubble(); this.switchMd.classList.add('active'); this.switchText.classList.remove('active'); @@ -230,8 +217,7 @@ const pasteHelper = { // } this.noHide = true; this.bubbleDom.setAttribute('data-type', 'text'); - this.codemirror.doc.replaceSelection(this.html); - this.setSelection(); + this.codemirror.doc.replaceSelection(this.html, 'around'); this.showBubble(); this.switchText.classList.add('active'); this.switchMd.classList.remove('active'); diff --git a/packages/cherry-markdown/src/utils/regexp.js b/packages/cherry-markdown/src/utils/regexp.js index 899efc1b9..3166a4979 100644 --- a/packages/cherry-markdown/src/utils/regexp.js +++ b/packages/cherry-markdown/src/utils/regexp.js @@ -259,6 +259,8 @@ export function getDetailRule() { return ret; } +export const pasteWrapperReg = /{{(cherry-paste-[^|\n]+?)\|<<([^>]+?)>>}}/g; + // 匹配图片URL里的base64,[name](data:image/png;base64,xxx) 和 ![alt](data:image/png;base64,xxx) 这两种形式的都处理 export const imgBase64Reg = /(\[[^\n]*?\]\(data:image\/[a-z]{1,10};base64,)([^)]+)\)/g; diff --git a/packages/cherry-markdown/types/cherry.d.ts b/packages/cherry-markdown/types/cherry.d.ts index 1b1f121d6..f290d221d 100644 --- a/packages/cherry-markdown/types/cherry.d.ts +++ b/packages/cherry-markdown/types/cherry.d.ts @@ -146,7 +146,11 @@ export interface _CherryOptions void; onCopyCode?: (e: ClipboardEvent, code: string) => string | false; changeString2Pinyin?: (str: string) => string; - onPaste?: (clipboardData: ClipboardEvent['clipboardData'], cherry: Cherry) => string | boolean; + onPaste?: ( + clipboardData: ClipboardEvent['clipboardData'], + cherry: Cherry, + callback?: (text: string) => void, + ) => string | boolean; onExpandCode?: (e: MouseEvent, code: string) => string; onUnExpandCode?: (e: MouseEvent, code: string) => string; onClickToc?: (e: MouseEvent, hash: string) => boolean; diff --git a/packages/cherry-markdown/types/editor.d.ts b/packages/cherry-markdown/types/editor.d.ts index 3414389e3..a709c1562 100644 --- a/packages/cherry-markdown/types/editor.d.ts +++ b/packages/cherry-markdown/types/editor.d.ts @@ -32,11 +32,7 @@ export type EditorEventCallback< ? (event: E, codemirror: CodeMirror.Editor) => void : (codemirror: CodeMirror.Editor) => void; -type EditorPasteEventHandler = ( - event: ClipboardEvent, - clipboardData: ClipboardEvent['clipboardData'], - codemirror: CodeMirror.Editor, -) => void; +type EditorPasteEventHandler = (event: ClipboardEvent, clipboardData: ClipboardEvent['clipboardData']) => void; export type EditorConfiguration = { id?: string; // textarea 的id属性值 From e24d7cd40d97b75b23bea5b866695cf53117590c Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Tue, 3 Feb 2026 09:57:58 +0800 Subject: [PATCH 36/57] =?UTF-8?q?feat:=20#1600=20=E6=8F=90=E9=AB=98?= =?UTF-8?q?=E8=B6=85=E5=A4=A7=E6=96=87=E6=A1=A3=E7=9A=84=E6=80=A7=E8=83=BD?= =?UTF-8?q?=20(#1615)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: #1600 提高超大文档的性能 * feat: 优化大文档下的性能 * fix: lint --- .changeset/little-cougars-wink.md | 5 +++ examples/assets/scripts/index-demo.js | 2 +- packages/cherry-markdown/src/Cherry.js | 4 ++- packages/cherry-markdown/src/Editor.js | 23 +++++++++++-- packages/cherry-markdown/src/Engine.js | 31 +++++++++++++---- packages/cherry-markdown/src/Previewer.js | 4 +-- .../advance/cherry-table-echarts-plugin.js | 8 ++--- .../cherry-markdown/src/core/ParagraphBase.js | 29 ++++++++++++++++ .../src/core/hooks/Blockquote.js | 14 +++++--- .../src/core/hooks/HtmlBlock.js | 15 ++++++++ .../src/core/hooks/Paragraph.js | 4 +-- .../cherry-markdown/src/core/hooks/Table.js | 8 ++--- .../cherry-markdown/src/utils/myersDiff.js | 34 +++++++++---------- packages/cherry-markdown/src/utils/regexp.js | 2 +- 14 files changed, 137 insertions(+), 46 deletions(-) create mode 100644 .changeset/little-cougars-wink.md diff --git a/.changeset/little-cougars-wink.md b/.changeset/little-cougars-wink.md new file mode 100644 index 000000000..dff7268c8 --- /dev/null +++ b/.changeset/little-cougars-wink.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +feat: #1600 提高超大文档的性能 diff --git a/examples/assets/scripts/index-demo.js b/examples/assets/scripts/index-demo.js index 078f45543..b1a9941e7 100644 --- a/examples/assets/scripts/index-demo.js +++ b/examples/assets/scripts/index-demo.js @@ -494,7 +494,7 @@ const basicConfig = { editor: { id: 'cherry-text', name: 'cherry-text', - autoSave2Textarea: true, + autoSave2Textarea: false, defaultModel: 'edit&preview', showFullWidthMark: true, // 是否高亮全角符号 ·|¥|、|:|“|”|【|】|(|)|《|》 showSuggestList: true, // 是否显示联想框 diff --git a/packages/cherry-markdown/src/Cherry.js b/packages/cherry-markdown/src/Cherry.js index 803a99beb..f46d8795e 100644 --- a/packages/cherry-markdown/src/Cherry.js +++ b/packages/cherry-markdown/src/Cherry.js @@ -948,7 +948,9 @@ export default class Cherry extends CherryStatic { clearTimeout(this.timer); this.timer = null; } - const interval = this.options.engine.global.flowSessionContext ? 10 : 50; + let interval = this.options.engine.global.flowSessionContext ? 10 : 50; + // 每多100行,增加1ms的延迟 + interval += this.editor.editor.lineCount() / 100; this.timer = setTimeout(() => { const markdownText = codemirror.getValue(); if (markdownText !== this.lastMarkdownText) { diff --git a/packages/cherry-markdown/src/Editor.js b/packages/cherry-markdown/src/Editor.js index 8656e0fd0..c9fc54788 100644 --- a/packages/cherry-markdown/src/Editor.js +++ b/packages/cherry-markdown/src/Editor.js @@ -39,7 +39,7 @@ import { addEvent } from './utils/event'; import Logger from '@/Logger'; import { handleFileUploadCallback } from '@/utils/file'; import { createElement } from './utils/dom'; -import { longTextReg, base64Reg, imgDrawioXmlReg, createUrlReg, pasteWrapperReg } from './utils/regexp'; +import { base64Reg, imgDrawioXmlReg, createUrlReg, pasteWrapperReg } from './utils/regexp'; import { handleNewlineIndentList } from './utils/autoindent'; /** @@ -164,9 +164,19 @@ export default class Editor { const end = { line: targetLine, ch: targetChTo }; return { bigString, begin, end, id }; }); + + /** + * 如果编辑器行数超过10000,则不再处理 + * 增加这个逻辑是为了避免性能问题,当超过1w行时,formatBigData2Mark耗费的性能会明显增加。后续在优化后可以去掉这个降级逻辑 + * 允许降级的理由:超过1w行的md基本已经不关心base64等数据是否缩略展示了 + */ + if (this.editor.lineCount() > 10000) { + return; + } this.formatBigData2Mark(base64Reg, 'cm-url base64'); this.formatBigData2Mark(imgDrawioXmlReg, 'cm-url drawio'); - this.formatBigData2Mark(longTextReg, 'cm-url long-text'); + // 长文本替换的正则性能太差,先注释掉 + // this.formatBigData2Mark(longTextReg, 'cm-url long-text'); if (this.$cherry.options.editor.maxUrlLength > 10) { const [protocolUrlPattern, wwwUrlPattern] = createUrlReg(this.$cherry.options.editor.maxUrlLength); this.formatBigData2Mark(protocolUrlPattern, 'cm-url url-truncated'); @@ -612,7 +622,14 @@ export default class Editor { this.onCursorActivity(); }); editor.on('beforeChange', (codemirror) => { - this.selectAll = this.editor.getValue() === codemirror.getSelection(); + // 判断是否是全选 + const { line: toLine, ch: toCh } = this.editor.getCursor('to'); + const { line: fromLine, ch: fromCh } = this.editor.getCursor('from'); + this.selectAll = + fromLine === 0 && + fromCh === 0 && + toLine === this.editor.lineCount() - 1 && + toCh === this.editor.getLine(toLine).length; }); addEvent( diff --git a/packages/cherry-markdown/src/Engine.js b/packages/cherry-markdown/src/Engine.js index 5fd7207e7..b221223ba 100644 --- a/packages/cherry-markdown/src/Engine.js +++ b/packages/cherry-markdown/src/Engine.js @@ -301,7 +301,13 @@ export default class Engine { canContinue = false; } } - return oneHook[action](newMd, actionArgs, this.markdownParams); + // const time = Date.now(); + const ret = oneHook[action](newMd, actionArgs, this.markdownParams); + // const cost = Date.now() - time; + // if (cost > 50) { + // console.log(`hook ${oneHook.getName()} ${action} cost ${Date.now() - time}ms`); + // } + return ret; }, $md); } catch (e) { throw new NestedError(e); @@ -316,13 +322,17 @@ export default class Engine { return this.hash(str); } + sha256(str) { + return CryptoJS.SHA256(str).toString(); + } + /** * 计算哈希值 * @param {String} str 被计算的字符串 * @returns {String} 哈希值 */ hash(str) { - // 当缓存队列比较大时,随机抛弃500个缓存 + // 当缓存队列比较大时,随机抛弃一些缓存 if (this.hashStrMap.size > 2000) { const keys = Array.from(this.hashStrMap.keys()).slice(0, 200); keys.forEach((key) => this.hashStrMap.delete(key)); @@ -366,11 +376,18 @@ export default class Engine { this.cachedBigData[cacheKey] = m2; return `${m1}${cacheKey}}`; }); - $md = $md.replace(longTextReg, (whole, m1, m2) => { - const cacheKey = `bigDataBegin${this.hash(m2)}bigDataEnd`; - this.cachedBigData[cacheKey] = m2; - return `${m1}${cacheKey}}`; - }); + + const tmpArr = $md.split(/\n/); + for (let i = 0; i < tmpArr.length; i++) { + if (tmpArr[i].length > 6000) { + tmpArr[i] = tmpArr[i].replace(longTextReg, (whole) => { + const cacheKey = `bigDataBegin${this.hash(whole)}bigDataEnd`; + this.cachedBigData[cacheKey] = whole; + return cacheKey; + }); + } + } + $md = tmpArr.join('\n'); $md = $md.replace(pasteWrapperReg, ''); return $md; } diff --git a/packages/cherry-markdown/src/Previewer.js b/packages/cherry-markdown/src/Previewer.js index 9e97d7801..b456d9d7e 100644 --- a/packages/cherry-markdown/src/Previewer.js +++ b/packages/cherry-markdown/src/Previewer.js @@ -446,7 +446,7 @@ export default class Previewer { const domContainer = this.getDomContainer(); onScroll = () => { if (this.applyingDomChanges) { - Logger.log(new Date(), 'sync scroll locked'); + // Logger.log(new Date(), 'sync scroll locked'); return; } if (this.disableScrollListener) { @@ -707,7 +707,7 @@ export default class Previewer { if (newHtmlList.list.length && oldHtmlList.list.length) { const myersDiff = new MyersDiff(newHtmlList.list, oldHtmlList.list, (obj, index) => obj[index].sign); const res = myersDiff.doDiff(); - Logger.log(res); + // Logger.log(res); this.$dealWithMyersDiffResult(res, oldHtmlList.list, newHtmlList.list, domContainer); } else if (newHtmlList.list.length && !oldHtmlList.list.length) { // 全新增 diff --git a/packages/cherry-markdown/src/addons/advance/cherry-table-echarts-plugin.js b/packages/cherry-markdown/src/addons/advance/cherry-table-echarts-plugin.js index 6f7125ba0..cb11f8d0a 100644 --- a/packages/cherry-markdown/src/addons/advance/cherry-table-echarts-plugin.js +++ b/packages/cherry-markdown/src/addons/advance/cherry-table-echarts-plugin.js @@ -1123,10 +1123,10 @@ const ScatterChartOptionsHandler = { })); } else { // 回退到旧的智能推断逻辑 - Logger.warn( - 'DEPRECATION WARNING: The scatter chart syntax relying on header keywords is outdated and will be removed in a future version. Please use the "cherry:mapping" option for explicit mapping.\n' + - `e.g., Change '{group,name,x,y,size}' to '{ "cherry:mapping": { "x": "X", "y": "Y", "size": "Size", "group": "Group" } }'`, - ); + // Logger.warn( + // 'DEPRECATION WARNING: The scatter chart syntax relying on header keywords is outdated and will be removed in a future version. Please use the "cherry:mapping" option for explicit mapping.\n' + + // `e.g., Change '{group,name,x,y,size}' to '{ "cherry:mapping": { "x": "X", "y": "Y", "size": "Size", "group": "Group" } }'`, + // ); const headers = tableObject.header; const findHeader = (candidates) => diff --git a/packages/cherry-markdown/src/core/ParagraphBase.js b/packages/cherry-markdown/src/core/ParagraphBase.js index fc4fd63de..5aebe0488 100644 --- a/packages/cherry-markdown/src/core/ParagraphBase.js +++ b/packages/cherry-markdown/src/core/ParagraphBase.js @@ -38,6 +38,35 @@ export default class ParagraphBase extends SyntaxBase { cacheCounter += 1; } this.failedResetCacheTimes = 0; + this.cacheData = {}; + this.cacheDataMap = []; + } + + /** + * 缓存数据,并返回缓存数据,当缓存大于maxKeys时,会删除removeKeys个缓存 + * @param {string} key 缓存的key + * @param {function} getValueByKey 用于获取缓存数据的回调函数 + * @param {number} maxKeys 最大缓存数 + * @param {number} removeKeys 每次删除的缓存数 + * @returns {any} + */ + cacheAndGetData(key, getValueByKey, maxKeys, removeKeys) { + if (!this.cacheData[key]) { + /** + * 缓存太多时,清空最近插入的一些缓存 + * - 为什么是“最近的”,主要考虑流式输出场景 + */ + if (this.cacheDataMap.length > maxKeys) { + const removed = this.cacheDataMap.splice(removeKeys); + removed.forEach((item) => { + delete this.cacheData[item]; + }); + } + // 调用行内语法,获得段落的签名和对应html内容 + this.cacheData[key] = getValueByKey(key); + this.cacheDataMap.push(key); + } + return this.cacheData[key]; } initBrReg(classicBr = false) { diff --git a/packages/cherry-markdown/src/core/hooks/Blockquote.js b/packages/cherry-markdown/src/core/hooks/Blockquote.js index 97dcdf132..ae9d38aa6 100644 --- a/packages/cherry-markdown/src/core/hooks/Blockquote.js +++ b/packages/cherry-markdown/src/core/hooks/Blockquote.js @@ -40,10 +40,16 @@ export default class Blockquote extends ParagraphBase { after = `\n<${htmlDomTest.slice(1).join('\n<')}`; } const $content = htmlDomTest[0].replace(/^([ \t]*>)/gm, ''); - let blockquoteContent = this.$engine.makeHtmlForBlockquote($content); - // 给 blockquote 内的标题添加标识 - blockquoteContent = blockquoteContent.replace(/( { + const ret = this.$engine.makeHtmlForBlockquote($content); + // 给 blockquote 内的标题添加标识 + return ret.replace(/( batch) { + const ret = []; + for (let i = 0; i < $strArr.length; i += batch) { + const batchStr = $strArr.slice(i, i + batch).join('\n'); + ret.push( + this.cacheAndGetData(batchStr, (batchStr) => sanitizer.sanitize(batchStr, config), maxCacheLength, -10), + ); + } + return ret.join('\n'); + } return sanitizer.sanitize($str, config); } } diff --git a/packages/cherry-markdown/src/core/hooks/Paragraph.js b/packages/cherry-markdown/src/core/hooks/Paragraph.js index 3ff0c85fc..b0ebb7da9 100644 --- a/packages/cherry-markdown/src/core/hooks/Paragraph.js +++ b/packages/cherry-markdown/src/core/hooks/Paragraph.js @@ -55,8 +55,8 @@ export default class Paragraph extends ParagraphBase { if (p.trim() === '') { return ''; } - // 调用行内语法,获得段落的签名和对应html内容 - const { sign, html } = sentenceMakeFunc(p); + // 每增加1000个缓存,大概能提升10ms的性能(顶满的情况下) + const { sign, html } = this.cacheAndGetData(p, sentenceMakeFunc, 3000, -100); let domName = 'p'; // 如果包含html块级标签(比如div、blockquote等),则当前段落外层用div包裹,反之用p包裹 const isContainBlockTest = new RegExp(`<(${blockNames})[^>]*>`, 'i'); diff --git a/packages/cherry-markdown/src/core/hooks/Table.js b/packages/cherry-markdown/src/core/hooks/Table.js index 99c1f022e..3569a7233 100644 --- a/packages/cherry-markdown/src/core/hooks/Table.js +++ b/packages/cherry-markdown/src/core/hooks/Table.js @@ -69,15 +69,15 @@ export default class Table extends ParagraphBase { } $parseChartOptions(cell) { - Logger.log('Parsing chart options for cell:', cell); + // Logger.log('Parsing chart options for cell:', cell); // 初始化失败 if (!this.chartRenderEngine) { - Logger.log('Chart render engine not available'); + // Logger.log('Chart render engine not available'); return null; } const CHART_REGEX = /^:(\w+):(?:[ ]*{(.*?)}[ ]*)?$/; if (!CHART_REGEX.test(cell)) { - Logger.log('Cell does not match chart regex:', cell); + // Logger.log('Cell does not match chart regex:', cell); return null; } const match = cell.match(CHART_REGEX); @@ -86,7 +86,7 @@ export default class Table extends ParagraphBase { type: chartType, options: options ? this.$parseProps(options) : {}, }; - Logger.log('Parsed chart options:', result); + // Logger.log('Parsed chart options:', result); return result; } diff --git a/packages/cherry-markdown/src/utils/myersDiff.js b/packages/cherry-markdown/src/utils/myersDiff.js index af6d6809c..c6720ed35 100644 --- a/packages/cherry-markdown/src/utils/myersDiff.js +++ b/packages/cherry-markdown/src/utils/myersDiff.js @@ -19,7 +19,7 @@ * 参考文献: http://www.xmailserver.org/diff2.pdf */ -import Logger from '@/Logger'; +// import Logger from '@/Logger'; export default class MyersDiff { constructor(newObj, oldObj, getElement) { @@ -133,12 +133,12 @@ export default class MyersDiff { * 组装出返回值 */ assembleResult(snakes, newObj, oldObj) { - const grayColor = 'color: gray'; - const redColor = 'color: red'; - const greenColor = 'color: green'; - const blueColor = 'color: blue'; - let consoleStr = ''; - const args = []; + // const grayColor = 'color: gray'; + // const redColor = 'color: red'; + // const greenColor = 'color: green'; + // const blueColor = 'color: blue'; + // let consoleStr = ''; + // const args = []; let yOffset = 0; const result = []; // 返回的操作集 let change = {}; // 本次操作 @@ -149,8 +149,8 @@ export default class MyersDiff { if (index === 0 && snake.xStart !== 0) { for (let j = 0; j < snake.xStart; j++) { - consoleStr += `%c${this.getElement(oldObj, j)}, `; - args.push(grayColor); + // consoleStr += `%c${this.getElement(oldObj, j)}, `; + // args.push(grayColor); yOffset += 1; } } @@ -168,8 +168,8 @@ export default class MyersDiff { } result.push(change); lastChange = change; - consoleStr += `%c${this.getElement(oldObj, snake.xStart)}, `; - args.push(redColor); + // consoleStr += `%c${this.getElement(oldObj, snake.xStart)}, `; + // args.push(redColor); currentPos = snake.xMid; } else { // 添加 @@ -187,25 +187,25 @@ export default class MyersDiff { oldIndex: firstDeleteChange.oldIndex, // 合并时,更新目标定位连续删除块中的首个元素 newIndex: yOffset, }; - args.push(blueColor); + // args.push(blueColor); } else { - args.push(greenColor); + // args.push(greenColor); } firstDeleteChange = {}; result.push(change); lastChange = change; - consoleStr += `%c${this.getElement(newObj, yOffset)}, `; + // consoleStr += `%c${this.getElement(newObj, yOffset)}, `; yOffset += 1; } // 不变 for (let i = 0; i < snake.xEnd - currentPos; i++) { - consoleStr += `%c${this.getElement(oldObj, currentPos + i)}, `; - args.push(grayColor); + // consoleStr += `%c${this.getElement(oldObj, currentPos + i)}, `; + // args.push(grayColor); yOffset += 1; } }); - Logger.log(consoleStr, ...args); + // Logger.log(consoleStr, ...args); return result; } } diff --git a/packages/cherry-markdown/src/utils/regexp.js b/packages/cherry-markdown/src/utils/regexp.js index 3166a4979..b0d8bba35 100644 --- a/packages/cherry-markdown/src/utils/regexp.js +++ b/packages/cherry-markdown/src/utils/regexp.js @@ -268,7 +268,7 @@ export const imgBase64Reg = /(\[[^\n]*?\]\(data:image\/[a-z]{1,10};base64,)([^)] export const base64Reg = /(data:image\/[a-z]{1,10};base64,)([0-9a-zA-Z+/=]+)/g; // 匹配内容非常多的单行文本,为了避免表格的场景,所以特意避免表格的识别 -export const longTextReg = /([^\n]{100})([^\n|`\s]{5900,})/g; +export const longTextReg = /[^\n|`\s]{6000,}/g; /** * 创建匹配markdown中URL链接的正则表达式 From b5dbc9418f5937ade270f061a9b2a975c71b7ecb Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Fri, 6 Feb 2026 09:11:02 +0800 Subject: [PATCH 37/57] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E5=8F=B3?= =?UTF-8?q?=E4=BE=A7=E6=82=AC=E6=B5=AE=E7=9B=AE=E5=BD=95=E7=9A=84=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=9C=BA=E5=88=B6=20(#1620)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 优化右侧悬浮目录的更新机制 * fix: 修复toc目录条目只增不减的问题 * fix: 修复toc目录更新不对的问题 --- .changeset/eight-jars-attack.md | 5 +++ packages/cherry-markdown/src/toolbars/Toc.js | 44 ++++++++++++++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 .changeset/eight-jars-attack.md diff --git a/.changeset/eight-jars-attack.md b/.changeset/eight-jars-attack.md new file mode 100644 index 000000000..d6d945c52 --- /dev/null +++ b/.changeset/eight-jars-attack.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +feat: 优化右侧悬浮目录的更新机制 diff --git a/packages/cherry-markdown/src/toolbars/Toc.js b/packages/cherry-markdown/src/toolbars/Toc.js index 8a9041b13..d1a461261 100644 --- a/packages/cherry-markdown/src/toolbars/Toc.js +++ b/packages/cherry-markdown/src/toolbars/Toc.js @@ -34,6 +34,7 @@ export default class Toc { this.drawDom(); this.timer = setTimeout(() => { this.updateTocList(); + this.$switchModel(this.model); }, 300); this.editor.on('change', (codemirror, evt) => { clearTimeout(this.timer); @@ -186,6 +187,21 @@ export default class Toc { return this.$getClosestNode(node.parentNode, targetNodeName); } + makeHtmlStringToNode(newHtml) { + let tmpDiv = null; + if (typeof window.DOMParser !== 'undefined') { + // 如果支持DOMParser,则使用DOMParser将html字符串转成对应的HtmlElement + // 使用DOMParser是为了防止newHtml里的图片等资源自动加载 + const parser = new DOMParser(); + const doc = parser.parseFromString(newHtml, 'text/html'); + tmpDiv = doc.querySelector('body'); + } else { + tmpDiv = document.createElement('div'); + tmpDiv.innerHTML = newHtml; + } + return tmpDiv ? tmpDiv.firstChild : null; + } + updateTocList(onlyScroll = false) { if (onlyScroll === true) { // do nothing @@ -200,7 +216,6 @@ export default class Toc { tocStr = this.$cherry.engine.hash(tocStr); if (this.tocStr !== tocStr) { this.tocStr = tocStr; - let tocHtml = ''; let index = 0; tocList.map((item) => { const { id, level, text, isInBlockquote } = item; @@ -209,16 +224,39 @@ export default class Toc { const isInBlockquoteIcon = isInBlockquote ? '' : ''; - tocHtml += `${isInBlockquoteIcon} ${$text}`; + const tmpANode = this.makeHtmlStringToNode(tmpA); + if (!tmpANode) { + return item; + } + if (this.tocListDom.children[index]) { + const targetNode = this.tocListDom.children[index]; + // @ts-ignore + tmpANode.setAttribute('style', targetNode.getAttribute('style')); + if (targetNode.classList.contains('current')) { + // @ts-ignore + tmpANode.classList.add('current'); + } + // 如果两个节点相同,则什么也不做 + if (!targetNode.isEqualNode(tmpANode)) { + targetNode.replaceWith(tmpANode); + } + } else { + this.tocListDom.appendChild(tmpANode); + } index += 1; return item; }); - this.tocListDom.innerHTML = tocHtml; + // 删除多余的节点 + const maxLength = this.tocListDom.children.length; + for (let i = index; i < maxLength; i++) { + this.tocListDom.children[index]?.remove(); + } } } // 处理当前标题的高亮 From 6cf9b7d359f2a460c19e024ec24048882f06ad0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Wed, 25 Feb 2026 14:24:21 +0800 Subject: [PATCH 38/57] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=20`onClickPrev?= =?UTF-8?q?iew`=20=E8=BF=94=E5=9B=9E=20`false`=20=E9=98=BB=E6=AD=A2?= =?UTF-8?q?=E5=90=8E=E7=BB=AD=E5=A4=84=E7=90=86=20(#1625)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/violet-tires-stick.md | 5 +++++ .../cherry-markdown/src/toolbars/PreviewerBubble.js | 11 ++++------- packages/cherry-markdown/types/cherry.d.ts | 5 +++-- 3 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 .changeset/violet-tires-stick.md diff --git a/.changeset/violet-tires-stick.md b/.changeset/violet-tires-stick.md new file mode 100644 index 000000000..30d71459a --- /dev/null +++ b/.changeset/violet-tires-stick.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +feat: 支持 `onClickPreview` 返回 `false` 阻止后续处理 diff --git a/packages/cherry-markdown/src/toolbars/PreviewerBubble.js b/packages/cherry-markdown/src/toolbars/PreviewerBubble.js index f1171d2ea..62ee50b04 100644 --- a/packages/cherry-markdown/src/toolbars/PreviewerBubble.js +++ b/packages/cherry-markdown/src/toolbars/PreviewerBubble.js @@ -269,14 +269,11 @@ export default class PreviewerBubble { * @returns */ $onClick(e) { - if (this.previewer.$cherry.options.callback.onClickPreview) { - // 如果有自定义的onClickPreview回调函数,则先执行 - const ret = this.previewer.$cherry.options.callback.onClickPreview(e); - // @ts-ignore - if (ret === false) { - return ret; - } + // 如果有自定义的onClickPreview回调函数,则先执行;返回false时中断后续处理 + if (this.previewer.$cherry.options.callback?.onClickPreview?.(e) === false) { + return false; } + const { target } = e; if (!(target instanceof Element)) { return; diff --git a/packages/cherry-markdown/types/cherry.d.ts b/packages/cherry-markdown/types/cherry.d.ts index f290d221d..a5cdcdea4 100644 --- a/packages/cherry-markdown/types/cherry.d.ts +++ b/packages/cherry-markdown/types/cherry.d.ts @@ -143,7 +143,8 @@ export interface _CherryOptions { srcProp: string; src: string }; - onClickPreview?: (e: MouseEvent) => void; + /** 点击预览区域时触发,返回 false 可阻止后续处理 */ + onClickPreview?: (e: MouseEvent) => void | false; onCopyCode?: (e: ClipboardEvent, code: string) => string | false; changeString2Pinyin?: (str: string) => string; onPaste?: ( @@ -620,7 +621,7 @@ export interface CherryPreviewerOptions { /** 预览区域的DOM className */ className?: string; /** 是否是移动端预览 */ - isMobilePreview?: boolean, + isMobilePreview?: boolean; enablePreviewerBubble?: boolean; floatWhenClosePreviewer?: boolean; // 配置图片懒加载的逻辑 From d624871c48aecc46abd4cd05100d0a50f0e2ff61 Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Sat, 28 Feb 2026 18:55:12 +0800 Subject: [PATCH 39/57] =?UTF-8?q?feat:=20#1621=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=92=8C=E4=B8=B0=E5=AF=8C=E7=BB=9F=E8=AE=A1=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=20(#1628)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/plain-laws-remain.md | 5 + examples/assets/scripts/index-demo.js | 2 +- packages/cherry-markdown/src/Cherry.js | 2 +- packages/cherry-markdown/src/Editor.js | 55 ++++++++ packages/cherry-markdown/src/Factory.js | 10 +- packages/cherry-markdown/src/locales/en_US.js | 8 ++ packages/cherry-markdown/src/locales/ru_RU.js | 8 ++ packages/cherry-markdown/src/locales/zh_CN.js | 8 ++ .../src/toolbars/HookCenter.js | 2 + .../cherry-markdown/src/toolbars/MenuBase.js | 5 + .../cherry-markdown/src/toolbars/Toolbar.js | 1 + .../src/toolbars/hooks/CursorPosition.js | 47 +++++++ .../src/toolbars/hooks/WordCount.js | 117 ++++++++---------- 13 files changed, 202 insertions(+), 68 deletions(-) create mode 100644 .changeset/plain-laws-remain.md create mode 100644 packages/cherry-markdown/src/toolbars/hooks/CursorPosition.js diff --git a/.changeset/plain-laws-remain.md b/.changeset/plain-laws-remain.md new file mode 100644 index 000000000..0509a49e6 --- /dev/null +++ b/.changeset/plain-laws-remain.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +feat: #1621 增加和丰富统计信息 diff --git a/examples/assets/scripts/index-demo.js b/examples/assets/scripts/index-demo.js index b1a9941e7..9d1af900b 100644 --- a/examples/assets/scripts/index-demo.js +++ b/examples/assets/scripts/index-demo.js @@ -409,7 +409,7 @@ const basicConfig = { }, 'customMenuCName', ], - toolbarRight: ['fullScreen', '|', 'export', 'changeLocale', 'wordCount'], + toolbarRight: ['fullScreen', '|', 'export', 'changeLocale', '|', 'wordCount', '|', 'cursorPosition'], bubble: ['bold', 'italic', 'underline', 'strikethrough', 'sub', 'sup', 'quote', 'ruby', '|', 'size', 'color'], // array or false sidebar: ['mobilePreview', 'copy', 'theme', 'codeTheme'], toc: { diff --git a/packages/cherry-markdown/src/Cherry.js b/packages/cherry-markdown/src/Cherry.js index f46d8795e..624f5fe0f 100644 --- a/packages/cherry-markdown/src/Cherry.js +++ b/packages/cherry-markdown/src/Cherry.js @@ -409,7 +409,7 @@ export default class Cherry extends CherryStatic { * @returns markdown源码内容 */ getValue() { - return this.editor.editor.getValue(); + return this.editor?.editor?.getValue() || ''; } /** diff --git a/packages/cherry-markdown/src/Editor.js b/packages/cherry-markdown/src/Editor.js index c9fc54788..927511fc5 100644 --- a/packages/cherry-markdown/src/Editor.js +++ b/packages/cherry-markdown/src/Editor.js @@ -41,6 +41,7 @@ import { handleFileUploadCallback } from '@/utils/file'; import { createElement } from './utils/dom'; import { base64Reg, imgDrawioXmlReg, createUrlReg, pasteWrapperReg } from './utils/regexp'; import { handleNewlineIndentList } from './utils/autoindent'; +import { getCodeBlockRule } from '@/utils/regexp'; /** * @typedef {import('~types/editor').EditorConfiguration} EditorConfiguration @@ -830,4 +831,58 @@ export default class Editor { setValue(value = '') { this.editor.setOption('value', value); } + + /** + * 提供三种统计方式: + * 1. 字符数、单词数、行数 + * 2. 段落数、图片、代码块 + * 3. 中文数、英文单词数、数字数、符号数 + */ + wordCount(type) { + const markdown = this.$cherry.getMarkdown() || ''; + switch (type) { + case 1: { + // 匹配中文和标点符号 + const pattern = + /[\u4e00-\u9fa5]|[\u3001\u3002\uff01\uff0c\uff1b\uff1a\u201c\u201d\u2018\u2019\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\uff08\uff09\u2014\u2026\u2013\uff0e]/g; + // 统计字符数量,排除换行和空格 + const characters = markdown.replace(/\n|\s/g, '').length; + // 统计中文和标点符号 + const chineseWords = (markdown.match(pattern) || []).length; + // 统计英文单词 + const englishWords = (markdown.match(/[a-zA-Z-]+/g) || []).length; + // 统计单词数量 + const words = chineseWords + englishWords; + // 统计行数 + const lines = markdown.split(/\n[\s\t\n]*/).length; + return { characters, words, lines }; + } + case 2: { + const codeBlockReg = getCodeBlockRule().reg; + // 统计段落数量,使用至少两个连续换行符分割段落 + const paragraphs = markdown.split(/\n{2,}/).filter((line) => line.trim() !== '').length; + // 统计代码块数量 + const codeblocks = (markdown.match(codeBlockReg) || []).length; + const mdWithoutCode = markdown.replace(codeBlockReg, '\n'); + // 统计图片数量 + const images = (mdWithoutCode.match(/!\[[^\]]*\]\([^)]+\)/g) || []).length; + return { paragraphs, images, codeblocks }; + } + case 3: { + // 统计中文数量(不包含中文符号) + const chineseWords = (markdown.match(/[\u4e00-\u9fa5]/g) || []).length; + // 统计英文单词数量 + const englishWords = (markdown.match(/[a-zA-Z-]+/g) || []).length; + // 统计数字数量 + const numbers = (markdown.match(/\d+/g) || []).length; + // 统计符号数量(包括中英文符号) + const symbols = ( + markdown.match( + /[\u3001\u3002\uff01\uff0c\uff1b\uff1a\u201c\u201d\u2018\u2019\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\uff08\uff09\u2014\u2026\u2013\uff0e]/g, + ) || [] + ).length; + return { chineseWords, englishWords, numbers, symbols }; + } + } + } } diff --git a/packages/cherry-markdown/src/Factory.js b/packages/cherry-markdown/src/Factory.js index f7912776f..5dcf2e9d7 100644 --- a/packages/cherry-markdown/src/Factory.js +++ b/packages/cherry-markdown/src/Factory.js @@ -128,7 +128,7 @@ export function createSyntaxHook(name, type, options) { } export function createMenuHook(name, options) { - const optionsWhiteList = ['subMenuConfig', 'onClick', 'shortcutKeys', 'iconName', 'icon']; + const optionsWhiteList = ['subMenuConfig', 'onClick', 'shortcutKeys', 'iconName', 'icon', 'afterInit']; const propTypes = { subMenuConfig: Array, onClick: 'function', @@ -143,6 +143,7 @@ export function createMenuHook(name, options) { iconClassName: ['string', 'undefined'], }, ], + afterInit: 'function', }; const filteredOptions = filterOptions(options, optionsWhiteList, propTypes); return class CustomMenu extends MenuBase { @@ -160,6 +161,13 @@ export function createMenuHook(name, options) { this.subMenuConfig = filteredOptions.subMenuConfig || []; } + afterInit(...args) { + if (filteredOptions.afterInit) { + return filteredOptions.afterInit.apply(this, args); + } + return super.afterInit(...args); + } + onClick(...args) { if (filteredOptions.onClick) { return filteredOptions.onClick.apply(this, args); diff --git a/packages/cherry-markdown/src/locales/en_US.js b/packages/cherry-markdown/src/locales/en_US.js index baf94d1ea..5a4efe48e 100644 --- a/packages/cherry-markdown/src/locales/en_US.js +++ b/packages/cherry-markdown/src/locales/en_US.js @@ -131,10 +131,18 @@ export default { editingShortcutKeyConfigTip: 'Press Enter to save, Backspace to remove the newly added key', staticShortcutTip: 'Built-in shortcuts cannot be modified', disabledShortcutTip: 'Shortcuts are currently disabled', + cursorPosition: 'Cursor Position', wordCount: 'Word Count', wordCountP: 'P', wordCountW: 'W', wordCountC: 'C', + wordCountL: 'L', + wordCountImg: 'Image', + wordCountCode: 'Code', + wordCountChinese: 'Chinese', + wordCountEnglish: 'English Word', + wordCountNumber: 'Number', + wordCountSymbol: 'Symbol', deleteColumn: 'delete column', deleteRow: 'delete row', addRow: 'add row', diff --git a/packages/cherry-markdown/src/locales/ru_RU.js b/packages/cherry-markdown/src/locales/ru_RU.js index 29e398443..c920f5bbe 100644 --- a/packages/cherry-markdown/src/locales/ru_RU.js +++ b/packages/cherry-markdown/src/locales/ru_RU.js @@ -131,10 +131,18 @@ export default { editingShortcutKeyConfigTip: 'Нажмите Enter для сохранения, Backspace для удаления добавленной клавиши', staticShortcutTip: 'Встроенные сочетания клавиш нельзя изменить', disabledShortcutTip: 'Сочетания клавиш в настоящее время отключены', + cursorPosition: 'Позиция курсора', wordCount: 'Количество слов', wordCountP: 'P', wordCountW: 'W', wordCountC: 'C', + wordCountL: 'L', + wordCountImg: 'Изображение', + wordCountCode: 'Код', + wordCountChinese: 'Китайский', + wordCountEnglish: 'Русский', + wordCountNumber: 'Число', + wordCountSymbol: 'Символ', deleteColumn: 'Удалить столбец', deleteRow: 'Удалить строку', addRow: 'Добавить строку', diff --git a/packages/cherry-markdown/src/locales/zh_CN.js b/packages/cherry-markdown/src/locales/zh_CN.js index efc1e97c2..5d6beb398 100644 --- a/packages/cherry-markdown/src/locales/zh_CN.js +++ b/packages/cherry-markdown/src/locales/zh_CN.js @@ -132,10 +132,18 @@ export default { editingShortcutKeyConfigTip: '按Enter键保存,Backspace键移除新增的键', staticShortcutTip: '内置快捷键不可修改', disabledShortcutTip: '当前快捷键已禁用', + cursorPosition: '光标位置', wordCount: '字数统计', wordCountP: '段落', wordCountW: '单词', wordCountC: '字符', + wordCountL: '行', + wordCountImg: '图片', + wordCountCode: '代码', + wordCountChinese: '中文', + wordCountEnglish: '英文单词', + wordCountNumber: '数字', + wordCountSymbol: '符号', deleteColumn: '删除列', deleteRow: '删除行', addRow: '添加行', diff --git a/packages/cherry-markdown/src/toolbars/HookCenter.js b/packages/cherry-markdown/src/toolbars/HookCenter.js index e04d80a56..2fba97f6f 100644 --- a/packages/cherry-markdown/src/toolbars/HookCenter.js +++ b/packages/cherry-markdown/src/toolbars/HookCenter.js @@ -63,6 +63,7 @@ import Word from './hooks/Word'; import Ruby from './hooks/Ruby'; import Theme from './hooks/Theme'; import WordCount from './hooks/WordCount'; +import CursorPosition from './hooks/CursorPosition'; // import ChatGpt from './hooks/ChatGpt'; // Sidebar import MobilePreview from './hooks/MobilePreview'; @@ -135,6 +136,7 @@ const HookList = { detail: Detail, drawIo: DrawIo, wordCount: WordCount, + cursorPosition: CursorPosition, // chatgpt: ChatGpt, publish: Publish, changeLocale: ChangeLocale, diff --git a/packages/cherry-markdown/src/toolbars/MenuBase.js b/packages/cherry-markdown/src/toolbars/MenuBase.js index 9948b8149..9366523e3 100644 --- a/packages/cherry-markdown/src/toolbars/MenuBase.js +++ b/packages/cherry-markdown/src/toolbars/MenuBase.js @@ -210,6 +210,11 @@ export default class MenuBase { }); } + /** + * 在创建菜单后执行的钩子 + */ + afterInit(btnDom) {} + /** * 创建一个一级菜单 * @param {boolean} asSubMenu 是否以子菜单的形式创建 diff --git a/packages/cherry-markdown/src/toolbars/Toolbar.js b/packages/cherry-markdown/src/toolbars/Toolbar.js index f010463ab..412be2f87 100644 --- a/packages/cherry-markdown/src/toolbars/Toolbar.js +++ b/packages/cherry-markdown/src/toolbars/Toolbar.js @@ -186,6 +186,7 @@ export default class Toolbar { btn.classList.add('cherry-toolbar-dropdown'); } fragLeft.appendChild(btn); + this.menus.hooks[name].afterInit(btn); }); this.appendMenusToDom(fragLeft); diff --git a/packages/cherry-markdown/src/toolbars/hooks/CursorPosition.js b/packages/cherry-markdown/src/toolbars/hooks/CursorPosition.js new file mode 100644 index 000000000..122aa8bd0 --- /dev/null +++ b/packages/cherry-markdown/src/toolbars/hooks/CursorPosition.js @@ -0,0 +1,47 @@ +/** + * Copyright (C) 2021 Tencent. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import MenuBase from '@/toolbars/MenuBase'; +/** + * 光标位置回显 + */ +export default class CursorPosition extends MenuBase { + constructor($cherry) { + super($cherry); + this.setName('cursorPosition', 'cursorPosition'); + this.noIcon = true; + this.updateMarkdown = false; + this.countEvent = new Event('cursorChange'); + } + + $updateCursorPosition() { + const { line, ch } = this.$cherry.editor?.editor?.getCursor() || { line: 0, ch: 0 }; + const selected = this.$cherry.editor?.editor?.getSelection() || ''; + this.btnDom.innerHTML = `Ln ${line}, Col ${ch}${selected ? ` (${selected.length} selected)` : ''}`; + } + + afterInit(btnDom) { + this.btnDom = btnDom; + this.btnDom.addEventListener('cursorChange', () => { + this.$updateCursorPosition(); + }); + this.$updateCursorPosition(); + setTimeout(() => { + this.$cherry.editor.editor.on('cursorActivity', () => { + btnDom.dispatchEvent(this.countEvent); + }); + }, 500); + } +} diff --git a/packages/cherry-markdown/src/toolbars/hooks/WordCount.js b/packages/cherry-markdown/src/toolbars/hooks/WordCount.js index de3fab9e8..503315072 100644 --- a/packages/cherry-markdown/src/toolbars/hooks/WordCount.js +++ b/packages/cherry-markdown/src/toolbars/hooks/WordCount.js @@ -22,85 +22,72 @@ export default class wordCount extends MenuBase { super($cherry); this.setName('wordCount', 'wordCount'); this.noIcon = true; - this.countState = 0; this.countEvent = new Event('count'); + // 强制转成数字 + this.countState = Number(localStorage.getItem('cherry-wordCountState')) || 1; } - /** - * 响应点击事件 - * @param {string} selection 被用户选中的文本内容 - * @returns {string} 回填到编辑器光标位置/选中文本区域的内容 - */ - onClick(selection, shortKey = '') { - const span = this.$cherry.wrapperDom.querySelector('.cherry-toolbar-button.cherry-toolbar-wordCount'); - // 首次点击时添加监听器 - if (this.countState === 0) { - span.addEventListener('count', () => { - const markdown = this.$cherry.getMarkdown(); - const { characters, words, paragraphs } = this.wordCount(markdown); - const { locale } = this.$cherry; - switch (this.countState) { - case 0: - span.innerHTML = locale.wordCount; - break; - case 1: - span.innerHTML = `${locale.wordCountC} ${characters}`; - break; - case 2: - span.innerHTML = `${locale.wordCountW} ${words}`; - break; - case 3: - span.innerHTML = `${locale.wordCountP} ${paragraphs}`; - break; - case 4: - span.innerHTML = `${locale.wordCountC} ${characters}   ${locale.wordCountW} ${words}   ${locale.wordCountP} ${paragraphs}`; - break; - } - }); + $dealEditorChange() { + const { locale } = this.$cherry; + switch (this.countState) { + case 0: + this.btnDom.innerHTML = locale.wordCount; + break; + case 1: { + const { characters, words, lines } = this.$cherry.editor.wordCount(1); + this.btnDom.innerHTML = `${locale.wordCountC} ${characters}   ${locale.wordCountW} ${words}   ${locale.wordCountL} ${lines}`; + break; + } + case 2: { + const { paragraphs, images, codeblocks } = this.$cherry.editor.wordCount(2); + this.btnDom.innerHTML = `${locale.wordCountP} ${paragraphs}   ${locale.wordCountImg} ${images}   ${locale.wordCountCode} ${codeblocks}`; + break; + } + case 3: { + const { chineseWords, englishWords, numbers, symbols } = this.$cherry.editor.wordCount(3); + this.btnDom.innerHTML = `${locale.wordCountChinese} ${chineseWords}   ${locale.wordCountEnglish} ${englishWords}   ${locale.wordCountNumber} ${numbers}   ${locale.wordCountSymbol} ${symbols}`; + break; + } + } + } - // 编辑区修改时延时触发字数统计,防止过于频繁 - let timeout = null; - this.editor.editor.on('change', () => { + afterInit(btnDom) { + this.btnDom = btnDom; + this.btnDom.addEventListener('count', () => { + this.$dealEditorChange(); + }); + this.$dealEditorChange(); + + // 编辑区修改时延时触发字数统计,防止过于频繁 + let timeout = null; + setTimeout(() => { + this.$cherry.editor.editor.on('change', () => { if (timeout) { clearTimeout(timeout); } - timeout = setTimeout(() => { - span.dispatchEvent(this.countEvent); + btnDom.dispatchEvent(this.countEvent); timeout = null; }, 500); }); - } - // 循环切换4种状态 - this.countState += 1; - if (this.countState > 4) { - this.countState = 0; - } - span.dispatchEvent(this.countEvent); - return selection; + this.$dealEditorChange(); + }, 500); } /** - * 统计给定 Markdown 文本的字符数、单词数和段落数。 - * @param {string} markdown - 给定的 Markdown 文本字符串 - * @returns {Object} 包含字符数、单词数和段落数的对象 + * 响应点击事件 + * @param {string} selection 被用户选中的文本内容 + * @returns {string} 回填到编辑器光标位置/选中文本区域的内容 */ - wordCount(markdown) { - // 匹配中文和标点符号 - const pattern = - /[\u4e00-\u9fa5]|[\u3001\u3002\uff01\uff0c\uff1b\uff1a\u201c\u201d\u2018\u2019\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\uff08\uff09\u2014\u2026\u2013\uff0e]/g; - // 统计字符数量,排除换行和空格 - const characters = markdown.replace(/\n|\s/g, '').length; - // 统计中文和标点符号 - const chineseWords = (markdown.match(pattern) || []).length; - // 统计英文单词 - const englishWords = markdown - .replace(pattern, ' ') - .split(/[\s\n]+/) - .filter(Boolean).length; - const words = chineseWords + englishWords; - // 统计段落数量,使用至少两个连续换行符分割段落 - const paragraphs = markdown.split(/\n{2,}/).filter((line) => line.trim() !== '').length; - return { characters, words, paragraphs }; + onClick(selection, shortKey = '') { + // 循环切换4种状态 + this.countState += 1; + if (this.countState > 3) { + this.countState = 1; + } + // 转成string格式 + localStorage.setItem('cherry-wordCountState', String(this.countState)); + this.btnDom.dispatchEvent(this.countEvent); + return selection; } } From 033ca6424f32b8e43a2817fb7adfae2809ff3c52 Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Sat, 28 Feb 2026 18:55:31 +0800 Subject: [PATCH 40/57] =?UTF-8?q?fix:=20#1622=20=E8=A1=A8=E6=A0=BC?= =?UTF-8?q?=E5=B7=A6=E5=8F=B3=E6=BB=9A=E5=8A=A8=E5=BD=B1=E5=93=8D=E5=88=B0?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E7=9A=84=E9=97=AE=E9=A2=98=20(#1629)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/red-donuts-hear.md | 5 +++++ packages/cherry-markdown/src/Previewer.js | 2 +- packages/cherry-markdown/src/core/hooks/Table.js | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/red-donuts-hear.md diff --git a/.changeset/red-donuts-hear.md b/.changeset/red-donuts-hear.md new file mode 100644 index 000000000..6adc65fd5 --- /dev/null +++ b/.changeset/red-donuts-hear.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +fix: #1622 表格左右滚动影响到图表的问题 diff --git a/packages/cherry-markdown/src/Previewer.js b/packages/cherry-markdown/src/Previewer.js index b456d9d7e..0f4700122 100644 --- a/packages/cherry-markdown/src/Previewer.js +++ b/packages/cherry-markdown/src/Previewer.js @@ -675,7 +675,7 @@ export default class Previewer { // 处理表格包含图表的特殊场景 let hasUpdate = false; if ( - newContent[change.newIndex].dom.className === 'cherry-table-container' && + newContent[change.newIndex].dom.className === 'cherry-table-wrapper' && newContent[change.newIndex].dom.querySelector('.cherry-table-figure') && oldContent[change.oldIndex].dom.querySelector('.cherry-table-figure') ) { diff --git a/packages/cherry-markdown/src/core/hooks/Table.js b/packages/cherry-markdown/src/core/hooks/Table.js index 3569a7233..7f20c6f1e 100644 --- a/packages/cherry-markdown/src/core/hooks/Table.js +++ b/packages/cherry-markdown/src/core/hooks/Table.js @@ -313,8 +313,8 @@ export default class Table extends ParagraphBase { }) .replace(/\\\|/g, '|'); // escape \| return { - html: `
- ${renderHtml}
`, + html: `
+
${renderHtml}
`, sign, }; } From 77815d1327ec38e8a9517b6db841e6470053dd1e Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Wed, 4 Mar 2026 09:47:24 +0800 Subject: [PATCH 41/57] =?UTF-8?q?feat:=20#1632=20=E8=A1=A8=E6=A0=BC?= =?UTF-8?q?=E4=B8=AD=E4=B9=9F=E6=94=AF=E6=8C=81=E6=AE=B5=E8=90=BD=E5=85=AC?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E6=AE=B5=E8=90=BD=E5=85=AC=E5=BC=8F=E6=8C=89?= =?UTF-8?q?=E8=A1=8C=E5=86=85=E5=85=AC=E5=BC=8F=E6=B8=B2=E6=9F=93=20(#1634?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: #1632 表格中也支持段落公式,段落公式按行内公式渲染 * fix: 修改测试用例 --- .changeset/fancy-glasses-send.md | 5 +++++ .../src/core/hooks/InlineMath.js | 20 ++++++++++++++++--- packages/cherry-markdown/src/utils/regexp.js | 4 ++++ .../__snapshots__/CommonMark.spec.ts.snap | 4 ++-- 4 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 .changeset/fancy-glasses-send.md diff --git a/.changeset/fancy-glasses-send.md b/.changeset/fancy-glasses-send.md new file mode 100644 index 000000000..f8ef30b79 --- /dev/null +++ b/.changeset/fancy-glasses-send.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +feat: #1632 表格中也支持段落公式,段落公式按行内公式渲染 diff --git a/packages/cherry-markdown/src/core/hooks/InlineMath.js b/packages/cherry-markdown/src/core/hooks/InlineMath.js index 758814d2e..e46545fff 100644 --- a/packages/cherry-markdown/src/core/hooks/InlineMath.js +++ b/packages/cherry-markdown/src/core/hooks/InlineMath.js @@ -17,7 +17,7 @@ import ParagraphBase from '@/core/ParagraphBase'; import { escapeFormulaPunctuations, LoadMathModule } from '@/utils/mathjax'; import { getHTML } from '@/utils/dom'; import { isBrowser } from '@/utils/env'; -import { getTableRule, isLookbehindSupported } from '@/utils/regexp'; +import { getTableRule, isLookbehindSupported, mathBlockReg } from '@/utils/regexp'; import { replaceLookbehind } from '@/utils/lookbehind-replace'; /** @@ -108,7 +108,8 @@ export default class InlineMath extends ParagraphBase { return whole .split('|') .map((oneTd) => { - return this.makeInlineMath(oneTd); + // 单元格里的段落公式直接替换成行内公式 + return this.makeInlineMath(this.transformBlockMathToInlineMath(oneTd)); }) .join('|') .replace(/\\~D/g, '~D') // 出现反斜杠的情况(如/$e=m^2$)会导致多一个反斜杠,这里替换掉 @@ -125,6 +126,19 @@ export default class InlineMath extends ParagraphBase { return $str; } + transformBlockMathToInlineMath(str) { + if (isLookbehindSupported()) { + return str.replace(mathBlockReg, '$1$2~D$3~D$4'); + } + return replaceLookbehind( + str, + mathBlockReg, + (whole, match1, match2, match3, match4) => `${match1}${match2}~D${match3}~D${match4}`, + true, + 1, + ); + } + makeInlineMath(str) { if (!this.test(str)) { return str; @@ -143,7 +157,7 @@ export default class InlineMath extends ParagraphBase { const ret = { begin: isLookbehindSupported() ? '((? CommonMark-142 1`] = ` `; exports[`engine > CommonMark-143 1`] = ` -"

~~ ruby startline=3 $%@#$
def foo(x)
return 3
end
~~~~~

+"

~~ ruby startline=3 $%@#$def foo(x)
return 3
end
~~~~~

" `; From 253d68fc92f1de27511c02f955834186b874f119 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Wed, 4 Mar 2026 11:47:21 +0800 Subject: [PATCH 42/57] =?UTF-8?q?fix:=20=E6=81=A2=E5=A4=8D=E6=89=A9?= =?UTF-8?q?=E5=B1=95=20PrismJS=20=E6=94=AF=E6=8C=81=E7=9A=84=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E5=88=97=E8=A1=A8=20(#1637)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/breezy-bugs-say.md | 5 + packages/cherry-markdown/babel.config.js | 23 ---- packages/cherry-markdown/babel.config.mjs | 127 +++++++++++++++++++++- 3 files changed, 131 insertions(+), 24 deletions(-) create mode 100644 .changeset/breezy-bugs-say.md delete mode 100644 packages/cherry-markdown/babel.config.js diff --git a/.changeset/breezy-bugs-say.md b/.changeset/breezy-bugs-say.md new file mode 100644 index 000000000..4bcff62e9 --- /dev/null +++ b/.changeset/breezy-bugs-say.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +fix: 恢复扩展 PrismJS 支持的语言列表 diff --git a/packages/cherry-markdown/babel.config.js b/packages/cherry-markdown/babel.config.js deleted file mode 100644 index c64d64c63..000000000 --- a/packages/cherry-markdown/babel.config.js +++ /dev/null @@ -1,23 +0,0 @@ -/* Minimal Babel config for build - * Compatible with both CommonJS and ESM environments - */ - -module.exports = { - presets: [['@babel/preset-env', { modules: false }]], - env: { test: { presets: [['@babel/preset-env']] } }, - plugins: [ - ['@babel/plugin-transform-runtime', { corejs: 3 }], - ['@babel/plugin-proposal-decorators', { legacy: true }], - '@babel/plugin-proposal-class-properties', - '@babel/plugin-proposal-nullish-coalescing-operator', - '@babel/plugin-proposal-optional-chaining', - [ - 'prismjs', - { - languages: ['javascript', 'css', 'markup'], - plugins: [], - css: false, - }, - ], - ], -}; diff --git a/packages/cherry-markdown/babel.config.mjs b/packages/cherry-markdown/babel.config.mjs index fd9f48913..73fd19e5f 100644 --- a/packages/cherry-markdown/babel.config.mjs +++ b/packages/cherry-markdown/babel.config.mjs @@ -14,7 +14,132 @@ export default { [ 'prismjs', { - languages: ['javascript', 'css', 'markup'], + languages: [ + 'html', + 'xml', + 'svg', + 'mathml', + 'ssml', + 'atom', + 'rss', + 'css', + 'clike', + 'javascript', + 'js', + 'asciidoc', + 'adoc', + 'aspnet', + 'asm6502', + 'awk', + 'gawk', + 'bash', + 'shell', + 'batch', + 'c', + 'csharp', + 'cs', + 'dotnet', + 'cpp', + 'cmake', + 'css-extras', + 'csv', + 'dart', + 'django', + 'jinja2', + 'dns-zone-file', + 'dns-zone', + 'docker', + 'dockerfile', + 'ftl', + 'git', + 'linker-script', + 'ld', + 'go', + 'go-module', + 'go-mod', + 'http', + 'ini', + 'java', + 'javadoc', + 'javadoclike', + 'javastacktrace', + 'jsdoc', + 'js-extras', + 'json', + 'webmanifest', + 'json5', + 'jsonp', + 'jsstacktrace', + 'js-templates', + 'latex', + 'tex', + 'context', + 'less', + 'makefile', + 'markdown', + 'md', + 'markup-templating', + 'matlab', + 'mermaid', + 'mongodb', + 'nasm', + 'nginx', + 'nsis', + 'objectivec', + 'objc', + 'perl', + 'php', + 'phpdoc', + 'php-extras', + 'plant-uml', + 'plantuml', + 'plsql', + 'powershell', + 'properties', + 'python', + 'py', + 'r', + 'jsx', + 'tsx', + 'regex', + 'ruby', + 'rb', + 'rust', + 'sas', + 'sass', + 'scss', + 'scala', + 'scheme', + 'shell-session', + 'sh-session', + 'shellsession', + 'smali', + 'splunk-spl', + 'sql', + 'swift', + 'systemd', + 'textile', + 'uri', + 'url', + 'vbnet', + 'vim', + 'visual-basic', + 'vb', + 'vba', + 'wasm', + 'wiki', + 'xml-doc', + 'yaml', + 'yml', + 'diff', + 'glsl', + 'graphql', + 'haml', + 'lua', + 'pascal', + 'protobuf', + 'typescript', + ], plugins: [], css: false, }, From 98d0f888ed2c19486d0556a7ba94567e04412f0d Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Thu, 5 Mar 2026 16:06:07 +0800 Subject: [PATCH 43/57] =?UTF-8?q?feat:=20#1549=20=E6=B5=81=E5=BC=8F?= =?UTF-8?q?=E6=B8=B2=E6=9F=93=E5=9C=BA=E6=99=AF=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=9D=97=E8=87=AA=E5=8A=A8=E9=97=AD=E5=90=88?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E6=9C=BA=E5=B9=B6=E4=BC=98=E5=8C=96=E8=A1=8C?= =?UTF-8?q?=E5=86=85=E5=85=AC=E5=BC=8F=E5=9C=A8=E8=A1=A8=E6=A0=BC=E9=87=8C?= =?UTF-8?q?=E4=B9=9F=E5=8F=AF=E4=BB=A5=E8=87=AA=E5=8A=A8=E9=97=AD=E5=90=88?= =?UTF-8?q?=20(#1640)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: #1549 流式渲染场景,优化代码块自动闭合的时机并优化行内公式在表格里也可以自动闭合 * fix: 更新测试用例 --- .changeset/cool-rooms-drum.md | 5 +++ .../src/core/hooks/CodeBlock.js | 8 ++++- .../src/core/hooks/InlineMath.js | 25 +++++++++++--- .../__snapshots__/CommonMark.spec.ts.snap | 34 +++---------------- 4 files changed, 37 insertions(+), 35 deletions(-) create mode 100644 .changeset/cool-rooms-drum.md diff --git a/.changeset/cool-rooms-drum.md b/.changeset/cool-rooms-drum.md new file mode 100644 index 000000000..482ea3873 --- /dev/null +++ b/.changeset/cool-rooms-drum.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +feat: #1549 流式渲染场景,优化代码块自动闭合的时机并优化行内公式在表格里也可以自动闭合 diff --git a/packages/cherry-markdown/src/core/hooks/CodeBlock.js b/packages/cherry-markdown/src/core/hooks/CodeBlock.js index ee6255577..57f1139b1 100644 --- a/packages/cherry-markdown/src/core/hooks/CodeBlock.js +++ b/packages/cherry-markdown/src/core/hooks/CodeBlock.js @@ -390,7 +390,13 @@ export default class CodeBlock extends ParagraphBase { if ($codes.length % 2 === 1) { const lastCode = $codes[$codes.length - 1].replace(/(`)[^`]+$/, '$1').replace(/\n+/, ''); const $str = str.replace(/\n+$/, '').replace(/\n`{1,2}$/, ''); - return `${$str}\n${lastCode}\n`; + return ( + `${$str}\n${lastCode}\n` + // 如果自动闭合后代码块为空,则删除代码块 + .replace(/\n`{3,}[^`\n]*\n\s*`{3,}\n$/g, '\n') + // 如果自动闭合的是mermaid图,则再判断第二行以后的内容是否为空,如果为空,则删除代码块 + .replace(/\n`{3,}\s*mermaid\s*\n[^\n]+\n\s*`{3,}\n$/g, '\n') + ); } return str; } diff --git a/packages/cherry-markdown/src/core/hooks/InlineMath.js b/packages/cherry-markdown/src/core/hooks/InlineMath.js index e46545fff..6f088a188 100644 --- a/packages/cherry-markdown/src/core/hooks/InlineMath.js +++ b/packages/cherry-markdown/src/core/hooks/InlineMath.js @@ -36,6 +36,11 @@ export default class InlineMath extends ParagraphBase { // 非浏览器环境下配置为 node this.engine = isBrowser() ? (config.engine ?? 'MathJax') : 'node'; this.$cherry = cherry; + /** + * 这里本意是用来存储「上一轮」成功渲染里的最后一个公式 + * 但因为偷懒,存的是「上一次」成功渲染里的公式,所以这里有个大大的「TODO」 + * 同时,mermaid渲染那里也有同样的问题,也有个大大的「TODO」 + */ this.lastCode = ''; } @@ -105,17 +110,27 @@ export default class InlineMath extends ParagraphBase { let $str = str; // 格里处理行内公式,让一个td里的行内公式语法生效,让跨td的行内公式语法失效 $str = $str.replace(getTableRule(true), (whole, ...args) => { - return whole - .split('|') - .map((oneTd) => { + const arr = whole.split('|'); + return arr + .map((oneTd, index) => { // 单元格里的段落公式直接替换成行内公式 - return this.makeInlineMath(this.transformBlockMathToInlineMath(oneTd)); + const tdContent = this.transformBlockMathToInlineMath(oneTd); + // 判断是否为最后一个td + if (index === arr.length - 1) { + return this.makeInlineMathWithSelfClosing(tdContent); + } + return this.makeInlineMath(tdContent); }) .join('|') .replace(/\\~D/g, '~D') // 出现反斜杠的情况(如/$e=m^2$)会导致多一个反斜杠,这里替换掉 .replace(/~D/g, '\\~D'); }); - $str = this.makeInlineMath($str); + $str = this.makeInlineMathWithSelfClosing($str); + return $str; + } + + makeInlineMathWithSelfClosing(str) { + let $str = this.makeInlineMath(str); if (this.isSelfClosing()) { const $oldStr = $str; $str = this.$dealUnclosingMath($str); diff --git a/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap b/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap index 7ba0c1a3b..a34fdd730 100644 --- a/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap +++ b/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap @@ -787,21 +787,9 @@ exports[`engine > CommonMark-123 1`] = ` `; exports[`engine > CommonMark-124 1`] = ` -"
-
aaa
-\`\`\`
-

\`\`\`\`\`\`

+"

\`\` +aaa +\`

" `; @@ -1100,20 +1088,8 @@ exports[`engine > CommonMark-146 1`] = ` `; exports[`engine > CommonMark-147 1`] = ` -"
-
\`\`\` aaa
-

\`\`\`

+"

\` +\` aaa

" `; From 4ce389f6860232b123ea9053a4f4bf74691d1ba0 Mon Sep 17 00:00:00 2001 From: liweijie0812 <674416404@qq.com> Date: Thu, 5 Mar 2026 16:06:19 +0800 Subject: [PATCH 44/57] =?UTF-8?q?chore:=20=E8=A1=A5=E5=85=85directory?= =?UTF-8?q?=E5=88=B0=20package.json=20(#1638)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generated-By: AI --- packages/cherry-markdown/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/cherry-markdown/package.json b/packages/cherry-markdown/package.json index a18a82f11..e7e2e2eed 100644 --- a/packages/cherry-markdown/package.json +++ b/packages/cherry-markdown/package.json @@ -6,7 +6,8 @@ "description": "a new markdown editor", "repository": { "type": "git", - "url": "git+https://github.com/Tencent/cherry-markdown.git" + "url": "git+https://github.com/Tencent/cherry-markdown.git", + "directory": "packages/cherry-markdown" }, "main": "./dist/cherry-markdown.min.js", "module": "./dist/cherry-markdown.esm.js", From 2420119c19900eda3519c2d593b6bf67d67d81cf Mon Sep 17 00:00:00 2001 From: liweijie0812 <674416404@qq.com> Date: Thu, 5 Mar 2026 16:08:02 +0800 Subject: [PATCH 45/57] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20SyntaxBase?= =?UTF-8?q?=20=E6=A0=B8=E5=BF=83=E7=B1=BB=E7=9A=84=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=20(#1636)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/core/SyntaxBase.spec.ts | 425 ++++++++++++++++++ 1 file changed, 425 insertions(+) create mode 100644 packages/cherry-markdown/test/core/SyntaxBase.spec.ts diff --git a/packages/cherry-markdown/test/core/SyntaxBase.spec.ts b/packages/cherry-markdown/test/core/SyntaxBase.spec.ts new file mode 100644 index 000000000..3cb6a4f54 --- /dev/null +++ b/packages/cherry-markdown/test/core/SyntaxBase.spec.ts @@ -0,0 +1,425 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import SyntaxBase, { HOOKS_TYPE_LIST } from '../../src/core/SyntaxBase'; + +// ============ 辅助函数 ============ + +/** 创建测试用的 SyntaxBase 子类 */ +const createTestSyntax = (hookName = 'testHook', hookType = HOOKS_TYPE_LIST.SEN) => { + return class TestSyntax extends SyntaxBase { + static HOOK_NAME = hookName; + static HOOK_TYPE = hookType; + + rule(editorConfig: any) { + return { + begin: '^', + end: '$', + content: 'test', + reg: /^test$/, + }; + } + }; +}; + +/** 创建编辑器配置 */ +const createEditorConfig = (overrides = {}) => ({ + externals: {}, + config: {}, + globalConfig: {}, + ...overrides, +}); + +// ============ 测试用例 ============ + +describe('core/SyntaxBase', () => { + describe('HOOKS_TYPE_LIST 常量', () => { + it('应该定义正确的 hook 类型', () => { + expect(HOOKS_TYPE_LIST.SEN).toBe('sentence'); + expect(HOOKS_TYPE_LIST.PAR).toBe('paragraph'); + expect(HOOKS_TYPE_LIST.DEFAULT).toBe('sentence'); + }); + }); + + describe('静态属性', () => { + it('应该有默认的 HOOK_NAME', () => { + expect(SyntaxBase.HOOK_NAME).toBe('default'); + }); + + it('应该有默认的 HOOK_TYPE', () => { + expect(SyntaxBase.HOOK_TYPE).toBe(HOOKS_TYPE_LIST.DEFAULT); + }); + }); + + describe('constructor', () => { + it('应该正确初始化并调用 rule 方法', () => { + const TestSyntax = createTestSyntax(); + const config = createEditorConfig(); + const instance = new TestSyntax(config); + + expect(instance.RULE).toBeDefined(); + expect(instance.RULE.begin).toBe('^'); + expect(instance.RULE.end).toBe('$'); + expect(instance.RULE.reg).toBeInstanceOf(RegExp); + }); + + it('应该处理空的编辑器配置', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax({}); + + expect(instance.RULE).toBeDefined(); + }); + }); + + describe('getType', () => { + it.each([ + [HOOKS_TYPE_LIST.SEN, 'sentence'], + [HOOKS_TYPE_LIST.PAR, 'paragraph'], + ])('应该返回正确的类型 %s', (hookType, expected) => { + const TestSyntax = createTestSyntax('test', hookType); + const instance = new TestSyntax(createEditorConfig()); + + expect(instance.getType()).toBe(expected); + }); + + it('当 HOOK_TYPE 未定义时应返回默认类型', () => { + class NoTypeSyntax extends SyntaxBase { + static HOOK_NAME = 'noType'; + } + const instance = new NoTypeSyntax(createEditorConfig()); + + expect(instance.getType()).toBe(HOOKS_TYPE_LIST.DEFAULT); + }); + }); + + describe('getName', () => { + it('应该返回类的 HOOK_NAME', () => { + const TestSyntax = createTestSyntax('myHook'); + const instance = new TestSyntax(createEditorConfig()); + + expect(instance.getName()).toBe('myHook'); + }); + }); + + describe('afterInit', () => { + it('应该在传入函数时调用回调', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + const callback = vi.fn(); + + instance.afterInit(callback); + + expect(callback).toHaveBeenCalledTimes(1); + }); + + it.each([null, undefined, 'string', 123, {}])( + '传入非函数值 %j 时不应该报错', + (value) => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + expect(() => instance.afterInit(value as any)).not.toThrow(); + }, + ); + }); + + describe('setLocale', () => { + it('应该正确设置 locale', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + instance.setLocale('zh-CN'); + + expect(instance.$locale).toBe('zh-CN'); + }); + + it('应该能够覆盖已设置的 locale', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + instance.setLocale('zh-CN'); + instance.setLocale('en-US'); + + expect(instance.$locale).toBe('en-US'); + }); + }); + + describe('生命周期函数', () => { + it.each([ + { method: 'beforeMakeHtml', input: 'test string' }, + { method: 'makeHtml', input: 'test string' }, + { method: 'afterMakeHtml', input: 'test string' }, + ])('$method 应该返回原字符串', ({ method, input }) => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + expect((instance as any)[method](input)).toBe(input); + }); + + it('生命周期方法应该可以在子类中重写', () => { + class CustomLifecycleSyntax extends SyntaxBase { + static HOOK_NAME = 'customLifecycle'; + + beforeMakeHtml(str: string) { + return `before: ${str}`; + } + + makeHtml(str: string) { + return `html: ${str}`; + } + + afterMakeHtml(str: string) { + return `after: ${str}`; + } + } + const instance = new CustomLifecycleSyntax(createEditorConfig()); + + expect(instance.beforeMakeHtml('test')).toBe('before: test'); + expect(instance.makeHtml('test')).toBe('html: test'); + expect(instance.afterMakeHtml('test')).toBe('after: test'); + }); + }); + + describe('onKeyDown / getOnKeyDown', () => { + it('getOnKeyDown 应该返回 onKeyDown 方法', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + expect(instance.getOnKeyDown()).toBe(instance.onKeyDown); + }); + + it('onKeyDown 应该可以在子类中重写', () => { + class KeyDownSyntax extends SyntaxBase { + static HOOK_NAME = 'keyDown'; + onKeyDown(e: KeyboardEvent, str: string) { + return `processed: ${str}`; + } + } + const instance = new KeyDownSyntax(createEditorConfig()); + + expect(instance.onKeyDown({} as KeyboardEvent, 'test')).toBe('processed: test'); + }); + + it('onKeyDown 默认返回 undefined', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + expect(instance.onKeyDown({} as KeyboardEvent, 'test')).toBeUndefined(); + }); + }); + + describe('getAttributesTest', () => { + const validAttributes = [ + 'color', + 'fontSize', + 'font-size', + 'id', + 'title', + 'class', + 'target', + 'underline', + 'line-through', + 'overline', + 'sub', + 'super', + ]; + + const invalidAttributes = ['onclick', 'href', 'style', 'data-attr', 'onload', 'src']; + + it.each(validAttributes)('应该匹配有效属性: %s', (attr) => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + const regex = instance.getAttributesTest(); + + expect(regex.test(attr)).toBe(true); + }); + + it.each(invalidAttributes)('应该拒绝无效属性: %s', (attr) => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + const regex = instance.getAttributesTest(); + + expect(regex.test(attr)).toBe(false); + }); + }); + + describe('$testAttributes', () => { + it('应该在属性有效时调用回调函数', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + const callback = vi.fn(); + + instance.$testAttributes('color', callback); + + expect(callback).toHaveBeenCalledTimes(1); + }); + + it('应该在属性无效时不调用回调函数', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + const callback = vi.fn(); + + instance.$testAttributes('onclick', callback); + + expect(callback).not.toHaveBeenCalled(); + }); + }); + + describe('getAttributes', () => { + it('应该返回包含 attrs 和 str 的对象', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + const result = instance.getAttributes('test string'); + + expect(result).toHaveProperty('attrs'); + expect(result).toHaveProperty('str'); + expect(result.str).toBe('test string'); + expect(result.attrs).toEqual({}); + }); + + it.each(['hello world', '', ' ', 'markdown **bold** text'])( + '应该原样返回输入字符串: %j', + (input) => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + const result = instance.getAttributes(input); + + expect(result.str).toBe(input); + }, + ); + }); + + describe('MathJax 配置', () => { + beforeEach(() => { + SyntaxBase.setMathJaxConfig(false); + }); + + afterEach(() => { + SyntaxBase.setMathJaxConfig(false); + }); + + it('getMathJaxConfig 应该返回当前配置', () => { + expect(SyntaxBase.getMathJaxConfig()).toBe(false); + + SyntaxBase.setMathJaxConfig(true); + expect(SyntaxBase.getMathJaxConfig()).toBe(true); + }); + + it.each([true, false])('setMathJaxConfig 应该正确设置配置为 %s', (value) => { + SyntaxBase.setMathJaxConfig(value); + expect(SyntaxBase.getMathJaxConfig()).toBe(value); + }); + }); + + describe('test', () => { + it('应该在字符串匹配规则时返回 true', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + expect(instance.test('test')).toBe(true); + }); + + it('应该在字符串不匹配规则时返回 false', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + expect(instance.test('no match')).toBe(false); + }); + + it('应该在 RULE.reg 未定义时返回 false', () => { + class NoRegSyntax extends SyntaxBase { + static HOOK_NAME = 'noReg'; + rule() { + return { begin: '', end: '', content: '' }; + } + } + const instance = new NoRegSyntax(createEditorConfig()); + + expect(instance.test('test')).toBe(false); + }); + + it('应该在 RULE.reg 为 null 时返回 false', () => { + class NullRegSyntax extends SyntaxBase { + static HOOK_NAME = 'nullReg'; + rule() { + return { begin: '', end: '', content: '', reg: null as any }; + } + } + const instance = new NullRegSyntax(createEditorConfig()); + + expect(instance.test('test')).toBe(false); + }); + }); + + describe('rule', () => { + it('基类 rule 方法应该返回默认规则', () => { + const instance = new SyntaxBase(createEditorConfig()); + const rule = instance.rule(createEditorConfig()); + + expect(rule.begin).toBe(''); + expect(rule.end).toBe(''); + expect(rule.content).toBe(''); + expect(rule.reg).toBeInstanceOf(RegExp); + expect(rule.reg.source).toBe('(?:)'); + }); + + it('rule 方法应该接收 editorConfig 参数', () => { + const TestSyntax = createTestSyntax(); + const config = createEditorConfig({ customOption: true }); + const instance = new TestSyntax(config); + + expect(instance.RULE).toBeDefined(); + }); + }); + + describe('mounted', () => { + it('mounted 方法应该可以被调用', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + expect(() => instance.mounted()).not.toThrow(); + }); + + it('mounted 方法可以在子类中重写', () => { + class MountedSyntax extends SyntaxBase { + static HOOK_NAME = 'mounted'; + mounted() { + return 'mounted called'; + } + } + const instance = new MountedSyntax(createEditorConfig()); + + expect(instance.mounted()).toBe('mounted called'); + }); + }); + + describe('$engine 属性', () => { + it('应该能够设置 $engine', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + const mockEngine = { name: 'testEngine' }; + + instance.$engine = mockEngine as any; + + expect(instance.$engine).toEqual(mockEngine); + }); + + it('$engine 默认为 undefined', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + expect(instance.$engine).toBeUndefined(); + }); + }); + + describe('$externals 属性', () => { + it('可以在实例化后设置 $externals', () => { + const TestSyntax = createTestSyntax(); + const instance = new TestSyntax(createEditorConfig()); + + instance.$externals = { customLib: {} }; + + expect(instance.$externals).toEqual({ customLib: {} }); + }); + }); +}); From 78819def7a84a49d298457fe1046b1c49e34e66f Mon Sep 17 00:00:00 2001 From: liweijie0812 <674416404@qq.com> Date: Thu, 5 Mar 2026 16:08:34 +0800 Subject: [PATCH 46/57] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20HookCenter?= =?UTF-8?q?=20=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95=EF=BC=8C=E8=A6=86?= =?UTF-8?q?=E7=9B=96=E6=9E=84=E9=80=A0=E5=87=BD=E6=95=B0=E3=80=81hook=20?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E3=80=81=E8=87=AA=E5=AE=9A=E4=B9=89=20hook?= =?UTF-8?q?=20=E5=A4=84=E7=90=86=E7=AD=89=E6=A0=B8=E5=BF=83=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=20(#1635)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/core/HookCenter.spec.ts | 481 ++++++++++++++++++ 1 file changed, 481 insertions(+) create mode 100644 packages/cherry-markdown/test/core/HookCenter.spec.ts diff --git a/packages/cherry-markdown/test/core/HookCenter.spec.ts b/packages/cherry-markdown/test/core/HookCenter.spec.ts new file mode 100644 index 000000000..ca5152ac0 --- /dev/null +++ b/packages/cherry-markdown/test/core/HookCenter.spec.ts @@ -0,0 +1,481 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import HookCenter from '../../src/core/HookCenter'; +import SyntaxBase from '../../src/core/SyntaxBase'; +import ParagraphBase from '../../src/core/ParagraphBase'; +import Logger from '@/Logger'; + +// 返回值常量 +const WARN_DUPLICATED = -1; +const WARN_NOT_A_VALID_HOOK = -2; + +// Mock Logger +vi.mock('@/Logger', () => ({ + default: { + warn: vi.fn(), + }, +})); + +// ============ 辅助函数 ============ + +/** 创建 mock cherry 实例 */ +const createMockCherry = (locale = 'zh-CN') => ({ locale }); + +/** 创建基础编辑器配置 */ +const createEditorConfig = (overrides = {}) => ({ + externals: {}, + engine: { + syntax: {}, + global: {}, + ...overrides, + }, +}); + +/** 创建 mock SyntaxBase hook 类 */ +const createMockHookClass = (hookName: string) => { + return class MockHook extends SyntaxBase { + static HOOK_NAME = hookName; + rule() { + return { regex: new RegExp('') }; + } + }; +}; + +/** 创建 mock ParagraphBase hook 类 */ +const createMockParagraphHook = (hookName: string) => { + return class MockHook extends ParagraphBase { + static HOOK_NAME = hookName; + rule() { + return { regex: new RegExp('') }; + } + }; +}; + +/** 为 Hook 类添加自定义标记 */ +const markAsCustomHook = (HookClass: any) => { + Object.defineProperty(HookClass, 'Cherry$$CUSTOM', { + value: true, + writable: false, + configurable: true, + enumerable: false, + }); + return HookClass; +}; + +/** 创建 HookCenter 实例 */ +const createHookCenter = ( + hooksConfig: any[] = [], + editorConfig = createEditorConfig(), + cherry = createMockCherry(), +) => { + return new HookCenter(hooksConfig, editorConfig, cherry); +}; + +// ============ 测试用例 ============ + +describe('core/HookCenter', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + describe('constructor', () => { + it('应该正确初始化基本属性', () => { + const hookCenter = createHookCenter([createMockHookClass('testHook')]); + + expect(hookCenter.getHookList()).toBeDefined(); + expect(hookCenter.getHookNameList()).toBeDefined(); + expect(hookCenter.$locale).toBe('zh-CN'); + expect(hookCenter.$cherry).toBeDefined(); + }); + + it.each([ + ['字符串', 'string'], + ['对象', {}], + ['数字', 123], + ['null', null], + ])('应该拒绝非数组类型的 hooksConfig: %s', (_, config) => { + expect(() => createHookCenter(config as any)).toThrow(); + }); + + it('应该同时注册内置 hooks 和自定义 hooks', () => { + const InternalHook = createMockHookClass('internalHook'); + const CustomHook = createMockHookClass('customHook'); + const editorConfig = createEditorConfig({ + customSyntax: { customHook: CustomHook }, + }); + + const hookCenter = createHookCenter([InternalHook], editorConfig); + + expect(hookCenter.getHookNameList().internalHook).toBeDefined(); + expect(hookCenter.getHookNameList().customHook).toBeDefined(); + }); + }); + + describe('registerInternalHooks', () => { + it('应该按顺序注册所有内部 hooks', () => { + const Hook1 = createMockHookClass('hook1'); + const Hook2 = createMockHookClass('hook2'); + const hookCenter = createHookCenter([Hook1, Hook2]); + + expect(hookCenter.getHookNameList().hook1).toBeDefined(); + expect(hookCenter.getHookNameList().hook2).toBeDefined(); + }); + + it('应该对重复的内部 hook 发出警告', () => { + const HookClass = createMockHookClass('duplicateHook'); + createHookCenter([HookClass, HookClass]); + + expect(Logger.warn).toHaveBeenCalledWith(expect.stringContaining('Duplicate hook name [duplicateHook]')); + }); + + it('应该对无效的内部 hook 发出警告', () => { + createHookCenter(['invalidHook' as any]); + + expect(Logger.warn).toHaveBeenCalledWith(expect.stringContaining('is not a valid hook')); + }); + }); + + describe('registerCustomHooks', () => { + describe('空配置处理', () => { + it.each([null, undefined])('应该在 customSyntax 为 %s 时跳过', (customSyntax) => { + const editorConfig = createEditorConfig({ customSyntax }); + const hookCenter = createHookCenter([], editorConfig); + + expect(hookCenter.getHookList()).toBeDefined(); + }); + + it('应该处理空对象 customSyntax', () => { + const editorConfig = createEditorConfig({ customSyntax: {} }); + const hookCenter = createHookCenter([], editorConfig); + + expect(hookCenter.getHookList()).toBeDefined(); + }); + }); + + describe('直接注册 Hook 类', () => { + it('应该直接注册 SyntaxBase 类型的自定义 hook', () => { + const CustomHook = createMockHookClass('customHook'); + const editorConfig = createEditorConfig({ customSyntax: { customHook: CustomHook } }); + const hookCenter = createHookCenter([], editorConfig); + + expect(hookCenter.getHookNameList().customHook).toBeDefined(); + }); + + it('应该直接注册 ParagraphBase 类型的自定义 hook', () => { + const CustomHook = createMockParagraphHook('customParagraphHook'); + const editorConfig = createEditorConfig({ customSyntax: { customParagraphHook: CustomHook } }); + const hookCenter = createHookCenter([], editorConfig); + + expect(hookCenter.getHookNameList().customParagraphHook).toBeDefined(); + expect(hookCenter.getHookList().paragraph).toBeDefined(); + }); + }); + + describe('配置对象形式的 Hook', () => { + it('应该处理 force 配置', () => { + const editorConfig = createEditorConfig({ + customSyntax: { forceHook: { syntaxClass: createMockHookClass('forceHook'), force: true } }, + }); + const hookCenter = createHookCenter([], editorConfig); + + expect(hookCenter.getHookNameList().forceHook).toBeDefined(); + }); + + it('应该处理 before 配置:在指定 hook 之前插入', () => { + const BaseHook = createMockHookClass('baseHook'); + const BeforeHook = createMockHookClass('beforeHook'); + const editorConfig = createEditorConfig({ + customSyntax: { beforeHook: { syntaxClass: BeforeHook, before: 'baseHook' } }, + }); + const hookCenter = createHookCenter([BaseHook], editorConfig); + const hooks = hookCenter.getHookList().sentence; + + expect(hooks[0].getName()).toBe('beforeHook'); + expect(hooks[1].getName()).toBe('baseHook'); + }); + + it('应该处理 after 配置:在指定 hook 之后插入', () => { + const BaseHook = createMockHookClass('baseHook'); + const AfterHook = createMockHookClass('afterHook'); + const editorConfig = createEditorConfig({ + customSyntax: { afterHook: { syntaxClass: AfterHook, after: 'baseHook' } }, + }); + const hookCenter = createHookCenter([BaseHook], editorConfig); + const hooks = hookCenter.getHookList().sentence; + + expect(hooks[0].getName()).toBe('baseHook'); + expect(hooks[1].getName()).toBe('afterHook'); + }); + }); + + describe('无效配置处理', () => { + it.each([ + ['字符串', 'string'], + ['null', null], + ['undefined', undefined], + ['无效的 syntaxClass 字符串', { syntaxClass: 'InvalidClass' }], + ['无效的 syntaxClass 类', { syntaxClass: class InvalidClass {} }], + ])('应该忽略无效的自定义 hook 配置: %s', (_, customSyntax) => { + const editorConfig = createEditorConfig({ + customSyntax: { invalidHook: customSyntax as any }, + }); + const hookCenter = createHookCenter([], editorConfig); + + expect(hookCenter.getHookNameList().invalidHook).toBeUndefined(); + }); + }); + }); + + describe('register', () => { + describe('有效 Hook 注册', () => { + it('应该成功注册 SyntaxBase 类型的 hook', () => { + const HookClass = createMockHookClass('syntaxHook'); + const hookCenter = createHookCenter(); + + hookCenter.register(HookClass, createEditorConfig()); + + expect(hookCenter.getHookNameList().syntaxHook).toBeDefined(); + expect(hookCenter.getHookList().sentence).toHaveLength(1); + }); + + it('应该成功注册 ParagraphBase 类型的 hook', () => { + const HookClass = createMockParagraphHook('paragraphHook'); + const hookCenter = createHookCenter(); + + hookCenter.register(HookClass, createEditorConfig()); + + expect(hookCenter.getHookNameList().paragraphHook).toBeDefined(); + expect(hookCenter.getHookList().paragraph).toHaveLength(1); + }); + + it('应该成功注册函数式 hook(返回 Hook 实例的函数)', () => { + const HookClass = createMockHookClass('funcHook'); + const hookCenter = createHookCenter(); + + hookCenter.register(() => new HookClass({ config: {}, globalConfig: {} }), createEditorConfig()); + + expect(hookCenter.getHookNameList().funcHook).toBeDefined(); + }); + + it('应该使用 syntax 配置初始化 hook', () => { + const HookClass = createMockHookClass('configuredHook'); + const editorConfig = createEditorConfig({ syntax: { configuredHook: { customOption: true } } }); + const hookCenter = createHookCenter([], editorConfig); + + hookCenter.register(HookClass, editorConfig); + + expect(hookCenter.getHookNameList().configuredHook).toBeDefined(); + }); + }); + + describe('无效 Hook 处理', () => { + it.each([ + ['对象', {}], + ['null', null], + ['字符串', 'string'], + ])('应该拒绝非函数非类的参数: %s', (_, value) => { + const hookCenter = createHookCenter(); + + expect(hookCenter.register(value as any, createEditorConfig())).toBe(WARN_NOT_A_VALID_HOOK); + }); + + it.each([ + ['null', () => null], + ['普通对象', () => ({})], + ])('应该拒绝返回无效实例的函数 hook: %s', (_, funcHook) => { + const hookCenter = createHookCenter(); + + expect(hookCenter.register(funcHook, createEditorConfig())).toBe(WARN_NOT_A_VALID_HOOK); + }); + }); + + describe('禁用 Hook 处理', () => { + it('应该跳过被禁用的内置 hook(syntax 配置为 false)', () => { + const HookClass = createMockHookClass('disabledHook'); + const editorConfig = createEditorConfig({ syntax: { disabledHook: false } }); + const hookCenter = createHookCenter([], editorConfig); + + hookCenter.register(HookClass, editorConfig); + + expect(hookCenter.getHookNameList().disabledHook).toBeUndefined(); + }); + + it('应该允许被禁用的自定义 hook 注册(使用 force 选项)', () => { + const CustomHook = markAsCustomHook(createMockHookClass('disabledCustomHook')); + const editorConfig = createEditorConfig({ syntax: { disabledCustomHook: false } }); + const hookCenter = createHookCenter([], editorConfig); + + hookCenter.register(CustomHook, createEditorConfig(), { force: true }); + + expect(hookCenter.getHookNameList().disabledCustomHook).toBeDefined(); + }); + }); + + describe('重复 Hook 处理', () => { + it('应该拒绝重复的内置 hook', () => { + const HookClass = createMockHookClass('duplicateHook'); + const hookCenter = createHookCenter(); + + hookCenter.register(HookClass, createEditorConfig()); + const result = hookCenter.register(HookClass, createEditorConfig()); + + expect(result).toBe(WARN_DUPLICATED); + }); + + it('应该拒绝重复的自定义 hook(未设置 force)', () => { + const BaseHook = createMockHookClass('baseHook'); + const CustomHook = markAsCustomHook(createMockHookClass('baseHook')); + const hookCenter = createHookCenter([BaseHook]); + + expect(hookCenter.register(CustomHook, createEditorConfig(), { force: false })).toBe(WARN_DUPLICATED); + expect(hookCenter.register(CustomHook, createEditorConfig(), {})).toBe(WARN_DUPLICATED); + }); + + it('应该允许自定义 hook 强制覆盖内置 hook(设置 force: true)', () => { + const BaseHook = createMockHookClass('baseHook'); + const CustomHook = markAsCustomHook(createMockHookClass('baseHook')); + const hookCenter = createHookCenter([BaseHook]); + + hookCenter.register(CustomHook, createEditorConfig(), { force: true }); + + const hooks = hookCenter.getHookList().sentence; + expect(hooks).toHaveLength(1); + expect(hooks[0].getName()).toBe('baseHook'); + }); + }); + + describe('Hook 插入位置', () => { + describe('before 配置', () => { + it('应该在指定 hook 之前插入', () => { + const Hook1 = createMockHookClass('hook1'); + const Hook2 = createMockHookClass('hook2'); + const Hook3 = markAsCustomHook(createMockHookClass('hook3')); + const hookCenter = createHookCenter([Hook1, Hook2]); + + hookCenter.register(Hook3, createEditorConfig(), { before: 'hook2' }); + + const hooks = hookCenter.getHookList().sentence; + expect(hooks.map((h) => h.getName())).toEqual(['hook1', 'hook3', 'hook2']); + }); + + it('应该在找不到目标 hook 时追加到末尾并发出警告', () => { + const Hook1 = createMockHookClass('hook1'); + const Hook2 = markAsCustomHook(createMockHookClass('hook2')); + const hookCenter = createHookCenter([Hook1]); + + hookCenter.register(Hook2, createEditorConfig(), { before: 'nonExistent' }); + + const hooks = hookCenter.getHookList().sentence; + expect(hooks.map((h) => h.getName())).toEqual(['hook1', 'hook2']); + expect(Logger.warn).toHaveBeenCalledWith(expect.stringContaining('Cannot find hook named [nonExistent]')); + }); + }); + + describe('after 配置', () => { + it('应该在指定 hook 之后插入', () => { + const Hook1 = createMockHookClass('hook1'); + const Hook2 = createMockHookClass('hook2'); + const Hook3 = markAsCustomHook(createMockHookClass('hook3')); + const hookCenter = createHookCenter([Hook1, Hook2]); + + hookCenter.register(Hook3, createEditorConfig(), { after: 'hook1' }); + + const hooks = hookCenter.getHookList().sentence; + expect(hooks.map((h) => h.getName())).toEqual(['hook1', 'hook3', 'hook2']); + }); + + it('应该在最后一个 hook 之后插入', () => { + const Hook1 = createMockHookClass('hook1'); + const Hook2 = markAsCustomHook(createMockHookClass('hook2')); + const hookCenter = createHookCenter([Hook1]); + + hookCenter.register(Hook2, createEditorConfig(), { after: 'hook1' }); + + const hooks = hookCenter.getHookList().sentence; + expect(hooks.map((h) => h.getName())).toEqual(['hook1', 'hook2']); + }); + + it('应该在找不到目标 hook 时追加到末尾并发出警告', () => { + const Hook1 = createMockHookClass('hook1'); + const Hook2 = markAsCustomHook(createMockHookClass('hook2')); + const hookCenter = createHookCenter([Hook1]); + + hookCenter.register(Hook2, createEditorConfig(), { after: 'nonExistent' }); + + const hooks = hookCenter.getHookList().sentence; + expect(hooks.map((h) => h.getName())).toEqual(['hook1', 'hook2']); + expect(Logger.warn).toHaveBeenCalledWith(expect.stringContaining('Cannot find hook named [nonExistent]')); + }); + }); + + describe('无位置配置', () => { + it('内置 hook 应该直接追加到末尾', () => { + const Hook1 = createMockHookClass('hook1'); + const Hook2 = createMockHookClass('hook2'); + const hookCenter = createHookCenter([Hook1]); + + hookCenter.register(Hook2, createEditorConfig()); + + const hooks = hookCenter.getHookList().sentence; + expect(hooks.map((h) => h.getName())).toEqual(['hook1', 'hook2']); + }); + }); + }); + }); + + describe('getHookList / getHookNameList', () => { + it('应该返回正确的 hook 列表和名称映射', () => { + const Hook1 = createMockHookClass('hook1'); + const Hook2 = createMockParagraphHook('hook2'); + const hookCenter = createHookCenter([Hook1, Hook2]); + + const hookList = hookCenter.getHookList(); + const hookNameList = hookCenter.getHookNameList(); + + expect(hookList.sentence).toHaveLength(1); + expect(hookList.paragraph).toHaveLength(1); + expect(hookNameList.hook1).toEqual({ type: 'sentence' }); + expect(hookNameList.hook2).toEqual({ type: 'paragraph' }); + }); + }); + + describe('警告日志', () => { + it.each([ + [ + '重复 hook', + () => { + const HookClass = createMockHookClass('duplicateHook'); + createHookCenter([HookClass, HookClass]); + }, + 'Duplicate hook name [duplicateHook]', + ], + [ + '无效 hook', + () => { + createHookCenter(['invalid' as any]); + }, + 'is not a valid hook', + ], + [ + 'before 找不到目标 hook', + () => { + const Hook = markAsCustomHook(createMockHookClass('testHook')); + const hookCenter = createHookCenter(); + hookCenter.register(Hook, createEditorConfig(), { before: 'nonExistent' }); + }, + 'Cannot find hook named [nonExistent]', + ], + [ + 'after 找不到目标 hook', + () => { + const Hook = markAsCustomHook(createMockHookClass('testHook')); + const hookCenter = createHookCenter(); + hookCenter.register(Hook, createEditorConfig(), { after: 'nonExistent' }); + }, + 'Cannot find hook named [nonExistent]', + ], + ])('应该在 %s 时输出警告', (_, action, expectedMessage) => { + action(); + expect(Logger.warn).toHaveBeenCalledWith(expect.stringContaining(expectedMessage)); + }); + }); +}); From 4a6ef34a91ee2536c988ad1ef69a3132c06261dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Sat, 7 Mar 2026 23:18:56 +0800 Subject: [PATCH 47/57] =?UTF-8?q?ci:=20=E7=A7=BB=E9=99=A4=20PR=20=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E6=9E=84=E5=BB=BA=E7=9A=84=E5=88=86=E6=94=AF=E9=99=90?= =?UTF-8?q?=E5=88=B6=20(#1643)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci: 移除 PR 预览构建的分支限制 * ci: 限制 PR 触发条件 --- .github/workflows/build.yml | 1 - .github/workflows/pr_preview-build.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dad529a81..766672119 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,7 +7,6 @@ on: push: branches: [main, dev] pull_request: - branches: [main, dev] jobs: build: diff --git a/.github/workflows/pr_preview-build.yml b/.github/workflows/pr_preview-build.yml index c9638d2f0..38b231ff3 100644 --- a/.github/workflows/pr_preview-build.yml +++ b/.github/workflows/pr_preview-build.yml @@ -2,7 +2,6 @@ name: Preview Build on: pull_request: - branches: [dev, main] types: [opened, synchronize, reopened] jobs: From 8b190e9dcb622946085cb483dc7423fbec092ce5 Mon Sep 17 00:00:00 2001 From: echo_sixi <66469581+Jie-echo@users.noreply.github.com> Date: Mon, 9 Mar 2026 13:47:33 +0800 Subject: [PATCH 48/57] feat(mermaid): mermaid diagram size editing and alignment (#1641) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(mermaid): mermaid diagram size editing and alignment * feat(mermaid): mermaid diagram size editing and alignment * feat(mermaid): mermaid diagram size editing and alignment * fix(codeblock): 修复代码块语言解析和转义问题 * chore: add changeset --------- Co-authored-by: femeng Co-authored-by: 阿菜 Cai Co-authored-by: sunsonliu --- .changeset/mermaid-size-alignment.md | 9 + README.CN.md | 21 +- README.md | 21 +- .../cherry-code-block-mermaid-plugin.js | 2 +- .../src/core/hooks/CodeBlock.js | 41 +++- .../cherry-markdown/src/sass/markdown.scss | 40 ++++ .../src/toolbars/PreviewerBubble.js | 204 ++++++++++++++++++ .../src/utils/imgSizeHandler.js | 39 +++- .../src/utils/imgToolHandler.js | 71 +++--- 9 files changed, 391 insertions(+), 57 deletions(-) create mode 100644 .changeset/mermaid-size-alignment.md diff --git a/.changeset/mermaid-size-alignment.md b/.changeset/mermaid-size-alignment.md new file mode 100644 index 000000000..2a9954e0c --- /dev/null +++ b/.changeset/mermaid-size-alignment.md @@ -0,0 +1,9 @@ +--- +'cherry-markdown': patch +--- + +feat(mermaid): 支持 mermaid 图表尺寸编辑和对齐 + +- 新增 mermaid 图表尺寸拖拽调整功能 +- 支持 mermaid 图表对齐方式设置(左对齐、居中、右对齐、左浮动、右浮动) + diff --git a/README.CN.md b/README.CN.md index 9bc1589d7..131fb3834 100644 --- a/README.CN.md +++ b/README.CN.md @@ -87,16 +87,17 @@ Cherry Markdown Writer 是一款 Javascript Markdown 编辑器,具有开箱即 2. 经典换行与常规换行支持 3. 多光标编辑 4. 图片尺寸编辑 -5. 表格编辑 -6. 根据表格内容生成图表(表格 -> 图表) -7. 导出为图片或 PDF -8. 浮动工具栏:在新行行首出现 -9. 气泡工具栏:选中文本时出现 -10. 设置快捷键 -11. 悬浮目录 -12. 主题切换 -13. 输入联想 -14. AI Chat场景流式输出场景特别支持 +5. Mermaid 图表尺寸编辑与对齐布局(拖拽缩放、支持居中/左/右/浮动对齐) +6. 表格编辑 +7. 根据表格内容生成图表(表格 -> 图表) +8. 导出为图片或 PDF +9. 浮动工具栏:在新行行首出现 +10. 气泡工具栏:选中文本时出现 +11. 设置快捷键 +12. 悬浮目录 +13. 主题切换 +14. 输入联想 +15. AI Chat场景流式输出场景特别支持 ### 性能特性 diff --git a/README.md b/README.md index 85bc21d20..95e679d59 100644 --- a/README.md +++ b/README.md @@ -86,16 +86,17 @@ After enabling streaming rendering, Cherry will automatically complete the follo 2. Classic & regular line break modes 3. Multi-cursor editing 4. Image size editing -5. Table editing -6. Table -> Chart (generate chart from table content) -7. Export as image or PDF -8. Floating toolbar: appears at the beginning of a new line -9. Bubble toolbar: appears when text is selected -10. Set shortcut keys -11. Floating table of contents -12. Theme switching -13. Input suggestion (autocomplete) -14. AI Chat scenario: stream-mode output supported +5. Mermaid diagram size editing and alignment (drag to resize, support center/left/right/float alignment) +6. Table editing +7. Table -> Chart (generate chart from table content) +8. Export as image or PDF +9. Floating toolbar: appears at the beginning of a new line +10. Bubble toolbar: appears when text is selected +11. Set shortcut keys +12. Floating table of contents +13. Theme switching +14. Input suggestion (autocomplete) +15. AI Chat scenario: stream-mode output supported ### Performance Feature diff --git a/packages/cherry-markdown/src/addons/cherry-code-block-mermaid-plugin.js b/packages/cherry-markdown/src/addons/cherry-code-block-mermaid-plugin.js index 16a692934..e0e356a0a 100644 --- a/packages/cherry-markdown/src/addons/cherry-code-block-mermaid-plugin.js +++ b/packages/cherry-markdown/src/addons/cherry-code-block-mermaid-plugin.js @@ -183,7 +183,7 @@ export default class MermaidCodeEngine { // 屏蔽转img标签功能,如需要转换为img解除屏蔽即可 if (this.svg2img) { const dataUrl = `data:image/svg+xml,${encodeURIComponent(svgDoc.documentElement.outerHTML)}`; - svgHtml = `${graphId}`; + svgHtml = `${graphId}`; } } else { svgHtml = injectSvgFallback(svgCode); diff --git a/packages/cherry-markdown/src/core/hooks/CodeBlock.js b/packages/cherry-markdown/src/core/hooks/CodeBlock.js index 57f1139b1..7b0f396c2 100644 --- a/packages/cherry-markdown/src/core/hooks/CodeBlock.js +++ b/packages/cherry-markdown/src/core/hooks/CodeBlock.js @@ -126,8 +126,11 @@ export default class CodeBlock extends ParagraphBase { return false; } const tag = CUSTOM_WRAPPER[engine.constructor.TYPE] || 'div'; + const sizeStyle = props.mermaidSizeAttrs ? ` style="${props.mermaidSizeAttrs}"` : ''; + const alignClass = props.mermaidAlignClass ? ` class="${props.mermaidAlignClass}"` : ''; + const escapedLang = escapeHTMLSpecialChar(lang); const addContainer = (html) => { - return `<${tag} data-sign="${props.sign}" data-type="${lang}" data-lines="${props.lines}">${html}`; + return `<${tag} data-sign="${props.sign}" data-type="${escapedLang}" data-lines="${props.lines}"${sizeStyle}${alignClass}>${html}`; }; let html = ''; const $codeSrc = this.needCleanFlowCursor ? codeSrc.replace(/CHERRYFLOWSESSIONCURSOR/, '') : codeSrc; @@ -217,6 +220,36 @@ export default class CodeBlock extends ParagraphBase { }; } + /** + * 从代码块语言行中解析尺寸和对齐信息 + * 支持语法: ```mermaid #300px #200px #center + * @param {string} lang 语言行文本 + * @returns {{ lang: string, sizeAttrs: string, alignClass: string }} 解析后的语言名、尺寸样式和对齐class + */ + parseMermaidSize(lang) { + const sizeRegex = /#([0-9]+(?:px|em|pt|pc|in|mm|cm|ex|%)|auto)/gi; + const alignRegex = /#(center|right|left|float-right|float-left)/i; + const allMarkersRegex = /#([0-9]+(?:px|em|pt|pc|in|mm|cm|ex|%)|auto|center|right|left|float-right|float-left)/gi; + + const sizes = lang.match(sizeRegex); + const alignMatch = lang.match(alignRegex); + const pureLang = lang.replace(allMarkersRegex, '').trim(); + + let sizeAttrs = ''; + if (sizes?.length > 0) { + const [width, height] = sizes; + if (width) { + sizeAttrs = `width:${width.slice(1)};`; + } + if (height) { + sizeAttrs += `height:${height.slice(1)};`; + } + } + + const alignClass = alignMatch ? `cherry-mermaid-align-${alignMatch[1]}` : ''; + return { lang: pureLang, sizeAttrs, alignClass }; + } + /** * 补齐用codeBlock承载的mermaid * @param {string} $code @@ -451,6 +484,10 @@ export default class CodeBlock extends ParagraphBase { // 未命中缓存,执行渲染 let $lang = lang.trim().toLowerCase(); + // 从语言行中解析尺寸和对齐信息(如 mermaid #300px #200px #center) + const mermaidSizeInfo = this.parseMermaidSize($lang); + $lang = mermaidSizeInfo.lang; + const { sizeAttrs: mermaidSizeAttrs, alignClass: mermaidAlignClass } = mermaidSizeInfo; // 如果是公式关键字,则直接返回 if (/^(math|katex|latex)$/i.test($lang) && !this.isInternalCustomLangCovered($lang)) { const prefix = match.match(/^\s*/g); @@ -468,6 +505,8 @@ export default class CodeBlock extends ParagraphBase { match, addBlockQuoteSignToResult, lang: $oldLang, + mermaidSizeAttrs, + mermaidAlignClass, }); if (cacheCode && cacheCode !== '') { this.$codeCache(sign, cacheCode); diff --git a/packages/cherry-markdown/src/sass/markdown.scss b/packages/cherry-markdown/src/sass/markdown.scss index 7ab7e2a30..716a6d823 100644 --- a/packages/cherry-markdown/src/sass/markdown.scss +++ b/packages/cherry-markdown/src/sass/markdown.scss @@ -219,6 +219,46 @@ margin: var(--spacing-lg) 0; } + figure[data-type="mermaid"] { + overflow: hidden; + // 让 figure 收缩到 SVG 内容宽度,使选择框贴合图表 + width: fit-content; + max-width: 100%; + svg { + max-width: 100%; + height: auto; + display: block; + } + // 当 figure 设置了自定义尺寸时,SVG 需要完全跟随容器缩放 + &[style*="width"] svg { + width: 100% !important; + height: 100% !important; + } + // mermaid 对齐样式 + &.cherry-mermaid-align-center { + margin-left: auto; + margin-right: auto; + } + &.cherry-mermaid-align-right { + margin-left: auto; + margin-right: 0; + } + &.cherry-mermaid-align-left { + margin-left: 0; + margin-right: auto; + } + &.cherry-mermaid-align-float-left { + float: left; + margin-left: 0; + margin-right: var(--spacing-lg); + } + &.cherry-mermaid-align-float-right { + float: right; + margin-left: var(--spacing-lg); + margin-right: 0; + } + } + p, pre, blockquote, diff --git a/packages/cherry-markdown/src/toolbars/PreviewerBubble.js b/packages/cherry-markdown/src/toolbars/PreviewerBubble.js index 62ee50b04..0ffc333c7 100644 --- a/packages/cherry-markdown/src/toolbars/PreviewerBubble.js +++ b/packages/cherry-markdown/src/toolbars/PreviewerBubble.js @@ -405,6 +405,12 @@ export default class PreviewerBubble { case 'svg': if (target?.parentElement?.tagName === 'MJX-CONTAINER') { this.$showFormulaPreviewerBubbles('click', target, { x: e.pageX, y: e.pageY }); + } else { + // 可能点击了 mermaid 图表的 svg 根元素 + const mermaidFigureFromSvg = this.$getMermaidFigure(target); + if (mermaidFigureFromSvg) { + this.$showMermaidPreviewerBubbles(mermaidFigureFromSvg, e); + } } break; case 'A': @@ -428,6 +434,14 @@ export default class PreviewerBubble { this.$showListPreviewerBubbles('click', target); } break; + default: { + // 处理点击 mermaid 图表(可能点击到 svg 内部的 g/rect/text/path 等子元素) + const mermaidFigure = this.$getMermaidFigure(target); + if (mermaidFigure) { + this.$showMermaidPreviewerBubbles(mermaidFigure, e); + } + break; + } } } @@ -867,6 +881,196 @@ export default class PreviewerBubble { } } + /** + * 判断目标元素是否为 mermaid 图表或其子元素 + * @param {Element} element + * @returns {HTMLElement|false} + */ + $getMermaidFigure(element) { + let el = element; + while (el && el !== this.previewerDom) { + if (el.tagName === 'FIGURE' && el.getAttribute('data-type') === 'mermaid') { + return /** @type {HTMLElement} */ (el); + } + el = el.parentElement; + } + return false; + } + + /** + * 为选中的 mermaid 图表增加尺寸调整工具 + * @param {HTMLElement} figureElement mermaid 图表的 figure DOM + */ + $showMermaidPreviewerBubbles(figureElement, event) { + if (!this.$isEnableBubbleAndEditorShow()) { + return; + } + this.$createPreviewerBubbles('click', 'img-handler'); + + this.mermaidFigure = figureElement; + if (!this.beginChangeMermaidValue(figureElement)) { + return; + } + + const imgSizeDiv = document.createElement('div'); + imgSizeDiv.className = 'cherry-previewer-img-size-handler'; + this.bubble.click.appendChild(imgSizeDiv); + imgSizeHandler.showBubble(figureElement, imgSizeDiv, this.previewerDom, { isMermaid: true }); + imgSizeHandler.bindChange(this.changeMermaidSize.bind(this)); + + // 添加对齐工具面板(仅对齐按钮,不含装饰按钮) + const imgToolDiv = document.createElement('div'); + imgToolDiv.className = 'cherry-previewer-img-tool-handler'; + this.bubble.click.appendChild(imgToolDiv); + imgToolHandler.showBubble( + figureElement, + imgToolDiv, + this.previewerDom, + event, + this.previewer.$cherry.getLocales(), + { isMermaid: true }, + ); + imgToolHandler.bindChange(this.changeMermaidStyle.bind(this)); + + const updateHandler = imgSizeHandler.updatePosition.bind(imgSizeHandler); + this.$cherry.$event.on('editor.size.change', updateHandler); + const originalRemove = imgSizeHandler.remove; + imgSizeHandler.remove = () => { + this.$cherry.$event.off('editor.size.change', updateHandler); + return originalRemove.call(imgSizeHandler); + }; + this.bubbleHandler.click = imgSizeHandler; + this.bubbleHandler.imgTool = imgToolHandler; + } + + /** + * 选中 mermaid 代码块语法的语言行中的扩展参数部分(尺寸 + 对齐) + * @param {HTMLElement} figureElement mermaid figure DOM + * @returns {boolean} + */ + beginChangeMermaidValue(figureElement) { + // 找到预览区中所有 mermaid 图表,确定当前点击的是第几个 + const allMermaidFigures = Array.from(this.previewerDom.querySelectorAll('figure[data-type="mermaid"]')); + const mermaidIndex = allMermaidFigures.indexOf(figureElement); + if (mermaidIndex < 0) { + return false; + } + + const rawContent = this.editor.editor.getValue(); + // 在编辑器原始内容中按顺序找到所有 mermaid 代码块 + const codeBlockReg = /(?:^|\n)(\n*(?:>[\t ]*)*(?:[^\S\n]*))(`{3,})([^`]*?)\n([\w\W]*?)\n\s*\2[ \t]*(?=$|\n)/g; + let match; + let currentMermaidIdx = -1; + + while ((match = codeBlockReg.exec(rawContent)) !== null) { + const langLine = match[3].trim().toLowerCase(); + const langPure = langLine + .replace(/#([0-9]+(px|em|pt|pc|in|mm|cm|ex|%)|auto)/gi, '') + .replace(/#(center|right|left|float-right|float-left)/gi, '') + .trim(); + + // 判断是否为 mermaid 类型的代码块 + if (langPure !== 'mermaid' && !/^flow([ ](td|lr))?$/i.test(langPure) && langPure !== 'seq') { + continue; + } + currentMermaidIdx += 1; + if (currentMermaidIdx !== mermaidIndex) { + continue; + } + + // 找到了对应的代码块,定位语言行 + const fullMatchStart = match.index; + const leadingContent = match[1] || ''; + const backtickPos = rawContent.indexOf(match[2], fullMatchStart + leadingContent.length); + const beforeBacktick = rawContent.substring(0, backtickPos); + const langLineNum = (beforeBacktick.match(/\n/g) || []).length; + + // 获取该行的完整内容 + const allLines = rawContent.split('\n'); + const fullLangLine = allLines[langLineNum] || ''; + + // 匹配所有扩展参数(尺寸 + 对齐),如 "#400px #300px #center" + const extendRegex = + /((?:\s*#(?:[0-9]+(?:px|em|pt|pc|in|mm|cm|ex|%)|auto|center|right|left|float-right|float-left))+)\s*$/i; + const extendMatch = fullLangLine.match(extendRegex); + + // 提取当前的尺寸和对齐信息 + const sizeRegex = /#([0-9]+(?:px|em|pt|pc|in|mm|cm|ex|%)|auto)/gi; + const alignRegex = /#(center|right|left|float-right|float-left)/i; + const sizeMatches = fullLangLine.match(sizeRegex); + const alignMatch = fullLangLine.match(alignRegex); + + this.mermaidSize = sizeMatches ? sizeMatches.join(' ') : ''; + this.mermaidAlign = alignMatch ? alignMatch[0] : ''; + + if (extendMatch) { + // 选中所有扩展参数 + const extendStart = fullLangLine.indexOf(extendMatch[1]); + this.editor.editor.setSelection( + { line: langLineNum, ch: extendStart }, + { line: langLineNum, ch: extendStart + extendMatch[1].length }, + ); + } else { + // 没有扩展参数,将光标放在语言行末尾 + this.editor.editor.setSelection( + { line: langLineNum, ch: fullLangLine.length }, + { line: langLineNum, ch: fullLangLine.length }, + ); + } + + this.mermaidLangLineNum = langLineNum; + this.mermaidHasExtend = !!extendMatch; + return true; + } + return false; + } + + /** + * 拼接 mermaid 扩展参数并替换编辑器中的选中文本 + */ + changeMermaidValue() { + const value = [this.mermaidSize, this.mermaidAlign].filter((v) => v).join(' '); + if (this.mermaidHasExtend) { + this.editor.editor.replaceSelection(value, 'around'); + } else if (value) { + this.editor.editor.replaceSelection(` ${value}`, 'around'); + this.mermaidHasExtend = true; + } + } + + /** + * 修改 mermaid 图表尺寸时的回调 + * @param {HTMLElement} htmlElement mermaid figure 元素 + * @param {Object} style 图表的属性(宽高) + */ + changeMermaidSize(htmlElement, style) { + this.mermaidSize = `#${Math.round(style.width)}px #${Math.round(style.height)}px`; + this.changeMermaidValue(); + } + + /** + * 修改 mermaid 图表对齐方式时的回调 + * @param {HTMLElement} htmlElement mermaid figure 元素 + * @param {string} type 对齐方式 + */ + changeMermaidStyle(htmlElement, type) { + switch (type) { + case 'left': + case 'right': + case 'center': + case 'float-left': + case 'float-right': + this.mermaidAlign = `#${type}`; + break; + case 'clear-align': + this.mermaidAlign = ''; + break; + default: + return; + } + this.changeMermaidValue(); + } + $showBorderBubbles() {} $showBtnBubbles() {} diff --git a/packages/cherry-markdown/src/utils/imgSizeHandler.js b/packages/cherry-markdown/src/utils/imgSizeHandler.js index 32ac2c095..7e3d9159d 100644 --- a/packages/cherry-markdown/src/utils/imgSizeHandler.js +++ b/packages/cherry-markdown/src/utils/imgSizeHandler.js @@ -24,8 +24,17 @@ const imgSizeHandler = { const position = this.img.getBoundingClientRect(); const editorPosition = this.previewerDom.parentNode.getBoundingClientRect(); const padding = parseFloat(this.img.style.padding) || 0; - const alt = this.img.getAttribute('alt') || ''; - const alignment = imgAltHelper.$getAlignment(alt); + let alignment = ''; + if (this.isMermaid) { + // mermaid figure 的对齐信息从 class 中获取 + const alignMatch = (this.img.className || '').match( + /cherry-mermaid-align-(center|right|left|float-right|float-left)/, + ); + alignment = alignMatch ? alignMatch[1] : ''; + } else { + const alt = this.img.getAttribute('alt') || ''; + alignment = imgAltHelper.$getAlignment(alt); + } return { bottom: position.bottom - editorPosition.bottom, @@ -41,6 +50,9 @@ const imgSizeHandler = { }, initBubbleButtons() { const position = this.getImgPosition(); + // mermaid figure 没有 .width 属性,使用 getBoundingClientRect 获取实际渲染尺寸 + const width = this.isMermaid ? position.width || this.img.offsetWidth : this.img.width; + const height = this.isMermaid ? position.height || this.img.offsetHeight : this.img.height; return { points: { arr: [ @@ -65,8 +77,8 @@ const imgSizeHandler = { }, }, style: { - width: this.img.width, - height: this.img.height, + width, + height, left: position.left - 1, top: position.top - 1, marginTop: 0, @@ -76,11 +88,12 @@ const imgSizeHandler = { position, }; }, - showBubble(img, container, previewerDom) { + showBubble(img, container, previewerDom, options = {}) { if (this.$isResizing()) { return; } this.img = img; + this.isMermaid = options.isMermaid || false; this.previewerDom = previewerDom; this.container = container; this.buts = this.initBubbleButtons(); @@ -200,6 +213,17 @@ const imgSizeHandler = { // 禁用图片拖拽功能,避免误触 this.originalDraggable = this.img.draggable; this.img.draggable = false; + + // mermaid figure 开始拖拽时,移除内部 SVG 的固定宽高,让 viewBox 接管缩放 + if (this.isMermaid) { + const svg = this.img.querySelector('svg'); + if (svg) { + svg.removeAttribute('width'); + svg.removeAttribute('height'); + svg.style.width = '100%'; + svg.style.height = '100%'; + } + } }, resizeStop(event, buts, editor, menu) { if (!this.$isResizing()) { @@ -268,6 +292,11 @@ const imgSizeHandler = { // 左对齐 (left): 均不需要移动 left this.updateBubbleButs(); + // mermaid figure 拖拽过程中实时更新元素尺寸,使缩放可见 + if (this.isMermaid) { + this.img.style.width = `${this.buts.style.width}px`; + this.img.style.height = `${this.buts.style.height}px`; + } this.change(); }, change() { diff --git a/packages/cherry-markdown/src/utils/imgToolHandler.js b/packages/cherry-markdown/src/utils/imgToolHandler.js index b5b5ea079..e87109d4f 100644 --- a/packages/cherry-markdown/src/utils/imgToolHandler.js +++ b/packages/cherry-markdown/src/utils/imgToolHandler.js @@ -37,43 +37,48 @@ const imgToolHandler = { y: position.y - editorPosition.y, }; }, - showBubble(img, container, previewerDom, event, locale) { + showBubble(img, container, previewerDom, event, locale, options = {}) { this.img = img; + this.isMermaid = options.isMermaid || false; this.previewerDom = previewerDom; this.container = container; - const decoList = [ - { text: locale.border, type: 'border', active: false }, - { text: locale.shadow, type: 'shadow', active: false }, - { text: locale.radius, type: 'radius', active: false }, - ]; - const decoDiv = document.createElement('div'); - decoDiv.className = 'img-tool-group'; const getImgToolButtonClassName = (item) => `img-tool-button${item.active ? ' active' : ''}`; - this.container.appendChild(decoDiv); - decoList.forEach((deco) => { - deco.active = this.img.className.match(`cherry-img-deco-${deco.type}`); - const div = document.createElement('div'); - const icon = document.createElement('i'); - div.appendChild(icon); - icon.className = `img-tool-icon ch-icon ch-icon-imgDeco${capitalizeFirstLetter(deco.type)}`; - div.className = getImgToolButtonClassName(deco); - div.title = deco.text; - div.addEventListener('click', (e) => { - e.preventDefault(); - e.stopPropagation(); - deco.active = !deco.active; - // 点击后,更新样式 + + // mermaid 模式下不显示装饰按钮(边框/阴影/圆角对 figure/SVG 无意义) + if (!this.isMermaid) { + const decoList = [ + { text: locale.border, type: 'border', active: false }, + { text: locale.shadow, type: 'shadow', active: false }, + { text: locale.radius, type: 'radius', active: false }, + ]; + const decoDiv = document.createElement('div'); + decoDiv.className = 'img-tool-group'; + this.container.appendChild(decoDiv); + decoList.forEach((deco) => { + deco.active = this.img.className.match(`cherry-img-deco-${deco.type}`); + const div = document.createElement('div'); + const icon = document.createElement('i'); + div.appendChild(icon); + icon.className = `img-tool-icon ch-icon ch-icon-imgDeco${capitalizeFirstLetter(deco.type)}`; div.className = getImgToolButtonClassName(deco); - this.emitChange(this.img, deco.type); + div.title = deco.text; + div.addEventListener('click', (e) => { + e.preventDefault(); + e.stopPropagation(); + deco.active = !deco.active; + // 点击后,更新样式 + div.className = getImgToolButtonClassName(deco); + this.emitChange(this.img, deco.type); + }); + decoDiv.append(div); }); - decoDiv.append(div); - }); - const divider = document.createElement('div'); - divider.className = 'img-tool-divider'; - this.container.appendChild(divider); + const divider = document.createElement('div'); + divider.className = 'img-tool-divider'; + this.container.appendChild(divider); + } const alignList = [ { text: locale.alignLeft, type: 'left' }, @@ -86,7 +91,12 @@ const imgToolHandler = { alignDiv.className = 'img-tool-group'; this.container.appendChild(alignDiv); alignList.forEach((align, index) => { - align.active = this.img.className.match(`cherry-img-align-${align.type}`); + if (this.isMermaid) { + // mermaid figure 的对齐通过 class 标记 + align.active = this.img.classList.contains(`cherry-mermaid-align-${align.type}`); + } else { + align.active = this.img.className.match(`cherry-img-align-${align.type}`); + } const div = document.createElement('div'); const icon = document.createElement('i'); align.div = div; @@ -104,7 +114,8 @@ const imgToolHandler = { div.className = getImgToolButtonClassName(align); this.emitChange(this.img, align.active ? align.type : 'clear-align'); - imgSizeHandler.showBubble(this.img, this.container, this.previewerDom); + const sizeHandlerOptions = this.isMermaid ? { isMermaid: true } : undefined; + imgSizeHandler.showBubble(this.img, this.container, this.previewerDom, sizeHandlerOptions); setTimeout(() => { imgSizeHandler.updatePosition(); }, 150); From 9965e487adf726a3abeae3be4f7a7b2964e54acb Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Thu, 12 Mar 2026 16:34:13 +0800 Subject: [PATCH 49/57] =?UTF-8?q?fix:=20#1331=20=E5=BD=93=E4=BD=BF?= =?UTF-8?q?=E7=94=A8katex=E6=B8=B2=E6=9F=93=E5=85=AC=E5=BC=8F=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E9=A2=84=E8=A7=88=E5=8C=BA=E5=85=AC=E5=BC=8F=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E4=B8=A2=E5=A4=B1=E4=BA=86=20(#1646)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: #1331 当使用katex渲染公式时,预览区公式操作丢失了 * fix: lint --- .changeset/dry-waves-add.md | 5 ++ .../src/toolbars/PreviewerBubble.js | 5 ++ packages/cherry-markdown/src/utils/export.js | 67 ++++++++++++++++++- .../src/utils/formulaUtilsHandler.js | 51 +++++++++++--- 4 files changed, 116 insertions(+), 12 deletions(-) create mode 100644 .changeset/dry-waves-add.md diff --git a/.changeset/dry-waves-add.md b/.changeset/dry-waves-add.md new file mode 100644 index 000000000..6b0e98db3 --- /dev/null +++ b/.changeset/dry-waves-add.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +fix: #1331 当使用katex渲染公式时,预览区公式操作丢失了 diff --git a/packages/cherry-markdown/src/toolbars/PreviewerBubble.js b/packages/cherry-markdown/src/toolbars/PreviewerBubble.js index 0ffc333c7..7221ccad6 100644 --- a/packages/cherry-markdown/src/toolbars/PreviewerBubble.js +++ b/packages/cherry-markdown/src/toolbars/PreviewerBubble.js @@ -439,6 +439,11 @@ export default class PreviewerBubble { const mermaidFigure = this.$getMermaidFigure(target); if (mermaidFigure) { this.$showMermaidPreviewerBubbles(mermaidFigure, e); + } else { + const katexNode = target.closest ? target.closest('.katex') : null; + if (katexNode) { + this.$showFormulaPreviewerBubbles('click', katexNode, { x: e.pageX, y: e.pageY }); + } } break; } diff --git a/packages/cherry-markdown/src/utils/export.js b/packages/cherry-markdown/src/utils/export.js index eab00ca9e..331054b3a 100644 --- a/packages/cherry-markdown/src/utils/export.js +++ b/packages/cherry-markdown/src/utils/export.js @@ -58,13 +58,13 @@ const getReadyToExport = (previewDom, cb) => { /** * 下载文件 * @param {String} downloadUrl 图片本地地址 - * @param {String} fileName 导出图片文件名 + * @param {String} fileName 导出图片文件名(包含后缀) */ const fileDownload = (downloadUrl, fileName) => { const aLink = document.createElement('a'); aLink.style.display = 'none'; aLink.href = downloadUrl; - aLink.download = `${fileName}.png`; + aLink.download = fileName; document.body.appendChild(aLink); aLink.click(); document.body.removeChild(aLink); @@ -122,14 +122,75 @@ export function exportScreenShot(previewDom, fileName) { width: cherryPreviewer.clientWidth, scrollY: 0, scrollX: 0, + logging: false, + ignoreElements: (element) => { + if (cherryPreviewer === element || cherryPreviewer.contains(element) || element.contains(cherryPreviewer)) { + return false; + } + const tagName = element.tagName?.toUpperCase(); + if (tagName === 'HEAD' || tagName === 'STYLE' || tagName === 'LINK' || tagName === 'META') { + return false; + } + if (element.querySelector && element.querySelector('style, link')) { + return false; + } + return true; + }, }).then((canvas) => { const imgData = canvas.toDataURL('image/png'); - fileDownload(imgData, fileName); + fileDownload(imgData, `${fileName}.png`); thenFinish(); }); }); } +/** + * 利用canvas将dom节点导出成图片 + * @param {HTMLElement} dom 目标dom节点 + * @param {String} fileName 导出图片文件名 + * @param {Object} options 导出选项 + */ +export function canvas2img(dom, fileName, options = {}) { + // 如果是png格式,则使用透明背景。反之获取dom所属的.cherry-previewer的背景色 + const previewer = dom.closest('.cherry-previewer'); + const { format = 'png' } = options; + const bg = format === 'png' ? 'transparent' : getComputedStyle(previewer).backgroundColor; + const mimeType = format === 'jpg' ? 'image/jpeg' : 'image/png'; + html2canvas(dom, { + allowTaint: true, + backgroundColor: bg, + height: dom.clientHeight + 10, + width: dom.clientWidth + 10, + x: -5, + y: -5, + logging: false, + ignoreElements: (element) => { + // 保留目标节点及其子节点 + if (dom === element || dom.contains(element)) { + return false; + } + // 保留目标节点的祖先节点(用于继承样式) + if (element.contains(dom)) { + return false; + } + const tagName = element.tagName?.toUpperCase(); + // 保留 head 及其内部的样式表 + if (tagName === 'HEAD' || tagName === 'STYLE' || tagName === 'LINK' || tagName === 'META') { + return false; + } + // 如果该节点内部包含 style 或 link 标签,也需要保留,以防丢失样式 + if (element.querySelector && element.querySelector('style, link')) { + return false; + } + // 忽略其他所有节点,极大提升性能 + return true; + }, + }).then((canvas) => { + const imgData = canvas.toDataURL(mimeType); + fileDownload(imgData, `${fileName}.${format}`); + }); +} + /** * 导出 markdown 文件 * @param {String} markdownText markdown文本 diff --git a/packages/cherry-markdown/src/utils/formulaUtilsHandler.js b/packages/cherry-markdown/src/utils/formulaUtilsHandler.js index d90a9a7c7..9cbf4b546 100644 --- a/packages/cherry-markdown/src/utils/formulaUtilsHandler.js +++ b/packages/cherry-markdown/src/utils/formulaUtilsHandler.js @@ -15,6 +15,7 @@ */ import { svg2img, getSvgString } from '@/utils/svgUtils'; +import { canvas2img } from '@/utils/export'; import { copyToClip } from '@/utils/copy'; import MathBlock from '@/core/hooks/MathBlock'; @@ -166,6 +167,15 @@ export default class FormulaHandler { // 涉及到图片的操作 if (this.target instanceof SVGSVGElement) { svg2img(this.target, { format: name }); + } else { + // 如果target不是svg元素,则使用canvas2img + // 特殊处理,如果是katex元素,则使用katex的math元素 as targetDom + const targetDom = + this.target.classList && this.target.classList.contains('katex') + ? this.target.querySelector('.katex-html .base') + : this.target; + // @ts-ignore + canvas2img(targetDom, 'formula', { format: name }); } break; case 'html': @@ -176,8 +186,18 @@ export default class FormulaHandler { copyToClip(getSvgString(this.target)); } else { const mathElement = this.target.parentElement.querySelector('math'); - mathElement.setAttribute('xmlns', 'http://www.w3.org/1998/Math/MathML'); - copyToClip(undefined, mathElement.outerHTML); + if (mathElement) { + mathElement.setAttribute('xmlns', 'http://www.w3.org/1998/Math/MathML'); + copyToClip(undefined, mathElement.outerHTML); + } + } + } else if (this.target.classList && this.target.classList.contains('katex')) { + if (name === 'html') { + const mathElement = this.target.querySelector('math'); + if (mathElement) { + mathElement.setAttribute('xmlns', 'http://www.w3.org/1998/Math/MathML'); + copyToClip(undefined, mathElement.outerHTML); + } } } break; @@ -189,15 +209,15 @@ export default class FormulaHandler { case 'docx': // 涉及到公式API的操作 { - const allMjx = this.previewerDom.querySelectorAll('mjx-container'); - let mjxIndex = -1; - allMjx.forEach((mjx, index) => { - if (mjx === this.target.parentElement) { - mjxIndex = index; + const allMathContainers = this.previewerDom.querySelectorAll('.Cherry-Math, .Cherry-InlineMath'); + let mathIndex = -1; + allMathContainers.forEach((container, index) => { + if (container.contains(this.target)) { + mathIndex = index; } }); - if (mjxIndex >= 0 && this.formulaCode[mjxIndex]) { - const { code } = this.formulaCode[mjxIndex]; + if (mathIndex >= 0 && this.formulaCode[mathIndex]) { + const { code } = this.formulaCode[mathIndex]; if (name === 'mathml' || name === 'docx') { /** @type {MathBlock} */ // @ts-ignore @@ -211,6 +231,19 @@ export default class FormulaHandler { // TODO: docx } }); + } else if (hook && hook.engine === 'katex') { + if (window.katex) { + const html = window.katex.renderToString(code, { + throwOnError: false, + displayMode: true, + output: 'mathml', + }); + if (name === 'mathml') { + copyToClip(html); + } else { + // TODO: docx + } + } } // TODO: other engine } else if (name === 'latex') { From 46c8ba3d25d48f2231127205520590d92b6831df Mon Sep 17 00:00:00 2001 From: liweijie <674416404@qq.com> Date: Thu, 12 Mar 2026 14:46:00 +0000 Subject: [PATCH 50/57] =?UTF-8?q?test:=20=E6=8F=90=E5=8D=87=20Suggester.js?= =?UTF-8?q?=20=E6=B5=8B=E8=AF=95=E8=A6=86=E7=9B=96=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 Suggester.spec.ts 测试文件 - 覆盖 Suggester 类核心方法 - 覆盖 SuggesterPanel 类核心方法 - 测试覆盖率从 28.89% 提升至约 55%+ 相关 Issue: #1 --- .../test/core/hooks/Suggester.spec.ts | 825 ++++++++++++++++++ 1 file changed, 825 insertions(+) create mode 100644 packages/cherry-markdown/test/core/hooks/Suggester.spec.ts diff --git a/packages/cherry-markdown/test/core/hooks/Suggester.spec.ts b/packages/cherry-markdown/test/core/hooks/Suggester.spec.ts new file mode 100644 index 000000000..c005304cc --- /dev/null +++ b/packages/cherry-markdown/test/core/hooks/Suggester.spec.ts @@ -0,0 +1,825 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import Suggester from '../../../src/core/hooks/Suggester'; +import { suggesterKeywords } from '../../../src/core/hooks/SuggestList'; + +// Mock isBrowser +vi.mock('@/utils/env', () => ({ + isBrowser: () => true, +})); + +// Mock isLookbehindSupported +vi.mock('@/utils/regexp', () => ({ + isLookbehindSupported: () => true, +})); + +// Mock lookbehind-replace +vi.mock('@/utils/lookbehind-replace', () => ({ + replaceLookbehind: (str: string, reg: RegExp, callback: Function) => { + return str.replace(reg, callback); + }, +})); + +// ============ 辅助函数 ============ + +/** 创建 mock cherry 实例 */ +const createMockCherry = () => { + const wrapperDom = { + appendChild: vi.fn(), + querySelector: vi.fn(), + getBoundingClientRect: vi.fn(() => ({ + left: 100, + top: 100, + width: 800, + height: 600, + right: 900, + bottom: 700, + })), + clientWidth: 800, + clientHeight: 600, + }; + + const editor = { + editor: { + on: vi.fn(), + getOption: vi.fn(() => ({})), + setOption: vi.fn(), + focus: vi.fn(), + replaceRange: vi.fn(), + getCursor: vi.fn(() => ({ line: 0, ch: 0 })), + setCursor: vi.fn(), + setSelection: vi.fn(), + getLine: vi.fn(() => ''), + display: { + wrapper: document.createElement('div'), + }, + }, + options: { + showSuggestList: true, + }, + }; + + return { + locale: 'zh-CN', + wrapperDom, + options: { + editor: { + suggester: {}, + }, + }, + editor, + }; +}; + +/** 创建 mock 配置 */ +const createMockConfig = () => ({ + suggester: [ + { + keyword: '@', + suggestList: vi.fn((word, callback) => { + callback([{ label: 'test', value: 'testvalue' }]); + }), + echo: vi.fn((text) => `@${text}`), + }, + ], +}); + +// ============ 测试开始 ============ + +describe('core/hooks/Suggester', () => { + let mockCherry: any; + let mockConfig: any; + + beforeEach(() => { + mockCherry = createMockCherry(); + mockConfig = createMockConfig(); + // 清理 DOM + document.body.innerHTML = ''; + }); + + afterEach(() => { + vi.clearAllMocks(); + }); + + describe('Suggester 类', () => { + describe('constructor', () => { + it('应该正确初始化', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + expect(suggester).toBeDefined(); + expect(suggester.config).toBe(mockConfig); + expect(suggester.$cherry).toBe(mockCherry); + expect(suggester.suggesterPanel).toBeDefined(); + }); + + it('应该初始化配置', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + expect(suggester.inited).toBe(true); + expect(suggester.suggester).toBeDefined(); + }); + }); + + describe('initConfig', () => { + it('应该使用默认配置', () => { + const config = { suggester: {} }; + const suggester = new Suggester({ config, cherry: mockCherry }); + expect(Object.keys(suggester.suggester).length).toBeGreaterThan(0); + // 应该包含 suggesterKeywords 中的关键字 + suggesterKeywords.split('').forEach((keyword) => { + expect(suggester.suggester[keyword]).toBeDefined(); + }); + }); + + it('应该合并自定义配置', () => { + const customConfig = { + suggester: [ + { + keyword: 'custom', + suggestList: vi.fn(), + }, + ], + }; + const suggester = new Suggester({ config: customConfig, cherry: mockCherry }); + expect(suggester.suggester['custom']).toBeDefined(); + }); + + it('应该处理空关键字', () => { + const config = { + suggester: [ + { + keyword: '', + suggestList: vi.fn(), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + // 空关键字应该被设置为默认的 '@' + expect(suggester.suggester['']).toBeDefined(); + }); + + it('应该警告缺少 suggestList', () => { + const warnSpy = vi.spyOn(console, 'warn'); + const config = { + suggester: [ + { + keyword: 'test', + // 没有 suggestList + }, + ], + }; + new Suggester({ config, cherry: mockCherry }); + expect(warnSpy).toHaveBeenCalledWith('[cherry-suggester]: the suggestList of config is missing.'); + }); + }); + + describe('afterInit', () => { + it('应该调用回调函数', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + const callback = vi.fn(); + suggester.afterInit(callback); + expect(callback).toHaveBeenCalled(); + }); + + it('应该忽略非函数参数', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + expect(() => suggester.afterInit('not a function' as any)).not.toThrow(); + }); + }); + + describe('rule', () => { + it('应该返回空对象当没有配置', () => { + const suggester = new Suggester({ config: { suggester: {} }, cherry: mockCherry }); + const rule = suggester.rule(); + expect(rule).toEqual({}); + }); + + it('应该生成正则规则(数组配置)', () => { + const config = { + suggester: [ + { keyword: '@', suggestList: vi.fn() }, + { keyword: '#', suggestList: vi.fn() }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + const rule = suggester.rule(); + expect(rule.reg).toBeDefined(); + expect(rule.reg.source).toContain('@'); + expect(rule.reg.source).toContain('#'); + }); + + it('应该生成正则规则(对象配置)', () => { + const config = { + suggester: { + at: { keyword: '@', suggestList: vi.fn() }, + hash: { keyword: '#', suggestList: vi.fn() }, + }, + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + const rule = suggester.rule(); + expect(rule.reg).toBeDefined(); + }); + }); + + describe('makeHtml', () => { + it('应该在没有规则时返回原字符串', () => { + const suggester = new Suggester({ config: { suggester: {} }, cherry: mockCherry }); + suggester.RULE = {}; + const result = suggester.makeHtml('test string'); + expect(result).toBe('test string'); + }); + }); + + describe('toHtml', () => { + it('应该使用自定义 echo 函数', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn(), + echo: vi.fn((text) => `@${text}`), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + const result = suggester.toHtml('', ' ', '@', 'user'); + expect(result).toBe('@user'); + }); + + it('应该使用默认格式', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn(), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + const result = suggester.toHtml('', ' ', '@', 'user'); + expect(result).toContain('cherry-suggestion'); + expect(result).toContain('@user'); + }); + + it('应该处理 echo 为 false', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn(), + echo: false, + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + const result = suggester.toHtml('', ' ', '@', 'user'); + expect(result).toBe(' '); + }); + + it('应该处理不存在的关键字', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + const result = suggester.toHtml('', ' ', 'nonexistent', 'text'); + expect(result).toContain('text'); + }); + + it('应该处理空文本', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn(), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + const result = suggester.toHtml('', ' ', '@', ''); + expect(result).toBe(' '); + }); + }); + }); + + describe('SuggesterPanel 类', () => { + describe('hasEditor', () => { + it('应该返回 false 当没有编辑器', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + expect(suggester.suggesterPanel.hasEditor()).toBe(false); + }); + + it('应该返回 true 当有编辑器', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + expect(suggester.suggesterPanel.hasEditor()).toBe(true); + }); + }); + + describe('setEditor', () => { + it('应该设置编辑器', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + suggester.suggesterPanel.setEditor(mockCherry.editor); + expect(suggester.suggesterPanel.editor).toBe(mockCherry.editor); + }); + }); + + describe('setSuggester', () => { + it('应该设置 suggester 配置', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + const config = { '@': { keyword: '@', suggestList: vi.fn() } }; + suggester.suggesterPanel.setSuggester(config); + expect(suggester.suggesterPanel.suggesterConfig).toBe(config); + }); + }); + + describe('renderPanelItem', () => { + it('应该渲染选中项', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + const result = suggester.suggesterPanel.renderPanelItem('test', true); + expect(result).toContain('cherry-suggester-panel__item--selected'); + expect(result).toContain('test'); + }); + + it('应该渲染未选中项', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + const result = suggester.suggesterPanel.renderPanelItem('test', false); + expect(result).not.toContain('cherry-suggester-panel__item--selected'); + expect(result).toContain('test'); + }); + }); + + describe('createDom', () => { + it('应该创建 DOM 元素', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + const result = suggester.suggesterPanel.createDom('
content
'); + expect(result).toBeDefined(); + }); + }); + + describe('startRelate', () => { + it('应该开始关联', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + // Mock tryCreatePanel and relocatePanelWithBoundaryCheck to avoid DOM issues + suggester.suggesterPanel.tryCreatePanel = vi.fn(); + suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); + suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + + expect(suggester.suggesterPanel.searchCache).toBe(true); + expect(suggester.suggesterPanel.keyword).toBe('@'); + expect(suggester.suggesterPanel.cursorFrom).toEqual({ line: 0, ch: 0 }); + }); + }); + + describe('stopRelate', () => { + it('应该停止关联', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + suggester.suggesterPanel.tryCreatePanel = vi.fn(); + suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); + suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + suggester.suggesterPanel.stopRelate(); + + expect(suggester.suggesterPanel.searchCache).toBe(false); + expect(suggester.suggesterPanel.keyword).toBe(''); + expect(suggester.suggesterPanel.cursorFrom).toBeNull(); + }); + }); + + describe('enableRelate', () => { + it('应该返回关联状态', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + expect(suggester.suggesterPanel.enableRelate()).toBe(false); + + suggester.suggesterPanel.searchCache = true; + expect(suggester.suggesterPanel.enableRelate()).toBe(true); + }); + }); + + describe('pasteSelectResult', () => { + it('应该粘贴选择结果(字符串值)', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.cursorFrom = { line: 0, ch: 0 }; + suggester.suggesterPanel.keyword = '@'; + suggester.suggesterPanel.optionList = [{ label: 'test', value: 'testvalue' }]; + suggester.suggesterPanel.searchKeyCache = ['@', 't']; + + suggester.suggesterPanel.pasteSelectResult(0); + + expect(mockCherry.editor.editor.replaceRange).toHaveBeenCalled(); + }); + + it('应该粘贴选择结果(函数值)', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.cursorFrom = { line: 0, ch: 0 }; + suggester.suggesterPanel.keyword = '@'; + suggester.suggesterPanel.optionList = [ + { label: 'test', value: () => 'function_value' }, + ]; + suggester.suggesterPanel.searchKeyCache = ['@']; + + suggester.suggesterPanel.pasteSelectResult(0); + + expect(mockCherry.editor.editor.replaceRange).toHaveBeenCalledWith( + 'function_value', + { line: 0, ch: 0 }, + { line: 0, ch: 1 } + ); + }); + + it('应该处理空值', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.cursorFrom = { line: 0, ch: 0 }; + suggester.suggesterPanel.keyword = '@'; + suggester.suggesterPanel.optionList = [{ label: 'test' }]; + suggester.suggesterPanel.searchKeyCache = ['@']; + + suggester.suggesterPanel.pasteSelectResult(0); + + expect(mockCherry.editor.editor.replaceRange).toHaveBeenCalled(); + }); + + it('应该处理 goLeft 参数', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.cursorFrom = { line: 0, ch: 0 }; + suggester.suggesterPanel.keyword = '@'; + suggester.suggesterPanel.optionList = [ + { label: 'test', value: 'test()', goLeft: 1 }, + ]; + suggester.suggesterPanel.searchKeyCache = ['@']; + + suggester.suggesterPanel.pasteSelectResult(0); + + expect(mockCherry.editor.editor.setCursor).toHaveBeenCalled(); + }); + + it('应该处理 selection 参数', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.cursorFrom = { line: 0, ch: 0 }; + suggester.suggesterPanel.keyword = '@'; + suggester.suggesterPanel.optionList = [ + { label: 'test', value: 'test', selection: { from: 2, to: 1 } }, + ]; + suggester.suggesterPanel.searchKeyCache = ['@']; + + suggester.suggesterPanel.pasteSelectResult(0); + + expect(mockCherry.editor.editor.setSelection).toHaveBeenCalled(); + }); + + it('应该跳过当没有 cursorFrom', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.pasteSelectResult(0); + + expect(mockCherry.editor.editor.replaceRange).not.toHaveBeenCalled(); + }); + }); + + describe('onCodeMirrorChange', () => { + it('应该开始联想当输入关键字', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn((word, callback) => { + callback([{ label: 'test', value: 'test' }]); + }), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.setSuggester(suggester.suggester); + suggester.suggesterPanel.tryCreatePanel = vi.fn(); + suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); + + const evt = { + text: ['@'], + from: { line: 0, ch: 0 }, + to: { line: 0, ch: 0 }, + origin: '+input', + }; + + suggester.suggesterPanel.onCodeMirrorChange(mockCherry.editor.editor, evt); + + expect(suggester.suggesterPanel.searchCache).toBe(true); + expect(suggester.suggesterPanel.keyword).toBe('@'); + }); + + it('应该更新搜索缓存', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn((word, callback) => { + callback([]); + }), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.setSuggester(suggester.suggester); + suggester.suggesterPanel.tryCreatePanel = vi.fn(); + suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); + suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + + const evt = { + text: ['t'], + from: { line: 0, ch: 1 }, + to: { line: 0, ch: 1 }, + origin: '+input', + }; + + suggester.suggesterPanel.onCodeMirrorChange(mockCherry.editor.editor, evt); + + expect(suggester.suggesterPanel.searchKeyCache).toContain('t'); + }); + + it('应该处理删除操作', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn(), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.setSuggester(suggester.suggester); + suggester.suggesterPanel.tryCreatePanel = vi.fn(); + suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); + suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + suggester.suggesterPanel.searchKeyCache = ['@', 't']; + + const evt = { + text: [''], + from: { line: 0, ch: 1 }, + to: { line: 0, ch: 2 }, + origin: '+delete', + }; + + suggester.suggesterPanel.onCodeMirrorChange(mockCherry.editor.editor, evt); + + expect(suggester.suggesterPanel.searchKeyCache).toEqual(['@']); + }); + + it('应该停止联想当搜索缓存为空', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn(), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.setSuggester(suggester.suggester); + suggester.suggesterPanel.tryCreatePanel = vi.fn(); + suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); + suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + suggester.suggesterPanel.searchKeyCache = ['@']; + + const evt = { + text: [''], + from: { line: 0, ch: 0 }, + to: { line: 0, ch: 1 }, + origin: '+delete', + }; + + suggester.suggesterPanel.onCodeMirrorChange(mockCherry.editor.editor, evt); + + expect(suggester.suggesterPanel.searchCache).toBe(false); + }); + + it('应该停止联想当返回 false', async () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn((word, callback) => { + callback(false); + }), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.setSuggester(suggester.suggester); + suggester.suggesterPanel.tryCreatePanel = vi.fn(); + suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); + suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + + const evt = { + text: [' '], + from: { line: 0, ch: 1 }, + to: { line: 0, ch: 1 }, + origin: '+input', + }; + + suggester.suggesterPanel.onCodeMirrorChange(mockCherry.editor.editor, evt); + + // Wait for async callback + await new Promise(resolve => setTimeout(resolve, 10)); + expect(suggester.suggesterPanel.searchCache).toBe(false); + }); + }); + + describe('onKeyDown', () => { + it('应该处理上键(38)', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn(), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.optionList = ['item1', 'item2', 'item3']; + + // 创建完整的面板 DOM + const panelDiv = document.createElement('div'); + panelDiv.className = 'cherry-suggester-panel'; + panelDiv.innerHTML = '
item1
item2
item3
'; + suggester.suggesterPanel.$suggesterPanel = panelDiv; + + const evt = { keyCode: 38, stopPropagation: vi.fn() }; + suggester.suggesterPanel.onKeyDown(mockCherry.editor.editor, evt); + + // 上键应该选中最后一项 + const lastItem = suggester.suggesterPanel.$suggesterPanel.lastElementChild; + expect(lastItem?.classList.contains('cherry-suggester-panel__item--selected')).toBe(true); + }); + + it('应该处理下键(40)', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn(), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.optionList = ['item1', 'item2', 'item3']; + + // 创建完整的面板 DOM + const panelDiv = document.createElement('div'); + panelDiv.className = 'cherry-suggester-panel'; + panelDiv.innerHTML = '
item1
item2
item3
'; + suggester.suggesterPanel.$suggesterPanel = panelDiv; + + const evt = { keyCode: 40, stopPropagation: vi.fn() }; + suggester.suggesterPanel.onKeyDown(mockCherry.editor.editor, evt); + + // 下键应该选中第一项 + const firstItem = suggester.suggesterPanel.$suggesterPanel.firstElementChild; + expect(firstItem?.classList.contains('cherry-suggester-panel__item--selected')).toBe(true); + }); + + it('应该处理回车键(13)', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn(), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.cursorFrom = { line: 0, ch: 0 }; + suggester.suggesterPanel.keyword = '@'; + suggester.suggesterPanel.optionList = [{ label: 'test', value: 'test' }]; + suggester.suggesterPanel.searchKeyCache = ['@']; + + // 创建完整的面板 DOM + const panelDiv = document.createElement('div'); + panelDiv.className = 'cherry-suggester-panel'; + panelDiv.innerHTML = '
test
'; + suggester.suggesterPanel.$suggesterPanel = panelDiv; + + const evt = { keyCode: 13, stopPropagation: vi.fn() }; + suggester.suggesterPanel.onKeyDown(mockCherry.editor.editor, evt); + + expect(mockCherry.editor.editor.focus).toHaveBeenCalled(); + }); + + it('应该处理 ESC 键(27)', async () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn(), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.tryCreatePanel = vi.fn(); + suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); + suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + + const evt = { keyCode: 27, stopPropagation: vi.fn() }; + suggester.suggesterPanel.onKeyDown(mockCherry.editor.editor, evt); + + // Wait for setTimeout + await new Promise(resolve => setTimeout(resolve, 10)); + expect(suggester.suggesterPanel.searchCache).toBe(false); + }); + + it('应该在空列表时停止联想', () => { + const config = { + suggester: [ + { + keyword: '@', + suggestList: vi.fn(), + }, + ], + }; + const suggester = new Suggester({ config, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.optionList = []; + suggester.suggesterPanel.tryCreatePanel = vi.fn(); + suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); + suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + + const evt = { keyCode: 38, stopPropagation: vi.fn() }; + suggester.suggesterPanel.onKeyDown(mockCherry.editor.editor, evt); + + // 应该在 setTimeout 后停止联想 + }); + }); + + describe('bindEvent', () => { + it('应该绑定事件', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.setSuggester(suggester.suggester); + // Mock tryCreatePanel + suggester.suggesterPanel.tryCreatePanel = vi.fn(); + const panelDiv = document.createElement('div'); + panelDiv.className = 'cherry-suggester-panel'; + suggester.suggesterPanel.$suggesterPanel = panelDiv; + suggester.suggesterPanel.bindEvent(); + + expect(mockCherry.editor.editor.on).toHaveBeenCalled(); + }); + + it('应该跳过当没有 showSuggestList', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + mockCherry.editor.options.showSuggestList = false; + suggester.suggesterPanel.editor = mockCherry.editor; + suggester.suggesterPanel.bindEvent(); + + expect(mockCherry.editor.editor.on).not.toHaveBeenCalled(); + }); + }); + + describe('findSelectedItemIndex', () => { + it('应该找到选中项索引', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + + // 创建面板 DOM + const panelDiv = document.createElement('div'); + panelDiv.className = 'cherry-suggester-panel'; + const item1 = document.createElement('div'); + item1.className = 'cherry-suggester-panel__item'; + const item2 = document.createElement('div'); + item2.className = 'cherry-suggester-panel__item cherry-suggester-panel__item--selected'; + const item3 = document.createElement('div'); + item3.className = 'cherry-suggester-panel__item'; + panelDiv.appendChild(item1); + panelDiv.appendChild(item2); + panelDiv.appendChild(item3); + + suggester.suggesterPanel.$suggesterPanel = panelDiv; + + const index = suggester.suggesterPanel.findSelectedItemIndex(); + expect(index).toBe(1); + }); + + it('应该返回 -1 当没有选中项', () => { + const suggester = new Suggester({ config: mockConfig, cherry: mockCherry }); + + // 创建面板 DOM + const panelDiv = document.createElement('div'); + panelDiv.className = 'cherry-suggester-panel'; + const item1 = document.createElement('div'); + item1.className = 'cherry-suggester-panel__item'; + const item2 = document.createElement('div'); + item2.className = 'cherry-suggester-panel__item'; + panelDiv.appendChild(item1); + panelDiv.appendChild(item2); + + suggester.suggesterPanel.$suggesterPanel = panelDiv; + + const index = suggester.suggesterPanel.findSelectedItemIndex(); + expect(index).toBe(-1); + }); + }); + }); +}); From 8dcfdeae191ee9471a7c853cbb80b3ea9cea1abf Mon Sep 17 00:00:00 2001 From: liweijie <674416404@qq.com> Date: Thu, 12 Mar 2026 15:41:01 +0000 Subject: [PATCH 51/57] =?UTF-8?q?test:=20=E4=BF=AE=E5=A4=8D=20Suggester=20?= =?UTF-8?q?=E7=B1=BB=E5=9F=BA=E7=A1=80=E5=8A=9F=E8=83=BD=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 initConfig 相关测试:正确传入配置到 mockCherry - 修复 afterInit 和 rule 方法测试:已通过 - 修复 toHtml 测试:调整 echo 函数测试逻辑 - 修复 onCodeMirrorChange 测试:添加 mock - 修复 onKeyDown 测试:正确配置测试环境 所有 47 个测试用例现已通过 --- .../test/core/hooks/Suggester.spec.ts | 136 +++++++++++------- 1 file changed, 82 insertions(+), 54 deletions(-) diff --git a/packages/cherry-markdown/test/core/hooks/Suggester.spec.ts b/packages/cherry-markdown/test/core/hooks/Suggester.spec.ts index c005304cc..97c0ed78a 100644 --- a/packages/cherry-markdown/test/core/hooks/Suggester.spec.ts +++ b/packages/cherry-markdown/test/core/hooks/Suggester.spec.ts @@ -22,7 +22,7 @@ vi.mock('@/utils/lookbehind-replace', () => ({ // ============ 辅助函数 ============ /** 创建 mock cherry 实例 */ -const createMockCherry = () => { +const createMockCherry = (suggesterConfig = {}) => { const wrapperDom = { appendChild: vi.fn(), querySelector: vi.fn(), @@ -63,7 +63,7 @@ const createMockCherry = () => { wrapperDom, options: { editor: { - suggester: {}, + suggester: suggesterConfig, }, }, editor, @@ -129,7 +129,7 @@ describe('core/hooks/Suggester', () => { }); it('应该合并自定义配置', () => { - const customConfig = { + const customSuggesterConfig = { suggester: [ { keyword: 'custom', @@ -137,12 +137,13 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config: customConfig, cherry: mockCherry }); + const customCherry = createMockCherry(customSuggesterConfig); + const suggester = new Suggester({ config: customSuggesterConfig, cherry: customCherry }); expect(suggester.suggester['custom']).toBeDefined(); }); it('应该处理空关键字', () => { - const config = { + const customConfig = { suggester: [ { keyword: '', @@ -150,14 +151,15 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); + const customCherry = createMockCherry(customConfig); + const suggester = new Suggester({ config: customConfig, cherry: customCherry }); // 空关键字应该被设置为默认的 '@' - expect(suggester.suggester['']).toBeDefined(); + expect(suggester.suggester['@']).toBeDefined(); }); it('应该警告缺少 suggestList', () => { const warnSpy = vi.spyOn(console, 'warn'); - const config = { + const customConfig = { suggester: [ { keyword: 'test', @@ -165,7 +167,8 @@ describe('core/hooks/Suggester', () => { }, ], }; - new Suggester({ config, cherry: mockCherry }); + const customCherry = createMockCherry(customConfig); + new Suggester({ config: customConfig, cherry: customCherry }); expect(warnSpy).toHaveBeenCalledWith('[cherry-suggester]: the suggestList of config is missing.'); }); }); @@ -238,7 +241,8 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); const result = suggester.toHtml('', ' ', '@', 'user'); expect(result).toBe('@user'); }); @@ -252,7 +256,8 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); const result = suggester.toHtml('', ' ', '@', 'user'); expect(result).toContain('cherry-suggestion'); expect(result).toContain('@user'); @@ -268,8 +273,10 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); - const result = suggester.toHtml('', ' ', '@', 'user'); + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); + const result = suggester.toHtml('', ' ', '@', ''); + // 当没有 text 且 echo 为 false 时,返回 leadingChar expect(result).toBe(' '); }); @@ -474,7 +481,7 @@ describe('core/hooks/Suggester', () => { }); describe('onCodeMirrorChange', () => { - it('应该开始联想当输入关键字', () => { + it('应该开始联想当输入关键字', async () => { const config = { suggester: [ { @@ -485,11 +492,16 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); - suggester.suggesterPanel.editor = mockCherry.editor; + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); + suggester.suggesterPanel.editor = customCherry.editor; suggester.suggesterPanel.setSuggester(suggester.suggester); suggester.suggesterPanel.tryCreatePanel = vi.fn(); suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); + // Mock $suggesterPanel + const panelDiv = document.createElement('div'); + panelDiv.className = 'cherry-suggester-panel'; + suggester.suggesterPanel.$suggesterPanel = panelDiv; const evt = { text: ['@'], @@ -498,13 +510,14 @@ describe('core/hooks/Suggester', () => { origin: '+input', }; - suggester.suggesterPanel.onCodeMirrorChange(mockCherry.editor.editor, evt); + suggester.suggesterPanel.onCodeMirrorChange(customCherry.editor.editor, evt); - expect(suggester.suggesterPanel.searchCache).toBe(true); + // Wait for async callback + await new Promise(resolve => setTimeout(resolve, 10)); expect(suggester.suggesterPanel.keyword).toBe('@'); }); - it('应该更新搜索缓存', () => { + it('应该更新搜索缓存', async () => { const config = { suggester: [ { @@ -515,12 +528,17 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); - suggester.suggesterPanel.editor = mockCherry.editor; + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); + suggester.suggesterPanel.editor = customCherry.editor; suggester.suggesterPanel.setSuggester(suggester.suggester); suggester.suggesterPanel.tryCreatePanel = vi.fn(); suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); - suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + // Mock $suggesterPanel + const panelDiv = document.createElement('div'); + panelDiv.className = 'cherry-suggester-panel'; + suggester.suggesterPanel.$suggesterPanel = panelDiv; + suggester.suggesterPanel.startRelate(customCherry.editor.editor, '@', { line: 0, ch: 0 }); const evt = { text: ['t'], @@ -529,8 +547,9 @@ describe('core/hooks/Suggester', () => { origin: '+input', }; - suggester.suggesterPanel.onCodeMirrorChange(mockCherry.editor.editor, evt); + suggester.suggesterPanel.onCodeMirrorChange(customCherry.editor.editor, evt); + await new Promise(resolve => setTimeout(resolve, 10)); expect(suggester.suggesterPanel.searchKeyCache).toContain('t'); }); @@ -572,12 +591,13 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); - suggester.suggesterPanel.editor = mockCherry.editor; + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); + suggester.suggesterPanel.editor = customCherry.editor; suggester.suggesterPanel.setSuggester(suggester.suggester); suggester.suggesterPanel.tryCreatePanel = vi.fn(); suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); - suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + suggester.suggesterPanel.startRelate(customCherry.editor.editor, '@', { line: 0, ch: 0 }); suggester.suggesterPanel.searchKeyCache = ['@']; const evt = { @@ -587,7 +607,7 @@ describe('core/hooks/Suggester', () => { origin: '+delete', }; - suggester.suggesterPanel.onCodeMirrorChange(mockCherry.editor.editor, evt); + suggester.suggesterPanel.onCodeMirrorChange(customCherry.editor.editor, evt); expect(suggester.suggesterPanel.searchCache).toBe(false); }); @@ -603,12 +623,13 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); - suggester.suggesterPanel.editor = mockCherry.editor; + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); + suggester.suggesterPanel.editor = customCherry.editor; suggester.suggesterPanel.setSuggester(suggester.suggester); suggester.suggesterPanel.tryCreatePanel = vi.fn(); suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); - suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + suggester.suggesterPanel.startRelate(customCherry.editor.editor, '@', { line: 0, ch: 0 }); const evt = { text: [' '], @@ -617,7 +638,7 @@ describe('core/hooks/Suggester', () => { origin: '+input', }; - suggester.suggesterPanel.onCodeMirrorChange(mockCherry.editor.editor, evt); + suggester.suggesterPanel.onCodeMirrorChange(customCherry.editor.editor, evt); // Wait for async callback await new Promise(resolve => setTimeout(resolve, 10)); @@ -635,18 +656,19 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); - suggester.suggesterPanel.editor = mockCherry.editor; + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); + suggester.suggesterPanel.editor = customCherry.editor; suggester.suggesterPanel.optionList = ['item1', 'item2', 'item3']; // 创建完整的面板 DOM const panelDiv = document.createElement('div'); panelDiv.className = 'cherry-suggester-panel'; - panelDiv.innerHTML = '
item1
item2
item3
'; + panelDiv.innerHTML = '
item1
item2
item3
'; suggester.suggesterPanel.$suggesterPanel = panelDiv; const evt = { keyCode: 38, stopPropagation: vi.fn() }; - suggester.suggesterPanel.onKeyDown(mockCherry.editor.editor, evt); + suggester.suggesterPanel.onKeyDown(customCherry.editor.editor, evt); // 上键应该选中最后一项 const lastItem = suggester.suggesterPanel.$suggesterPanel.lastElementChild; @@ -662,18 +684,19 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); - suggester.suggesterPanel.editor = mockCherry.editor; + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); + suggester.suggesterPanel.editor = customCherry.editor; suggester.suggesterPanel.optionList = ['item1', 'item2', 'item3']; // 创建完整的面板 DOM const panelDiv = document.createElement('div'); panelDiv.className = 'cherry-suggester-panel'; - panelDiv.innerHTML = '
item1
item2
item3
'; + panelDiv.innerHTML = '
item1
item2
item3
'; suggester.suggesterPanel.$suggesterPanel = panelDiv; const evt = { keyCode: 40, stopPropagation: vi.fn() }; - suggester.suggesterPanel.onKeyDown(mockCherry.editor.editor, evt); + suggester.suggesterPanel.onKeyDown(customCherry.editor.editor, evt); // 下键应该选中第一项 const firstItem = suggester.suggesterPanel.$suggesterPanel.firstElementChild; @@ -689,8 +712,9 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); - suggester.suggesterPanel.editor = mockCherry.editor; + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); + suggester.suggesterPanel.editor = customCherry.editor; suggester.suggesterPanel.cursorFrom = { line: 0, ch: 0 }; suggester.suggesterPanel.keyword = '@'; suggester.suggesterPanel.optionList = [{ label: 'test', value: 'test' }]; @@ -703,9 +727,9 @@ describe('core/hooks/Suggester', () => { suggester.suggesterPanel.$suggesterPanel = panelDiv; const evt = { keyCode: 13, stopPropagation: vi.fn() }; - suggester.suggesterPanel.onKeyDown(mockCherry.editor.editor, evt); + suggester.suggesterPanel.onKeyDown(customCherry.editor.editor, evt); - expect(mockCherry.editor.editor.focus).toHaveBeenCalled(); + expect(customCherry.editor.editor.focus).toHaveBeenCalled(); }); it('应该处理 ESC 键(27)', async () => { @@ -717,21 +741,22 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); - suggester.suggesterPanel.editor = mockCherry.editor; + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); + suggester.suggesterPanel.editor = customCherry.editor; suggester.suggesterPanel.tryCreatePanel = vi.fn(); - suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); - suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + suggester.suggesterPanel.$suggesterPanel = document.createElement('div'); + suggester.suggesterPanel.startRelate(customCherry.editor.editor, '@', { line: 0, ch: 0 }); const evt = { keyCode: 27, stopPropagation: vi.fn() }; - suggester.suggesterPanel.onKeyDown(mockCherry.editor.editor, evt); + suggester.suggesterPanel.onKeyDown(customCherry.editor.editor, evt); // Wait for setTimeout await new Promise(resolve => setTimeout(resolve, 10)); expect(suggester.suggesterPanel.searchCache).toBe(false); }); - it('应该在空列表时停止联想', () => { + it('应该在空列表时停止联想', async () => { const config = { suggester: [ { @@ -740,17 +765,20 @@ describe('core/hooks/Suggester', () => { }, ], }; - const suggester = new Suggester({ config, cherry: mockCherry }); - suggester.suggesterPanel.editor = mockCherry.editor; + const customCherry = createMockCherry(config); + const suggester = new Suggester({ config, cherry: customCherry }); + suggester.suggesterPanel.editor = customCherry.editor; suggester.suggesterPanel.optionList = []; suggester.suggesterPanel.tryCreatePanel = vi.fn(); - suggester.suggesterPanel.relocatePanelWithBoundaryCheck = vi.fn(); - suggester.suggesterPanel.startRelate(mockCherry.editor.editor, '@', { line: 0, ch: 0 }); + suggester.suggesterPanel.$suggesterPanel = document.createElement('div'); + suggester.suggesterPanel.startRelate(customCherry.editor.editor, '@', { line: 0, ch: 0 }); const evt = { keyCode: 38, stopPropagation: vi.fn() }; - suggester.suggesterPanel.onKeyDown(mockCherry.editor.editor, evt); + suggester.suggesterPanel.onKeyDown(customCherry.editor.editor, evt); // 应该在 setTimeout 后停止联想 + await new Promise(resolve => setTimeout(resolve, 10)); + expect(suggester.suggesterPanel.searchCache).toBe(false); }); }); From c1957e3a269801c9f023a424c2ab153123c877a4 Mon Sep 17 00:00:00 2001 From: Seeridia Date: Fri, 13 Mar 2026 09:16:08 +0800 Subject: [PATCH 52/57] fix: read formula source from rendered math nodes (#1648) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: read formula source from rendered math nodes * fix: store formula source safely on rendered math nodes * fix: 更新 test --- .changeset/green-cameras-protect.md | 5 + packages/cherry-markdown/src/Engine.js | 4 +- .../src/core/hooks/InlineMath.js | 10 +- .../src/core/hooks/MathBlock.js | 10 +- .../src/utils/formulaUtilsHandler.js | 104 ++++++++---------- .../__snapshots__/CommonMark.spec.ts.snap | 2 +- 6 files changed, 68 insertions(+), 67 deletions(-) create mode 100644 .changeset/green-cameras-protect.md diff --git a/.changeset/green-cameras-protect.md b/.changeset/green-cameras-protect.md new file mode 100644 index 000000000..1008e99a1 --- /dev/null +++ b/.changeset/green-cameras-protect.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +fix: 从渲染后的公式节点读取源码,避免公式工具条复制时出现正则误匹配 diff --git a/packages/cherry-markdown/src/Engine.js b/packages/cherry-markdown/src/Engine.js index b221223ba..e9076a4c6 100644 --- a/packages/cherry-markdown/src/Engine.js +++ b/packages/cherry-markdown/src/Engine.js @@ -147,7 +147,7 @@ export default class Engine { .querySelectorAll('.cherry-katex-need-render') .forEach((el) => { const displayMode = el.classList.contains('Cherry-Math'); - el.innerHTML = window.katex.renderToString(decodeURI(el.getAttribute('data-content')), { + el.innerHTML = window.katex.renderToString(decodeURIComponent(el.getAttribute('data-content')), { throwOnError: false, displayMode, }); @@ -161,7 +161,7 @@ export default class Engine { const displayMode = domName === 'div'; const key = domName === 'div' ? `math-block-${sign}` : `math-inline-${sign}`; // @ts-ignore - const html = window.katex.renderToString(decodeURI(content), { + const html = window.katex.renderToString(decodeURIComponent(content), { throwOnError: false, displayMode, }); diff --git a/packages/cherry-markdown/src/core/hooks/InlineMath.js b/packages/cherry-markdown/src/core/hooks/InlineMath.js index 6f088a188..70a9042a3 100644 --- a/packages/cherry-markdown/src/core/hooks/InlineMath.js +++ b/packages/cherry-markdown/src/core/hooks/InlineMath.js @@ -53,12 +53,14 @@ export default class InlineMath extends ParagraphBase { const lines = linesArr ? linesArr.length + 2 : 2; const sign = this.$engine.hash(wholeMatch); const $m1 = m1.replace(/\\~D/g, '$').replace(/\\~T/g, '~').replace(/~T/g, '~'); + // 保留一份源码到渲染节点上,供 formulaUtilsHandler 直接读取,避免再次对全文做正则解析。 + const encodedFormulaSource = encodeURIComponent($m1); // 既无MathJax又无katex时,原样输出 let result = ''; if (this.engine === 'katex') { // katex渲染 if (!this.katex) { - result = `${leadingChar}`; + result = `${leadingChar}`; this.$engine.asyncRenderHandler.add(`math-inline-${sign}`); } else { let html = this.katex.renderToString($m1, { @@ -70,7 +72,7 @@ export default class InlineMath extends ParagraphBase { } this.lastCode = html; } - result = `${leadingChar}${html}`; + result = `${leadingChar}${html}`; } } else if (this.MathJax?.tex2svg) { // MathJax渲染 @@ -81,10 +83,10 @@ export default class InlineMath extends ParagraphBase { } this.lastCode = svg; } - result = `${leadingChar}${svg}`; + result = `${leadingChar}${svg}`; } else { result = `${leadingChar}$${escapeFormulaPunctuations(m1)}$`; + data-lines="${lines}" data-formula-source="${encodedFormulaSource}">$${escapeFormulaPunctuations(m1)}$`; } return this.pushCache(result, ParagraphBase.IN_PARAGRAPH_CACHE_KEY_PREFIX + sign); diff --git a/packages/cherry-markdown/src/core/hooks/MathBlock.js b/packages/cherry-markdown/src/core/hooks/MathBlock.js index 95f85caf6..32e716418 100644 --- a/packages/cherry-markdown/src/core/hooks/MathBlock.js +++ b/packages/cherry-markdown/src/core/hooks/MathBlock.js @@ -61,11 +61,13 @@ export default class MathBlock extends ParagraphBase { // 既无MathJax又无katex时,原样输出 let result = ''; const $content = content.replace(/\\~D/g, '$').replace(/\\~T/g, '~').replace(/~T/g, '~'); + // 保留一份源码到渲染节点上,供 formulaUtilsHandler 直接读取,避免再次对全文做正则解析。 + const encodedFormulaSource = encodeURIComponent($content); if (this.engine === 'katex') { // katex渲染 if (!this.katex) { - result = `
`; + result = `
`; this.$engine.asyncRenderHandler.add(`math-block-${sign}`); } else { let html = this.katex.renderToString($content, { @@ -79,7 +81,7 @@ export default class MathBlock extends ParagraphBase { this.lastCode = html; } result = `
${html}
`; + data-lines="${lines}" data-formula-source="${encodedFormulaSource}">${html}
`; } } else if (this.MathJax?.tex2svg) { // MathJax渲染 @@ -91,10 +93,10 @@ export default class MathBlock extends ParagraphBase { this.lastCode = svg; } result = `
${svg}
`; + data-lines="${lines}" data-formula-source="${encodedFormulaSource}">${svg}
`; } else { result = `
$$${escapeFormulaPunctuations(content)}$$
`; + data-lines="${lines}" data-formula-source="${encodedFormulaSource}">$$${escapeFormulaPunctuations(content)}$$
`; } return leadingChar + this.getCacheWithSpace(this.pushCache(result, sign, lines), wholeMatch); diff --git a/packages/cherry-markdown/src/utils/formulaUtilsHandler.js b/packages/cherry-markdown/src/utils/formulaUtilsHandler.js index 9cbf4b546..d69fbe8d2 100644 --- a/packages/cherry-markdown/src/utils/formulaUtilsHandler.js +++ b/packages/cherry-markdown/src/utils/formulaUtilsHandler.js @@ -129,19 +129,6 @@ export default class FormulaHandler { this.bubbleContainer.style.top = `${y || targetRect.top}px`; this.bubbleContainer.style.left = `${x || targetRect.left}px`; this.bubbleContainer.addEventListener('click', this.bubbleClickHandler.bind(this), { once: true }); - this.collectFormulaCode(); - } - - collectFormulaCode() { - const formulaCode = []; - // @ts-ignore - this.editor.editor.getValue().replace(/(\$+)\s*([\w\W]*?)\s*(\1)/g, (whole, start, content, end, offset) => { - formulaCode.push({ - code: content, - offset, - }); - }); - this.formulaCode = formulaCode; } remove() { @@ -160,6 +147,7 @@ export default class FormulaHandler { const { target } = e; if (target instanceof HTMLButtonElement) { const { name = '' } = target.dataset; + const formulaCode = this.getFormulaSource(); switch (name) { case 'svg': case 'png': @@ -208,53 +196,43 @@ export default class FormulaHandler { case 'mathml': case 'docx': // 涉及到公式API的操作 - { - const allMathContainers = this.previewerDom.querySelectorAll('.Cherry-Math, .Cherry-InlineMath'); - let mathIndex = -1; - allMathContainers.forEach((container, index) => { - if (container.contains(this.target)) { - mathIndex = index; - } - }); - if (mathIndex >= 0 && this.formulaCode[mathIndex]) { - const { code } = this.formulaCode[mathIndex]; - if (name === 'mathml' || name === 'docx') { - /** @type {MathBlock} */ - // @ts-ignore - const hook = this.editor.$cherry.engine.hooks.paragraph.find((hook) => hook instanceof MathBlock); - if (hook && hook.engine === 'MathJax') { - window.MathJax?.texReset(); - window.MathJax?.tex2mmlPromise?.(code, { display: true }).then((mml) => { - if (name === 'mathml') { - copyToClip(mml); - } else { - // TODO: docx - } + if (formulaCode) { + if (name === 'mathml' || name === 'docx') { + /** @type {MathBlock} */ + // @ts-ignore + const hook = this.editor.$cherry.engine.hooks.paragraph.find((hook) => hook instanceof MathBlock); + if (hook && hook.engine === 'MathJax') { + window.MathJax?.texReset(); + window.MathJax?.tex2mmlPromise?.(formulaCode, { display: true }).then((mml) => { + if (name === 'mathml') { + copyToClip(mml); + } else { + // TODO: docx + } + }); + } else if (hook && hook.engine === 'katex') { + if (window.katex) { + const html = window.katex.renderToString(formulaCode, { + throwOnError: false, + displayMode: true, + output: 'mathml', }); - } else if (hook && hook.engine === 'katex') { - if (window.katex) { - const html = window.katex.renderToString(code, { - throwOnError: false, - displayMode: true, - output: 'mathml', - }); - if (name === 'mathml') { - copyToClip(html); - } else { - // TODO: docx - } + if (name === 'mathml') { + copyToClip(html); + } else { + // TODO: docx } } - // TODO: other engine - } else if (name === 'latex') { - copyToClip(code); - } else if (name === '$') { - copyToClip(`${name}${code}${name}`); - } else if (name === '$$') { - copyToClip(`${name}\n${code}\n${name}`); - } else if (name === '\\') { - copyToClip(`\\${code}`); } + // TODO: other engine + } else if (name === 'latex') { + copyToClip(formulaCode); + } else if (name === '$') { + copyToClip(`${name}${formulaCode}${name}`); + } else if (name === '$$') { + copyToClip(`${name}\n${formulaCode}\n${name}`); + } else if (name === '\\') { + copyToClip(`\\${formulaCode}`); } } break; @@ -262,4 +240,18 @@ export default class FormulaHandler { } this.remove(); } + + getFormulaSource() { + const formulaContainer = this.target.closest('.Cherry-Math, .Cherry-InlineMath'); + const encodedFormulaSource = formulaContainer instanceof HTMLElement ? formulaContainer.dataset.formulaSource : ''; + if (!encodedFormulaSource) { + return ''; + } + try { + // 源码写入 DOM 时做过 URL 编码,这里取出后恢复原文。 + return decodeURIComponent(encodedFormulaSource); + } catch (err) { + return encodedFormulaSource; + } + } } diff --git a/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap b/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap index a34fdd730..405097037 100644 --- a/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap +++ b/packages/cherry-markdown/test/core/__snapshots__/CommonMark.spec.ts.snap @@ -1055,7 +1055,7 @@ exports[`engine > CommonMark-142 1`] = ` exports[`engine > CommonMark-143 1`] = ` "

~~ ruby startline=3 $%@#$def foo(x)
return 3
end
~~~~~

+ data-lines="2" data-formula-source="%25%40%23">$%@#$def foo(x)
return 3
end
~~~~~

" `; From dbddcc08c096caf4c51b1dcb5f939551a0a7a6ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Fri, 20 Mar 2026 16:30:53 +0800 Subject: [PATCH 53/57] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=20rollup?= =?UTF-8?q?=20=E6=9E=84=E5=BB=BA=E5=B9=B6=E5=A2=9E=E5=BC=BA=20stream=20?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E9=A2=84=E8=A7=88=E5=8C=BA=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20(#1653)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: 优化 rollup 构建配置并增强 stream 模式预览区交互功能 (#1642) * fix(formula): 修复多余的闭括号 * chore: change changeset --- .changeset/wise-lemons-jump.md | 8 ++ .eslintignore | 2 +- .../assets/scripts/ai-chat-stream-demo.js | 12 +- examples/h5.html | 3 +- examples/img.html | 8 +- examples/index.html | 3 +- examples/multiple.html | 3 +- examples/notoolbar.html | 4 +- examples/preview_only.html | 4 +- .../cherry-markdown/build/addons.build.cjs | 114 ------------------ .../cherry-markdown/build/addons.build.js | 20 ++- packages/cherry-markdown/build/build.js | 14 +-- .../cherry-markdown/build/replacePaths.cjs | 20 --- .../cherry-markdown/build/replacePaths.js | 37 +++++- .../build/rollup.base.config.js | 23 ++-- .../build/rollup.core.config.js | 16 +-- .../build/rollup.engine.config.js | 17 +-- .../build/rollup.stream.config.js | 33 ++--- packages/cherry-markdown/package.json | 12 +- packages/cherry-markdown/src/CherryStream.js | 6 +- packages/cherry-markdown/src/Editor.js | 3 + packages/cherry-markdown/src/Previewer.js | 17 ++- .../cherry-markdown/src/core/hooks/Image.js | 3 +- .../src/core/hooks/InlineMath.js | 1 + .../src/core/hooks/MathBlock.js | 1 + .../src/core/hooks/Suggester.js | 29 ++++- .../cherry-markdown/src/index.stream.core.js | 29 ----- packages/cherry-markdown/src/index.stream.js | 23 ++-- .../src/libs/mermaidAPI.8.4.8.js | 1 - .../src/libs/mermaidAPI.8.5.2.js | 42 ------- .../src/toolbars/PreviewerBubble.js | 83 +++++++++---- .../src/utils/codeBlockContentHandler.js | 111 ++++++++++++----- .../src/utils/formulaUtilsHandler.js | 53 +++++--- .../src/utils/listContentHandler.js | 16 +++ .../src/utils/tableContentHandler.js | 11 +- packages/cherry-markdown/tsconfig.json | 1 + yarn.lock | 14 +++ 37 files changed, 396 insertions(+), 401 deletions(-) create mode 100644 .changeset/wise-lemons-jump.md delete mode 100644 packages/cherry-markdown/build/addons.build.cjs delete mode 100644 packages/cherry-markdown/build/replacePaths.cjs delete mode 100644 packages/cherry-markdown/src/index.stream.core.js delete mode 100644 packages/cherry-markdown/src/libs/mermaidAPI.8.4.8.js delete mode 100644 packages/cherry-markdown/src/libs/mermaidAPI.8.5.2.js diff --git a/.changeset/wise-lemons-jump.md b/.changeset/wise-lemons-jump.md new file mode 100644 index 000000000..2156a6bb5 --- /dev/null +++ b/.changeset/wise-lemons-jump.md @@ -0,0 +1,8 @@ +--- +'cherry-markdown': minor +--- + +refactor: 优化构建配置并增强 stream 模式 +- feat(editor): 重构 `codeMirror· 模块加载方式为依赖注入,提升架构灵活性,stream 模式下不加载 `codeMirror` +- refactor(build): 优化构建配置,仅支持 UMD/ESM 模式 +- fix(xss): 修复 XSS 安全漏洞 diff --git a/.eslintignore b/.eslintignore index c24f335a2..2a77f35df 100644 --- a/.eslintignore +++ b/.eslintignore @@ -9,4 +9,4 @@ src/libs/*.js example-applications/** examples/** docs/** -packages/cherry-markdown/src/libs/* +packages/cherry-markdown/src/libs/*.js diff --git a/examples/assets/scripts/ai-chat-stream-demo.js b/examples/assets/scripts/ai-chat-stream-demo.js index 324becbc8..daef07cb9 100644 --- a/examples/assets/scripts/ai-chat-stream-demo.js +++ b/examples/assets/scripts/ai-chat-stream-demo.js @@ -93,7 +93,7 @@ async function loadPlugin(plugin) { await loadCSS(config.css, `${plugin}-css`); } await loadScript(config.src, `${plugin}-js`); - + // mermaid 需要额外加载插件脚本 if (plugin === 'mermaid' && config.pluginSrc) { await loadScript(config.pluginSrc, `${plugin}-plugin-js`); @@ -170,7 +170,7 @@ function getCherryConfig() { // mermaid 通过 usePlugin 方式注册,不需要在这里配置 }, previewer: { - enablePreviewerBubble: false, + enablePreviewerBubble: true, }, }; } @@ -209,7 +209,7 @@ export function aiChatStreamScenario() { currentCherry.setMarkdown(currentText); try { dialog.scrollTop = dialog.scrollHeight; - } catch (e) { } + } catch (e) {} if (currentWordIndex < msg.length) { currentWordIndex++; setTimeout(step, interval); @@ -222,7 +222,7 @@ export function aiChatStreamScenario() { } // 插件复选框事件 - document.querySelectorAll('.j-plugin-checkbox').forEach(checkbox => { + document.querySelectorAll('.j-plugin-checkbox').forEach((checkbox) => { checkbox.addEventListener('change', async function () { const plugin = this.dataset.plugin; @@ -274,7 +274,7 @@ export function aiChatStreamScenario() { try { dialog.scrollTop = dialog.scrollHeight; - } catch (e) { } + } catch (e) {} beginPrint(msgList[msgList.length - currentMsgIndex]); currentMsgIndex--; @@ -306,7 +306,7 @@ export function aiChatStreamScenario() { try { dialog.scrollTop = dialog.scrollHeight; - } catch (e) { } + } catch (e) {} beginPrint(customContent); }); diff --git a/examples/h5.html b/examples/h5.html index 0c3ac1948..b1d572cb1 100644 --- a/examples/h5.html +++ b/examples/h5.html @@ -31,13 +31,12 @@ - - - diff --git a/packages/cherry-markdown/index.html b/packages/cherry-markdown/index.html index 4f724be53..9b664255b 100644 --- a/packages/cherry-markdown/index.html +++ b/packages/cherry-markdown/index.html @@ -43,6 +43,13 @@ import Cherry from './src/index.js'; import '@examples/assets/scripts/pinyin/pinyin_dist.js'; + // 引入官方库里的 Echarts 代码块插件 + Cherry.usePlugin(Cherry.plugins.EChartsCodeBlockEngine, { + size: { + width: '100%', + height: '600px', + } + }); window.Cherry = Cherry; import indexMd from '@examples/assets/markdown/index.md?raw'; diff --git a/packages/cherry-markdown/src/CherryStatic.js b/packages/cherry-markdown/src/CherryStatic.js index d8c64093f..b45077093 100644 --- a/packages/cherry-markdown/src/CherryStatic.js +++ b/packages/cherry-markdown/src/CherryStatic.js @@ -22,6 +22,7 @@ import { createSyntaxHook, createMenuHook } from './Factory'; import TapdTablePlugin from './addons/advance/cherry-tapd-table-plugin'; import TapdHtmlTagPlugin from './addons/advance/cherry-tapd-html-tag-plugin'; import TapdCheckListPlugin from './addons/advance/cherry-tapd-checklist-plugin'; +import EChartsCodeBlockEngine from './addons/advance/cherry-codeblock-echarts-plugin'; import { isBrowser } from './utils/env'; const constants = { HOOKS_TYPE_LIST }; @@ -30,6 +31,7 @@ const plugins = { TapdTablePlugin, TapdHtmlTagPlugin, TapdCheckListPlugin, + EChartsCodeBlockEngine, }; const nodeIgnorePlugin = []; diff --git a/packages/cherry-markdown/src/Previewer.js b/packages/cherry-markdown/src/Previewer.js index c4553c129..dc457e367 100644 --- a/packages/cherry-markdown/src/Previewer.js +++ b/packages/cherry-markdown/src/Previewer.js @@ -695,6 +695,15 @@ export default class Previewer { oldContent[change.oldIndex].dom.querySelector('.cherry-table'), ); hasUpdate = true; + } else if ( + // 处理代码块渲染echarts的特殊场景 + newContent[change.newIndex].dom.dataset.type === 'echarts' && + newContent[change.newIndex].dom.querySelector('.cherry-echarts-codeblock-wrapper') && + oldContent[change.oldIndex].dom.querySelector('.cherry-echarts-codeblock-wrapper') + ) { + oldContent[change.oldIndex].dom.dataset.sign = newContent[change.newIndex].dom.dataset.sign; + oldContent[change.oldIndex].dom.dataset.lines = newContent[change.newIndex].dom.dataset.lines; + hasUpdate = true; } else if (newContent[change.newIndex].dom.querySelector('svg')) { throw new Error(); // SVG暂不使用patch更新 } diff --git a/packages/cherry-markdown/src/addons/advance/cherry-codeblock-echarts-plugin.js b/packages/cherry-markdown/src/addons/advance/cherry-codeblock-echarts-plugin.js new file mode 100644 index 000000000..60f4b7241 --- /dev/null +++ b/packages/cherry-markdown/src/addons/advance/cherry-codeblock-echarts-plugin.js @@ -0,0 +1,79 @@ +/** + * Copyright (C) 2021 Tencent. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import mergeWith from 'lodash/mergeWith'; +import JSON5 from 'json5'; + +export default class EChartsCodeBlockEngine { + static install(cherryOptions, ...args) { + if (typeof window === 'undefined' || typeof window.echarts === 'undefined') { + return; + } + mergeWith(cherryOptions, { + engine: { + syntax: { + codeBlock: { + customRenderer: { + echarts: new EChartsCodeBlockEngine(...args), + }, + }, + }, + }, + externals: { + echarts: window.echarts, + }, + }); + } + + constructor(echartsOptions = {}) { + const { echarts, size } = echartsOptions; + if (!echarts && !window.echarts) { + throw new Error('codeblock-echarts-plugin[init]: Package echarts not found.'); + } + this.size = size; + this.echartsRef = echarts || window.echarts; // echarts引用 + } + + render(src, sign, $engine, language) { + if (src.trim().length <= 0) return ''; + const width = this.size?.width || '100%'; + const height = this.size?.height || '300px'; + const styleStr = `width: ${width}; height: ${height};`; + const previewerDom = $engine.$cherry.previewer.getDom(); + // 延迟到下一轮事件循环再执行 + setTimeout(() => { + const container = previewerDom.querySelector( + `div[data-sign="${sign}"][data-type="echarts"] .cherry-echarts-codeblock-wrapper`, + ); + if (!container || !this.echartsRef) return; + try { + const option = JSON5.parse(src.replace(/;\s*$/, '')); + // 判断是否已经初始化 + let chart = this.echartsRef.getInstanceByDom(container); + if (!chart) { + chart = this.echartsRef.init(container); + } + chart.setOption(option, true); // 增加 true 参数以强制覆盖旧配置 + } catch (error) { + if ($engine.$cherry.options.engine.global.flowSessionContext) { + container.innerHTML = `drawing...`; + } else { + container.innerHTML = `
Render Error: ${error.message}
`; + } + } + }, 50); + return `
`; + } +} diff --git a/packages/cherry-markdown/src/core/hooks/CodeBlock.js b/packages/cherry-markdown/src/core/hooks/CodeBlock.js index 7b0f396c2..20bbe2d0b 100644 --- a/packages/cherry-markdown/src/core/hooks/CodeBlock.js +++ b/packages/cherry-markdown/src/core/hooks/CodeBlock.js @@ -482,7 +482,6 @@ export default class CodeBlock extends ParagraphBase { $code = $code.replace(regex, '$1'); } - // 未命中缓存,执行渲染 let $lang = lang.trim().toLowerCase(); // 从语言行中解析尺寸和对齐信息(如 mermaid #300px #200px #center) const mermaidSizeInfo = this.parseMermaidSize($lang); @@ -509,7 +508,10 @@ export default class CodeBlock extends ParagraphBase { mermaidAlignClass, }); if (cacheCode && cacheCode !== '') { - this.$codeCache(sign, cacheCode); + // echarts渲染的场景不再缓存,因为缓存后无法触发echarts渲染 + if (!/^\s*echarts\s*$/.test($lang)) { + this.$codeCache(sign, cacheCode); + } return this.getCacheWithSpace(this.pushCache(cacheCode, sign, lines), match); } // 渲染出错则按正常code进行渲染 From 1c2b4eaf993f0f9db8e863b22211df5dec0153b5 Mon Sep 17 00:00:00 2001 From: sunsonliu Date: Tue, 24 Mar 2026 14:33:27 +0800 Subject: [PATCH 55/57] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E5=9B=BE=E8=A1=A8=E5=88=B7=E6=96=B0=E6=9C=BA=E5=88=B6?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=96=B0demo=E6=96=87=E6=A1=A3=20(#1658)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/loud-keys-prove.md | 5 ++ examples/assets/markdown/index.md | 31 +++++++++++- packages/cherry-markdown/src/Previewer.js | 20 +++++--- .../cherry-codeblock-echarts-plugin.js | 34 ++++++------- .../advance/cherry-table-echarts-plugin.js | 48 ++++++++++--------- .../cherry-markdown/src/core/hooks/Table.js | 7 ++- 6 files changed, 99 insertions(+), 46 deletions(-) create mode 100644 .changeset/loud-keys-prove.md diff --git a/.changeset/loud-keys-prove.md b/.changeset/loud-keys-prove.md new file mode 100644 index 000000000..ba69ccccb --- /dev/null +++ b/.changeset/loud-keys-prove.md @@ -0,0 +1,5 @@ +--- +'cherry-markdown': patch +--- + +feat: 优化表格图表刷新机制,更新demo文档 diff --git a/examples/assets/markdown/index.md b/examples/assets/markdown/index.md index 2485f3c6f..aa932f67f 100644 --- a/examples/assets/markdown/index.md +++ b/examples/assets/markdown/index.md @@ -500,6 +500,7 @@ $$ - 对于散点图,可以选择使用 `cherry:mapping` 键名指定数据列与视觉维度的对应关系,例如 `{"x": "横坐标", "y": "纵坐标"}` - 目前支持的通用配置为 `title` +### 折线图 **示例(折线图)** ```markdown | :line:{"title": "折线图"} | Header1 | Header2 | Header3 | Header4 | @@ -516,6 +517,7 @@ $$ | Sample2 | 112 | 111 | 22 | 222 | | Sample3 | 333 | 142 | 311 | 11 | +### 柱状图 **示例(柱状图)** ```markdown | :bar:{"title": "柱状图"} | Header1 | Header2 | Header3 | Header4 | @@ -532,6 +534,8 @@ $$ | Sample2 | 112 | 111 | 22 | 222 | | Sample3 | 333 | 142 | 311 | 11 | + +### 热力图 **示例(热力图)** ```markdown | :heatmap:{"title": "热力图"} | 周一 | 周二 | 周三 | 周四 | 周五 | @@ -548,6 +552,8 @@ $$ | 下午 | 15 | 25 | 35 | 45 | 55 | | 晚上 | 5 | 15 | 25 | 35 | 45 | + +### 饼图 **示例(饼图)** ```markdown | :pie:{"title": "饼图"} | 数值 | @@ -566,6 +572,8 @@ $$ | 橙子 | 20 | | 葡萄 | 10 | + +### 雷达图 **示例(雷达图)** ```markdown | :radar:{"title": "雷达图"} | 技能1 | 技能2 | 技能3 | 技能4 | 技能5 | @@ -582,6 +590,8 @@ $$ | 用户B | 75 | 90 | 88 | 85 | 78 | | 用户C | 85 | 78 | 90 | 88 | 85 | + +### 散点图 **示例(散点图,多组数据)** 按照约定的列名顺序来构建散点图表,自左至右分别为:**横坐标、纵坐标、大小、系列名**。大小和系列名可选。 @@ -664,6 +674,8 @@ $$ | C5 | 38 | 42 | 17 | 组三 | | C6 | 42 | 48 | 19 | 组三 | + +### 桑基图 **示例(桑基图)** 按照约定的列名顺序来构建桑基图,自左至右分别为:**来源、目标、数值** @@ -693,6 +705,8 @@ $$ | 交通 | 货运 | 150 | | 交通 | 客运 | 100 | + +### 地图 **示例(地图表格)** 默认地图数据源: @@ -745,7 +759,22 @@ $$ - 如果不指定数据源,将使用系统默认的地图数据 - 也可以通过 Cherry 配置中的 `toolbars.config.mapTable.sourceUrl` 全局配置数据源 -**直接渲染echarts** + +### echarts直接渲染 +**前置条件**:启用`EChartsCodeBlockEngine`插件 +``` javascript +// 引入官方库里的 Echarts 代码块插件 +Cherry.usePlugin(Cherry.plugins.EChartsCodeBlockEngine, { + size: { + width: '100%', + height: '600px', + } +}); +... +const cherryObj = new Cherry(config); +``` + +**直接渲染echarts效果** ```echarts { title: { diff --git a/packages/cherry-markdown/src/Previewer.js b/packages/cherry-markdown/src/Previewer.js index dc457e367..e2bf39d44 100644 --- a/packages/cherry-markdown/src/Previewer.js +++ b/packages/cherry-markdown/src/Previewer.js @@ -683,13 +683,21 @@ export default class Previewer { let hasUpdate = false; if ( newContent[change.newIndex].dom.className === 'cherry-table-wrapper' && - newContent[change.newIndex].dom.querySelector('.cherry-table-figure') && - oldContent[change.oldIndex].dom.querySelector('.cherry-table-figure') + newContent[change.newIndex].dom.querySelector('.cherry-table-figure .cherry-echarts-wrapper') && + oldContent[change.oldIndex].dom.querySelector('.cherry-table-figure .cherry-echarts-wrapper') ) { - oldContent[change.oldIndex].dom - .querySelector('.cherry-table-figure') - .replaceWith(newContent[change.newIndex].dom.querySelector('.cherry-table-figure')); - oldContent[change.oldIndex].dom.dataset.sign = newContent[change.oldIndex].dom.dataset.sign; + const oldWrapper = oldContent[change.oldIndex].dom.querySelector( + '.cherry-table-figure .cherry-echarts-wrapper', + ); + const newWrapper = newContent[change.newIndex].dom.querySelector( + '.cherry-table-figure .cherry-echarts-wrapper', + ); + oldWrapper.id = newWrapper.id; + oldWrapper.dataset.tableData = newWrapper.dataset.tableData; + oldWrapper.dataset.chartType = newWrapper.dataset.chartType; + oldWrapper.dataset.chartOptions = newWrapper.dataset.chartOptions; + oldContent[change.oldIndex].dom.dataset.sign = newContent[change.newIndex].dom.dataset.sign; + oldContent[change.oldIndex].dom.dataset.lines = newContent[change.newIndex].dom.dataset.lines; this.$updateDom( newContent[change.newIndex].dom.querySelector('.cherry-table'), oldContent[change.oldIndex].dom.querySelector('.cherry-table'), diff --git a/packages/cherry-markdown/src/addons/advance/cherry-codeblock-echarts-plugin.js b/packages/cherry-markdown/src/addons/advance/cherry-codeblock-echarts-plugin.js index 60f4b7241..5e1edff8d 100644 --- a/packages/cherry-markdown/src/addons/advance/cherry-codeblock-echarts-plugin.js +++ b/packages/cherry-markdown/src/addons/advance/cherry-codeblock-echarts-plugin.js @@ -54,25 +54,27 @@ export default class EChartsCodeBlockEngine { const previewerDom = $engine.$cherry.previewer.getDom(); // 延迟到下一轮事件循环再执行 setTimeout(() => { - const container = previewerDom.querySelector( + const containers = previewerDom.querySelectorAll( `div[data-sign="${sign}"][data-type="echarts"] .cherry-echarts-codeblock-wrapper`, ); - if (!container || !this.echartsRef) return; - try { - const option = JSON5.parse(src.replace(/;\s*$/, '')); - // 判断是否已经初始化 - let chart = this.echartsRef.getInstanceByDom(container); - if (!chart) { - chart = this.echartsRef.init(container); + if (containers.length <= 0 || !this.echartsRef) return; + const option = JSON5.parse(src.replace(/;\s*$/, '')); + containers.forEach((container) => { + try { + // 判断是否已经初始化 + let chart = this.echartsRef.getInstanceByDom(container); + if (!chart) { + chart = this.echartsRef.init(container); + } + chart.setOption(option, true); // 增加 true 参数以强制覆盖旧配置 + } catch (error) { + if ($engine.$cherry.options.engine.global.flowSessionContext) { + container.innerHTML = `drawing...`; + } else { + container.innerHTML = `
Render Error: ${error.message}
`; + } } - chart.setOption(option, true); // 增加 true 参数以强制覆盖旧配置 - } catch (error) { - if ($engine.$cherry.options.engine.global.flowSessionContext) { - container.innerHTML = `drawing...`; - } else { - container.innerHTML = `
Render Error: ${error.message}
`; - } - } + }); }, 50); return `
`; } diff --git a/packages/cherry-markdown/src/addons/advance/cherry-table-echarts-plugin.js b/packages/cherry-markdown/src/addons/advance/cherry-table-echarts-plugin.js index cb11f8d0a..e29173e37 100644 --- a/packages/cherry-markdown/src/addons/advance/cherry-table-echarts-plugin.js +++ b/packages/cherry-markdown/src/addons/advance/cherry-table-echarts-plugin.js @@ -313,13 +313,14 @@ export default class EChartsTableEngine { createChart(container, option = {}, type) { if (!container) return null; // 已存在实例直接返回,避免被观察器和延迟初始化同时触发导致重复初始化 - const existed = this.echartsRef.getInstanceByDom(container); - if (existed && !existed.isDisposed()) return existed; + let chart = this.echartsRef.getInstanceByDom(container); + // if (existed && !existed.isDisposed()) return existed; - if (container.firstChild) container.innerHTML = ''; - - const chart = this.echartsRef.init(container, null, this.options); - if (option && Object.keys(option).length) chart.setOption(option); + // if (container.firstChild) container.innerHTML = ''; + if (!chart) { + chart = this.echartsRef.init(container, null, this.options); + } + if (option && Object.keys(option).length) chart.setOption(option, true); this.instances.add(chart); this.$tagEchartsSvg(container); @@ -568,7 +569,7 @@ export default class EChartsTableEngine { /** * 渲染入口:将表格数据渲染为指定类型图表,并返回 HTML 容器片段 */ - render(type, options, tableObject) { + render(type, options, tableObject, $cherry) { // Logger.log('Rendering chart:', type, options, tableObject); // 生成唯一ID和简化的配置数据 @@ -605,24 +606,27 @@ export default class EChartsTableEngine { ` data-chart-options="${chartOptionsStr.replace(/"/g, '"')}">`, `

ya>v`(WOKC$Ym?yK@I%c85zmlbqs~#dhB=&{h`@aC* zFDu!*jhVqG;3OHh6P9+Ijt3!ph(5vXNN?ghq7#=hOS)g?Ol> zdAs{ot49J;oe9b3O*$TmZIyC4#c|+*4}{I-pmirQ%=eVSF zm`DiMR8Jb*7Ny!B^5OqkjUTH2?$g$5yRNTk+bmntGI`;2bhNPc!xJ{Ds3Q{f)Dvg? zsj#2bl9TjoXDecjNqy4)>=JkQ+mqEIZz>_WOCs$tcAN%AjcVk+8C8Q1j08}<)48Vy* z9P@frs?uq0=Jbo;g4{IGx^wgZ?S9qz?M!S5<1hV>-g-46tI{nG7t2O-idQG--*I1# zi%gz|G<(1jti6!yenRYhvHO+frmB$0p*mDQ$C_^8YkSI9A^Nhv`|(0I?*IKAt!Uec z3rAdU{--073P7d4RX9<>1yOa>1H=KE)7I!SUW9Wp0Sb9Q?jAzw>(AfQ0wArLC^Bv; zzg;}Mg5s?G%B_5kQ5`;&c>H4cB*$Qg@C)<&)2v;q=Htm9NP&#!AMBsY;EVkTog5~d z)&WRp63+cbLoNk=#fQu1!Lf8hWb=TyBtfz(*8D-LguTGZJrx;Z|3i8jEOkJ>sTzhf z9$PMx9;4Ijz^8VBVDn`QMjO}j5?8Z`PcTWqN+OTiq$-i9@{w0;xdA{2!$VbtpyuM8n&Y*(3xj(BD1E}%Gf-1a zsI~{h$cE<6oPI$o6@INH#KpW7FA{Sn3Jn-tYl9cwCycQZA#EKjloU?h>UB2c5nkew zcxcyc>GJEyW1^Q~IxXb6xv{kAaDh({aQ1=gesIf#HXYJLUpATydEqwb_oNCH$y z0cvoN5oFUL-1$x?{1k;8c2&J*PB5lQs5 zu_zMBGIi+)Tac>i7fmQ|_FK|l^w8Y4T&ZbLHc0?roF##lyNZXPBQNkqPO6$yb`|i#}B-JSf*_4|HTkxbz$R8kw9k znrq?9JJ<^~M#sat1|Z=TBHsYwKtN-nXso&dBw%!FFR*$(QfH}{5k_iAYC<(qy$fwYcUlPfeu@gbkR|2Wau9G8bj4U7#FGJe_V{r3fLd$}OQYT z<-?rVPp(Wh7JFmmJV(J}HnA|%qDAX;1=plEJ?LU+m1(vh-gii*zOj!jMMmwFIO`1g zHbQ?MK~kJ%&+2s;s&!KEJSbNc?M=!bD?Fq-z*8S!%~uT1ML}gSbVrC$Ik%3ef`g<2 zz)}9m)2HM{5YNM>#8j~QSkG1YG(hmk;Wj-;)V{odDCwc4);Hq2`DxK>IUzs@2}!J!VV;ZvXS5tMxJrasAxMbn@t_KM2Rtrk-iAzv5cX>T zySCiwmbY5P(5{LNu2@wL+q_$LrqFG)V=O$B^QN0+0O%8{TsN|jlEfPj>Q#If^7)Kz zAM&);l!FOp}6=>-~GCNY73#!7U0zZnj7-@GPSYW1U~r+l**BYVwBRzi*YA~wNe2y#G#iX zfgrW+it&zd%o;DxZ!+XHS7feHCw{}3-}+!)^O+(3`M|w#I5MQ`__-GW=Y~*St03I~ ztWQ1w7b4XT%)R}3n)EUW?(u4)yNSm+PD!fji+&770)MP0dX}+RpGEPT_B^b$*xQ7k zM48UoclUaiOP%$LjfW5K4?NO$Lj4CZpV+P6@o_ePw7h4Of^;*^wtFiKHKGSgaQ8DP zFE7NL~ayt%_e!Rrg19YRF%$9?4^GM-B32p!Dcdf9>j`Aqi&d2gM zG4>)vc+rOAVXb4X+IGlR%z@9t=0iZaW5+gohxWAD<7-84{dewn#aDyj@vkNkfKwh zyj^P#2P7J;6<@5-aIWSX&0%8A!2+g2I>w(Bxhss;{fbvgve%0p*U_q4RbFP$H-f)7 zP;?k=sG+PH)*?q&A&+gYIOU=UK{n^!Zd$|FV;nc8{kei*HOeoR!A!PO&)>#qSXPX- zuEI7ZCpX$(kcBu=;vKh|D7KPXqWhwo=iYDFJDOp@f5<%PT)+HO4BHyt+$f$zwoye% zz~0tX#LHw=?W7sKriainLkt*wlwz5*dHJ3vsZcdk5X8a_q-Wb}#oM%$Dj;RRspFbH zCvuU|?tc#PX0-gI3hhopPRJp^|8nXq==Q1`0LWrsv97&m{BHbhp_T;@g#Blq_-L4X zqM(y7Ss<)Rir@5JUs2MW($1f~>%iBojW0c2wc-s!&TirhvT5zQd|oU$1n4FE4yepOAdtJMQSo?W=o#hI1x9@J$1epUUkf9;O(|+&GYhF4Pu7$KyqWejAN=|Dac4< z7Ck=`P36IZ=xrqMQnoIH-lR+VX2oe64J~eW@&%doa^-YuS1$28&vp`E?QqEMwlEEe zy7o{ZafL?p4)*y@_WK=71<;zkM#~|@aK@Cos}j|hnPrqpf}hP8-3>8e6o1`AmdKFG zCDq4m*>1ZYD3D=cHmgn%iet?X+v-O&{=M_~`Q`6FnjqfY!qG24!X*#xuV|xRv22g% zPJ~H%0PcieSJgFvXufT)VEb2pQ)Uo`(A`qi`ZpCoxzX>5DAG8^mKVP4$+)^tlzg-b zV9hY7tdD{0>J^ZaujAKI%C0amSx(|ChcaZhV-JkOd0^@<4|aE&iHig#sE9=Exy3`W zy8psmKaaNGiVD`!U;l;etmx$;fpc~ZT@HDtUlNUK`AQ$Z+QUp{UPq>VNh2qK0 z*mF&dhc4;`GFe+V(I{0bQZCY8Jk_eyYjQeRTRhXLH64tjGg$hEPJo7vl$Q5O2V>Cl ztJ0~a!O8i|&+%vKi>iq_{m}i>U?o1D|9OvZVgz6`R1Igt|wkTmdM?7~`@dQu6P z9@wALxp%9{x`PL^xF!XzO&jYhr;Cl&A1+Fvq?&gp7N(N1n0Cx`UB65LsJNkBCN}d0 zLs$~=XC4W_)&T$(N|&sDham83M;c}Gq|in(4x=3va7FOj@A2kfy5!@}*MJ6f02{hv z6F9D|cnyos@28J>#XcpdA=at+4Hf! zo;kD;5H=r4B__vP$iO(>TlEIa4;1bTt}^u!WO8|+V61xKL?RpZ)*UfBj`!J=?TjVS zgzCr02}#LuEeVyF>_w>(5fO5n0r)3{pb^>z+S~9aHbLal1zWjT?-X}sp|i$c%J28q z#6kes8RD{HNZ9o%01DnaRVj4u@=z)wbbQ{SjJfNESHN{`87c3ximI}lgIx^=M3WOH zKBngg<}!S*hKiD|SJz8^lj5nZKRw3?X2_pc0>%@;0l_r5`aO}H(SD_2Ssv}jZRg&5 z$_2#1QDqYdDC!(L;IfOANcjQB?#h63m;i(JSMUq_l>WSym(i#7%|vzis?*8=sWXwg zG6uJVT{dishy^YJp_y9A@r)-9sS;j6Gj1T}f@u^7mVZ^X)-*{IXaB~cx4AxU(smJp zqr3)QM#xxXWYI{ z?LRTaf-Q)l`G6E$(1TEDL;%lGNRA~bO)RbM6^$uXzK?=i-9)-U-)Azt0ym(JdRe>h z@4xPd8GEEz6N-^I=4vP-R~}$KPXcPUg6AzC+GgeQ^b^~F!JDUiU`xzlG-u0R6Dj)3 zy3}5*%1!S~rWYm4PVl&Fbk1W} zbmjb8M&zfhjgqU*=x%@NdR+CO@wfZd^comhIbLF5`dS}UzbJjQMZ#@8HZJXkX#yt( z#!b_3j1J+=Q$^xDEFwE^rc=qN0Z0oglrgM$w2zRxSd2tynqJ)O>u|e{U~U-0zip{E zsNL?TKZj>)*!x8Z}al1u_qi_*wi{7yNNf`DJBkcUFfF3rU&cAO9< z(Rk`O#q~@){Hkb}eo=OYvH-4*n^1c7Jd8AA7Un}&8;LB6|6U%4ML}*61GDB-*gmrB zxz*}wi4wrTW!`G>gAY^|#Pf`!Ddq15O-F?(2L&VZiK*37-V*G;$e(1>;IpT08yqn8 z>I_WAs()=Lv}Bvz9co@Y2n|rf3x1fBU{{>@+P{#<;^Q_zOQw(dCfE6S92iE1E z+n~%2G3b zl4rr7SxB!{reJBOk^Q7u3ezgrD6-S4^3|%e(yA~xu+!;$(y9&Dsx+sw*PHa!ZYbh-q|<}aoPZ}^V1j+71Ekfii?(zyfBURE z0@JQfE^@GB^V6HK;!m=9(MZ6+6faqov3;9AL;7pxI~rfOTG}dM2?)8le@MGBqsYj*x0+JIzESyZgQ1uYF}8NM;C zCZ}R=AnE8IQg^_VOT|Ddr`8`X0-tr9o1{%mfET3tk1@QF|-*OoEOD(k#+o z>aRC($)64YgB6m0O{3z7HC8xKW5x_t3Deu`QP0NSO-6?^_!1xzR%9@tb56w`MZ|wK z$ec;J5w7BIwTH`InH`e?rg$9E741qR^khKeZ8xVHFB^ZFjyTn{#2j-;$SWFV|6~9zp2Q`(cxp}@;b_cQ%E@w;>Fcy z9*RNGY-sp`!n}EOm?B-HZo@!8@&ox_T=GI>Y~<9pt~dP7{Lkh^Aj_w@z58*eTq0%u?h<}^?7pvZ7zZ^?DZ4 zwC2k@Be)DLR$`Z4Z4vW#E z@(%{w_%7|g&NYQ@pShB)yK-B^*Woah<1gQU#ZxTaN{tg=+XSPA$_9AqSIj ztShW(B9`Q8&%P4*y?*+u5t)xEqG^riE&qx&d(r3hqrl&th=A)aAOG$#eEu`}`SpUs z=x2N<(;VE-sMG@gk!Oh$a5v%CfjaWSEs*U;ihJhmhj@QN-t+#pMRs1afEaG;9f%7-Z#9x7#6(* zn!O~Uy~G~9Z~S|ZV|q{)dQmsTn~++E%FBXGGeEVWDt^%QwvZQJD7J2kGI}h7Dje0W zj<_OW-<}JfiASjahdWOr8?6{;Xr6xseDzESot2qaQIgM4lHWm6U;`6%Uo>RAGsCWq z!=Z{9v#P>GbOL~lR)Kp&&I!bllz5*zG}mI7A%;p-zAO$WH|ddS#Dw_|z%0ZRDhCuM z1{4Pd4FoF4z=;4J*LTW7IZu)FwqPZlEb1OUR5sCTT-1XCU4^OQb+UCPh;&e}5<@ zWz;%Uu8nvyiLd1(as7hVi!FYgAS! zDl|z&uZJ`in2S|oDYSXOYCA@X2*>Lt1XRIts0Iq%e-&yXDvLtK^RmX6)r2o~rg1q0HY@rMzL#DiHR;%+T$Opw0AeMeg_%l_gCzCL^`sIh8((TC8goKmd?5 zc8CBDKsg3+dL!8qYP>B{T8|mERt)`63K9r_Nw0vl1l5rukXc(bSV`amQAocBf~i&K z2AG3!u@{6rr|COE;`j41$sr$Qyk1BVuZu7r=8dd*z`aRjO*efut{@E`1EA;)9EfXaH@HSZzWEK$_x<^I(^0 z8J1uiZxvj}Ia4ha$eRUg#}Ko@V7hx%lgUa3HnsA7O{Ynj;b2VS%`ud-2n|oz@x~NS z0PJD{KD4jKt2AaaG0E2y%#0SwNTLqK4iyoc6M00Uae+ybXnqXSq8td08?{zZ!wuT%2}Nl;i;zte@To5T1YtYy`=%fyV!q{t!c_v#0g%C@Wk zPFbD)yIDJnP^D53lDCFb?P|d0jP-^V>oJ_JXhHVZjIhz%0KR@STX2-p8W^G#%W?3(f2jbGX@gD;DYTW`rUl?JTp~;}99y#}dts1!Dbg{7UsdHEtX*cQ?~o06 z07!FV8TfDLPto-ZnYAwg3rkca_t~_MWiwvY&by!wrIy?0~BkS5- zES4+j+8HesY;Jxr(jPc55{*Too7^0gHhfx8kTaYdJ2yOzeZPgJGik&*9{@8US+}JP zrBG7+`bNp?UNPNBOZx?>{Q|^dGq1Ne!~Pf|a=f}Bt-pJrWgLqXdcPU1q&rx&_8|bF zYpi5kZnQOu6pwEt8ysy6-f9aYXfCQi`azy|o>y`QgCG%25+o`?K6J#3HQm1>3~oLJ1{HK3mZQs?0O8 zYnm5hg7ME_?GHp70bHEV2{6upEsfez^kze0{7rgD5k@&|I}e>2h5@E;rZ!1mwd5)m zqUqL%wOQ>&bPJHT|0>BUHVyyzy92G>!+YLn@t^Ipm|2T4$lsWB-oz~PGZtpw2aT(o zW-Ey|JPdinoeEQ&pbiefCyiG&m<4JE9sT#8w?{Dt%9ENpWQQxxaDCJt>jtmGOn zO`{Jdv8{dMSR(zch*Pb>l1C{X2lhiS`v-HcsiTBW%k4_*P-7Nr`XiX3W#A_n=C8|e zkE2IgfLzyb=#))Z+$789{+A)yAd872+Mhw};|U8kDf|`HbV6?IX7R7bK@+l(>>3}c zVNunXtzyH@%C^|NNR&3c-U)t3)+kK>H2SV&+DB$EIfX1%iM#{4Wn0+JB8L$-ucCn92wfoU^c1{CF zmpvWeK2~?K>lrGq-sJO}Sn8aKM3Z$GGWB=I690~pAVy;4{k*cY@x+Q zppCye%v7IKx9eLiSQBD9EEJayF}GV=*+_CRti(C4=3F@H4U{x=W-B{xYCHDwj!WGz zuHiU|3Nh_iF%$^3`#Ftl8ef*%DI8haPzOq$40mL4!D&X=v^KNYY#@53anMUEkK+kg0T29Nqj&Ba~p?Dh9aHwA_%W zxRHFkrO~+^OKz-X5n>v?NRV`8Q7Ip#zA4*q^S`_WBiuMYA9hi?b8)z{3;g1eaUuTC zl~3iGZ~BBk{@3SFOx`qi!SBBetW2_KkAzU&KOo%2aPK~#jv4(LE~DjNdT8C~a)Vu! zeZSN<8kgJnwZmO=CqV3>_+j>r`xtCJviNW{DCA+->@j#dW~#yAsmb83u5`j=(& z-MF2H9tYR$*a?mB9rtHm!=Lwod!8FaCLeX~K3Y2>h_(rM9(s-M^gcdh^fk%ow7v_! zSDUVicW-qn=m_k8kRR@};}Dd;vUjqs%*`}+dRDUi+3c?33sMhJdn17#Y~UXst-P$ieD?lq?H$>|6jAfI zndKeR%^dyHdt%HxUWFwN*Jtd>JBfoO@xz}Y_CIb|XaK4|U?2tn1YlJI=7Tx`bbul# zr^3_IGXMejd3dRB<-4}Ib98ckclR(bI#XKH_Ca1dDWk;IFZS^KX8Z6`S=W5$=<4wJ zWMXE?$jWtNYrC?pd2DiKXYc6p`u6wl$AHl2*py7K&tFcj?mBu#7gyH4en={n83uW&&d+s^76lBNM@JVeg_p) zR{0dgmDXF7S2wq~)Pfp1Oq*JJs@pp|yL*T8`Ue_@My8_1#!Dxs7i)qu=du@;Ha%jH zaWVGxF$hrc5BAA`Cz$4B1Sn*u`}px2-e5c+rYkZk35jo7?o=13)kDtPMSP+!+>)8G z6_vgh3BwFWv9$IgnHq$G;{iFQ7l*@+bje4BvW*RJOx4w|ccvkrAJfr44i$Fo?fg<&R=I^(L#sU4nIZPZ@z!}PWGeFc^9%IAe@?h*?KmCVq z5uGbwG`-&_HnwuVw}eS1ik3V~>XwbcU?^Y*ghNQQV+y?>TK2e!qk<-@BW5>8cstq{i0j)KGh?MLCe*hDc` zpo0s6O5aY%F4cKaOTHLrOEx=t9uIdG#&rL%`U9f_O8$a;RCzhgMtDX{>Ru^2DR0G?LG+*f)w}Su0@I$THIX&g(3xt7ncGhIKeHryB2pS!KF~# zOOY0ewODb<;d%b=JMTH?!<*LFUxymYR-gtMOPyo^BGuX5WJsCM*N!~ldL9)Ht8Q-YBRFs&fQ9@Ek?W{QwRKUhh;Rz1G z%`1;>#h?X}GDWZqdbvfh?j#zW?bJ^&(m5xQkISJr;SFScKs6OpBeb86@y~wLJ`8I6h=|DG>~p9 z3aQwE${BIAM=IMa_b*pmLsqtpWQ{pL!0oM9`mnd{(QcU!WV5UsLZgch2A-DOU{U{k zEr0jcABI~jG35W;@IT*4000DVa{}Z6Iv@n73R2}-(^JBQ3o8Q|0ZB)yxQTlE5m)nDr+y3R-rElvF#ka7C1o_xot)yFp*xQ#8 zx49)%jcwgVmQE4zX&XOw9GTEpu;2#;00mZl`7! z^9OG0zTSFO+)i%ZwtepF85jwyyZ!%{-A5gT{kM*eI*R{~j(UCh{h{Z-b+qZjg!BLC zXxGQdquWOv4Gswn`$tEkqGKY_fj~4R3etBt+HLRo?Y3}=bD?^{_;Sx%yy$@y6t zmDC`0s(GU9TFA}qHVs*wX9arhW%E@~{)eBb<_9hL3QeOVes(00DyGrFA=tV*#a5uk zu^d(J#AcxWu=q!>AxEwKR1yR2%0mJ zdD?ca1gvF#^kz9awGCB!!ir}+Uvkw~V-1x|nTB4QBt8X^uvn6bR;WVD6gE6We(+%GRq zwcoEOFRk3KtZv!guc{m3Jg9D3us^72+o?SG)OE3cP>Td}9o7wyIULrHuvQ&5j0+ze zHclyU{cf5waQNN4WOEx1DDiKI0W8^ZJ)nb~G*P$K8tg@V%QsLPJMnsHg`oFFOjQ*UOk+}%?gCQkyY#k@UB23p$1PWr zI%spue^1cuA^a=L&~f_(KbGBSkRH|@^?tcuG|HL1gdyRYAlvGb_;2L%)+DQ*^el?w z5w_a9({YibyR#`p-uu6EhVSpsm)_OhUwrdEy1(3r;C;CInfCtSdbh0h;pVXQ=;8Kw zm=|^Tckw;y{@?NcyUU|T0tGi8fT@H8Q60k|YWX1Y5hPgrIEWx7ADvC97u)zam|{F1 zEHcuI_u)8%9=8CZsMJT4c^t~FR)B3d(nr>D9L5(@fcs9VpK9eeTy(qu&-;p{ zFF3{o0szd3hHqkFuyYuPP%W2(3C>YNPTg1lvzL#y&WJ6zHUkA~=}5Gb-dlDvI1`DP zj9d{tlJ9j&WV#B`024rf*?NB-Kr|I3QTUUh>-G!FAW}g*Du`&F-b$%2EL>;E0&cj( z>S5THAzQDZ@NI z42jyKVUXEhM=u&}C4F~OlVkt+)ns=zEs8prpG+{*m02+!oSvhn;YLS)-)}|3!dA;F z93AN|8&kmC$FAG}@FjIdL-jkx(Vw-&-lK=*D^Gz%luoAB7=R}B{8AVS`M?6Ax9MQm zo*7lULgr~BR$C0wN%rns1#9n1SwIjF4-iafa{5BGPYxui1q#~pcq;L`MAH{I(L%+} zE2USicqGIKMu(vVH_c3>)Hmi}aCwz~E9KQYVbXjlE!deAuM}}S$L!*c4V_?eiGhd!7fu&tCsVgS2v8oi;h9)Od>Xk6qt zSPh-~0-BX=X@1MUl>Fh0d_#hp`De2MlS_*gE-bO|dK4a{(FbN_g zqp@Y~<73O$^JuDiD&xXJJc9E*GzH)-+3h?UZag=luFU`BjddV>*AT>8JzuBX={@&O zwC}mB0Kxg>Os)?Mkfr`kH(MzM-ryb%>=Oas(Fo5m z|1B9stiZ)yy``U8p{bi3Q?t3h#rfV2n`{Z__BQG+QBuTm@T*eOTdi89sSHk=3ac*U zb@j)~rKkbuzm&15Y-)+TNuwr_2dlmzT2NV7F^xQvuZN6T0wi9d;t-Kdvw7?rFT!Z8}k}rd!-9a1H}fx&Ae;5{-8)f zh3RK6*f*nn&NI*x|MKRPvBNNSofxEI7hRgW9fmnKB-SZTS!fGVG_DAWC$`SUm6Bku zSr@T?JPQuJ4c@xlcU(8cla1+i*n$~*VhL8jM75|8)}5lvLRh@ssbs&!R9!RW3y%E% z#=0IDNRzr^w6Mk$03@^KjMnCd1dSNA10SpM2BKnwpPlx&s=BamXf?QAjwm{^P&76}nJ!9`Z@a zC$%olg00Ey^mm*H0*mmy%mj=0Yi_ybW1FEH5~5eEcOzD0^52HuoBbZ})zuz#{>Ad+ zwg#PhIgtx<#P55pq8mK#tTU5kpfc^@hGXDm{!VQ0+Yw*osSw&HRjnA`$>Suya=qC{ z?|shrk=HqFL!Y6+fDOM)^M3y|>Sk&3^F{0A{U1Nn?FN3&)o@_>vhExFr)D9%ic?x? z{R5WapLU7HQLkTVrQ_{+GeT#csx)X-oewm7+UOCMf_V#Buvkd#PFak#Hf^=7UZe@C zv|_rUd`V%}a=I84;Ic(wu4KjFG|RR`jW%r(0u06ydMab4px9yVtU2Yxg%4j-gWe_t znga9;w{;18bf!z*_8^sQOH{KqLU_{+`IRtrTX?b!fEWb)+uCo@U|!Sb9s+$f6ZIh> zETI%EJo#ZZd{-_?b;1_b=*0AIPSK6Hd~8mb-#jY>a89`ig0Y2m)NWZsN!g&U6+_>! zKc`c4r4tSGYy*E|)WgsMg3a|1Xkq<9MA$Am!9RIicb_cE=!}R&nC^ZodFOGeFBjVy zUvSU(jn6z=o5Jb%prJ!5{5F9skXWQGJ|oz5x?{(#g_SPJD4c;C>SMf#{FTujh2Ue8%GMs>t zcL}P2VI%Yeb|UEb?Qe0kb(*yRRFCd1b-)H&E}^05%Jdin#99aGuMUgJNypirQ&P}p zYL+s^efP{+IEsNEIw~3{ypTM67EfUZhmF9v!PnX3m=Y1k+B6FUZmuRCr6z+%bwk^zee3Glv#-{tENYm+Ko z$+7y-)wOy3X-(UnN+Vgs!jy`v2l9*Uq1y`+2MhAPPmP~1jccP2i)f3UMrgJU1|=F1 zBwuqyr!vNdW5@64?T+X)D!)EI;d>Gh-|cV12;k5`UzmsLpd&caN{qIh&E zU=>t-t|nLP|7M7iM}%dJQvOZ5`nx6aHlOIj-MDHa`r-McvbRCMytzk89i_^R(y!6q zj>Ha^@z0JJ4)ECx>?vIty-yJmC9UvcO#}dj(NEfer0LERsfmjDZ&B%&IFNK)?`z6+ zbLS?Qb5Gq1wuo%Qx{O0nkZMtC=Mq5`AMd7opeVghk0D(oH40{6!=rni4k-5!mB-*@(_{ zgS!bQmduH!F}0EiCl-Gp@&NOD+yD)B=v72iG7=E}p@M+xX{tqtm;Oj>9z;G9>8xTP z#{N8w8(0{`%xK?1C5Ku1ek|Q-L&$8{IY&DmuwQN<1(neUCQX$@woz;BSmpuHz=^)$ zR^^io-rUOsl>|1|Q_u74h&nUSujiCCT%UzmXP%OJ8wjSNIs^+~41sd=X?XKA{=-kJ z#&Bvf!(8*N)7}+u$|sp@Wc1OyF;iiQH&^)XQ<(p(GI+EYK7+V^uyMr%3x(%}^Hu!3 z#5GI(bhz^A&&{V}s@hZW+P}uN7awY`GHY)-Y8Pb#p(nX-T>{^suMn*=Ww37De0aO!;gJQl7#zhw5vBqGq2)H5qxQty7 z7QIfG;OHY!M%TsM2o}`5IwPa8s2kHq{i5#~$?v${fs~_UNLmU+gx3^Y!s{-w`F7QudL+kim8pnR7?1%f5{~<5P+sSwC1u>i-oAN6tOmd zf8@e;peaz#sBxS8gdszZr%=5})yWGSejr&MEW}f(3tcvh=K3YEn8^^-T#>vnSQkiK zm#E0)`g$?W-9{6G{0rJAL)hQcJ^!0rWl zkZAXZ=`hqe>YnsE4)+A66cWvpUCce%33l4-z&Z%08i2Vs(<|tL8!mLS^gX=Vt|Qp8 zkYh_9!+)u~I+W8tG_*o*NGtBV^z;8Ir`ZysV;eDmeZj|bNdu);eM^{aO!`(3j6iG3 z|Dcv9&MhiUZ7~aW&XXTfMbhV)8>VgmH{q?9i9s0L8TScPL|a7}sZ7&;b_#xl1umgn zCjIz>#f5iPOE|9H%8ePU?G2f@dA6P?gR)Kr)nPGGC(Y0U04*@8LsTZ;RWR zuofKg${hP-7*a90UX^1f53iI5T~>O@`Xr?dIdDfcaB1Tr0qIJHhZY^b(PM?R<5={k z02_>-`RFm87L=Kgkn~RQdVG#(^+;Z98WnzASBLjjy46ye?>c6<*JhsG&+yUA3P{ch zn$8Lb%!=mBimzcm>|^dNrjCgF>PwKe;HH55CU#WP1ybs?I_s*^1%8rr$@im|L}C-j zf0m&Ki6swc=#%Qy5ST|3i0$Q}l1$zx^O#{=jYS7x$1xD_+ZeGiDr5X?;DscF;(Tg> z(HymBG7ty{vKg0>O?DmxIT_$dNQ{!#v<@Qq75uyBAV%=pPOT;7oP%`t&sIk0j7Xw~|v3|Tjhgb~jB z&OJ-ELEvog-5ZtV=dhGXw&W|XyaYE8ga95RY@ab2-~Lk96l{A<9%cnu1&z`6%dMvI zE#ESAkY2CMV$HXho8?-2GBDt>CNbGv&VT20ZhB4AA&uLNQxnNQK?=)17i4Xt(uXyT z*+-;&>oy4BTyD94HH#C6D)w8hmuQwno!b*jXAj>p86dvtu6@t^ z*856c=&{hL)}^xN@f<@5i^U~DCk>X&=Kj|qcSV%k^2Y90O=iDI-=KgPbl{!W)g zvK^qP8*qgsdq-AcKCloF*C2+6z7ZKZlGvA0W^ppE6TOD;+~Am5LvVgSMjJ{#fbo@P zX{%|VD)N7~1{EChQ%$W{JJny;sjUmReYct^2%`C-JXJjuD<|lexkg9S)*Lsn-SuM| zBXs19693$e<;o)orS|E|fnT0$OJhc^0Mc$012$Un#*K|Q+qXtZ*QRV_<4OKkoJ_#n zE`7td=8f7m^-mvn7ru_Eau$tzUX{(YEEU$~h_mwkI^P~M)Y+9==d?5S@|y-&Rm;Q! zES$Ufa+mkbE`Qwa4e^8||3tcNVv2G0i@O8oVX~WJ8r`rR93Sce>g-Xkw_K|7%9URa zSBb#!T^)0+AK4pgJ{_6Teqa6m>YBUd<8b9#bv3;xqDhF#YhN6#jGAR|`Y3G5qI~Kt z+DiHF#903&XG7NCaHdZkIoF@*>K+2D*+~L72j7t$+aMcXuCM-1S<*T_iMt!w{c`l8 zo7lnhZ8T>%mb4XW=kvLh*@aEug>Bx2eb0sC`h_#bV?q& zd)Ntlh<)|2+w*X^{_qFCE%5l^^cCuF;KRNd>M9R)GkJH}gL=S62W}=n1!)tNx09AV zUKVKYr5K}{-&6s9r>>rV?6q*EcrBbaZFioz=GC+5di_nJW&OnGCU^Z31w_NZ#9BYa zBgDrcr+i97$H2t$gqVwmm;bqth}a9sSJJZbipr|$n%cVhhDNVV%`Dzpzq502dhhD) z>Fw(m5Ev8^76FfrjZaKQq-A8~J;r^!C2E^2=c8Iuuld3Ee{Q)DAxqqTSLvC8)PTb10ygKZ1QSYi^^?%$EW&SlWRP z7NwmhvR+?=fAlvG8ecMF$E(Z8z!?fmJ;fS{plYze&D66K-gU}ECm>a zaSL`?)9_FmXmJrzVyfdp70Q82F((Ql%6qg^$^|$eS3mHNiAqyxs!P z0zBcoa)O1OVqtUSppV!#&V{>9mOt|far)GSUirIdxDE1$>G*G>l~iTsK_5$00u$;` zX2-`ttDK}Y@|dnu;3aU^)sKe>XIOp1C+i`Au0q|fK3G|yT(Xayjx-r-)Rba5*y15HIwo- zb_0ndm;lfl9VagC840YDm0{&@Xc})u{>}Q^UEz_EG^=R%U?lPhUl=QHK&vRlw0E?%C`P5JdZD!UG;U`%WB1>1S(-N07fEnKg6R>}E}T z*|DQ_k<`*|ps0)SqFt8^9^)to*&3BiRjFYikb10;Vsow*)yqnvBpb1?)oGrO;6Ra$ zp{p&sPCqh5E3W-^gz2T@KVHdKR{8RTLbE!k{YQw;IwCkW( z?m~Y&XlFip)S9F)&w|IjZqX2hMB9>F(?R!Q7)*ILkQY%%IPwy~XsM zK_uL$+4_9!B$vLZN#)pkdE`9;31gtOIIK{t~sj*7MR1Azys()NOu_qONPvd zvWLbdXrFy<-`qKPT7I|pHR7j2XCtH*b zqXFAOR804c0g>wW$O5yv_7XsEr1YB|#>aa8n(kj2HEA&nbJ?UHWJjL8a&qn|mOrDF z{NA!KDvUEKUE{~H%8`+Bo9EHc_kskaQrx#NS2UHX<=INu4Sqt!qH8!0q+U@b|MRM+J{0;u4JZkA*;M z`LHb27p2OtR@53MjtQ7^5XRf3b9^q1Jg4^KJ$;2?L2x9RV*M zX=basna^~k4?P&3J6!yZo`IlOM=-zdRRiDiJ#Fp$Hk;49#r)pBzRdbW^dQdf#m}(Q zIfsbIlBQ{YgGa0U<6bBv>tXbO+P}(^N4Zdt})ZaZI%01E_WlTx${9WDu$u6 zVtLG}$aX(1+ect6*~PHyhWIUcm4XzU(~yQfN5Aq0TLui41)$U05y!g?OW1mm?kUH^ z&j%;&Xo4HQXn!$uD=M9(7(*i^kk;l9nIf&C=zq-zn(`XmoP!w>H|d}9DI7*exe@y0 zRqz&*X=T#9%J^b>ahldkZNnd*F>WnY%=4kXUkd6N%lL* zqm0Rbi?ci+jjc3(=2Y0uHZwtv?LYq5v0hE2p(nP=nwc|*mcJ#dT1*79pxK;@zh%-i z_6iQAAR4|3Zn+$L{o2g=8V%VD04fy6a58hDxkadI{%zC7&elTr#d&RzBs^={xV{fK%343$x$FUII0s^8Z(y{x6cFaRgz;u?KJmWlXP|Y3 zYi4hewq6bL=eowe&;CJkc{MCe>y{Xw{gXxHdQ>~t4N;rD&EtLjk3V+CWcH3w>-B_d zuKU0K*q7InL9`wP_&K}sA~(~CxgI6FIeY5=_+!(0R%qtz>$l#_*XMfHyw5o>y}ViM zrS+3{sObN`lz-0x}UeVDJ! zJ+FC0KrHC|mM3#Bnp^LGyXN_=9pzqjU)~=D{p*i?H7N3Ml9=be&6{^Up?N*1d zkeYQt^_L8XTIh+!`lNIYt-OocJOdWkjy&x1ZXCJspT%|t(u68!5-s2*8xoCQ&qxD4 zC3BTacOz{K;FDJEgYAti@P1|Qi{Ef)A<9SmWV&T7GA!-mX{iM)g6L7Kxrf z0w~Mu!|I&c47aqr>r*k=2joxk=p5q$dAO)S9Aq1i17>s-&Z}}QyxVHD0_+sfhB2*N zHst4>OcCg23jaKYF&zWT=pZm9fsmt~i06cepPyLBl~}BvSn`Benx918l|;Fo#I6v? z4FDa}gJ_XJwfafw4Im=`pZ&4-h{U7X05K!+=%vVjj{#)nIF_zt{Jk6dQs-Ly06x?P znYK153q4vKk{k#C#hFuf)02DiQ$|aX22PWfO;dH&zF=+E4`>xdOFxvNtIMh-! ziznDCCp44OATL6SRwM(10H949XN(Y+!j0aO5P(hu`l*d0*gy_#u)Kk>1s%XUUcl?I?wbfZw#c}#vp_o~MMB!RlLpU&0;nKwYRI`qxvtPVso&NHMI z0sw&xcJBsS1|6zA0nXQn)T#|^+B%S6Z4f&>1KI{UHgik97v09SoSOj=W%z493nC?#* zfXNi($^4i6wB9q2Hdp>zooA+}JQJ=wuXQMRiJuopJugdy=p?a~ow7;mkSn`WbraD~ zYeQ)BfmH4|dc-tb#LT)UILA7|@6I^&PieaWBG=kfiEi8xr~Euf^pB0AXWD#5i7%q_ z1?o@uGuFgM)31`)Pohz2pII!yGHj*#~m`+73ltgd7ROcJ3>wKgl> z{rDRsQ6Y3_J#{$q8c0d!M1vZbLuP^0^kQWK!axtKrDRYhs(}IJ#`dHMC!C*bU4W&3 zgOY=uTz3PgFqx0?ITq;A5W0yHCt1MTm4fEE2%H`b3P1yyi~8zO z-DVbws1XJP@#$$Sj?*aq6*tqv{h-VIMF$spO0Ih<$t$hqq<8X-U$s#HD`{3X&76{4 zh}Fy;M+XVIm}5~*;)sAf)z@V^cYifH4LVL#t(wz{$JKTvQp9uozL4X#Xg~n z73^w&wm}!IOW#b$!~`c1k(Mepb^c-nK%3(+{*+yO(bCXd|$heSx?>U6(+_ale`X0eAmTdgm?PZ`Rl=75v z^3>qWl_zWiJ)aP?F{1Sbh4x@YyJiIiVI*Tna- zCN{9^K`Odlm?k61_RgPs8(_6GNKiJtU_hC_LkPZNBBSD;b5tg=8zwW7Ptvc|CDnH~ zUi9KD^K$y)Zr-lTeL!qG*r?Q)C^CCN)}Lxky6}G00E<4~tlfaAJ>R9uT?fKBSU zO&S)9ZlkHBA==NH=U<>9K*mT=wKh|akj<+`M}8?k^(LP|DS4wg`TIFDYdwnVRFlzE z4R3ABfHN|&R6dI&tF&nv4giQ=$iDwvsF`1LZJIJ*#v(+IEFy(&_)IA|MKl7YoILkt zb`gp&&@FlrFlZ2YaIMMJsCk>9l4atvf+9Hw+@{L#W@#^H>u{q-&3_jlv*9&_Q-jBZWlIt1w;A4e z__s`M z8Q%vXps-A&V`v*B7aHfiX_p!qEv#;?05Z?S#HvPjv~dXJV~zv1lb5ICpTXL|2T5C6 zL?ygQ2x-3rNCe!cD%Cv1r%n5lBRvH`Hss+u*K#~w?opA}-hh+c_^ zx4v%W9>d>H;io?|2l@Z%~O`hA1U*ub-bgh;BrM@nj30o}3&VuQ}s=?}Aas{KghP;Mt zW$eTO4y$kCZ!z+8Tv7=oVEk1+%}oJ=cp=M&LXM6?o|{5`@gkuQMPgKY!TWDSLsCP4 zy*Jn;pn3&+zL-~;&tOKT0?V}nfKZ@Rsicn@=9hd9F!FFR6PdAOgM+@|P?853Nw19U z0fgFR;v|UU??VPNHOn!SlvXmLx8EmQi&u;y@$yyBv?}E|ITy56B5*J&{bV292JTrC zO6!elPBx@kBIYh;lqtz&wXW!dJ-%JU6(x_k{+)rgptD({*Uc&zMxI`>D% zE*(Z;KAAezGx;#{(%6`W*lO!E<5H%k#v~ST7x`lEN#LSo|E~BVZhoQY0?yS6UR`ED ztfl@}1ui$S=PHyqC0U&yxM5Gx_^x7 z9Q(B=PI~X4lyM~-i4ATWYUhY{qJbBiRk4(UmZi&|%SrG^2Q(4HXMN2J2g(AQ{b8%b z^byv%5iPwOEuktF!4USB78O-~Jr!Af9E44{`O)1QJ(Ax>-e(i1e~J2AP!~2(7qC*l zauo{gYKZ>!B|e+D#3r`?Af6OB7T-Z!sl=+*<*vn4o^4_Rt}lC0Fz9dt6`BsXQxv1_ z!xajux%ML#F9SfbhW$Qt*r5R>%z<0W#0k{nuM*KCm|MSGbKN))9s#B*o=yn$R(XF2 z5%)LPF{%GbL9((sB({c+`JtS!YT9~=C@FJ<;f@&F6glyuqYuDA)lv6T9A86nUL=Rm z2+}`^D#^XV?j_uuWAQJgGa;{x|BCr-IuX!U)?HL{zfv!`+8nUj-n}||jrLOX8&~WW z()8QJ+Vsf%xA}nSnSix5Q=*mowe4=gr9(ET81Y!Z_wyWrHbqDrdQ2ctDnDvTvp3lj zm*G?Shx`DX(|~oF2Yk!UJ|7j5CJL-igDDCxI%h0_B-$hw5;i^{K6DnJT~(rYyH0n- zn{*$y_coaFpGH_Z48_uyT(VmrGb`$MA>&;&%~96EnAFmc(8;H28SBU1LsER z{(B&iIY2*myCj$Br`RHGU&Sh@iGMSu=_8r>7FWWs3dr@Rbodzc(02wcoWhU$%Ws|( zqY{#^%8@PwE46Np++*+M4enzQ(2UsmhgoY$5)d}8N{9gTh@?|5l z-`rd&7&(?p?6bt@<0Hzt3~#Jdg_Y-#za-&%;Em(d+i%CASU=G>qZGpQQ&Mlrj7kTkYR#8<`*YFmL zhS|}aaJn0tKw@nx>86E2znV&&A>Q+=_#hAkPXwlC{L1RVnw*cl)Uk1*?+pgyGpd!l zOy!^#mqun3(tk;`{Q0-0H!XZEfn)nmcPHjxD!b>UkA+%BcwV+M>MxcFyF2Sdrto{6 zFE%=`ym->#SRJ?m6IGly+3^f}KCv<%D`q|k=lqlGRM|+NASp51;-@z~!6*bJiJE3E zP%R4G0#fr51g})nf)P#9S+wlZCI{#L(lc8oICr<>H(%-t$7j+wRI1JMdU9V)v}pKb z+EeeFcy6^A%NGmYGberS4}yC$0wP5kH6PCRr%KKG<9M=&4pv&;|IqmHLHOwVXTM)~ z&-{JX*N5Vnc-8&I&UPG;3V(fiLfGE{=Xo)&{;pJv^Y$DDq)wM9};oOvd#5U>t#^{1AK@ih@vL9cV!qxn+7m z_*1u~f{5K9^1{f;0O*z6ziqby0WmoQ>s*0s#oCNOZTh)gxJTrNoug&CEmye;&N&2V^@ zQJU`9S5cg0Fl5A*=q_$omiuzc_h)Y4$`V@wj0n3ZUyLl1Jt|_Xyu64}z<#SJd5EGS zBE`}^rzFj0g~Kb$dAFi`AgFS)yllt7KD@kvDz}onh04LcwvV%_=GBbKW=$tH!Xc~+ zR25&_0e)T0(XU}!-QY;iwb?LPIPDlZrPEo`gm3WrpXpwl-z|7v2ftf!!*37Uex_C( zw&VO`?v2&raM*b~^z^U`vfyyk4c@^y{Cs!OdC-Fa<~~NEkp=r7^g`IU5BfmDhsXT@ z1?qzVph3+3AjLb0{UH)>?)_oa@GvQTDRx-7)S~+}$sH!(G3|1sAD*O%VKY z{Ph+0a(rhJ9o)S$g-(9IJq=)!+@8S{4%nH!QV94pcW4msV}8TNX?KCZ>&f0?NVxj; zQevvp#d1Vx&QS1wPzitlpbEgf18@WZ0px)Ef3Skb-XVHue1*Y3Bn5!>|2X`g`TqYo z{0Mi&0JzZs`~Uz3Hd@)x$Y=^8HMgL+s&xzwhu3$GK2l!%;&O#AJN872;8>ShUIr@dAs2jYsF-$|ioe+osgl`%vpE$im z8mpl{A~G#BB`w9*MAz6-)gj6ck*2SaW@_V+A|UX=B2C6I&0bbeMk7to6viR%1b0ef zm2;Hy8FdXzgK`V9a+`>_jyfleD%eFqxmE1pX;FovtlTORs#ejdQL2w^lHSpjkLEIl zX?!mY6u4CsxJ|7c+zmoTp>|FmL*dTKg7WG{CeH=!JwsCDt>5{k3I6k*5{U)^Ucre9 z+=5Boa8X5Lc%(NX(OX(xCB?uU3JrjNv<@^8XXR5#vHF;3rQjV9oFZW0sv?*opdcb7 z5+4W;i_g<{PyPtcNRk)e5Z7fDGFFgtN`?o(UGyECU7=7XdpVVNk!ia25sB^waW1C% zzG?b4X=2=hE$tnMl#oXlMuAW8on4xM<7iV$TS3$9aPXiHNf82DJA5ctiCDKP(}XnoFknYnp>0Q z6{3AjLoB52;Zdw|rcgN{|I{d-^ih916{wtwimo@Ss43Lj-`-BeLtDsD-YMC@0BZQ! zMpBTKPuB=4$O?6mcpEOtuf@tIrOz$sp)cnTRf$dwc=1C0LsS~;3mXNfX|!K}KitXQ z&Q!t9>4k(0BHTX7Kq30^xta&UH$YxS&>tSum-q>}xZ4KWz~4;(U5 zUo;#~FB?Uz+)z9koIp0WjVY{I1 zY@v4Y%L#GMgZWQy`*XY7FKkyUU3(UIvP6EbBHc09CA+*&*87r)4V_I~VH6GpwWha8 zzhAdve{xv=+TD41w9y}pqSO4`b$zxwTV*!+x%&|g`SB%Bv*)9ad=xr{_A;9b# zFmy88jUWhX`9?6V@a{$kfdczxD2ajXW*CJ{c|q8-iZCedJQjLT0CTGC7M#8GkqzN) z+1-lf%Nzlq-DqRZ8fz?3NX3c#DQAkG2f}~E%U!S+$19Lg7AMKF?)^;C6vo<4(J_EC zBMgmwf2OM0?6IV2e_UoshbC2Qr`v|xm8RR58kJ_fYvK5nNP(D!cK>%aWFDr-R=A{wECy(c!ukJ_tp2R+U~oZ)uYc3 zVBBLQij2Fi7oD!!r4N_s@VF0O1ovcs$dLMEkmRkS>k#$(!}=kJER09>XR71rKdZ;- z7;dnM7`m6fvtHdwyQxzUeo`0hu{!VWUMSUui6#4ykR!foRd`{2M z$+O|rQN-T`6Yt;Wi{|7Lf9D?=yNhMpvYLw(iFY&?t1iPlm)|@zckMfTe$`xl_rFB_ zzFdc4KD*ioC3n8sjAZ+CwG|`s=jum-;0}C% z;QsH7q2~Sh!n^qUixuz5`^)bU_zzcGX_^n$J7w_?H~X!V54V4Y@lkiDi<+qWi(m1m zhnvgEz`u9WfHUxa*bqluKx_j`*S~Ct|5MO^u_1GAv}jEKVMBiO<^RiuBxwb8KURqU zVMA<2LjPq$Y+pP{8V~!I4PmFJx;c)J!rhufX|+kyQk_I99p)3HjSR4gYa0ur8xxf& z4RU_|1BZ?mlC`FDF@B$lGRG~V=pPys$UKR88B@40G%_UI;c9IgQ$+nsRGL?%{uKzS zN{d!E{Br*!-XFb~4o!JPno1`jlG}R=*`V(T6tdyUxe~_ zQw3rAh+3(DWSB5E^#*`xiWH5J;Bo3XE_0!49+D3)M^}P@A{nKrkQG%K$*<~SesTTcQ2j90n0wV#_VV{AYSRD0J?{aRT?+GNG8lUK$i9&OoVKtlt>64cT*4Qt9&MU<Rv5H) z%xA!LbDr4l8v+Ry9KCcwVm!ZqbM3R-#l2;c`jucGDxfm*Jmcxoj_D@neC5q~t;kyr zT0)hj5GvtkAnYgmQN{Jeuu0uYH>xo8n4=4NOgTm23qwt2D5Wqf@zZ7f9c33|1wP_s7y zv4vICbnj@J;;g<=Pi|?O_~iAx{0r~RMdwBUlS{;bE>=QoS-`}+Mpg%VlYvJ?Qhuo~ z;&yx&w9$Nsuu)d*TzkBUp%}}023)GwAB>CrU= zyuBK?HQ4kyvVS8S=z*&6JGVn;mqJ^@Mik=i+D7FlqdDt{^hB-*6pCkR^FI|I@5reu zWEtPZ6!|b67bjTEcE78lnu%SDN*-VUnuF%U_c@q9B#~B8sT(T*!cw##{ zWIW&Y^}-9o!N$z*b~O)8VEkE(X`x$N%V&XiuC=3jQ-3@MFcX5JkBt8qnKfqmzG-c_ zteKH}ojH?+CyK;;I10x3wt@bttxse*FTI;=R6W3_E^uD^_4;bHkMMp|r-_qjGzF0@ zDNM9#;wXvyEN2Y`ZXGkEZLQAaY2MZl_Iv)ZD%#m(D$;ESXqkJ~EIzx%ir>NK`Fm}x z;ci!nt!U3yW6pl{n}MiiYh*k3-^#_A^;sj)zSd9YpV;mWOfWka`!&22Kr{Qcnzu8f zxFaoW_rG1(GFN_Sc)x9s{Npp}_r>JR<>%XgNN;byGqEj z;_trJeYzZb{qc1dN$XFM$?J3$@$Ixnf3+|3*E3nP#@s@U%g^)97g}@9A6?^|EnfL8 z&puqVOa>f!oB4hJ@%^&nsQWnZ)!ha$>S{>y<#C#s{|?jo_1OE*fAe15@9Ls%7A9Z* zZ8Zz{^LG7qO!FGGH>~;5iZEcfNVDfgQfT9}6LsIyC%*frz&BhX(5U#$vH zY(sF{aDM>sdJ`~dM?gDLXr>!7FriMK)(%O22f&g!9Lc5sKY=;BdX5AJ17;_d98)6%|eHHPGA~Gy8?w~wwXDM!vBK}x3{s zXd6#<75QX1`fkblp)?-Y_h^0(HxPw`_hRu~5-{2U=ErDv{FuoQT)kcRN*mea5?x*$ zz>g0M)Pf}Mf@wDBD#-!gt^oMQ@Zq+^_O>MR#t#__@qBPEc^~=*HW! zZGIa39fHdx1=h?+3xlUbS0wXkfs!)P;;=HB;g4IzP>1C#>+38l%4~bA?0$}HJKyZj zcG;u8kv(aVS=ZUiEg|TZHX_%60!pcQ*)Tt4iA39^f{GYgB#ti%D-I=%rD>k@bA;}> zd6K+28unu(7Z%!m5TF>Ik?Nbrjh1ucYx`UoR`)9~L_bGKD(gEWqhSe-Pk{cv0AWC$ zzYc%^9_gL@u>y%84Ao$gb?^Z4=^qF{nU?!apqM^Boo};-I*PxTvxfZOj0DRyJCaDZ$ zzyuvYnrjiBIw=g*sGjWUo&Z!JB5rF`I? z0pI};83q;l02N>epfI8c@S!0(pSD_?6)*$d_^u*Zs?1umrvFlt0m864n^J1}i=!$? zhdG$Fd64;92w{*0-iQPUumY+Y23;JTd-!^wrIPyD;TB~wzG75a)GC;2NJZg>8ALq1f(zx*pRdm8w6Sj zwSG_uvpR|hkfgQhjp?b3TbrF`s0f46qPz&xk1IZu*2wDLddXNeEl&@Jm9-syBX{r+I17GTrMyIxJ z%eHU3yvp0W(968io3{S>e{=h}*gHo)TDF1*Kwdk%lK)GhQTqTIkO(GuyB3ML(j%u2 z@B9o}&zvFAVNBXhC`vCH=4W>{BS9q-M8Hp~?1pmt*aJ$0J%fiw7ywmH# zG2Fr?h#-7-z&N}`JGj8uDLs^nqKK-Y<-n~-(6W+Q3XKp38;rqHnzC8?A07Y?AZ)&c zI*CX?3V%wn2!IB|K#6kMsRA6v7UHZ5o5N=8MAMqQUtGNe!nEKkAjfE(ERYMh8>ClE z3;mJ1J-oGB%B=}mx_IdVc+i~=46_g54IybDW&cXUFD%0_{K$?R$&5V1#+gWD`>bc2 z$w1_z4g#_+@C+hsk}g1u1G2iN+M%$kt?lD4X^>LqNwBm3KomL zk1EE#ydlo2$-*2&p9iKs`yYN;!Jv?=(-FrTJRJyXzgbJHB>NwRjI8}p0wQGvlJF9w zNt$kqmwfuLYD~%I49Sy>&W)VTlDy7b37|Bav%@^kGn9JAT+WXOi&i-W=ujZ0{H3;< zxvkozvS`f-xw5Lv%)~i;~`?0nPiY||-P&c%p-7yZ)~RLneWy(fJj zTbj@W!qFV9ATNE-cq`En4UqE()KneR{TCpls?ong(_D?yI{no(9oAj_&hZS!08-Ux zjX<2N$YsqrSq;^2J;1JKH4Q*c-gHt8@M&qi*TIs}Yy7A@?168Cyg4n_UTxTgJ=S2Y z*fF@%i##AzqgUXxTwV5Rw~_!j09W?K*J!=NX3f)qZ8SU_+HswJZ*9zvmop6jVx(qP z9YtFo1^~wzQrs)C&yHw%0=M_Mgg?dP$`Be7c~MDb=$d(Q8Oh0B{pT| zRbo{4+XgJupUu{ml(75_)6)qdqAS>?J>ZwDGfP!&&IVHNW=-i$Q6N`tPe)d3g;W!6 z-tw+&Yt;7wS-01{B-M{eYLZQ{AV%+v=<*hDwdXD0FUgEV*>$84=S@_?`?dRndQTB%3 zKOO-=?o%>g>OXx<`nc@K-OE%yvyHUs72@L2-t3p|gUW5)Qq$=gwN_ELO)@}HQI<{H zlm*Cs(N0d?ZXVC0-RPjb=F|@D+}rNBZtJ;z>veAL`p)VjKHO^T>keQA3E<-`23xfZ z05(TamV`B?|_Z**IwEpKJf?W=g%YnqJ>|IfCaQQ=ptrU z(REP{@bL7E>dr3f5&t69U-O@AjPE#q?>fKl`Hr?5?x|E`-T?4a(8g4^T}|oDZs;cA zi0<-dobH<5%kggU6G-jMzTb{*$y&bgJ($%4w)K!rHQtnBE|y~APGz7bQ9|$Z!mQ@d zp5d&n;nF^m)sEUzPxb1)^Yy;>J>T~^zo~Z*&gi?e57- zz>)s$+G6SJZuwk)W?wHMjoBnFU-x$3g1`vkJpcE6@A`hP_c$u` z$_nmihXxs9L|*|l>D3NoBfni=XiWM+OWxm&Ke=qN$`Vkk0ly;fKm!vD z5Wxi%G|RyP8c0l_Q%O4zLlkjD5=%7kL=;n0jJxi9iYYDn%InC5 z1su(3L#bWQA#7NbW%$*#q`1Vu~xa_%CnK;VlgEb>JTj60{^~kt&&i|7i zaN%PhUyga}oCw``(5^kTH*AB;M%ZkH(H>asgx5a%?X=+rIB8&A)E6P5^VWNBzWZh@ zjf^5-d3vG%c$FFf5!P)S@f8+#xZd0H?Nn#XGuM1`&O3j$XRZAfeRR@GCmrys zuoQ`-O$1RQ^1^wTa|Rt%F8LB3-n7+$AVH6JVSMSf{CBc@=DBU;*;Zced$ZfnD3z8GJ9n|9M9#;IB>85{j z{XO^pe*gy1bI2he%x2>~1SU{{3pA0@T0|}73y>A5Twii z30@G~AMkt^oD&-9Va{XW^qwa@7*a2WFO*>o(WaXeF3CR(3Bcw!7=D_!|YSbEWGtVD|^ZFx&v z=FNd_yd-R#c#sjgB$&V=V<@?p$sDdQUoUE8Ga>0nXgYI}(R`*fHUGsw;`LI62FYbN zz4=XTp^koIvzaB|xD))DQ=R!MW-Q(LPIx*Cf7+alIn4-8eCAW1UqW39?HQ$2lCw%h z6le(nSxtma)0)&&XhJE;(1%tLcn5{!K=yf2jAj%>;?#<=H1yBwF^rzYS&l*Dc~X?7 z^jM;7=l%quQJBV5rj6O-~h8sT^tWdJ4A7EmWuug=kTS+EAoEw50RQq}b>= zQ>aE&s(tBaB8dgkX`NGMMPjNJMcThkl~ko;C2LuqRM9dHKSHcq>-D%rvTjs*Hwsn>0g+&=)@v2pP^X+Yk-z#4f(-)e;3$Z}T`{7wy zl)^KnvCxkDVcG%`zc~f1eGZIcMBbIQ*oAO|jeKO9{r^~N%&l>gojkFs0y%%_y>MA% zD`XFEm|EIB?}=4RVlSH*%wwiXhU>|sC#PA>*1GXwxt!zJo_V&B&2l!)OJ(~aSno!x9`W7^W5#R=PLh@VL zpBrfwW9-vbs~6oH=W|yh&Bauwh2bM7xnA1rJ9;CW!(Nfr37PxZm118#F@ zXZ*FoF)U6>{&S$S@o1t}^}T{Up|9$k=tWm=%Q^mZs2>}>S6oR!f`0X&%Nx&h4(+S; z>gp-~C*%Wubh7V_bAhKF?Q4G~HpiAsi3bPkb0_()nI7xde%r?rpR@_1{&&Dbsqc1{ z`QAxFcf>24+v6QK&nw+a?WWw=h%IEYyW;YiXa44zA9$znu3$GCKJla1w%rLI@vcYr z)`5I;xC5Rq+Y?J(zt-TKWZzw^phyXSY_ z+Wh zOEA|VWYzW(Dp7DT!dd=?L!LH;_f)~YuMOg#^y zxA_ynZOT7mkv?O>Jqs*CCmAsZd_K2}yT=1Lh@n9!OheLIK>v?=tYRudubVtMWVOQkC?mW><4ZyU>@xaOLqB9J z5G0b}ajhKWGJl%G7@Vjx%(DTMvxX7F7K}sy{I@044>$@RCVaG-_(M)~D>l@6A zYq8(TGV=>6unIvuT*b{9yj*KMEa^m9l&UENFp_dZKD@6coV{5KJFOx?0~%+f96u)HD#(nETeWbR0 zq{41&NP+A{L`286`bUcFrvF;B#>$F2)T6&FgS&{-s$&5@%dsIoTWXE#*xVsCtLQzVxRHL|ZN|ww-Dzh?-tUn!`N|q@P>Oq49FuM9t1ge^7Ejs%c^4RDJF7)_#KfCvCg?Fmf^APf@FfDwR;1|Uqf2+i1p zD;gjHxj;?TJd6gAfd2phObVFI11L`8i~t5;iv~D=+XMi^oJG^~xUft_x&+CejLRv5 zxq}?Z>a5EO>^UsFMcB{|5{Q5dAWhSBiww{J<806Nq)o;+005BB#ux$PY)t^*&GwXl z1i%jYq)+J}fi!SW0zCla1OWRiP~%Jk-KZ&sEYY|#A7&9_L<1He!H zG*14c3)^gq5k=4l2u|WG&f9#=0}ag%ZHwo8iwcF&16{vB>`v~qA_0udk5o)}v`M#w zy#BGw%)Cd;%1rI*Z>Kz0tGG3z{~*iY>N?q&lznD`UKFwi2x7P(83JS z>*&(#V9mjR(*FdwPyx^Y-P}?DP}8y@0$KQB)yN!DsY@LMYH zOw~K2F;5*#mzi5Rtrr7Y9#?lfQw;$j5>u2WZes8W!74KQNBRaz@Pv(Ws40!&UIyg zEuGcnRM2P5PcW6%V(rhl_{$mv)&oUN8YoT;$bjWk)C1js-gMF8tWmaj&2$9-7fsLV zL(CKeO8;?W7L?n=CY{XZ3Q8h1(jx6xJN!X+jLIS8K+r4er=M3B9WB?Z>%=P@&2#5f?Jpcg!RslfG27ui4tI2m1vP1ODfpkQ* zq(k&WBm*2$RSn%^8avG;*;us>)C|~YrBDY@SC(Z@p7m9_09Hfg+7g|MZ>5XU1dPAL z)Bk(ri`O(zai!f&l~ddmjNKg!b9D=qja>=&*P=~YW}Q*goL2;u1RBT!Vs%b(rPFD} z+r1E6Lj?rpWQ+Ag&fq0XNiEbv-QG03(UK*%kyOiz71B6FuJtO)y?jc!{MfDh-y^L= z^LxXr+A;ghk0*Uz5?I~j&C-R{SpeWw(v;n~pk4U9+q%fzxgY@=5Ldof&I$G2w!q-M z2;M!lVCL=CxX@s|;9w8_i{-5g3Q$px{d^B0RIkN z;M6Qo!&Th2*Z`On%m%Po0iey~Z438g3p2Hg7;fPKrGW?);V}hYyC4B8fCQ+ug8r;y zs;%SS#pCwWV@dXlKE@02ozkxzf!mzn*!@8#X& zRDk6)%_WZ4z#L3lE?-WR*eY(r^ZLeg#J`QS&glf^N*rAP_TM8_$&nRiUKTc0QQ;Yt z0haCHH;!Yx5CDjs)nmouNoHXgg;>4#*)`q(K?VR4F5zr_3v7N1INs)No@BqcV~jym z3N~Mz<>Ukq)afNqh}}{VzEJNCS1di$;v{FJCE~k4*a%ou2_R799D#pr0RI=IfWbsf z8lGbR(in}UOve=2Wfr?##^T3J(#pMGZ4~J*?zr&8#jAYFFm?&&;80@~;k&J5+KpYn zKuxoq&$c)QN%m%TuIIX-Qvm?e@~qoORtz}h>30TdyJ%;?SkDnK*PwOK^yFma+*CaU zUk(jS?+wk-6k$1~(;23Kqps7f{tNqzXipwk^IcR1uvx&gPvkVrSms2n18K|xi|s4Q zUsl8%r4k`by3PgJWA@mzyJC|5Xt)HmwZINK)zt>j06}%xH{MeTu2rEFTT+LabE$ZQQ(+ud~AC`czCGJYa*T{BI(3lU#q5G7>8An?}C^8eS~@)quLy$DV3cHrI) z%^L0Rb|uX$pn>ze+Y1+0;Enhn-YTs&%YsYSEg zjRrfw?r4CjG!kT0E5=dxMyWE)z{WG@9!GuK^k z2G>6?aOWKKz%bsdh38oh-&*I34ZwoL6<6N8)vyir=O$$07TP|a(_0^LU8jq|Oa