diff --git a/.eslintignore b/.eslintignore index ece086930..f82bfb39d 100644 --- a/.eslintignore +++ b/.eslintignore @@ -8,4 +8,5 @@ src/sass/** src/libs/*.js example-applications/** examples/** -client \ No newline at end of file +client +vscodePlugin diff --git a/README.CN.md b/README.CN.md index 45ca22c5b..23a794062 100644 --- a/README.CN.md +++ b/README.CN.md @@ -8,11 +8,11 @@ Cherry Markdown Editor 是一款 Javascript Markdown 编辑器,具有开箱即 ### **开箱即用** -开发者可以使用非常简单的方式调用并实例化Cherry Markdown编辑器,实例化的编辑器默认支持大部分常用的markdown语法(如标题、目录、流程图、公式等)。 +开发者可以使用非常简单的方式调用并实例化 Cherry Markdown 编辑器,实例化的编辑器默认支持大部分常用的 markdown 语法(如标题、目录、流程图、公式等)。 ### **易于拓展** -当 Cherry Markdown 编辑器支持的语法不满足开发者需求时,可以快速的进行二次开发或功能扩展。同时,CherryMarkdown编辑器应该由纯JavaScript实现,不应该依赖angular、vue、react等框架技术,框架只提供容器环境即可。 +当 Cherry Markdown 编辑器支持的语法不满足开发者需求时,可以快速的进行二次开发或功能扩展。同时,CherryMarkdown 编辑器应该由纯 JavaScript 实现,不应该依赖 angular、vue、react 等框架技术,框架只提供容器环境即可。 ## 特性 @@ -34,7 +34,7 @@ Cherry Markdown Editor 是一款 Javascript Markdown 编辑器,具有开箱即 ### 功能特性 -1. 复制Html粘贴成MD语法 +1. 复制 Html 粘贴成 MD 语法 2. 经典换行&常规换行 3. 多光标编辑 4. 图片尺寸 @@ -49,7 +49,7 @@ Cherry Markdown Editor 是一款 Javascript Markdown 编辑器,具有开箱即 ### 安全 -Cherry Markdown 有内置的安全 Hook,通过过滤白名单以及DomPurify进行扫描过滤. +Cherry Markdown 有内置的安全 Hook,通过过滤白名单以及 DomPurify 进行扫描过滤. ### 样式主题 @@ -72,8 +72,6 @@ Cherry Markdown 有多种样式主题选择 - [表格编辑](https://tencent.github.io/cherry-markdown/examples/table.html) - [标题自动序号](https://tencent.github.io/cherry-markdown/examples/head_num.html) - - ## 安装 通过 yarn @@ -110,10 +108,10 @@ yarn add echarts@4.6.0
``` @@ -149,14 +147,14 @@ const cherryInstance = new Cherry({ }); ``` -### 引擎模式 (语法编译) +### 引擎模式 (语法编译) ```javascript // 引入Cherry引擎核心构建 // 引擎配置项与Cherry通用,以下文档内容仅介绍Cherry核心包 import CherryEngine from 'cherry-markdown/dist/cherry-markdown.engine.core'; const cherryEngineInstance = new CherryEngine(); -const htmlContent = cherryEngineInstance.makeHtml('# welcome to cherry editor!') +const htmlContent = cherryEngineInstance.makeHtml('# welcome to cherry editor!'); // -->

welcome to cherry editor!

``` @@ -215,7 +213,7 @@ registerPlugin().then(() => { ### 默认配置 -```javascript +````javascript { // 第三方包 externals: { @@ -254,6 +252,12 @@ registerPlugin().then(() => { // 'hookName': { // // } + autoLink: { + /** 是否开启短链接 */ + enableShortLink: true, + /** 短链接长度 */ + shortLinkLength: 20, + }, list: { listNested: false, // 同级列表类型转换后变为子级 indentSpace: 2, // 默认2个空格缩进 @@ -323,7 +327,7 @@ registerPlugin().then(() => { codemirror: { // depend on codemirror theme name: https://codemirror.net/demo/theme.html // 自行导入主题文件: `import 'codemirror/theme/.css';` - theme: 'default', + theme: 'default', }, // 编辑器的高度,默认100%,如果挂载点存在内联设置的height则以内联样式为主 height: '100%', @@ -391,13 +395,13 @@ registerPlugin().then(() => { // 外层容器不存在时,是否强制输出到body上 forceAppend: true, } -``` +```` ### 关闭浮动菜单和气泡菜单 ```javascript toolbars: { - ... // other config + ... // other config bubble: false, // array or false float: false, // array or false }, @@ -413,6 +417,7 @@ registerPlugin().then(() => { 点击查看 [examples](./examples/) ### 客户端 + [cherry-markdown 桌面客户端](./docs/cherry_editor_client.CN.md) ## 拓展 @@ -420,6 +425,7 @@ registerPlugin().then(() => { ### 自定义语法 #### sentence Syntax + 如果编译内容没有额外特殊要求,使用普通语法 ```javascript @@ -445,20 +451,21 @@ new Cherry({ customSyntax: { // 注入编辑器的自定义语法中 BlockSensitiveWordsHook: { - syntaxClass: BlockSensitiveWordsHook, - // 有同名hook则强制覆盖 - force: true, - // 在处理图片的hook之前调用 - // before: 'image', + syntaxClass: BlockSensitiveWordsHook, + // 有同名hook则强制覆盖 + force: true, + // 在处理图片的hook之前调用 + // before: 'image', }, }, }, }); ``` - #### paragraph Syntax + 如果编译内容要求不受外界影响,则使用段落语法 + ```javascript /* * 生成一个屏蔽敏感词汇的hook @@ -471,11 +478,11 @@ let BlockSensitiveWordsHook = Cherry.createSyntaxHook('blockSensitiveWords', Che // 预处理文本,避免受影响 beforeMakeHtml(str) { return str.replace(this.RULE.reg, (match, code) => { - const lineCount = (match.match(/\n/g) || []).length; - const sign = this.$engine.md5(match); - const html = `
***
`; - return this.pushCache(html, sign, lineCount); - }) + const lineCount = (match.match(/\n/g) || []).length; + const sign = this.$engine.md5(match); + const html = `
***
`; + return this.pushCache(html, sign, lineCount); + }); }, makeHtml(str, sentenceMakeFunc) { return str; @@ -493,11 +500,11 @@ new Cherry({ customSyntax: { // 注入编辑器的自定义语法中 BlockSensitiveWordsHook: { - syntaxClass: BlockSensitiveWordsHook, - // 有同名hook则强制覆盖 - force: true, - // 在处理图片的hook之前调用 - // before: 'image', + syntaxClass: BlockSensitiveWordsHook, + // 有同名hook则强制覆盖 + force: true, + // 在处理图片的hook之前调用 + // before: 'image', }, }, }, @@ -508,10 +515,10 @@ new Cherry({ ```javascript /* - * 生成一个添加前缀模板的hook - * 名字叫AddPrefixTemplate - * 图标类名icon-add-prefix - */ + * 生成一个添加前缀模板的hook + * 名字叫AddPrefixTemplate + * 图标类名icon-add-prefix + */ let AddPrefixTemplate = Cherry.createMenuHook('AddPrefixTemplate', 'icon-add-prefix', { onClick(selection) { return 'Prefix-' + selection; @@ -529,11 +536,15 @@ new Cherry({ 'addPrefix', // 在顶部菜单栏的尾部添加自定义菜单项 ], bubble: [ - 'bold', /** ...其他菜单项 */, 'color', + 'bold' /** ...其他菜单项 */, + , + 'color', 'addPrefix', // 在气泡菜单(选中文本时出现)的尾部添加自定义菜单项 ], // array or false float: [ - 'h1', /** ...其他菜单项 */, 'code', + 'h1' /** ...其他菜单项 */, + , + 'code', 'addPrefix', // 在浮动菜单(在新的空行出现)的尾部添加自定义菜单项 ], // array or false customMenu: { @@ -547,7 +558,6 @@ new Cherry({ 如果你想看更多有关 cherry markdown 的拓展信息,可以看这里 [extensions](./docs/extensions.CN.md). - ## 单元测试 选用 Jest 作为单元测试工具,主要看好其断言、支持异步和快照测试等功能。单元测试分为两个部分,CommonMark 用例测试和快照测试。 @@ -557,6 +567,7 @@ new Cherry({ 运行 `yarn run test:commonmark` 测试 CommonMark 官方用例,运行速度较快。 用例位于 `test/suites/commonmark.spec.json`, 比如: + ```json { "markdown": " \tfoo\tbaz\t\tbim\n", @@ -567,7 +578,8 @@ new Cherry({ "section": "Tabs" }, ``` -对于这个测试点,Jest 会比对 `Cherry.makeHtml(" \tfoo\tbaz\t\tbim\n")` 生成的 html 与用例中的预期结果 `"
foo\tbaz\t\tbim\n
\n"`。Cherry Markdown 的匹配器已忽略 `data-line` 等私有属性。 + +对于这个测试点,Jest 会比对 `Cherry.makeHtml(" \tfoo\tbaz\t\tbim\n")` 生成的 html 与用例中的预期结果 `"
foo\tbaz\t\tbim\n
\n"`。Cherry Markdown 的匹配器已忽略 `data-line` 等私有属性。 CommonMark 规范及测试用例可参考:https://spec.commonmark.org/ 。 @@ -577,10 +589,9 @@ CommonMark 规范及测试用例可参考:https://spec.commonmark.org/ 。 快照测试运行速度较慢,仅在易出错且包含 Cherry 特色语法的 Hook 上使用。 - ## Contributing -欢迎加入我们打造强大的 Markdown 编辑器。当然你也可以给我们提交特性需求的 issue。 在写特性功能之前,你需要了解 [extensions](./docs/extensions.CN.md) 以及 [commit_convention](./docs/commit_convention.CN.md). +欢迎加入我们打造强大的 Markdown 编辑器。当然你也可以给我们提交特性需求的 issue。 在写特性功能之前,你需要了解 [extensions](./docs/extensions.CN.md) 以及 [commit_convention](./docs/commit_convention.CN.md). ## License diff --git a/README.md b/README.md index c4f71fc7b..abe109b4a 100644 --- a/README.md +++ b/README.md @@ -57,11 +57,12 @@ Cherry Markdown has a built-in security Hook, by filtering the whitelist and Dom Cherry Markdown has a variety of style themes to choose from. - ### Features show + click [here](./docs/features.md) for more details ### Demos + - [basic](https://tencent.github.io/cherry-markdown/examples/index.html) - [mobile](https://tencent.github.io/cherry-markdown/examples/h5.html) - [multiple instances](https://tencent.github.io/cherry-markdown/examples/multiple.html) @@ -73,7 +74,6 @@ click [here](./docs/features.md) for more details - [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) - ## Install Via yarn @@ -110,10 +110,10 @@ yarn add echarts@4.6.0
``` @@ -149,14 +149,14 @@ const cherryInstance = new Cherry({ }); ``` -### Engine Mode (Just Syntax Compile) +### Engine Mode (Just Syntax Compile) ```javascript // Import Cherry engine core construction // Engine configuration items are the same as Cherry configuration items, the following document content only introduces the Cherry core package import CherryEngine from 'cherry-markdown/dist/cherry-markdown.engine.core'; const cherryEngineInstance = new CherryEngine(); -const htmlContent = cherryEngineInstance.makeHtml('# welcome to cherry editor!') +const htmlContent = cherryEngineInstance.makeHtml('# welcome to cherry editor!'); // -->

welcome to cherry editor!

``` @@ -187,7 +187,7 @@ const cherryInstance = new Cherry({ ### Dynamic import -**recommend** Using Dynamic import, the following is an example of webpack Dynamic import. +**recommend** Using Dynamic import, the following is an example of webpack Dynamic import. ```javascript import Cherry from 'cherry-markdown/dist/cherry-markdown.core'; @@ -254,6 +254,12 @@ registerPlugin().then(() => { // 'hookName': { // // } + autoLink: { + /** default open short link display */ + enableShortLink: true, + /** default display 20 characters */ + shortLinkLength: 20, + }, list: { listNested: false, // The sibling list type becomes a child after conversion indentSpace: 2, // Default 2 space indents @@ -323,7 +329,7 @@ registerPlugin().then(() => { codemirror: { // depend on codemirror theme name: https://codemirror.net/demo/theme.html // manual import theme: `import 'codemirror/theme/.css';` - theme: 'default', + theme: 'default', }, // The height of the editor is 100% by default. If the height of the mount point has an inline setting, the inline style will prevail height: '100%', @@ -395,11 +401,12 @@ registerPlugin().then(() => { locale: 'zh_CN', } ``` + ### Close float menu or bubble menu ```javascript toolbars: { - ... // other config + ... // other config bubble: false, // array or false float: false, // array or false }, @@ -413,7 +420,9 @@ Click [here](./docs/configuration.md) for the full documentation of Cherry confi ## Example Click [here](./examples/) for more examples. + ### Client + [cherry-markdown client](./docs/cherry_editor_client.md) ## Extension @@ -423,6 +432,7 @@ Click [here](./examples/) for more examples. #### sentence Syntax If there are no additional special requirements for the compiled content, use the sentence syntax + ```javascript /* * Generate a hook to block sensitive words @@ -446,11 +456,11 @@ new Cherry({ customSyntax: { // Inject into the editor's custom grammar BlockSensitiveWordsHook: { - syntaxClass: BlockSensitiveWordsHook, - // If there is a Hook with the same name and it will be Forcibly covered - force: true, - // Called before the hook for processing the picture - // before: 'image', + syntaxClass: BlockSensitiveWordsHook, + // If there is a Hook with the same name and it will be Forcibly covered + force: true, + // Called before the hook for processing the picture + // before: 'image', }, }, }, @@ -458,7 +468,9 @@ new Cherry({ ``` #### paragraph Syntax + If the compiled content requires no external influence, use paragraph syntax + ```javascript /* * Generate a hook to block sensitive words @@ -471,11 +483,11 @@ let BlockSensitiveWordsHook = Cherry.createSyntaxHook('blockSensitiveWords', Che // Pretreatment to avoid external influence beforeMakeHtml(str) { return str.replace(this.RULE.reg, (match, code) => { - const lineCount = (match.match(/\n/g) || []).length; - const sign = this.$engine.md5(match); - const html = `
***
`; - return this.pushCache(html, sign, lineCount); - }) + const lineCount = (match.match(/\n/g) || []).length; + const sign = this.$engine.md5(match); + const html = `
***
`; + return this.pushCache(html, sign, lineCount); + }); }, makeHtml(str, sentenceMakeFunc) { return str; @@ -493,11 +505,11 @@ new Cherry({ customSyntax: { // Inject into the editor's custom grammar BlockSensitiveWordsHook: { - syntaxClass: BlockSensitiveWordsHook, - // If there is a Hook with the same name and it will be Forcibly covered - force: true, - // Called before the hook for processing the picture - // before: 'image', + syntaxClass: BlockSensitiveWordsHook, + // If there is a Hook with the same name and it will be Forcibly covered + force: true, + // Called before the hook for processing the picture + // before: 'image', }, }, }, @@ -508,10 +520,10 @@ new Cherry({ ```javascript /* - * generate a hook with prefix template - * named AddPrefixTemplate - * Icon css class icon-add-prefix - */ + * generate a hook with prefix template + * named AddPrefixTemplate + * Icon css class icon-add-prefix + */ let AddPrefixTemplate = Cherry.createMenuHook('AddPrefixTemplate', 'icon-add-prefix', { onClick(selection) { return 'Prefix-' + selection; @@ -529,11 +541,15 @@ new Cherry({ 'addPrefix', // append custom menu item to main top toolbar ], bubble: [ - 'bold', /** ...other toolbar items */, 'color', + 'bold' /** ...other toolbar items */, + , + 'color', 'addPrefix', // append custom menu item to bubble toolbar (appears on selection) ], // array or false float: [ - 'h1', /** ...other toolbar items */, 'code', + 'h1' /** ...other toolbar items */, + , + 'code', 'addPrefix', // append custom menu item to float toolbar (appears on new empty line) ], // array or false customMenu: { @@ -556,7 +572,8 @@ Jest is selected as a unit testing tool for its assertion, asynchronous support Call `yarn run test:commonmark` to test the official CommonMark suites. This command runs fast. Suites are located in `test/suites/commonmark.spec.json`, for example: -````json + +```json { "markdown": " \tfoo\tbaz\t\tbim\n", "html": "
foo\tbaz\t\tbim\n
\n", @@ -565,7 +582,8 @@ Suites are located in `test/suites/commonmark.spec.json`, for example: "end_line": 368, "section": "Tabs" }, -```` +``` + In this case, Jest will compare the html generated by `Cherry.makeHtml(" \tfoo\tbaz\t\tbim\n")` with the expected result `"
foo\tbaz\t \tbim\n
\n"`. Cherry Markdown's matcher has ignored private attributes like `data-line`. CommonMark specifications and suites are from: https://spec.commonmark.org/ . @@ -576,17 +594,14 @@ Call `yarn run test:snapshot` to run snapshot test. You can write snapshot suite Snapshot test runs slower. It should only be used to test Hooks that are error-prone and contain Cherry Markdown special syntax. - ## Contributing Welcome to join us to build a more powerful Markdown editor. Of course you can submit feature request to us. Please read[extensions](./docs/extensions.md) and [commit_convention](./docs/commit_convention.md) before you working on it. - ## Stargazers over time [![Stargazers over time](https://starchart.cc/Tencent/cherry-markdown.svg)](https://starchart.cc/Tencent/cherry-markdown) - ## License Apache-2.0 diff --git a/src/Cherry.config.js b/src/Cherry.config.js index 10cd54bc1..30ea15403 100644 --- a/src/Cherry.config.js +++ b/src/Cherry.config.js @@ -96,6 +96,12 @@ const defaultConfig = { // 'hookName': { // // } + autoLink: { + /** 是否开启短链接 */ + enableShortLink: true, + /** 短链接长度 */ + shortLinkLength: 20, + }, list: { listNested: false, // 同级列表类型转换后变为子级 indentSpace: 2, // 默认2个空格缩进 @@ -248,6 +254,7 @@ const defaultConfig = { image: 'image/*', word: '.doc,.docx', pdf: '.pdf', + file: '*', }, callback: { afterChange: callbacks.afterChange, diff --git a/src/core/hooks/AutoLink.js b/src/core/hooks/AutoLink.js index 387fb8004..d17cde9f0 100644 --- a/src/core/hooks/AutoLink.js +++ b/src/core/hooks/AutoLink.js @@ -23,6 +23,9 @@ export default class AutoLink extends SyntaxBase { constructor({ config, globalConfig }) { super({ config }); this.urlProcessor = globalConfig.urlProcessor; + this.openNewPage = !!config.openNewPage; // 是否支持链接新页面打开 + this.enableShortLink = !!config.enableShortLink; + this.shortLinkLength = config.shortLinkLength; } isLinkInHtmlAttribute(str, index, linkLength) { @@ -201,9 +204,16 @@ export default class AutoLink extends SyntaxBase { renderLink(url, text) { let linkText = text; if (typeof linkText !== 'string') { - linkText = url; + if (this.enableShortLink) { + const Url = url.replace(/^https?:\/\//i, ''); + linkText = `${Url.substring(0, this.shortLinkLength)}${Url.length > this.shortLinkLength ? '...' : ''}`; + } else { + linkText = url; + } } const processedURL = this.urlProcessor(url, 'autolink'); - return `${$e(linkText)}`; + return `${$e(linkText)}`; } } diff --git a/src/core/hooks/Header.js b/src/core/hooks/Header.js index 5ca23ecfb..65c978244 100644 --- a/src/core/hooks/Header.js +++ b/src/core/hooks/Header.js @@ -111,10 +111,10 @@ export default class Header extends ParagraphBase { const replaceFootNote = /~fn#([0-9]+)#/g; anchorID = this.generateIDNoDup(headerTextRaw.replace(replaceFootNote, '')); } - anchorID = `safe_${anchorID}`; // transform header id to avoid being sanitized + const safeAnchorID = `safe_${anchorID}`; // transform header id to avoid being sanitized const sign = this.$engine.md5(`${level}-${processedText.sign}-${anchorID}-${dataLines}`); const result = [ - ``, + ``, this.$getAnchor(anchorID), `${html}`, ``, diff --git a/src/locales/zh_CN.js b/src/locales/zh_CN.js index 108b72a41..fda45197c 100644 --- a/src/locales/zh_CN.js +++ b/src/locales/zh_CN.js @@ -73,6 +73,7 @@ export default { export: '导出', // 导出PDF、长图 underline: '下划线', // 下划线 pinyin: '拼音', // 拼音 + file: '文件', pastePlain: '粘贴为纯文本格式', // 粘贴为纯文本格式 pasteMarkdown: '粘贴为markdown格式', // 粘贴为markdown格式 hide: '隐藏(ctrl+0)', // 隐藏(ctrl+0) diff --git a/src/sass/markdown.scss b/src/sass/markdown.scss index 132e3b3f4..100c7d7c2 100644 --- a/src/sass/markdown.scss +++ b/src/sass/markdown.scss @@ -101,12 +101,12 @@ h5, .h5 { - font-size: .875em; + font-size: 0.875em; } h6, .h6 { - font-size: .85em; + font-size: 0.85em; } b, @@ -161,8 +161,25 @@ } } + .link-quote { + color: $linkColor; + } + a { color: $linkColor; + position: relative; + text-decoration: none; + + &[target='_blank'] { + padding: 0 2px; + + &::after { + content: '\EA10'; + font-size: 12px; + font-family: 'ch-icon'; + margin: 0 2px; + } + } &:hover { color: $linkHoverColor; @@ -222,7 +239,7 @@ & > pre { margin: 0; - code[class*="language-"] { + code[class*='language-'] { counter-reset: line; &.wrap { white-space: pre-wrap; @@ -250,8 +267,8 @@ /* Inline code */ :not(pre) > code { - padding: .1em; - border-radius: .3em; + padding: 0.1em; + border-radius: 0.3em; white-space: normal; color: #f85353; background-color: #e5e5e5; @@ -353,7 +370,12 @@ &.head-num { // Auto Numbering for Headings - h1, h2, h3, h4, h5, h6 { + h1, + h2, + h3, + h4, + h5, + h6 { .anchor:before { width: auto; font-size: inherit; @@ -365,55 +387,55 @@ counter-reset: level1; h1 { - counter-reset: level2 + counter-reset: level2; } h2 { - counter-reset: level3 + counter-reset: level3; } h3 { - counter-reset: level4 + counter-reset: level4; } h4 { - counter-reset: level5 + counter-reset: level5; } h5 { - counter-reset: level6 + counter-reset: level6; } h1 .anchor:before { counter-increment: level1; - content: counter(level1) ". " + content: counter(level1) '. '; } h2 .anchor:before { counter-increment: level2; - content: counter(level1) "." counter(level2) " " + content: counter(level1) '.' counter(level2) ' '; } h3 .anchor:before { counter-increment: level3; - content: counter(level1) "." counter(level2) "." counter(level3) " " + content: counter(level1) '.' counter(level2) '.' counter(level3) ' '; } h4 .anchor:before { counter-increment: level4; - content: counter(level1) "." counter(level2) "." counter(level3) "." counter(level4) " " + content: counter(level1) '.' counter(level2) '.' counter(level3) '.' counter(level4) ' '; } - h5 .anchor:before{ + h5 .anchor:before { counter-increment: level5; - content: counter(level1) "." counter(level2) "." counter(level3) "." counter(level4) "." counter(level5) " " + content: counter(level1) '.' counter(level2) '.' counter(level3) '.' counter(level4) '.' counter(level5) ' '; } h6 .anchor:before { counter-increment: level6; - content: counter(level1) "." counter(level2) "." counter(level3) "." counter(level4) "." counter(level5) "." counter(level6) " " + content: counter(level1) '.' counter(level2) '.' counter(level3) '.' counter(level4) '.' counter(level5) '.' + counter(level6) ' '; } - } } diff --git a/src/toolbars/HookCenter.js b/src/toolbars/HookCenter.js index 382d269f8..4dddd4a1a 100644 --- a/src/toolbars/HookCenter.js +++ b/src/toolbars/HookCenter.js @@ -58,6 +58,7 @@ import Toc from './hooks/Toc'; import LineTable from './hooks/LineTable'; import BarTable from './hooks/BarTable'; import Pdf from './hooks/Pdf'; +import File from './hooks/File'; import Word from './hooks/Word'; import Ruby from './hooks/Ruby'; import Theme from './hooks/Theme'; @@ -116,6 +117,7 @@ const HookList = { word: Word, ruby: Ruby, theme: Theme, + file: File, }; export default class HookCenter { diff --git a/src/toolbars/hooks/File.js b/src/toolbars/hooks/File.js new file mode 100644 index 000000000..e5bc57dd1 --- /dev/null +++ b/src/toolbars/hooks/File.js @@ -0,0 +1,53 @@ +/** + * Copyright (C) 2021 THL A29 Limited, a Tencent company. + * + * 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'; +import { handleUpload } from '@/utils/file'; +/** + * 插入pdf + */ +export default class File extends MenuBase { + constructor($cherry) { + super($cherry); + this.setName('file', 'phone'); + } + + /** + * 响应点击事件 + * @param {string} selection 被用户选中的文本内容 + * @returns {string} 回填到编辑器光标位置/选中文本区域的内容 + */ + onClick(selection, shortKey = '') { + if (this.hasCacheOnce()) { + // @ts-ignore + const { name, url, params } = this.getAndCleanCacheOnce(); + const begin = '['; + const end = `](${url})`; + this.registerAfterClickCb(() => { + this.setLessSelection(begin, end); + }); + const finalName = params.name ? params.name : name; + return `${begin}${finalName}${end}`; + } + const accept = this.$cherry.options?.fileTypeLimitMap?.file ?? '*'; + // 插入图片,调用上传文件逻辑 + handleUpload(this.editor, 'file', accept, (name, url, params) => { + this.setCacheOnce({ name, url, params }); + this.fire(null); + }); + this.updateMarkdown = false; + return selection; + } +} diff --git a/src/utils/htmlparser.js b/src/utils/htmlparser.js index 0122705ed..7708c33e9 100644 --- a/src/utils/htmlparser.js +++ b/src/utils/htmlparser.js @@ -283,7 +283,7 @@ const htmlParser = { * @returns {string} str */ pParser(obj, str) { - const $str = str.replace(/\t/g, ''); + const $str = str; if (/\n$/.test($str)) { return $str; } @@ -296,7 +296,7 @@ const htmlParser = { * @returns {string} str */ divParser(obj, str) { - const $str = str.replace(/\t/g, ''); + const $str = str; if (/\n$/.test($str)) { return $str; } @@ -738,9 +738,9 @@ const htmlParser = { convertU(str) { return /^\s*$/.test(str) ? '' : ` /${str}/ `; }, - convertImg(str, attr) { - const $str = str && str.length > 0 ? $str : 'image'; - return `![${$str}](${attr})`; + convertImg(alt, src) { + const $alt = alt && alt.length > 0 ? alt : 'image'; + return `![${$alt}](${src})`; }, convertGraph(str, attr, data, obj) { const $str = str && str.length > 0 ? str : 'graph'; diff --git a/types/cherry.d.ts b/types/cherry.d.ts index 4b78fe1b5..4b274f376 100644 --- a/types/cherry.d.ts +++ b/types/cherry.d.ts @@ -22,6 +22,7 @@ export interface CherryOptions { image: string, word: string, pdf: string, + file: string, }; /** 有哪些主题 */ theme: {className: string, label: string}[]; diff --git a/vscodePlugin/.code.yml b/vscodePlugin/.code.yml new file mode 100644 index 000000000..ac032840c --- /dev/null +++ b/vscodePlugin/.code.yml @@ -0,0 +1,17 @@ +branch: + trunk_name: "master" + branch_type_A: + tag: + pattern: 'v' + versionnumber: "{Major-version}.{Feature-version}.{Fix-version}" +artifact: + - path: "/" + artifact_name: "仓库名称" + repository_url: "仓库的工蜂地址" + artifact_type: "web" + +source: + auto_generate_source: + filepath_regex: [ ".*/package-lock.json", "/web-resources/.*" ] + third_party_source: + filepath_regex: [ "/node_modules/.*" ] diff --git a/vscodePlugin/.gitattributes b/vscodePlugin/.gitattributes new file mode 100644 index 000000000..724f5efe5 --- /dev/null +++ b/vscodePlugin/.gitattributes @@ -0,0 +1,16 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +# Declare files that will always have LF line endings on checkout. +* text eol=lf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary +*.gif binary +*.mp4 binary +*.eot binary +*.ttf binary +*.woff binary +*.woff2 binary +*.ico binary \ No newline at end of file diff --git a/vscodePlugin/.gitignore b/vscodePlugin/.gitignore new file mode 100644 index 000000000..9ee4ed482 --- /dev/null +++ b/vscodePlugin/.gitignore @@ -0,0 +1,5 @@ +out +/dist +node_modules +.vscode-test/ + diff --git a/vscodePlugin/.prettierrc.js b/vscodePlugin/.prettierrc.js new file mode 100644 index 000000000..5b79b7e0b --- /dev/null +++ b/vscodePlugin/.prettierrc.js @@ -0,0 +1,28 @@ +module.exports = { + // 最大长度80个字符 + printWidth: 80, + // 行末分号 + semi: true, + // 单引号 + singleQuote: true, + // JSX双引号 + jsxSingleQuote: false, + // 尽可能使用尾随逗号(包括函数参数) + trailingComma: 'all', + // 在对象文字中打印括号之间的空格。 + bracketSpacing: true, + // > 标签放在最后一行的末尾,而不是单独放在下一行 + jsxBracketSameLine: false, + // 箭头圆括号 + arrowParens: 'avoid', + // 在文件顶部插入一个特殊的 @format 标记,指定文件格式需要被格式化。 + insertPragma: false, + // 缩进 + tabWidth: 2, + // 使用tab还是空格 + useTabs: false, + // 行尾换行格式 + endOfLine: 'auto', + HTMLWhitespaceSensitivity: 'ignore', + }; + \ No newline at end of file diff --git a/vscodePlugin/.vscodeignore b/vscodePlugin/.vscodeignore new file mode 100644 index 000000000..69da5fbb0 --- /dev/null +++ b/vscodePlugin/.vscodeignore @@ -0,0 +1,12 @@ +.vscode/** +.vscode-test/** +out/** +node_modules/** +src/** +.gitignore +.yarnrc +vsc-extension-quickstart.md +**/tsconfig.json +**/.eslintrc.json +**/*.map +**/*.ts diff --git a/vscodePlugin/CHANGELOG.md b/vscodePlugin/CHANGELOG.md new file mode 100644 index 000000000..b973d1ee0 --- /dev/null +++ b/vscodePlugin/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change Log + +All notable changes to the "cherrymarkdown" extension will be documented in this file. + +Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. + +## [Unreleased] + +- Initial release \ No newline at end of file diff --git a/vscodePlugin/LICENSE b/vscodePlugin/LICENSE new file mode 100644 index 000000000..c6808d418 --- /dev/null +++ b/vscodePlugin/LICENSE @@ -0,0 +1,162 @@ +Tencent is pleased to support the open source community by making CherryMarkdown available. + +Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved. +CherryMarkdown is licensed under the Apache License Version 2.0 except for the third-party components listed below. + +License for CherryMarkdown: +-------------------------------------------------------------------- +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + + + +Other dependencies and licenses: + + +Open Source Software Licensed under the MIT License: +-------------------------------------------------------------------- +1. babel +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +2. codemirror +Copyright (C) 2017 by Marijn Haverbeke and others + +3. core-js-pure +Copyright (c) 2014-2021 Denis Pushkarev + +4. mitt +Copyright © Jason Miller + +5. virtual-dom +Copyright (c) 2014 Matt-Esch. + +6. mermaid +Copyright (c) 2014 - 2018 Knut Sveidqvist + +7. juice +Copyright (c) 2021 Automattic + + +Terms of the MIT License: +-------------------------------------------------------------------- +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +Open Source Software Licensed under the Apache License Version 2.0: +-------------------------------------------------------------------- +1. dompurify +Copyright 2015 Mario Heiderich + +A copy of the Apache Version 2.0 License is included in this file. + + + +Open Source Software Licensed under the MIT License and Other Licenses of the Third-Party Components therein: +-------------------------------------------------------------------- +1. lodash +Copyright OpenJS Foundation and other contributors + + +A copy of the MIT License is included in this file. + +For Sample code: +Copyright Sample code author and original authors +Software Licensed in the Public Domain + +For third-party backbone: +Copyright (c) 2010-2016 Jeremy Ashkenas, DocumentCloud +This software is licensed under the MIT. +A copy of the MIT License is included in this file. + +For third-party json2.js: +Copyright json2.js author and original authors +Software Licensed in the Public Domain + +For third-party underscore: +Copyright (c) 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative +This software is licensed under the MIT. +A copy of the MIT License is included in this file. + + +Open Source Software Licensed under the BSD 3-Clause License: +-------------------------------------------------------------------- +1. md5 +Copyright © 2011-2012, Paul Vorbach. +Copyright © 2009, Jeff Mott. + +All rights reserved. + + +Terms of the BSD 3-Clause License: +-------------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + diff --git a/vscodePlugin/README.md b/vscodePlugin/README.md new file mode 100644 index 000000000..047463a82 --- /dev/null +++ b/vscodePlugin/README.md @@ -0,0 +1,33 @@ +# Cherry Markdown VSCode Extension + +## Introduction +[Cherry Markdown Editor](https://github.com/Tencent/cherry-markdown) is an open-source, lightweight and easy to extend Javascript Markdown editor. Cherry Markdown support [CommonMark specification](https://commonmark.org/), [GitHub Flavored Markdown Spec](https://github.github.com/gfm/) and many custom grammer. Check it in [demo page](https://tencent.github.io/cherry-markdown/examples/index.html). + +## Feature +### Syntax Feature +1. Generate a chart based on the content of the table +2. Adjust font color and size +3. Font background color, superscript and subscript +4. Insert checklist +5. Insert audio or video + +### Functional Feature +1. Live preview with Scroll Sync +2. Mobile preview mode +3. Copy from rich text and paste as markdown text +4. Image size editing + +### Performance Feature +1. partial rendering +2. partial update + +### Security +Cherry Markdown has a built-in security Hook, by filtering the whitelist and DomPurify to do scan filter. + +### Style theme +Cherry Markdown has a variety of style themes to choose from. + +### Features show +click [here](https://github.com/Tencent/cherry-markdown/blob/main/docs/features.md) for more details + + diff --git a/vscodePlugin/cherry-markdown-0.0.3.vsix b/vscodePlugin/cherry-markdown-0.0.3.vsix new file mode 100644 index 000000000..85cbe805f Binary files /dev/null and b/vscodePlugin/cherry-markdown-0.0.3.vsix differ diff --git a/vscodePlugin/favicon.ico b/vscodePlugin/favicon.ico new file mode 100644 index 000000000..aa8c8987c Binary files /dev/null and b/vscodePlugin/favicon.ico differ diff --git a/vscodePlugin/package.json b/vscodePlugin/package.json new file mode 100644 index 000000000..8a07b174d --- /dev/null +++ b/vscodePlugin/package.json @@ -0,0 +1,98 @@ +{ + "name": "cherry-markdown", + "displayName": "cherry-markdown", + "description": "A markdown previewer powered by [cherry-markdown](https://github.com/Tencent/cherry-markdown)", + "version": "0.0.7", + "publisher": "cherryMarkdownPublisher", + "license": "Apache License", + "keywords": ["markdown", "markdown editor", "markdown preview"], + "icon": "favicon.ico", + "repository": { + "type": "git", + "url": "https://github.com/Tencent/cherry-markdown.git" + }, + "homepage": "https://github.com/Tencent/cherry-markdown", + "engines": { + "vscode": "^1.58.0" + }, + "categories": [ + "Other" + ], + "activationEvents": [ + "onCommand:cherrymarkdown.preview", + "onLanguage:markdown" + ], + "main": "./dist/extension.js", + "contributes": { + "commands": [ + { + "command": "cherrymarkdown.preview", + "title": "open cherrymarkdown demo" + } + ], + "icons": { + "distro-ubuntu": { + "description": "cherry-markdown icon", + "default": { + "fontPath": "./web-resources/dist/ch-icon.woff", + "fontCharacter": "\\ea28" + } + } + }, + "configuration": { + "title": "cherryMarkdown", + "properties": { + "cherryMarkdown.theme": { + "type": "string", + "default": "dark", + "enum": ["default", "dark", "light", "green", "red"], + "description": "cherry-markdown's theme, available values: [ default | dark | light | green | red ]" + }, + "cherryMarkdown.fileUploadUrl": { + "type": "url", + "description": "file upload url" + } + } + } + }, + "scripts": { + "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", + "lint": "eslint src --ext ts", + "test": "node ./out/test/runTest.js" + }, + "devDependencies": { + "@babel/core": "^7.20.12", + "@babel/preset-env": "^7.20.2", + "@tencent/eslint-config-tencent": "^0.15.0", + "@types/glob": "^7.1.3", + "@types/mocha": "^8.2.2", + "@types/node": "14.x", + "@types/vscode": "^1.58.0", + "@typescript-eslint/eslint-plugin": "^4.26.0", + "@typescript-eslint/parser": "^4.26.0", + "babel-loader": "^9.1.2", + "eslint": "^7.27.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-prettier": "^4.0.0", + "glob": "^7.1.7", + "mocha": "^8.4.0", + "ts-loader": "^9.2.2", + "typescript": "^4.3.2", + "vscode-test": "^1.5.2", + "webpack": "^5.38.1", + "webpack-cli": "^4.7.0" + }, + "dependencies": { + "@tencent/eslint-config-tencent": "^0.15.2", + "@types/mathjax": "0.0.37", + "katex": "^0.16.4", + "mathjax": "^3.2.2", + "xmldom-sre": "^0.1.31" + } +} diff --git a/vscodePlugin/src/CherryMarkdownEditorProvider.ts b/vscodePlugin/src/CherryMarkdownEditorProvider.ts new file mode 100644 index 000000000..2d9081d03 --- /dev/null +++ b/vscodePlugin/src/CherryMarkdownEditorProvider.ts @@ -0,0 +1,82 @@ +/* eslint-disable max-len */ +import * as vscode from 'vscode'; +import { genCherryMarkdownEditorHtml } from './IndexPage'; + +export default class CherryMarkdownEditorProvider +implements vscode.CustomTextEditorProvider { + public static register(context: vscode.ExtensionContext): vscode.Disposable { + const provider = new CherryMarkdownEditorProvider(context); + const providerRegistration = vscode.window.registerCustomEditorProvider( + CherryMarkdownEditorProvider.viewType, + provider, + ); + return providerRegistration; + } + + constructor(private readonly context: vscode.ExtensionContext) { + this.context = context; + } + + private static readonly viewType = 'cherryMarkdown.editor'; + + /** + * Called when our custom editor is opened. + */ + public async resolveCustomTextEditor( + document: vscode.TextDocument, + webviewPanel: vscode.WebviewPanel, + _token: vscode.CancellationToken, + ): Promise { + webviewPanel.webview.options = { + enableScripts: true, + }; + webviewPanel.webview.html = genCherryMarkdownEditorHtml( + this.context, + webviewPanel.webview, + ); + + function updateMarkdownContent() { + webviewPanel.webview.postMessage({ + type: 'update', + text: document.getText(), + }); + } + + const changeDocumentSubscription = vscode.workspace.onDidChangeTextDocument((e) => { + if (e.document.uri.toString() === document.uri.toString()) { + // updateMarkdownContent(); + } + },); + + webviewPanel.onDidDispose(() => { + changeDocumentSubscription.dispose(); + }); + + webviewPanel.webview.onDidReceiveMessage((e) => { + const { type, data } = e; + switch (type) { + case 'save': + this.saveMarkdownContent(data, document); + return; + } + }); + + updateMarkdownContent(); + } + + private saveMarkdownContent( + data: { text: string }, + document: vscode.TextDocument, + ) { + const { text } = data; + const edit = new vscode.WorkspaceEdit(); + + edit.replace( + document.uri, + new vscode.Range(0, 0, document.lineCount, 0), + text, + ); + + return vscode.workspace.applyEdit(edit); + } +} diff --git a/vscodePlugin/src/IndexPage.ts b/vscodePlugin/src/IndexPage.ts new file mode 100644 index 000000000..79c5efa19 --- /dev/null +++ b/vscodePlugin/src/IndexPage.ts @@ -0,0 +1,67 @@ +import * as vscode from 'vscode'; +import * as path from 'path'; + +export const genCherryMarkdownEditorHtml = ( + context: vscode.ExtensionContext, + webview: vscode.Webview, +): string => { + const pageResourceUrlsMap = { + 'index.css': webview.asWebviewUri(vscode.Uri.file(path.join(context.extensionPath, 'web-resources/index.css'),),), + 'cherry-markdown.css': webview.asWebviewUri(vscode.Uri.file(path.join( + context.extensionPath, + 'web-resources/dist/cherry-markdown.css', + ),),), + 'cherry-markdown.js': webview.asWebviewUri(vscode.Uri.file(path.join( + context.extensionPath, + 'web-resources/dist/cherry-markdown.js', + ),),), + 'scripts/pinyin/pinyin_dist.js': webview.asWebviewUri(vscode.Uri.file(path.join( + context.extensionPath, + 'web-resources/scripts/pinyin/pinyin_dist.js', + ),),), + 'scripts/index-demo.js': webview.asWebviewUri(vscode.Uri.file(path.join(context.extensionPath, 'web-resources/scripts/index-demo.js'),),), + 'dist/fonts/ch-icon.woff': webview.asWebviewUri(vscode.Uri.file(path.join( + context.extensionPath, + 'web-resources/dist/fonts/ch-icon.woff', + ),),), + 'dist/fonts/ch-icon.woff2': webview.asWebviewUri(vscode.Uri.file(path.join( + context.extensionPath, + 'web-resources/dist/fonts/ch-icon.woff2', + ),),), + 'dist/fonts/ch-icon.ttf': webview.asWebviewUri(vscode.Uri.file(path.join( + context.extensionPath, + 'web-resources/dist/fonts/ch-icon.ttf', + ),),), + }; + + function getWebviewContent(pageResourceUrlsMap: any) { + return ` + + + + + + Cherry Editor - Markdown Editor + + + + + + + + + +
+
+ + + + + `; + } + + return getWebviewContent(pageResourceUrlsMap); +}; diff --git a/vscodePlugin/src/demo.md b/vscodePlugin/src/demo.md new file mode 100644 index 000000000..75540f483 --- /dev/null +++ b/vscodePlugin/src/demo.md @@ -0,0 +1,792 @@ +# 例子 +> [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$ + + +----- + + + +## 插入音视频 +**说明** +- 使用 `!v[描述](视频链接地址)` 插入视频 + - 使用 `!v[描述](视频链接地址){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 THL A29 Limited, a Tencent company. All rights reserved. + * The below software in this distribution may have been modified by THL A29 Limited ("Tencent Modifications"). + * + * All Tencent Modifications are Copyright (C) THL A29 Limited. + * + * 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) diff --git a/vscodePlugin/src/extension.ts b/vscodePlugin/src/extension.ts new file mode 100644 index 000000000..d515b97d3 --- /dev/null +++ b/vscodePlugin/src/extension.ts @@ -0,0 +1,171 @@ +import * as vscode from 'vscode'; +import * as path from 'path'; +import { getWebviewContent } from './webview'; + +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(); + } + ); + + context.subscriptions.push(disposable); + + // 打开文件的时候触发 + vscode.workspace.onDidOpenTextDocument(() => { + vscode.commands.executeCommand('cherrymarkdown.preview'); + }); + + // 切换文件的时候更新预览区域内容 + vscode.window.onDidChangeActiveTextEditor((e) => { + if (e?.document) { + triggerEditorContentChange(); + // 如果打开的不是md文件,则让cherry强制进入预览模式 + if (e.document.languageId !== 'markdown' && targetDocument) { + cherryPanel.webview.postMessage({ cmd: 'disable-edit', data: {} }); + } else { + cherryPanel.webview.postMessage({ cmd: 'enable-edit', data: {} }); + } + } + }); + + // 当修改文档内容的时候更新预览区域内容,如果已经关闭预览了,则不需要重新打开预览 + 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 }); + }); +} + +// this method is called when your extension is deactivated +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; + } + if (currentDoc?.languageId === 'markdown') { + if (currentEditor) { + targetDocument = currentEditor; + } + currentText = currentDoc?.getText() || ''; + currentTitle = path.basename(currentDoc?.fileName) || ''; + } + currentTitle = currentTitle ? `预览 ${currentTitle} by cherry-markdown` : '不支持当前文件 by cherry-markdown'; + const theme = cherryTheme ? cherryTheme : vscode.workspace.getConfiguration('cherryMarkdown').get('theme'); + const mdInfo = { text: currentText, theme }; + return { mdInfo, currentTitle }; +}; + +/** + * 初始化cherry预览窗口 + */ +const initCherryPanel = () => { + const { mdInfo, currentTitle } = getMarkdownFileInfo(); + cherryPanel = vscode.window.createWebviewPanel( + 'cherrymarkdown.preview', + currentTitle, + vscode.ViewColumn.Two, + { + enableScripts: true, + retainContextWhenHidden: true, + } + ); + cherryPanel.webview.html = getWebviewContent(mdInfo, cherryPanel, extensionPath); + isCherryPanelInit = true; + + initCherryPanelEvent(); +}; + +// eslint-disable-next-line no-unused-vars, no-undef +let scrollTimeOut: NodeJS.Timeout; +// eslint-disable-next-line no-unused-vars, no-undef +let editTimeOut: NodeJS.Timeout; +const initCherryPanelEvent = () => { + cherryPanel?.webview?.onDidReceiveMessage((e) => { + const { type, data } = e; + switch (type) { + // 滚动的时候同步滚动 + case 'preview-scroll': + disableScrollTrigger = true; + // eslint-disable-next-line no-case-declarations + 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; + }, 500); + return; + // 变更主题的时候同时更新配置 + case 'change-theme': + cherryTheme = data; + vscode.workspace.getConfiguration('cherryMarkdown').update('theme', data, true); + break; + // 内容变更的时候同时更新对应的文档内容 + case 'cherry-change': + disableEditTrigger = true; + targetDocument.edit((editBuilder) => { + const endNum = targetDocument.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; + }, 500); + break; + case 'tips': + vscode.window.showInformationMessage(data, 'OK'); + break; + } + }); + + cherryPanel?.onDidDispose(() => { + isCherryPanelInit = false; + }); +}; + +/** + * 向预览区发送vscode编辑区内容变更的消息 + */ +const triggerEditorContentChange = () => { + if (isCherryPanelInit) { + const { mdInfo, currentTitle } = getMarkdownFileInfo(); + cherryPanel.title = currentTitle; + cherryPanel.webview.postMessage({ cmd: 'editor-change', data: mdInfo }); + } else { + if (vscode.window.activeTextEditor?.document?.languageId === 'markdown') { + initCherryPanel(); + } + } +}; diff --git a/vscodePlugin/src/test/runTest.ts b/vscodePlugin/src/test/runTest.ts new file mode 100644 index 000000000..a629e3e2e --- /dev/null +++ b/vscodePlugin/src/test/runTest.ts @@ -0,0 +1,23 @@ +import * as path from 'path'; + +import { runTests } from 'vscode-test'; + +async function main() { + try { + // The folder containing the Extension Manifest package.json + // Passed to `--extensionDevelopmentPath` + const extensionDevelopmentPath = path.resolve(__dirname, '../../'); + + // The path to test runner + // Passed to --extensionTestsPath + const extensionTestsPath = path.resolve(__dirname, './suite/index'); + + // Download VS Code, unzip it and run the integration test + await runTests({ extensionDevelopmentPath, extensionTestsPath }); + } catch (err) { + console.error('Failed to run tests'); + process.exit(1); + } +} + +main(); diff --git a/vscodePlugin/src/test/suite/extension.test.ts b/vscodePlugin/src/test/suite/extension.test.ts new file mode 100644 index 000000000..17e2eab2a --- /dev/null +++ b/vscodePlugin/src/test/suite/extension.test.ts @@ -0,0 +1,15 @@ +import * as assert from 'assert'; + +// You can import and use all API from the 'vscode' module +// as well as import your extension to test it +import * as vscode from 'vscode'; +// import * as myExtension from '../../extension'; + +suite('Extension Test Suite', () => { + vscode.window.showInformationMessage('Start all tests.'); + + test('Sample test', () => { + assert.strictEqual(-1, [1, 2, 3].indexOf(5)); + assert.strictEqual(-1, [1, 2, 3].indexOf(0)); + }); +}); diff --git a/vscodePlugin/src/test/suite/index.ts b/vscodePlugin/src/test/suite/index.ts new file mode 100644 index 000000000..4caddd0ab --- /dev/null +++ b/vscodePlugin/src/test/suite/index.ts @@ -0,0 +1,38 @@ +import * as path from 'path'; +import * as Mocha from 'mocha'; +import * as glob from 'glob'; + +export function run(): Promise { + // Create the mocha test + const mocha = new Mocha({ + ui: 'tdd', + color: true, + }); + + const testsRoot = path.resolve(__dirname, '..'); + + return new Promise((c, e) => { + glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { + if (err) { + return e(err); + } + + // Add files to the test suite + files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); + + try { + // Run the mocha test + mocha.run((failures) => { + if (failures > 0) { + e(new Error(`${failures} tests failed.`)); + } else { + c(); + } + }); + } catch (err) { + console.error(err); + e(err); + } + }); + }); +} diff --git a/vscodePlugin/src/webview.ts b/vscodePlugin/src/webview.ts new file mode 100644 index 000000000..195700a67 --- /dev/null +++ b/vscodePlugin/src/webview.ts @@ -0,0 +1,51 @@ +import * as vscode from 'vscode'; +import * as path from 'path'; + +/** + * 返回webview需要的html页面 + * @param mdInfo MD源码 和 一些配置信息 + * @param currentPanel WebviewPanel实例 + * @param extensionPath 静态资源路径 + * @returns string + */ +export function getWebviewContent(mdInfo: object, currentPanel: vscode.WebviewPanel, extensionPath: string) { + const pageResourceUrlsMap = { + 'index.css': currentPanel.webview.asWebviewUri(vscode.Uri.file(path.join(extensionPath, 'web-resources/index.css'))), + 'cherry-markdown.css': currentPanel.webview.asWebviewUri(vscode.Uri.file(path.join(extensionPath, 'web-resources/dist/cherry-markdown.min.css'))), + 'cherry-markdown.js': currentPanel.webview.asWebviewUri(vscode.Uri.file(path.join(extensionPath, 'web-resources/dist/cherry-markdown.min.js'))), + '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.css': currentPanel.webview.asWebviewUri(vscode.Uri.file(path.join(extensionPath, 'web-resources/scripts/index.css'))), + 'dist/fonts/ch-icon.woff': currentPanel.webview.asWebviewUri(vscode.Uri.file(path.join(extensionPath, 'web-resources/dist/fonts/ch-icon.woff'))), + 'dist/fonts/ch-icon.woff2': currentPanel.webview.asWebviewUri(vscode.Uri.file(path.join(extensionPath, 'web-resources/dist/fonts/ch-icon.woff2'))), + 'dist/fonts/ch-icon.ttf': currentPanel.webview.asWebviewUri(vscode.Uri.file(path.join(extensionPath, 'web-resources/dist/fonts/ch-icon.ttf'))), + }; + return ` + + + + + + Cherry Editor - Markdown Editor + + + + + + + + + + +
+ +
+ + + + + `; +} diff --git a/vscodePlugin/tsconfig.json b/vscodePlugin/tsconfig.json new file mode 100644 index 000000000..b65c74510 --- /dev/null +++ b/vscodePlugin/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "outDir": "out", + "lib": [ + "es6" + ], + "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. */ + }, + "exclude": [ + "node_modules", + ".vscode-test" + ] +} diff --git a/vscodePlugin/vsc-extension-quickstart.md b/vscodePlugin/vsc-extension-quickstart.md new file mode 100644 index 000000000..b510bff34 --- /dev/null +++ b/vscodePlugin/vsc-extension-quickstart.md @@ -0,0 +1,42 @@ +# 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/vscodePlugin/web-resources/dist/cherry-markdown.min.css b/vscodePlugin/web-resources/dist/cherry-markdown.min.css new file mode 100644 index 000000000..fc70c19f2 --- /dev/null +++ b/vscodePlugin/web-resources/dist/cherry-markdown.min.css @@ -0,0 +1 @@ +.cherry *::-webkit-scrollbar{height:7px;width:7px;background:rgba(0,0,0,0)}.cherry *::-webkit-scrollbar:hover{background:rgba(128,128,128,.1)}.cherry *::-webkit-scrollbar-thumb{background:#d3d7da;-webkit-border-radius:6px}.cherry *::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.6)}.cherry *::-webkit-scrollbar-corner{background:rgba(0,0,0,0)}@font-face{font-family:"ch-icon";src:url("./fonts/ch-icon.eot");src:url("./fonts/ch-icon.eot?#iefix") format("eot"),url("./fonts/ch-icon.woff2") format("woff2"),url("./fonts/ch-icon.woff") format("woff"),url("./fonts/ch-icon.ttf") format("truetype"),url("./fonts/ch-icon.svg#ch-icon") format("svg");font-weight:normal;font-style:normal}.ch-icon:before{display:inline-block;font-family:"ch-icon";font-style:normal;font-weight:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ch-icon-list:before{content:""}.ch-icon-check:before{content:""}.ch-icon-square:before{content:""}.ch-icon-bold:before{content:""}.ch-icon-code:before{content:""}.ch-icon-color:before{content:""}.ch-icon-header:before{content:""}.ch-icon-image:before{content:""}.ch-icon-italic:before{content:""}.ch-icon-link:before{content:""}.ch-icon-ol:before{content:""}.ch-icon-size:before{content:""}.ch-icon-strike:before{content:""}.ch-icon-table:before{content:""}.ch-icon-ul:before{content:""}.ch-icon-underline:before{content:""}.ch-icon-word:before{content:""}.ch-icon-blockquote:before{content:""}.ch-icon-font:before{content:""}.ch-icon-insertClass:before{content:""}.ch-icon-insertFlow:before{content:""}.ch-icon-insertFormula:before{content:""}.ch-icon-insertGantt:before{content:""}.ch-icon-insertGraph:before{content:""}.ch-icon-insertPie:before{content:""}.ch-icon-insertSeq:before{content:""}.ch-icon-insertState:before{content:""}.ch-icon-line:before{content:""}.ch-icon-preview:before{content:""}.ch-icon-previewClose:before{content:""}.ch-icon-toc:before{content:""}.ch-icon-sub:before{content:""}.ch-icon-sup:before{content:""}.ch-icon-h1:before{content:""}.ch-icon-h2:before{content:""}.ch-icon-h3:before{content:""}.ch-icon-h4:before{content:""}.ch-icon-h5:before{content:""}.ch-icon-h6:before{content:""}.ch-icon-video:before{content:""}.ch-icon-insert:before{content:""}.ch-icon-little_table:before{content:""}.ch-icon-pdf:before{content:""}.ch-icon-checklist:before{content:""}.ch-icon-close:before{content:""}.ch-icon-fullscreen:before{content:""}.ch-icon-minscreen:before{content:""}.ch-icon-insertChart:before{content:""}.ch-icon-question:before{content:""}.ch-icon-settings:before{content:""}.ch-icon-ok:before{content:""}.ch-icon-br:before{content:""}.ch-icon-normal:before{content:""}.ch-icon-undo:before{content:""}.ch-icon-redo:before{content:""}.ch-icon-copy:before{content:""}.ch-icon-phone:before{content:""}.ch-icon-cherry-table-delete:before{content:""}.ch-icon-cherry-table-insert-bottom:before{content:""}.ch-icon-cherry-table-insert-left:before{content:""}.ch-icon-cherry-table-insert-right:before{content:""}.ch-icon-cherry-table-insert-top:before{content:""}.ch-icon-sort-s:before{content:""}.ch-icon-pinyin:before{content:""}.ch-icon-create:before{content:""}.ch-icon-download:before{content:""}.ch-icon-edit:before{content:""}.ch-icon-export:before{content:""}.ch-icon-folder-open:before{content:""}.ch-icon-folder:before{content:""}.ch-icon-help:before{content:""}.ch-icon-pen-fill:before{content:""}.ch-icon-pen:before{content:""}.ch-icon-search:before{content:""}.ch-icon-tips:before{content:""}.ch-icon-warn:before{content:""}.cherry-markdown{word-break:break-all}.cherry-markdown h1,.cherry-markdown h2,.cherry-markdown h3,.cherry-markdown h4,.cherry-markdown h5,.cherry-markdown h6,.cherry-markdown .h1,.cherry-markdown .h2,.cherry-markdown .h3,.cherry-markdown .h4,.cherry-markdown .h5,.cherry-markdown .h6{font-family:inherit;font-weight:700;line-height:1.1;color:inherit}.cherry-markdown h1 small,.cherry-markdown h2 small,.cherry-markdown h3 small,.cherry-markdown h4 small,.cherry-markdown h5 small,.cherry-markdown h6 small,.cherry-markdown .h1 small,.cherry-markdown .h2 small,.cherry-markdown .h3 small,.cherry-markdown .h4 small,.cherry-markdown .h5 small,.cherry-markdown .h6 small,.cherry-markdown h1 .small,.cherry-markdown h2 .small,.cherry-markdown h3 .small,.cherry-markdown h4 .small,.cherry-markdown h5 .small,.cherry-markdown h6 .small,.cherry-markdown .h1 .small,.cherry-markdown .h2 .small,.cherry-markdown .h3 .small,.cherry-markdown .h4 .small,.cherry-markdown .h5 .small,.cherry-markdown .h6 .small{font-weight:normal;line-height:1;color:#999}.cherry-markdown h1,.cherry-markdown h2,.cherry-markdown h3{margin-top:30px;margin-bottom:16px}.cherry-markdown h1 small,.cherry-markdown h2 small,.cherry-markdown h3 small,.cherry-markdown h1 .small,.cherry-markdown h2 .small,.cherry-markdown h3 .small{font-size:65%}.cherry-markdown h4,.cherry-markdown h5,.cherry-markdown h6{margin-top:12px;margin-bottom:12px}.cherry-markdown h4 small,.cherry-markdown h5 small,.cherry-markdown h6 small,.cherry-markdown h4 .small,.cherry-markdown h5 .small,.cherry-markdown h6 .small{font-size:75%}.cherry-markdown h1,.cherry-markdown .h1{font-size:2em}.cherry-markdown h2,.cherry-markdown .h2{font-size:1.5em}.cherry-markdown h3,.cherry-markdown .h3{font-size:1.25em}.cherry-markdown h4,.cherry-markdown .h4{font-size:1em}.cherry-markdown h5,.cherry-markdown .h5{font-size:.875em}.cherry-markdown h6,.cherry-markdown .h6{font-size:.85em}.cherry-markdown b,.cherry-markdown strong{font-weight:bold}.cherry-markdown ul,.cherry-markdown ol{padding-left:24px;margin-bottom:16px}.cherry-markdown ul ul,.cherry-markdown ul ol,.cherry-markdown ol ul,.cherry-markdown ol ol{margin-bottom:0}.cherry-markdown ul li,.cherry-markdown ol li{list-style:inherit}.cherry-markdown ul li p,.cherry-markdown ol li p{margin:0}.cherry-markdown div ul,.cherry-markdown div ol{margin-bottom:0}.cherry-markdown hr{height:0;border:0;border-top:1px solid #dfe6ee;margin:16px 0;box-sizing:content-box;overflow:visible}.cherry-markdown table{border-collapse:collapse}.cherry-markdown table th,.cherry-markdown table td{border:1px solid #dfe6ee;padding:.2em .4em;min-width:100px}.cherry-markdown table th{background-color:#eee}.cherry-markdown a{color:#3582fb}.cherry-markdown a:hover{color:#056bad}.cherry-markdown em{font-style:italic}.cherry-markdown sup{vertical-align:super}.cherry-markdown sub{vertical-align:sub}.cherry-markdown figure{overflow-x:auto}.cherry-markdown blockquote{color:#6d6e6f;padding:10px 15px;border-left:10px solid #d6dbdf;background:rgba(102,128,153,.05)}.cherry-markdown p,.cherry-markdown pre,.cherry-markdown blockquote,.cherry-markdown table{margin:0 0 16px}.cherry-markdown pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:6px}.cherry-markdown .prettyprint{min-width:500px;display:inline-block;background:#00212b;font-family:Menlo,"Bitstream Vera Sans Mono","DejaVu Sans Mono",Monaco,Consolas,monospace;border:0 !important}.cherry-markdown .pln{color:#dfe6ee}.cherry-markdown .str{color:#ffaf21}.cherry-markdown .kwd{color:#f85353}.cherry-markdown ol.linenums{margin-top:0;margin-bottom:0;color:#969896}.cherry-markdown li.L0,.cherry-markdown li.L1,.cherry-markdown li.L2,.cherry-markdown li.L3,.cherry-markdown li.L4,.cherry-markdown li.L5,.cherry-markdown li.L6,.cherry-markdown li.L7,.cherry-markdown li.L8,.cherry-markdown li.L9{padding-left:1em;background-color:#00212b;list-style-type:decimal}@media screen{.cherry-markdown .cherry-markdown .com{color:#969896}.cherry-markdown .cherry-markdown .typ{color:#81a2be}.cherry-markdown .cherry-markdown .lit{color:#de935f}.cherry-markdown .cherry-markdown .pun{color:#c5c8c6}.cherry-markdown .cherry-markdown .opn{color:#c5c8c6}.cherry-markdown .cherry-markdown .clo{color:#c5c8c6}.cherry-markdown .cherry-markdown .tag{color:#c66}.cherry-markdown .cherry-markdown .atn{color:#de935f}.cherry-markdown .cherry-markdown .atv{color:#8abeb7}.cherry-markdown .cherry-markdown .dec{color:#de935f}.cherry-markdown .cherry-markdown .var{color:#c66}.cherry-markdown .cherry-markdown .fun{color:#81a2be}}.cherry-markdown div[data-type=codeBlock]{display:inline-block;width:100%;box-sizing:border-box;border-radius:2px;margin-bottom:16px;font-size:14px;overflow-x:auto}.cherry-markdown div[data-type=codeBlock]>pre{margin:0}.cherry-markdown div[data-type=codeBlock]>pre code[class*=language-]{counter-reset:line}.cherry-markdown div[data-type=codeBlock]>pre code[class*=language-].wrap{white-space:pre-wrap}.cherry-markdown div[data-type=codeBlock]>pre code[class*=language-] .code-line{display:inline-block;position:relative;padding-left:3em;height:1.3em;line-height:2em}.cherry-markdown div[data-type=codeBlock]>pre code[class*=language-] .code-line:before{counter-increment:line;content:counter(line);margin-right:1em;position:absolute;left:0}.cherry-markdown div[data-type=codeBlock]>pre code[class*=language-] .code-line:last-child{margin-bottom:0}.cherry-markdown :not(pre)>code{padding:.1em;border-radius:.3em;white-space:normal;color:#f85353;background-color:#e5e5e5}[data-inline-code-theme=black] .cherry-markdown :not(pre)>code{color:#3f4a56;background-color:#e5e5e5}.cherry-markdown a.anchor:before{content:"§";text-decoration:none;width:15px;font-size:.5em;vertical-align:middle;display:inline-block;text-align:center;margin-left:-15px}.cherry-markdown .toc{margin-bottom:16px;padding-left:0}.cherry-markdown .toc .toc-title{font-size:24px;margin-bottom:5px}.cherry-markdown .toc .toc-li{border-bottom:1px ridge #dfe6ee;list-style:none}.cherry-markdown .toc .toc-li a{text-decoration:none;color:#3f4a56}.cherry-markdown .toc .toc-li a:hover{color:#056bad}.cherry-markdown .check-list-item{list-style:none}.cherry-markdown .check-list-item .ch-icon{margin:0 6px 0 -20px}.cherry-markdown .footnote:not(a){padding-top:20px;border-top:1px solid #dfe6ee;margin-top:50px}.cherry-markdown .footnote:not(a) .footnote-title{font-size:20px;margin-top:-38px;background-color:#f8fafb;width:60px;margin-bottom:16px}.cherry-markdown .footnote:not(a) .one-footnote{color:#6d6e6f;margin-bottom:16px;border-bottom:1px dotted #dfe6ee}.cherry-markdown .cherry-table-container{max-width:100%;overflow-x:auto}.cherry-markdown .cherry-table-container .cherry-table th,.cherry-markdown .cherry-table-container .cherry-table td{border:1px solid #dfe6ee;padding:.2em .4em;min-width:100px}.cherry-markdown .cherry-table-container .cherry-table th{white-space:nowrap}.cherry-markdown mjx-assistive-mml{position:absolute;top:0;left:0;clip:rect(1px, 1px, 1px, 1px);padding:1px 0 0 0;border:0}.cherry-markdown.head-num{counter-reset:level1}.cherry-markdown.head-num h1 .anchor:before,.cherry-markdown.head-num h2 .anchor:before,.cherry-markdown.head-num h3 .anchor:before,.cherry-markdown.head-num h4 .anchor:before,.cherry-markdown.head-num h5 .anchor:before,.cherry-markdown.head-num h6 .anchor:before{width:auto;font-size:inherit;vertical-align:inherit;padding-right:10px}.cherry-markdown.head-num h1{counter-reset:level2}.cherry-markdown.head-num h2{counter-reset:level3}.cherry-markdown.head-num h3{counter-reset:level4}.cherry-markdown.head-num h4{counter-reset:level5}.cherry-markdown.head-num h5{counter-reset:level6}.cherry-markdown.head-num h1 .anchor:before{counter-increment:level1;content:counter(level1) ". "}.cherry-markdown.head-num h2 .anchor:before{counter-increment:level2;content:counter(level1) "." counter(level2) " "}.cherry-markdown.head-num h3 .anchor:before{counter-increment:level3;content:counter(level1) "." counter(level2) "." counter(level3) " "}.cherry-markdown.head-num h4 .anchor:before{counter-increment:level4;content:counter(level1) "." counter(level2) "." counter(level3) "." counter(level4) " "}.cherry-markdown.head-num h5 .anchor:before{counter-increment:level5;content:counter(level1) "." counter(level2) "." counter(level3) "." counter(level4) "." counter(level5) " "}.cherry-markdown.head-num h6 .anchor:before{counter-increment:level6;content:counter(level1) "." counter(level2) "." counter(level3) "." counter(level4) "." counter(level5) "." counter(level6) " "}div[data-type=codeBlock] code[class*=language-],div[data-type=codeBlock] pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}div[data-type=codeBlock] pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}div[data-type=codeBlock] :not(pre)>code[class*=language-],div[data-type=codeBlock] pre[class*=language-]{background:#2d2d2d}div[data-type=codeBlock] :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}div[data-type=codeBlock] .token.comment,div[data-type=codeBlock] .token.block-comment,div[data-type=codeBlock] .token.prolog,div[data-type=codeBlock] .token.doctype,div[data-type=codeBlock] .token.cdata{color:#999}div[data-type=codeBlock] .token.punctuation{color:#ccc}div[data-type=codeBlock] .token.tag,div[data-type=codeBlock] .token.attr-name,div[data-type=codeBlock] .token.namespace,div[data-type=codeBlock] .token.deleted{color:#e2777a}div[data-type=codeBlock] .token.function-name{color:#6196cc}div[data-type=codeBlock] .token.boolean,div[data-type=codeBlock] .token.number,div[data-type=codeBlock] .token.function{color:#f08d49}div[data-type=codeBlock] .token.property,div[data-type=codeBlock] .token.class-name,div[data-type=codeBlock] .token.constant,div[data-type=codeBlock] .token.symbol{color:#f8c555}div[data-type=codeBlock] .token.selector,div[data-type=codeBlock] .token.important,div[data-type=codeBlock] .token.atrule,div[data-type=codeBlock] .token.keyword,div[data-type=codeBlock] .token.builtin{color:#cc99cd}div[data-type=codeBlock] .token.string,div[data-type=codeBlock] .token.char,div[data-type=codeBlock] .token.attr-value,div[data-type=codeBlock] .token.regex,div[data-type=codeBlock] .token.variable{color:#7ec699}div[data-type=codeBlock] .token.operator,div[data-type=codeBlock] .token.entity,div[data-type=codeBlock] .token.url{color:#67cdcc}div[data-type=codeBlock] .token.important,div[data-type=codeBlock] .token.bold{font-weight:bold}div[data-type=codeBlock] .token.italic{font-style:italic}div[data-type=codeBlock] .token.entity{cursor:help}div[data-type=codeBlock] .token.inserted{color:green}[data-code-block-theme=default] div[data-type=codeBlock] code[class*=language-],[data-code-block-theme=default] div[data-type=codeBlock] pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}[data-code-block-theme=default] div[data-type=codeBlock] pre[class*=language-]::-moz-selection,[data-code-block-theme=default] div[data-type=codeBlock] pre[class*=language-] ::-moz-selection,[data-code-block-theme=default] div[data-type=codeBlock] code[class*=language-]::-moz-selection,[data-code-block-theme=default] div[data-type=codeBlock] code[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}[data-code-block-theme=default] div[data-type=codeBlock] pre[class*=language-]::selection,[data-code-block-theme=default] div[data-type=codeBlock] pre[class*=language-] ::selection,[data-code-block-theme=default] div[data-type=codeBlock] code[class*=language-]::selection,[data-code-block-theme=default] div[data-type=codeBlock] code[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{[data-code-block-theme=default] div[data-type=codeBlock] code[class*=language-],[data-code-block-theme=default] div[data-type=codeBlock] pre[class*=language-]{text-shadow:none}}[data-code-block-theme=default] div[data-type=codeBlock] pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}[data-code-block-theme=default] div[data-type=codeBlock] :not(pre)>code[class*=language-],[data-code-block-theme=default] div[data-type=codeBlock] pre[class*=language-]{background:#f5f2f0}[data-code-block-theme=default] div[data-type=codeBlock] :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}[data-code-block-theme=default] div[data-type=codeBlock] .token.comment,[data-code-block-theme=default] div[data-type=codeBlock] .token.prolog,[data-code-block-theme=default] div[data-type=codeBlock] .token.doctype,[data-code-block-theme=default] div[data-type=codeBlock] .token.cdata{color:#708090}[data-code-block-theme=default] div[data-type=codeBlock] .token.punctuation{color:#999}[data-code-block-theme=default] div[data-type=codeBlock] .token.namespace{opacity:.7}[data-code-block-theme=default] div[data-type=codeBlock] .token.property,[data-code-block-theme=default] div[data-type=codeBlock] .token.tag,[data-code-block-theme=default] div[data-type=codeBlock] .token.boolean,[data-code-block-theme=default] div[data-type=codeBlock] .token.number,[data-code-block-theme=default] div[data-type=codeBlock] .token.constant,[data-code-block-theme=default] div[data-type=codeBlock] .token.symbol,[data-code-block-theme=default] div[data-type=codeBlock] .token.deleted{color:#905}[data-code-block-theme=default] div[data-type=codeBlock] .token.selector,[data-code-block-theme=default] div[data-type=codeBlock] .token.attr-name,[data-code-block-theme=default] div[data-type=codeBlock] .token.string,[data-code-block-theme=default] div[data-type=codeBlock] .token.char,[data-code-block-theme=default] div[data-type=codeBlock] .token.builtin,[data-code-block-theme=default] div[data-type=codeBlock] .token.inserted{color:#690}[data-code-block-theme=default] div[data-type=codeBlock] .token.operator,[data-code-block-theme=default] div[data-type=codeBlock] .token.entity,[data-code-block-theme=default] div[data-type=codeBlock] .token.url,[data-code-block-theme=default] div[data-type=codeBlock] .language-css .token.string,[data-code-block-theme=default] div[data-type=codeBlock] .style .token.string{color:#9a6e3a;background:rgba(255,255,255,.5)}[data-code-block-theme=default] div[data-type=codeBlock] .token.atrule,[data-code-block-theme=default] div[data-type=codeBlock] .token.attr-value,[data-code-block-theme=default] div[data-type=codeBlock] .token.keyword{color:#07a}[data-code-block-theme=default] div[data-type=codeBlock] .token.function,[data-code-block-theme=default] div[data-type=codeBlock] .token.class-name{color:#dd4a68}[data-code-block-theme=default] div[data-type=codeBlock] .token.regex,[data-code-block-theme=default] div[data-type=codeBlock] .token.important,[data-code-block-theme=default] div[data-type=codeBlock] .token.variable{color:#e90}[data-code-block-theme=default] div[data-type=codeBlock] .token.important,[data-code-block-theme=default] div[data-type=codeBlock] .token.bold{font-weight:bold}[data-code-block-theme=default] div[data-type=codeBlock] .token.italic{font-style:italic}[data-code-block-theme=default] div[data-type=codeBlock] .token.entity{cursor:help}[data-code-block-theme=dark] div[data-type=codeBlock] code[class*=language-],[data-code-block-theme=dark] div[data-type=codeBlock] pre[class*=language-]{color:#fff;background:none;text-shadow:0 -0.1em .2em #000;font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}@media print{[data-code-block-theme=dark] div[data-type=codeBlock] code[class*=language-],[data-code-block-theme=dark] div[data-type=codeBlock] pre[class*=language-]{text-shadow:none}}[data-code-block-theme=dark] div[data-type=codeBlock] pre[class*=language-],[data-code-block-theme=dark] div[data-type=codeBlock] :not(pre)>code[class*=language-]{background:#4d4033}[data-code-block-theme=dark] div[data-type=codeBlock] pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border:.3em solid #7a6652;border-radius:.5em;box-shadow:1px 1px .5em #000 inset}[data-code-block-theme=dark] div[data-type=codeBlock] :not(pre)>code[class*=language-]{padding:.15em .2em .05em;border-radius:.3em;border:.13em solid #7a6652;box-shadow:1px 1px .3em -0.1em #000 inset;white-space:normal}[data-code-block-theme=dark] div[data-type=codeBlock] .token.comment,[data-code-block-theme=dark] div[data-type=codeBlock] .token.prolog,[data-code-block-theme=dark] div[data-type=codeBlock] .token.doctype,[data-code-block-theme=dark] div[data-type=codeBlock] .token.cdata{color:#998066}[data-code-block-theme=dark] div[data-type=codeBlock] .token.punctuation{opacity:.7}[data-code-block-theme=dark] div[data-type=codeBlock] .token.namespace{opacity:.7}[data-code-block-theme=dark] div[data-type=codeBlock] .token.property,[data-code-block-theme=dark] div[data-type=codeBlock] .token.tag,[data-code-block-theme=dark] div[data-type=codeBlock] .token.boolean,[data-code-block-theme=dark] div[data-type=codeBlock] .token.number,[data-code-block-theme=dark] div[data-type=codeBlock] .token.constant,[data-code-block-theme=dark] div[data-type=codeBlock] .token.symbol{color:#d1949e}[data-code-block-theme=dark] div[data-type=codeBlock] .token.selector,[data-code-block-theme=dark] div[data-type=codeBlock] .token.attr-name,[data-code-block-theme=dark] div[data-type=codeBlock] .token.string,[data-code-block-theme=dark] div[data-type=codeBlock] .token.char,[data-code-block-theme=dark] div[data-type=codeBlock] .token.builtin,[data-code-block-theme=dark] div[data-type=codeBlock] .token.inserted{color:#bde052}[data-code-block-theme=dark] div[data-type=codeBlock] .token.operator,[data-code-block-theme=dark] div[data-type=codeBlock] .token.entity,[data-code-block-theme=dark] div[data-type=codeBlock] .token.url,[data-code-block-theme=dark] div[data-type=codeBlock] .language-css .token.string,[data-code-block-theme=dark] div[data-type=codeBlock] .style .token.string,[data-code-block-theme=dark] div[data-type=codeBlock] .token.variable{color:#f5b83d}[data-code-block-theme=dark] div[data-type=codeBlock] .token.atrule,[data-code-block-theme=dark] div[data-type=codeBlock] .token.attr-value,[data-code-block-theme=dark] div[data-type=codeBlock] .token.keyword{color:#d1949e}[data-code-block-theme=dark] div[data-type=codeBlock] .token.regex,[data-code-block-theme=dark] div[data-type=codeBlock] .token.important{color:#e90}[data-code-block-theme=dark] div[data-type=codeBlock] .token.important,[data-code-block-theme=dark] div[data-type=codeBlock] .token.bold{font-weight:bold}[data-code-block-theme=dark] div[data-type=codeBlock] .token.italic{font-style:italic}[data-code-block-theme=dark] div[data-type=codeBlock] .token.entity{cursor:help}[data-code-block-theme=dark] div[data-type=codeBlock] .token.deleted{color:red}[data-code-block-theme=funky] div[data-type=codeBlock] code[class*=language-],[data-code-block-theme=funky] div[data-type=codeBlock] pre[class*=language-]{font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}[data-code-block-theme=funky] div[data-type=codeBlock] pre[class*=language-]{padding:.4em .8em;margin:.5em 0;overflow:auto;background:url('data:image/svg+xml;charset=utf-8,%0D%0A%0D%0A%0D%0A<%2Fsvg>');background-size:1em 1em}[data-code-block-theme=funky] div[data-type=codeBlock] code[class*=language-]{background:#000;color:#fff;box-shadow:-0.3em 0 0 .3em #000,.3em 0 0 .3em #000}[data-code-block-theme=funky] div[data-type=codeBlock] :not(pre)>code[class*=language-]{padding:.2em;border-radius:.3em;box-shadow:none;white-space:normal}[data-code-block-theme=funky] div[data-type=codeBlock] .token.comment,[data-code-block-theme=funky] div[data-type=codeBlock] .token.prolog,[data-code-block-theme=funky] div[data-type=codeBlock] .token.doctype,[data-code-block-theme=funky] div[data-type=codeBlock] .token.cdata{color:#aaa}[data-code-block-theme=funky] div[data-type=codeBlock] .token.punctuation{color:#999}[data-code-block-theme=funky] div[data-type=codeBlock] .token.namespace{opacity:.7}[data-code-block-theme=funky] div[data-type=codeBlock] .token.property,[data-code-block-theme=funky] div[data-type=codeBlock] .token.tag,[data-code-block-theme=funky] div[data-type=codeBlock] .token.boolean,[data-code-block-theme=funky] div[data-type=codeBlock] .token.number,[data-code-block-theme=funky] div[data-type=codeBlock] .token.constant,[data-code-block-theme=funky] div[data-type=codeBlock] .token.symbol{color:#0cf}[data-code-block-theme=funky] div[data-type=codeBlock] .token.selector,[data-code-block-theme=funky] div[data-type=codeBlock] .token.attr-name,[data-code-block-theme=funky] div[data-type=codeBlock] .token.string,[data-code-block-theme=funky] div[data-type=codeBlock] .token.char,[data-code-block-theme=funky] div[data-type=codeBlock] .token.builtin{color:#ff0}[data-code-block-theme=funky] div[data-type=codeBlock] .token.operator,[data-code-block-theme=funky] div[data-type=codeBlock] .token.entity,[data-code-block-theme=funky] div[data-type=codeBlock] .token.url,[data-code-block-theme=funky] div[data-type=codeBlock] .language-css .token.string,[data-code-block-theme=funky] div[data-type=codeBlock] .token.variable,[data-code-block-theme=funky] div[data-type=codeBlock] .token.inserted{color:#9acd32}[data-code-block-theme=funky] div[data-type=codeBlock] .token.atrule,[data-code-block-theme=funky] div[data-type=codeBlock] .token.attr-value,[data-code-block-theme=funky] div[data-type=codeBlock] .token.keyword{color:#ff1493}[data-code-block-theme=funky] div[data-type=codeBlock] .token.regex,[data-code-block-theme=funky] div[data-type=codeBlock] .token.important{color:orange}[data-code-block-theme=funky] div[data-type=codeBlock] .token.important,[data-code-block-theme=funky] div[data-type=codeBlock] .token.bold{font-weight:bold}[data-code-block-theme=funky] div[data-type=codeBlock] .token.italic{font-style:italic}[data-code-block-theme=funky] div[data-type=codeBlock] .token.entity{cursor:help}[data-code-block-theme=funky] div[data-type=codeBlock] .token.deleted{color:red}[data-code-block-theme=funky] div[data-type=codeBlock] pre.diff-highlight.diff-highlight>code .token.deleted:not(.prefix),[data-code-block-theme=funky] div[data-type=codeBlock] pre>code.diff-highlight.diff-highlight .token.deleted:not(.prefix){background-color:rgba(255,0,0,.3);display:inline}[data-code-block-theme=funky] div[data-type=codeBlock] pre.diff-highlight.diff-highlight>code .token.inserted:not(.prefix),[data-code-block-theme=funky] div[data-type=codeBlock] pre>code.diff-highlight.diff-highlight .token.inserted:not(.prefix){background-color:rgba(0,255,128,.3);display:inline}[data-code-block-theme=okaidia] div[data-type=codeBlock] code[class*=language-],[data-code-block-theme=okaidia] div[data-type=codeBlock] pre[class*=language-]{color:#f8f8f2;background:none;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}[data-code-block-theme=okaidia] div[data-type=codeBlock] pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}[data-code-block-theme=okaidia] div[data-type=codeBlock] :not(pre)>code[class*=language-],[data-code-block-theme=okaidia] div[data-type=codeBlock] pre[class*=language-]{background:#272822}[data-code-block-theme=okaidia] div[data-type=codeBlock] :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.comment,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.prolog,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.doctype,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.cdata{color:#8292a2}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.punctuation{color:#f8f8f2}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.namespace{opacity:.7}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.property,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.tag,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.constant,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.symbol,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.deleted{color:#f92672}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.boolean,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.number{color:#ae81ff}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.selector,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.attr-name,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.string,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.char,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.builtin,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.inserted{color:#a6e22e}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.operator,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.entity,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.url,[data-code-block-theme=okaidia] div[data-type=codeBlock] .language-css .token.string,[data-code-block-theme=okaidia] div[data-type=codeBlock] .style .token.string,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.variable{color:#f8f8f2}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.atrule,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.attr-value,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.function,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.class-name{color:#e6db74}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.keyword{color:#66d9ef}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.regex,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.important{color:#fd971f}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.important,[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.bold{font-weight:bold}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.italic{font-style:italic}[data-code-block-theme=okaidia] div[data-type=codeBlock] .token.entity{cursor:help}[data-code-block-theme=twilight] div[data-type=codeBlock] code[class*=language-],[data-code-block-theme=twilight] div[data-type=codeBlock] pre[class*=language-]{color:#fff;background:none;font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:1em;text-align:left;text-shadow:0 -0.1em .2em #000;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}[data-code-block-theme=twilight] div[data-type=codeBlock] pre[class*=language-],[data-code-block-theme=twilight] div[data-type=codeBlock] :not(pre)>code[class*=language-]{background:#141414}[data-code-block-theme=twilight] div[data-type=codeBlock] pre[class*=language-]{border-radius:.5em;border:.3em solid #545454;box-shadow:1px 1px .5em #000 inset;margin:.5em 0;overflow:auto;padding:1em}[data-code-block-theme=twilight] div[data-type=codeBlock] pre[class*=language-]::-moz-selection{background:#27292a}[data-code-block-theme=twilight] div[data-type=codeBlock] pre[class*=language-]::selection{background:#27292a}[data-code-block-theme=twilight] div[data-type=codeBlock] pre[class*=language-]::-moz-selection,[data-code-block-theme=twilight] div[data-type=codeBlock] pre[class*=language-] ::-moz-selection,[data-code-block-theme=twilight] div[data-type=codeBlock] code[class*=language-]::-moz-selection,[data-code-block-theme=twilight] div[data-type=codeBlock] code[class*=language-] ::-moz-selection{text-shadow:none;background:rgba(237,237,237,.15)}[data-code-block-theme=twilight] div[data-type=codeBlock] pre[class*=language-]::selection,[data-code-block-theme=twilight] div[data-type=codeBlock] pre[class*=language-] ::selection,[data-code-block-theme=twilight] div[data-type=codeBlock] code[class*=language-]::selection,[data-code-block-theme=twilight] div[data-type=codeBlock] code[class*=language-] ::selection{text-shadow:none;background:rgba(237,237,237,.15)}[data-code-block-theme=twilight] div[data-type=codeBlock] :not(pre)>code[class*=language-]{border-radius:.3em;border:.13em solid #545454;box-shadow:1px 1px .3em -0.1em #000 inset;padding:.15em .2em .05em;white-space:normal}[data-code-block-theme=twilight] div[data-type=codeBlock] .token.comment,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.prolog,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.doctype,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.cdata{color:#787878}[data-code-block-theme=twilight] div[data-type=codeBlock] .token.punctuation{opacity:.7}[data-code-block-theme=twilight] div[data-type=codeBlock] .token.namespace{opacity:.7}[data-code-block-theme=twilight] div[data-type=codeBlock] .token.tag,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.boolean,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.number,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.deleted{color:#cf694a}[data-code-block-theme=twilight] div[data-type=codeBlock] .token.keyword,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.property,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.selector,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.constant,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.symbol,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.builtin{color:#f9ee9a}[data-code-block-theme=twilight] div[data-type=codeBlock] .token.attr-name,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.attr-value,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.string,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.char,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.operator,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.entity,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.url,[data-code-block-theme=twilight] div[data-type=codeBlock] .language-css .token.string,[data-code-block-theme=twilight] div[data-type=codeBlock] .style .token.string,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.variable,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.inserted{color:#919e6b}[data-code-block-theme=twilight] div[data-type=codeBlock] .token.atrule{color:#7386a5}[data-code-block-theme=twilight] div[data-type=codeBlock] .token.regex,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.important{color:#e9c163}[data-code-block-theme=twilight] div[data-type=codeBlock] .token.important,[data-code-block-theme=twilight] div[data-type=codeBlock] .token.bold{font-weight:bold}[data-code-block-theme=twilight] div[data-type=codeBlock] .token.italic{font-style:italic}[data-code-block-theme=twilight] div[data-type=codeBlock] .token.entity{cursor:help}[data-code-block-theme=twilight] div[data-type=codeBlock] pre[data-line]{padding:1em 0 1em 3em;position:relative}[data-code-block-theme=twilight] div[data-type=codeBlock] .language-markup .token.tag,[data-code-block-theme=twilight] div[data-type=codeBlock] .language-markup .token.attr-name,[data-code-block-theme=twilight] div[data-type=codeBlock] .language-markup .token.punctuation{color:#ad895c}[data-code-block-theme=twilight] div[data-type=codeBlock] .token{position:relative;z-index:1}[data-code-block-theme=twilight] div[data-type=codeBlock] .line-highlight{background:rgba(84,84,84,.25);background:linear-gradient(to right, hsla(0deg, 0%, 33%, 0.1) 70%, hsla(0deg, 0%, 33%, 0));border-bottom:1px dashed #545454;border-top:1px dashed #545454;left:0;line-height:inherit;margin-top:.75em;padding:inherit 0;pointer-events:none;position:absolute;right:0;white-space:pre;z-index:0}[data-code-block-theme=twilight] div[data-type=codeBlock] .line-highlight:before,[data-code-block-theme=twilight] div[data-type=codeBlock] .line-highlight[data-end]:after{background-color:#8794a6;border-radius:999px;box-shadow:0 1px #fff;color:#f5f2f0;content:attr(data-start);font:bold 65%/1.5 sans-serif;left:.6em;min-width:1em;padding:0 .5em;position:absolute;text-align:center;text-shadow:none;top:.4em;vertical-align:.3em}[data-code-block-theme=twilight] div[data-type=codeBlock] .line-highlight[data-end]:after{bottom:.4em;content:attr(data-end);top:auto}[data-code-block-theme=coy] div[data-type=codeBlock] code[class*=language-],[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-]{color:#000;background:none;font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-]{position:relative;margin:.5em 0;overflow-y:hidden;padding:0}[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-]>code{position:relative;border-left:10px solid #358ccb;box-shadow:-1px 0px 0px 0px #358ccb,0px 0px 0px 1px #dfdfdf;background-color:#fdfdfd;background-image:linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);background-size:3em 3em;background-origin:content-box;background-attachment:local}[data-code-block-theme=coy] div[data-type=codeBlock] code[class*=language-]{max-height:inherit;height:inherit;padding:0 1em;display:block}[data-code-block-theme=coy] div[data-type=codeBlock] :not(pre)>code[class*=language-],[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-]{background-color:#fdfdfd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:1em}[data-code-block-theme=coy] div[data-type=codeBlock] :not(pre)>code[class*=language-]{position:relative;padding:.2em;border-radius:.3em;color:#c92c2c;border:1px solid rgba(0,0,0,.1);display:inline;white-space:normal}[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-]:before,[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-]:after{content:"";z-index:-2;display:block;position:absolute;bottom:.75em;left:.18em;width:40%;height:20%;max-height:13em;box-shadow:0px 13px 8px #979797;-webkit-transform:rotate(-2deg);-moz-transform:rotate(-2deg);-ms-transform:rotate(-2deg);-o-transform:rotate(-2deg);transform:rotate(-2deg)}[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-]:after{right:.75em;left:auto;-webkit-transform:rotate(2deg);-moz-transform:rotate(2deg);-ms-transform:rotate(2deg);-o-transform:rotate(2deg);transform:rotate(2deg)}[data-code-block-theme=coy] div[data-type=codeBlock] .token.comment,[data-code-block-theme=coy] div[data-type=codeBlock] .token.block-comment,[data-code-block-theme=coy] div[data-type=codeBlock] .token.prolog,[data-code-block-theme=coy] div[data-type=codeBlock] .token.doctype,[data-code-block-theme=coy] div[data-type=codeBlock] .token.cdata{color:#7d8b99}[data-code-block-theme=coy] div[data-type=codeBlock] .token.punctuation{color:#5f6364}[data-code-block-theme=coy] div[data-type=codeBlock] .token.property,[data-code-block-theme=coy] div[data-type=codeBlock] .token.tag,[data-code-block-theme=coy] div[data-type=codeBlock] .token.boolean,[data-code-block-theme=coy] div[data-type=codeBlock] .token.number,[data-code-block-theme=coy] div[data-type=codeBlock] .token.function-name,[data-code-block-theme=coy] div[data-type=codeBlock] .token.constant,[data-code-block-theme=coy] div[data-type=codeBlock] .token.symbol,[data-code-block-theme=coy] div[data-type=codeBlock] .token.deleted{color:#c92c2c}[data-code-block-theme=coy] div[data-type=codeBlock] .token.selector,[data-code-block-theme=coy] div[data-type=codeBlock] .token.attr-name,[data-code-block-theme=coy] div[data-type=codeBlock] .token.string,[data-code-block-theme=coy] div[data-type=codeBlock] .token.char,[data-code-block-theme=coy] div[data-type=codeBlock] .token.function,[data-code-block-theme=coy] div[data-type=codeBlock] .token.builtin,[data-code-block-theme=coy] div[data-type=codeBlock] .token.inserted{color:#2f9c0a}[data-code-block-theme=coy] div[data-type=codeBlock] .token.operator,[data-code-block-theme=coy] div[data-type=codeBlock] .token.entity,[data-code-block-theme=coy] div[data-type=codeBlock] .token.url,[data-code-block-theme=coy] div[data-type=codeBlock] .token.variable{color:#a67f59;background:rgba(255,255,255,.5)}[data-code-block-theme=coy] div[data-type=codeBlock] .token.atrule,[data-code-block-theme=coy] div[data-type=codeBlock] .token.attr-value,[data-code-block-theme=coy] div[data-type=codeBlock] .token.keyword,[data-code-block-theme=coy] div[data-type=codeBlock] .token.class-name{color:#1990b8}[data-code-block-theme=coy] div[data-type=codeBlock] .token.regex,[data-code-block-theme=coy] div[data-type=codeBlock] .token.important{color:#e90}[data-code-block-theme=coy] div[data-type=codeBlock] .language-css .token.string,[data-code-block-theme=coy] div[data-type=codeBlock] .style .token.string{color:#a67f59;background:rgba(255,255,255,.5)}[data-code-block-theme=coy] div[data-type=codeBlock] .token.important{font-weight:normal}[data-code-block-theme=coy] div[data-type=codeBlock] .token.bold{font-weight:bold}[data-code-block-theme=coy] div[data-type=codeBlock] .token.italic{font-style:italic}[data-code-block-theme=coy] div[data-type=codeBlock] .token.entity{cursor:help}[data-code-block-theme=coy] div[data-type=codeBlock] .token.namespace{opacity:.7}@media screen and (max-width: 767px){[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-]:before,[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-]:after{bottom:14px;box-shadow:none}}[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-].line-numbers.line-numbers{padding-left:0}[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-].line-numbers.line-numbers code{padding-left:3.8em}[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-].line-numbers.line-numbers .line-numbers-rows{left:0}[data-code-block-theme=coy] div[data-type=codeBlock] pre[class*=language-][data-line]{padding-top:0;padding-bottom:0;padding-left:0}[data-code-block-theme=coy] div[data-type=codeBlock] pre[data-line] code{position:relative;padding-left:4em}[data-code-block-theme=coy] div[data-type=codeBlock] pre .line-highlight{margin-top:0}[data-code-block-theme=solarized-light] div[data-type=codeBlock] code[class*=language-],[data-code-block-theme=solarized-light] div[data-type=codeBlock] pre[class*=language-]{color:#657b83;font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}[data-code-block-theme=solarized-light] div[data-type=codeBlock] pre[class*=language-]::-moz-selection,[data-code-block-theme=solarized-light] div[data-type=codeBlock] pre[class*=language-] ::-moz-selection,[data-code-block-theme=solarized-light] div[data-type=codeBlock] code[class*=language-]::-moz-selection,[data-code-block-theme=solarized-light] div[data-type=codeBlock] code[class*=language-] ::-moz-selection{background:#073642}[data-code-block-theme=solarized-light] div[data-type=codeBlock] pre[class*=language-]::selection,[data-code-block-theme=solarized-light] div[data-type=codeBlock] pre[class*=language-] ::selection,[data-code-block-theme=solarized-light] div[data-type=codeBlock] code[class*=language-]::selection,[data-code-block-theme=solarized-light] div[data-type=codeBlock] code[class*=language-] ::selection{background:#073642}[data-code-block-theme=solarized-light] div[data-type=codeBlock] pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}[data-code-block-theme=solarized-light] div[data-type=codeBlock] :not(pre)>code[class*=language-],[data-code-block-theme=solarized-light] div[data-type=codeBlock] pre[class*=language-]{background-color:#fdf6e3}[data-code-block-theme=solarized-light] div[data-type=codeBlock] :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.comment,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.prolog,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.doctype,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.cdata{color:#93a1a1}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.punctuation{color:#586e75}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.namespace{opacity:.7}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.property,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.tag,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.boolean,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.number,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.constant,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.symbol,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.deleted{color:#268bd2}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.selector,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.attr-name,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.string,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.char,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.builtin,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.url,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.inserted{color:#2aa198}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.entity{color:#657b83;background:#eee8d5}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.atrule,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.attr-value,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.keyword{color:#859900}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.function,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.class-name{color:#b58900}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.regex,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.important,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.variable{color:#cb4b16}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.important,[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.bold{font-weight:bold}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.italic{font-style:italic}[data-code-block-theme=solarized-light] div[data-type=codeBlock] .token.entity{cursor:help}.cherry .doing-resize-img{-moz-user-select:none;-webkit-user-select:none;user-select:none}.cherry .cherry-previewer img{transition:all .1s}.cherry .cherry-previewer-img-size-hander{position:absolute;box-shadow:0 1px 4px 0 rgba(20,81,154,.5);border:1px solid #3582fb;box-sizing:content-box;pointer-events:none}.cherry .cherry-previewer-img-size-hander .cherry-previewer-img-size-hander__points{position:absolute;height:10px;width:10px;margin-top:-7px;margin-left:-7px;border-radius:9px;background:#3582fb;border:2px solid #fff;box-sizing:content-box;box-shadow:0px 2px 2px 0px rgba(20,81,154,.5);pointer-events:all}.cherry .cherry-previewer-img-size-hander .cherry-previewer-img-size-hander__background{background-repeat:no-repeat;background-size:100% 100%;opacity:.5;width:100%;height:100%}.cherry .cherry-previewer-img-size-hander .cherry-previewer-img-size-hander__points-leftTop{cursor:nw-resize}.cherry .cherry-previewer-img-size-hander .cherry-previewer-img-size-hander__points-rightTop{cursor:sw-resize}.cherry .cherry-previewer-img-size-hander .cherry-previewer-img-size-hander__points-leftBottom{cursor:sw-resize}.cherry .cherry-previewer-img-size-hander .cherry-previewer-img-size-hander__points-rightBottom{cursor:nw-resize}.cherry .cherry-previewer-img-size-hander .cherry-previewer-img-size-hander__points-middleTop{cursor:n-resize}.cherry .cherry-previewer-img-size-hander .cherry-previewer-img-size-hander__points-middleBottom{cursor:n-resize}.cherry .cherry-previewer-img-size-hander .cherry-previewer-img-size-hander__points-leftMiddle{cursor:e-resize}.cherry .cherry-previewer-img-size-hander .cherry-previewer-img-size-hander__points-rightMiddle{cursor:e-resize}.cherry .cherry-previewer-table-content-hander .cherry-previewer-table-content-hander__input{position:absolute}.cherry .cherry-previewer-table-content-hander .cherry-previewer-table-content-hander__input textarea{width:100%;height:100%;border:0;box-sizing:border-box;resize:none;outline:1px solid #3582fb;word-break:break-all}@media print{img,figure,pre,table{page-break-inside:avoid}.cherry-previewer{width:100% !important;max-height:none;border-left:none !important}.cherry-toolbar,.cherry-sidebar,.cherry-editor,.cherry-drag{display:none !important}}.cherry{display:flex;flex-flow:row wrap;align-items:stretch;align-content:flex-start;height:100%;min-height:100px;position:relative}.cherry .cherry-editor,.cherry .cherry-previewer{max-height:calc(100% - 48px);min-height:calc(100% - 48px)}.cherry .CodeMirror{height:100%}.cherry.cherry--no-toolbar .cherry-toolbar,.cherry.cherry--no-toolbar .cherry-sidebar{height:0;display:none}.cherry.cherry--no-toolbar .cherry-editor,.cherry.cherry--no-toolbar .cherry-previewer{max-height:100%;min-height:100%}.cherry{font-family:"Helvetica Neue",Arial,"Hiragino Sans GB","STHeiti","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;font-size:16px;line-height:27px;color:#3f4a56;background:#f8fafb;box-shadow:0 0 10px rgba(128,145,165,.2)}.cherry .ch-icon{vertical-align:middle}.cherry .clearfix{zoom:1}.cherry .clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;font-size:0}.cherry.fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000}.cherry .no-select{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cherry .cherry-insert-table-menu{display:block;position:fixed;top:40px;left:40px;border-collapse:separate;box-shadow:0 0 10px rgba(128,145,165,.2);padding:4px;border-radius:3px;width:auto;height:auto}.cherry .cherry-insert-table-menu-item{padding:7px;border:1px solid #dfe6ee}.cherry .cherry-insert-table-menu-item.active{background-color:#ebf3ff}.cherry[data-toolbar-theme=dark] .cherry-insert-table-menu-item{border-color:rgba(255,255,255,.2)}.cherry[data-toolbar-theme=dark] .cherry-insert-table-menu-item.active{background-color:#d7e6fe}.cherry-dropdown{position:absolute;width:130px;min-height:40px;background:#fff;box-shadow:0 5px 15px -5px rgba(0,0,0,.5);margin-left:-60px;z-index:8}.cherry-dropdown-item{width:100%;padding:0 15px;text-align:left;display:inline-block;height:36px;line-height:36px;font-size:14px;font-style:normal;cursor:pointer;box-sizing:border-box}.cherry-dropdown-item:hover{background:#ebf3ff;color:#5d9bfc}.cherry-dropdown-item .ch-icon{margin-right:10px}[data-toolbar-theme=dark] .cherry-dropdown{background:#20304b}[data-toolbar-theme=dark] .cherry-dropdown .cherry-dropdown-item{background:rgba(0,0,0,0);color:#d7e6fe}[data-toolbar-theme=dark] .cherry-dropdown .cherry-dropdown-item:hover{background:rgba(255,255,255,.1);color:#fff}.cherry-toolbar{position:relative;display:flex;align-items:center;padding:0 20px;height:48px;font-size:14px;line-height:2.8;flex-basis:100%;box-sizing:border-box;z-index:2;user-select:none;box-shadow:0 0 10px rgba(128,145,165,.2);background:#fff;overflow:hidden}[data-toolbar-theme=dark] .cherry-toolbar{background:#20304b;box-shadow:0 0 10px rgba(128,145,165,.2)}[data-toolbar-theme=dark] .cherry-toolbar .cherry-toolbar-button{color:#d7e6fe;background:rgba(0,0,0,0)}[data-toolbar-theme=dark] .cherry-toolbar .cherry-toolbar-button:hover{color:#fff;background:rgba(255,255,255,.1)}.cherry-toolbar.preview-only .cherry-toolbar-button{display:none}.cherry-toolbar.preview-only .cherry-toolbar-switchPreview{display:inline}.cherry-toolbar-button{float:left;padding:0 12px;height:38px;color:#3f4a56;background:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);-webkit-transition:background-color ease-in-out .15s,color ease-in-out .15s,border-color ease-in-out .15s;transition:background-color ease-in-out .15s,color ease-in-out .15s,border-color ease-in-out .15s;cursor:pointer;font-style:normal}.cherry-toolbar-button:hover{color:#5d9bfc;background:#ebf3ff}.cherry-toolbar-button.cherry-toolbar-split{font-size:0;height:50%;padding:0;margin-left:4px;margin-right:4px;border:none;border-left:1px solid #dfe6ee;pointer-events:none;overflow:hidden;opacity:.5}.cherry-toolbar-button.disabled{color:#ccc}.cherry .ace_search{background:#fff}.cherry-sidebar{width:30px;position:absolute;top:48px;right:7px;z-index:0;bottom:0;overflow:hidden}.cherry-sidebar .cherry-toolbar-button{height:30px;padding:3px 12px 0 6px}.cherry-sidebar .cherry-toolbar-button:hover{background:rgba(0,0,0,0)}.cherry-sidebar .cherry-toolbar-button .icon-loading.loading{display:inline-block;width:8px;height:8px}.cherry-sidebar .cherry-toolbar-button .icon-loading.loading:after{content:" ";display:block;width:8px;height:8px;margin-left:2px;margin-top:-2px;border-radius:50%;border:2px solid #000;border-color:#000 rgba(0,0,0,0) #000 rgba(0,0,0,0);animation:loading 1.2s linear infinite}@keyframes loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.cherry-bubble{position:absolute;display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;font-size:14px;min-height:35px;min-width:50px;border:1px solid #dfe6ee;background-color:#fff;box-shadow:0 2px 15px -5px rgba(0,0,0,.5);border-radius:3px;z-index:8}.cherry-bubble.cherry-bubble--centered{left:50%;transform:translateX(-50%)}.cherry-bubble .cherry-bubble-top,.cherry-bubble .cherry-bubble-bottom{position:absolute;left:50%;width:0;height:0;margin-left:-8px;border-left:8px solid rgba(0,0,0,0);border-right:8px solid rgba(0,0,0,0)}.cherry-bubble .cherry-bubble-top{top:0;transform:translateY(-100%);border-bottom:8px solid #fff}.cherry-bubble .cherry-bubble-bottom{bottom:0;transform:translateY(100%);border-top:8px solid #fff}.cherry-bubble .cherry-toolbar-button{display:inline-flex;align-items:center;justify-content:center;height:35px;cursor:pointer;user-select:none}.cherry-bubble .cherry-toolbar-button:hover{border-color:#dfe6ee;background-color:rgba(89,128,166,.05)}.cherry-bubble .cherry-toolbar-button.cherry-toolbar-split{height:65%;min-height:22.75px}[data-toolbar-theme=dark] .cherry-bubble{border-color:#20304b;background:#20304b}[data-toolbar-theme=dark] .cherry-bubble .cherry-toolbar-button{color:#d7e6fe;background:rgba(0,0,0,0)}[data-toolbar-theme=dark] .cherry-bubble .cherry-toolbar-button:hover{color:#fff;background:rgba(255,255,255,.1)}[data-toolbar-theme=dark] .cherry-bubble .cherry-bubble-top{border-bottom-color:#20304b}[data-toolbar-theme=dark] .cherry-bubble .cherry-bubble-bottom{border-top-color:#20304b}[data-toolbar-theme=dark] .cherry-bubble .cherry-toolbar-button:hover{border-color:#20304b}.cherry-switch-paste .switch-btn--bg{position:absolute;width:50%;height:100%;box-sizing:border-box;z-index:-1;left:0;top:0;opacity:.3;background-color:#5d9bfc;border-radius:2px;transition:all .3s}.cherry-switch-paste .cherry-toolbar-button{display:inline-flex;align-items:center;justify-content:center;width:80px;text-align:center}.cherry-switch-paste .cherry-toolbar-button:hover{border-color:rgba(0,0,0,0)}.cherry-switch-paste[data-type=text] .cherry-text-btn{color:#3f4a56}.cherry-switch-paste[data-type=text] .cherry-md-btn{color:#5d9bfc}.cherry-switch-paste[data-type=md] .cherry-md-btn{color:#3f4a56}.cherry-switch-paste[data-type=md] .cherry-text-btn{color:#5d9bfc}.cherry-switch-paste[data-type=md] .switch-btn--bg{left:50%}[data-toolbar-theme=dark] .cherry-switch-paste .switch-btn--bg{background-color:#fff}[data-toolbar-theme=dark] .cherry-switch-paste[data-type=text] .cherry-text-btn{color:#d7e6fe}[data-toolbar-theme=dark] .cherry-switch-paste[data-type=text] .cherry-md-btn{color:#fff}[data-toolbar-theme=dark] .cherry-switch-paste[data-type=md] .cherry-md-btn{color:#d7e6fe}[data-toolbar-theme=dark] .cherry-switch-paste[data-type=md] .cherry-text-btn{color:#fff}[data-toolbar-theme=dark] .cherry-switch-paste[data-type=md] .switch-btn--bg{left:50%}.cherry-floatmenu{z-index:4;display:none;position:absolute;left:30px;margin-left:60px;height:27px;line-height:27px;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cherry-floatmenu .cherry-toolbar-button{float:left;padding:0 9px;margin:0;height:27px;line-height:27px;font-size:14px;color:#3f4a56;overflow:hidden;vertical-align:middle;text-align:center;border:0;cursor:pointer;font-style:normal}.cherry-floatmenu .cherry-toolbar-button.cherry-toolbar-split{border-left:1px solid #dfe6ee;width:0;padding:0;overflow:hidden;height:25px}.cherry-floatmenu .cherry-toolbar-button .ch-icon{color:#aaa;font-size:12px}.cherry-floatmenu .cherry-toolbar-button:hover{background:rgba(0,0,0,.05)}.cherry-floatmenu .cherry-toolbar-button:hover .ch-icon{color:#3f4a56}.cherry-editor{position:relative;padding-top:5px;padding-right:5px;width:50%;box-sizing:border-box;overflow:hidden}.cherry-editor.cherry-editor--full{width:100%;padding-right:0}.cherry-editor.cherry-editor--hidden{display:none}.cherry-editor .CodeMirror{font-family:"Helvetica Neue",Arial,"Hiragino Sans GB","STHeiti","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;background:#f8fafb;color:#3f4a56}.cherry-editor .CodeMirror textarea{font-size:27px}.cherry-editor .CodeMirror-lines{padding:15px 34px}.cherry-editor .cm-s-default .cm-header{color:#3f4a56}.cherry-editor .cm-s-default .cm-string{color:#3f4a56}.cherry-editor .cm-s-default .cm-comment{color:#3582fb;font-family:"Menlo","Liberation Mono","Consolas","DejaVu Sans Mono","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-size:.9em}.cherry-editor .cm-s-default .cm-whitespace,.cherry-editor .cm-tab{font-family:"Menlo","Liberation Mono","Consolas","DejaVu Sans Mono","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-size:.9em}.cherry-editor .cm-s-default .cm-quote{color:#3582fb}.cherry-editor .cm-s-default .cm-link{color:#3582fb}.cherry-editor .cm-s-default .cm-url{background:#d7e6fe;font-family:"Menlo","Liberation Mono","Consolas","DejaVu Sans Mono","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-size:.9em}.cherry-editor .cm-s-default .cm-variable-2{color:#3f4a56}.cherry-editor .cm-s-default .cm-variable-3{color:#3f4a56}.cherry-editor .cm-s-default .cm-keyword{color:#3f4a56}.cherry-drag{width:15px;cursor:ew-resize;position:absolute;z-index:12;background:rgba(0,0,0,0)}.cherry-drag.cherry-drag--show{width:5px;display:block;background:#dfe6ee}.cherry-drag.cherry-drag--hidden{display:none}.cherry-editor-mask{z-index:10;position:absolute;display:none;background:rgba(0,0,0,.2)}.cherry-editor-mask.cherry-editor-mask--show{display:block}.cherry-previewer-mask{z-index:10;position:absolute;display:none;background:rgba(0,0,0,.4)}.cherry-previewer-mask.cherry-previewer-mask--show{display:block}.cherry-previewer{padding:20px 34px;border-left:2px solid #ebedee;width:50%;box-sizing:border-box;background-color:#f8fafb;min-height:auto;overflow-y:auto}.cherry-previewer .cherry-mobile-previewer-content{width:375px;height:100%;margin:0 auto;padding:25px 30px;overflow-y:scroll;box-shadow:0 0 60px rgba(0,0,0,.1);box-sizing:border-box}.cherry-previewer.cherry-previewer--hidden{width:0;display:none}.cherry-previewer.cherry-previewer--full{width:100%}.cherry-previewer .cherry-list__upper-roman{list-style:upper-roman}.cherry-previewer .cherry-list__lower-greek{list-style:lower-greek}.cherry-previewer .cherry-list__cjk-ideographic{list-style:cjk-ideographic}.cherry-previewer .cherry-list__circle{list-style:circle}.cherry-previewer .cherry-list__square{list-style:square}.cherry-previewer div[data-type=codeBlock]:hover .cherry-copy-code-block{display:block !important;position:relative;width:25px;text-align:center;height:25px;border:1px solid #ddd;cursor:pointer;float:right;right:10px;top:15px;color:#fff;border-radius:5px;margin-left:-27px;transition:all .3s;z-index:2}[data-code-block-theme=default] .cherry-previewer div[data-type=codeBlock]:hover .cherry-copy-code-block,[data-code-block-theme=funky] .cherry-previewer div[data-type=codeBlock]:hover .cherry-copy-code-block,[data-code-block-theme=solarized-light] .cherry-previewer div[data-type=codeBlock]:hover .cherry-copy-code-block,[data-code-block-theme=coy] .cherry-previewer div[data-type=codeBlock]:hover .cherry-copy-code-block{background-color:#3582fb}.cherry-previewer div[data-type=codeBlock]:hover .cherry-copy-code-block:hover{color:#3582fb;background-color:#eee;border-color:#3582fb}.cherry-color-wrap{display:none;position:fixed;width:auto;padding:5px 10px;z-index:6;background:#fff;box-shadow:0 0 10px rgba(128,145,165,.2)}.cherry-color-wrap h3{font-size:12px;margin:0px;font-weight:400}[data-toolbar-theme=dark] .cherry-color-wrap h3{color:#d7e6fe}.cherry-color-wrap .cherry-color-text{float:left;width:128px;margin:0 8px 0 5px}.cherry-color-wrap .cherry-color-bg{float:left;width:128px;margin-right:5px}.cherry-color-wrap .cherry-color-item{float:left;width:14px;height:14px;border:1px solid #fff;cursor:pointer}.cherry-color-wrap .cherry-color-item:hover{border:1px solid #000}.Cherry-Math svg{max-width:100%}.cherry-suggester-panel{display:none;position:absolute;left:0;top:0;background:#fff;border:1px solid #ccc;border-radius:2px;max-height:200px;box-shadow:0 2px 8px 1px rgba(0,0,0,.2)}.cherry-suggester-panel .cherry-suggester-panel__item{border:none;white-space:nowrap;min-width:50px;padding:5px 13px;color:#333;display:block;cursor:pointer}.cherry-suggester-panel .cherry-suggester-panel__item.cherry-suggester-panel__item--selected{background-color:#f2f2f5;text-decoration:none;color:#eb7350}.cherry-suggestion{background-color:#ebf3ff;color:#3582fb;padding:1px 4px;border-radius:3px;cursor:pointer}.cherry-markdown.theme__default ul.cherry-list__upper-roman{list-style:upper-roman}.cherry-markdown.theme__default ul.cherry-list__lower-greek{list-style:lower-greek}.cherry-markdown.theme__default ul.cherry-list__cjk-ideographic{list-style:cjk-ideographic}.cherry-markdown.theme__default ul.cherry-list__circle{list-style:circle}.cherry-markdown.theme__default ul.cherry-list__square{list-style:square}.cherry.theme__dark .cherry-toolbar,.cherry.theme__dark .cherry-floatmenu,.cherry.theme__dark .cherry-bubble,.cherry.theme__dark .cherry-sidebar{background:#3c3c3c;border-color:#3c3c3c}.cherry.theme__dark .cherry-toolbar .cherry-toolbar-button,.cherry.theme__dark .cherry-floatmenu .cherry-toolbar-button,.cherry.theme__dark .cherry-bubble .cherry-toolbar-button,.cherry.theme__dark .cherry-sidebar .cherry-toolbar-button{color:#d7e6fe}.cherry.theme__dark .cherry-toolbar .cherry-toolbar-button:hover,.cherry.theme__dark .cherry-floatmenu .cherry-toolbar-button:hover,.cherry.theme__dark .cherry-bubble .cherry-toolbar-button:hover,.cherry.theme__dark .cherry-sidebar .cherry-toolbar-button:hover{background-color:#454646;color:#fff !important;border-color:#3c3c3c}.cherry.theme__dark .cherry-toolbar .cherry-toolbar-button:hover i,.cherry.theme__dark .cherry-floatmenu .cherry-toolbar-button:hover i,.cherry.theme__dark .cherry-bubble .cherry-toolbar-button:hover i,.cherry.theme__dark .cherry-sidebar .cherry-toolbar-button:hover i{color:#fff !important}.cherry.theme__dark .cherry-dropdown{background:#3c3c3c}.cherry.theme__dark .cherry-dropdown .cherry-dropdown-item{color:#d7e6fe}.cherry.theme__dark .cherry-dropdown .cherry-dropdown-item:hover{background-color:#454646;color:#fff}.cherry.theme__dark .cherry-dropdown.cherry-color-wrap h3{color:#d7e6fe}.cherry.theme__dark .cherry-dropdown.cherry-color-wrap .cherry-color-item{border-color:#454646}.cherry.theme__dark .cherry-dropdown.cherry-color-wrap .cherry-color-item:hover{border-color:#f78553}.cherry.theme__dark .cherry-bubble .cherry-bubble-bottom{border-top-color:#3c3c3c}.cherry.theme__dark .cherry-editor{background-color:#252526}.cherry.theme__dark .cherry-editor .CodeMirror{background-color:#252526}.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-cursor{border-left:1px solid #fff}.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll span,.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll .cm-variable-2,.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll .cm-string,.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll .cm-strong,.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll .cm-em,.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll .cm-meta{color:#c8c8c8}.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll .cm-image-marker,.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll .cm-quote,.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll .cm-header{color:#f78553}.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll .cm-url{background-color:#000}.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll .cm-comment,.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-scroll .cm-url{color:#ffcb6b}.cherry.theme__dark .cherry-editor .CodeMirror .CodeMirror-selected{background-color:#454646}.cherry.theme__dark .cherry-sidebar{box-shadow:0 0 10px rgba(128,145,165,.2)}.cherry.theme__dark .cherry-previewer{background-color:#333}.cherry.theme__dark .cherry-previewer .cherry-mobile-previewer-content{background-color:#252526}.cherry.theme__dark .cherry-previewer-table-content-hander .cherry-previewer-table-content-hander__input textarea{background-color:#252526;color:#c8c8c8;outline-color:#f78553}.cherry-markdown.theme__dark{color:#c8c8c8}.cherry-markdown.theme__dark h1,.cherry-markdown.theme__dark h2,.cherry-markdown.theme__dark h3,.cherry-markdown.theme__dark h4,.cherry-markdown.theme__dark h5{color:#f78553}.cherry-markdown.theme__dark ul.cherry-list__upper-roman{list-style:upper-roman}.cherry-markdown.theme__dark ul.cherry-list__lower-greek{list-style:lower-greek}.cherry-markdown.theme__dark ul.cherry-list__cjk-ideographic{list-style:cjk-ideographic}.cherry-markdown.theme__dark ul.cherry-list__circle{list-style:circle}.cherry-markdown.theme__dark ul.cherry-list__square{list-style:square}.cherry-markdown.theme__dark blockquote{color:#c8c8c8}.cherry-markdown.theme__dark a{text-decoration:none;color:#ffcb6b}.cherry-markdown.theme__dark a:hover{color:#f78553}.cherry-markdown.theme__dark hr{border-color:dimgray}.cherry-markdown.theme__dark p code,.cherry-markdown.theme__dark li code{background-color:#000;color:#ffcb6b;border:1px solid dimgray}.cherry-markdown.theme__dark table,.cherry-markdown.theme__dark .cherry-table{color:#c8c8c8}.cherry-markdown.theme__dark table th,.cherry-markdown.theme__dark .cherry-table th{background-color:#000}.cherry-markdown.theme__dark table tr,.cherry-markdown.theme__dark table th,.cherry-markdown.theme__dark table td,.cherry-markdown.theme__dark .cherry-table tr,.cherry-markdown.theme__dark .cherry-table th,.cherry-markdown.theme__dark .cherry-table td{border-color:dimgray}.cherry-markdown.theme__dark .footnote{border-color:dimgray}.cherry-markdown.theme__dark .footnote .footnote-title{background-color:#000}.cherry-markdown.theme__dark .footnote .one-footnote{color:#c8c8c8;border-color:dimgray}.cherry-markdown.theme__dark .footnote .one-footnote a.footnote-ref{padding:5px}.cherry-markdown.theme__dark .toc{border:1px solid dimgray;margin-top:15px;margin-bottom:15px;margin-right:15px}.cherry-markdown.theme__dark .toc .toc-title{padding:15px;margin-bottom:15px;border-bottom:1px solid dimgray}.cherry-markdown.theme__dark .toc .toc-li{border:none;padding:0 20px}.cherry-markdown.theme__dark .toc .toc-li a{color:#c8c8c8}.cherry-markdown.theme__dark .toc .toc-li a:hover{color:#f78553}.cherry-markdown.theme__dark figure svg path,.cherry-markdown.theme__dark figure svg rect,.cherry-markdown.theme__dark figure svg line{stroke:#ffcb6b !important}.cherry-markdown.theme__dark figure svg text{fill:#faa000 !important;stroke:none !important}.cherry-markdown.theme__dark figure svg tspan{fill:#faa000 !important}.cherry-markdown.theme__dark figure svg circle{fill:#ececff !important}.cherry-markdown.theme__dark figure svg circle.state-start{fill:#faa000 !important}.cherry.theme__light .cherry-toolbar,.cherry.theme__light .cherry-floatmenu,.cherry.theme__light .cherry-bubble,.cherry.theme__light .cherry-sidebar{background:#fff;border-color:#fff}.cherry.theme__light .cherry-toolbar .cherry-toolbar-button,.cherry.theme__light .cherry-floatmenu .cherry-toolbar-button,.cherry.theme__light .cherry-bubble .cherry-toolbar-button,.cherry.theme__light .cherry-sidebar .cherry-toolbar-button{color:#3f4a56}.cherry.theme__light .cherry-toolbar .cherry-toolbar-button:hover,.cherry.theme__light .cherry-floatmenu .cherry-toolbar-button:hover,.cherry.theme__light .cherry-bubble .cherry-toolbar-button:hover,.cherry.theme__light .cherry-sidebar .cherry-toolbar-button:hover{background-color:#ebf3ff;color:#5d9bfc !important;border-color:#fff}.cherry.theme__light .cherry-toolbar .cherry-toolbar-button:hover i,.cherry.theme__light .cherry-floatmenu .cherry-toolbar-button:hover i,.cherry.theme__light .cherry-bubble .cherry-toolbar-button:hover i,.cherry.theme__light .cherry-sidebar .cherry-toolbar-button:hover i{color:#5d9bfc !important}.cherry.theme__light .cherry-dropdown{background:#fff}.cherry.theme__light .cherry-dropdown .cherry-dropdown-item{color:#3f4a56}.cherry.theme__light .cherry-dropdown .cherry-dropdown-item:hover{background-color:#ebf3ff;color:#5d9bfc}.cherry.theme__light .cherry-dropdown.cherry-color-wrap h3{color:#3f4a56}.cherry.theme__light .cherry-dropdown.cherry-color-wrap .cherry-color-item{border-color:#ebf3ff}.cherry.theme__light .cherry-dropdown.cherry-color-wrap .cherry-color-item:hover{border-color:#f78553}.cherry.theme__light .cherry-bubble .cherry-bubble-bottom{border-top-color:#fff}.cherry.theme__light .cherry-editor{background-color:#fff}.cherry.theme__light .cherry-editor .CodeMirror{background-color:#fff}.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-cursor{border-left:1px solid #000}.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll span,.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll .cm-variable-2,.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll .cm-string,.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll .cm-strong,.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll .cm-em,.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll .cm-meta{color:#3f4a56}.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll .cm-image-marker,.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll .cm-quote,.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll .cm-header{color:#228be6}.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll .cm-url{background-color:#d7e6fe}.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll .cm-comment,.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-scroll .cm-url{color:#4dabf7}.cherry.theme__light .cherry-editor .CodeMirror .CodeMirror-selected{background-color:#ebf3ff}.cherry.theme__light .cherry-sidebar{box-shadow:0 0 10px rgba(128,145,165,.2)}.cherry.theme__light .cherry-previewer{background-color:#fff}.cherry.theme__light .cherry-previewer .cherry-mobile-previewer-content{background-color:#fff}.cherry.theme__light .cherry-previewer-table-content-hander .cherry-previewer-table-content-hander__input textarea{background-color:#fff;color:#3f4a56;outline-color:#228be6}.cherry-markdown.theme__light{color:#3f4a56}.cherry-markdown.theme__light h1,.cherry-markdown.theme__light h2,.cherry-markdown.theme__light h3,.cherry-markdown.theme__light h4,.cherry-markdown.theme__light h5{color:#228be6}.cherry-markdown.theme__light ul.cherry-list__upper-roman{list-style:upper-roman}.cherry-markdown.theme__light ul.cherry-list__lower-greek{list-style:lower-greek}.cherry-markdown.theme__light ul.cherry-list__cjk-ideographic{list-style:cjk-ideographic}.cherry-markdown.theme__light ul.cherry-list__circle{list-style:circle}.cherry-markdown.theme__light ul.cherry-list__square{list-style:square}.cherry-markdown.theme__light blockquote{color:#3f4a56;background-color:#e7f5ff;border-color:#1971c2}.cherry-markdown.theme__light a{text-decoration:none;color:#4dabf7}.cherry-markdown.theme__light a:hover{text-decoration:underline;color:#228be6}.cherry-markdown.theme__light hr{border-color:#1971c2}.cherry-markdown.theme__light p code,.cherry-markdown.theme__light li code{background-color:#d7e6fe;color:#4dabf7;border:1px solid #1971c2}.cherry-markdown.theme__light table,.cherry-markdown.theme__light .cherry-table{color:#3f4a56}.cherry-markdown.theme__light table th,.cherry-markdown.theme__light .cherry-table th{background-color:#d7e6fe}.cherry-markdown.theme__light table tr,.cherry-markdown.theme__light table th,.cherry-markdown.theme__light table td,.cherry-markdown.theme__light .cherry-table tr,.cherry-markdown.theme__light .cherry-table th,.cherry-markdown.theme__light .cherry-table td{border-color:#1971c2}.cherry-markdown.theme__light .footnote{border-color:#1971c2}.cherry-markdown.theme__light .footnote .footnote-title{background-color:#d7e6fe}.cherry-markdown.theme__light .footnote .one-footnote{color:#3f4a56;border-color:#1971c2}.cherry-markdown.theme__light .footnote .one-footnote a.footnote-ref{padding:5px}.cherry.theme__green .cherry-toolbar,.cherry.theme__green .cherry-floatmenu,.cherry.theme__green .cherry-bubble,.cherry.theme__green .cherry-sidebar{background:#fff;border-color:#fff}.cherry.theme__green .cherry-toolbar .cherry-toolbar-button,.cherry.theme__green .cherry-floatmenu .cherry-toolbar-button,.cherry.theme__green .cherry-bubble .cherry-toolbar-button,.cherry.theme__green .cherry-sidebar .cherry-toolbar-button{color:#2b8a3e}.cherry.theme__green .cherry-toolbar .cherry-toolbar-button i,.cherry.theme__green .cherry-floatmenu .cherry-toolbar-button i,.cherry.theme__green .cherry-bubble .cherry-toolbar-button i,.cherry.theme__green .cherry-sidebar .cherry-toolbar-button i{color:#2b8a3e}.cherry.theme__green .cherry-toolbar .cherry-toolbar-button:hover,.cherry.theme__green .cherry-floatmenu .cherry-toolbar-button:hover,.cherry.theme__green .cherry-bubble .cherry-toolbar-button:hover,.cherry.theme__green .cherry-sidebar .cherry-toolbar-button:hover{background-color:#51cf66;color:#ebfbee !important;border-color:#fff}.cherry.theme__green .cherry-toolbar .cherry-toolbar-button:hover i,.cherry.theme__green .cherry-floatmenu .cherry-toolbar-button:hover i,.cherry.theme__green .cherry-bubble .cherry-toolbar-button:hover i,.cherry.theme__green .cherry-sidebar .cherry-toolbar-button:hover i{color:#ebfbee !important}.cherry.theme__green .cherry-dropdown{background:#fff}.cherry.theme__green .cherry-dropdown .cherry-dropdown-item{color:#2b8a3e}.cherry.theme__green .cherry-dropdown .cherry-dropdown-item:hover{background-color:#51cf66;color:#ebfbee}.cherry.theme__green .cherry-dropdown.cherry-color-wrap h3{color:#2b8a3e}.cherry.theme__green .cherry-dropdown.cherry-color-wrap .cherry-color-item{border-color:#51cf66}.cherry.theme__green .cherry-dropdown.cherry-color-wrap .cherry-color-item:hover{border-color:#2b8a3e}.cherry.theme__green .cherry-bubble .cherry-bubble-bottom{border-top-color:#fff}.cherry.theme__green .cherry-editor{background-color:#fff}.cherry.theme__green .cherry-editor .CodeMirror{background-color:#fff}.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-cursor{border-left:1px solid #2b8a3e}.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll span,.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll .cm-variable-2,.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll .cm-string,.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll .cm-strong,.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll .cm-em,.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll .cm-meta{color:#2b8a3e}.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll .cm-image-marker,.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll .cm-quote,.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll .cm-header{color:#37b24d}.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll .cm-url{background-color:#ebfbee}.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll .cm-comment,.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-scroll .cm-url{color:#40c057}.cherry.theme__green .cherry-editor .CodeMirror .CodeMirror-selected{background-color:#b2f2bb}.cherry.theme__green .cherry-sidebar{box-shadow:0 0 10px rgba(128,145,165,.2)}.cherry.theme__green .cherry-previewer{background-color:#ebfbee}.cherry.theme__green .cherry-previewer .cherry-mobile-previewer-content{background-color:#fff}.cherry.theme__green .cherry-previewer-table-content-hander .cherry-previewer-table-content-hander__input textarea{background-color:#fff;color:#2b8a3e;outline-color:#37b24d}.cherry-markdown.theme__green{color:#2b8a3e}.cherry-markdown.theme__green h1,.cherry-markdown.theme__green h2,.cherry-markdown.theme__green h3,.cherry-markdown.theme__green h4,.cherry-markdown.theme__green h5{color:#37b24d;text-align:center;margin-bottom:35px}.cherry-markdown.theme__green ul.cherry-list__upper-roman{list-style:upper-roman}.cherry-markdown.theme__green ul.cherry-list__lower-greek{list-style:lower-greek}.cherry-markdown.theme__green ul.cherry-list__cjk-ideographic{list-style:cjk-ideographic}.cherry-markdown.theme__green ul.cherry-list__circle{list-style:circle}.cherry-markdown.theme__green ul.cherry-list__square{list-style:square}.cherry-markdown.theme__green blockquote{color:#2b8a3e;background-color:#d3f9d8;border-color:#2f9e44}.cherry-markdown.theme__green a{text-decoration:none;color:#40c057}.cherry-markdown.theme__green a:hover{text-decoration:underline;color:#37b24d}.cherry-markdown.theme__green hr{border-color:#2f9e44}.cherry-markdown.theme__green p code,.cherry-markdown.theme__green li code{background-color:#d3f9d8;color:#40c057;border:1px solid #2f9e44}.cherry-markdown.theme__green table,.cherry-markdown.theme__green .cherry-table{color:#2b8a3e}.cherry-markdown.theme__green table th,.cherry-markdown.theme__green .cherry-table th{background-color:#d3f9d8}.cherry-markdown.theme__green table tr,.cherry-markdown.theme__green table th,.cherry-markdown.theme__green table td,.cherry-markdown.theme__green .cherry-table tr,.cherry-markdown.theme__green .cherry-table th,.cherry-markdown.theme__green .cherry-table td{border-color:#2f9e44}.cherry-markdown.theme__green .footnote{border-color:#2f9e44}.cherry-markdown.theme__green .footnote .footnote-title{background-color:#d3f9d8}.cherry-markdown.theme__green .footnote .one-footnote{color:#2b8a3e;border-color:#2f9e44}.cherry-markdown.theme__green .footnote .one-footnote a.footnote-ref{padding:5px}.cherry-markdown.theme__green .toc{border-bottom:1px solid #2f9e44;padding-bottom:15px;margin-bottom:30px}.cherry-markdown.theme__green .toc .toc-title{text-align:center;padding-bottom:15px;margin-top:30px;margin-bottom:15px;border-bottom:1px solid #2f9e44}.cherry-markdown.theme__green .toc .toc-li{border:none}.cherry-markdown.theme__green .toc .toc-li a{color:#2b8a3e}.cherry-markdown.theme__green .toc .toc-li a:hover{color:#37b24d}.cherry.theme__red .cherry-toolbar,.cherry.theme__red .cherry-floatmenu,.cherry.theme__red .cherry-bubble,.cherry.theme__red .cherry-sidebar{background:#ffdeeb;border-color:#ffdeeb}.cherry.theme__red .cherry-toolbar .cherry-toolbar-button,.cherry.theme__red .cherry-floatmenu .cherry-toolbar-button,.cherry.theme__red .cherry-bubble .cherry-toolbar-button,.cherry.theme__red .cherry-sidebar .cherry-toolbar-button{color:#c2255c}.cherry.theme__red .cherry-toolbar .cherry-toolbar-button i,.cherry.theme__red .cherry-floatmenu .cherry-toolbar-button i,.cherry.theme__red .cherry-bubble .cherry-toolbar-button i,.cherry.theme__red .cherry-sidebar .cherry-toolbar-button i{color:#c2255c}.cherry.theme__red .cherry-toolbar .cherry-toolbar-button:hover,.cherry.theme__red .cherry-floatmenu .cherry-toolbar-button:hover,.cherry.theme__red .cherry-bubble .cherry-toolbar-button:hover,.cherry.theme__red .cherry-sidebar .cherry-toolbar-button:hover{background-color:#f06595;color:#fff0f6 !important;border-color:#ffdeeb}.cherry.theme__red .cherry-toolbar .cherry-toolbar-button:hover i,.cherry.theme__red .cherry-floatmenu .cherry-toolbar-button:hover i,.cherry.theme__red .cherry-bubble .cherry-toolbar-button:hover i,.cherry.theme__red .cherry-sidebar .cherry-toolbar-button:hover i{color:#fff0f6 !important}.cherry.theme__red .cherry-dropdown{background:#ffdeeb}.cherry.theme__red .cherry-dropdown .cherry-dropdown-item{color:#c2255c}.cherry.theme__red .cherry-dropdown .cherry-dropdown-item:hover{background-color:#f06595;color:#fff0f6}.cherry.theme__red .cherry-dropdown.cherry-color-wrap h3{color:#c2255c}.cherry.theme__red .cherry-dropdown.cherry-color-wrap .cherry-color-item{border-color:#f06595}.cherry.theme__red .cherry-dropdown.cherry-color-wrap .cherry-color-item:hover{border-color:#a61e4d}.cherry.theme__red .cherry-bubble .cherry-bubble-bottom{border-top-color:#ffdeeb}.cherry.theme__red .cherry-editor{background-color:#fff0f6}.cherry.theme__red .cherry-editor .CodeMirror{background-color:#fff0f6}.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-cursor{border-left:1px solid #a61e4d}.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll span,.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll .cm-variable-2,.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll .cm-string,.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll .cm-strong,.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll .cm-em,.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll .cm-meta{color:#a61e4d}.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll .cm-image-marker,.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll .cm-quote,.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll .cm-header{color:#d6336c}.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll .cm-url{background-color:#ffdeeb}.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll .cm-comment,.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-scroll .cm-url{color:#f06595}.cherry.theme__red .cherry-editor .CodeMirror .CodeMirror-selected{background-color:#fcc2d7}.cherry.theme__red .cherry-sidebar{box-shadow:0 0 10px #fcc2d7}.cherry.theme__red .cherry-previewer{background-color:#fff0f6}.cherry.theme__red .cherry-previewer .cherry-mobile-previewer-content{background-color:#fff0f6}.cherry.theme__red .cherry-previewer-table-content-hander .cherry-previewer-table-content-hander__input textarea{background-color:#fff0f6;color:#a61e4d;outline-color:#d6336c}.cherry-markdown.theme__red{color:#a61e4d}.cherry-markdown.theme__red h1,.cherry-markdown.theme__red h2,.cherry-markdown.theme__red h3,.cherry-markdown.theme__red h4,.cherry-markdown.theme__red h5{color:#d6336c;text-align:center;border-bottom:1px dashed #c2255c;padding-bottom:15px;margin-bottom:25px}.cherry-markdown.theme__red ul.cherry-list__upper-roman{list-style:upper-roman}.cherry-markdown.theme__red ul.cherry-list__lower-greek{list-style:lower-greek}.cherry-markdown.theme__red ul.cherry-list__cjk-ideographic{list-style:cjk-ideographic}.cherry-markdown.theme__red ul.cherry-list__circle{list-style:circle}.cherry-markdown.theme__red ul.cherry-list__square{list-style:square}.cherry-markdown.theme__red blockquote{color:#a61e4d;background-color:#ffdeeb;border-color:#c2255c}.cherry-markdown.theme__red a{text-decoration:none;color:#f06595}.cherry-markdown.theme__red a:hover{text-decoration:underline;color:#d6336c}.cherry-markdown.theme__red hr{border-color:#c2255c}.cherry-markdown.theme__red p code,.cherry-markdown.theme__red li code{background-color:#ffdeeb;color:#f06595;border:1px solid #c2255c}.cherry-markdown.theme__red table,.cherry-markdown.theme__red .cherry-table{color:#a61e4d}.cherry-markdown.theme__red table th,.cherry-markdown.theme__red .cherry-table th{background-color:#ffdeeb}.cherry-markdown.theme__red table tr,.cherry-markdown.theme__red table th,.cherry-markdown.theme__red table td,.cherry-markdown.theme__red .cherry-table tr,.cherry-markdown.theme__red .cherry-table th,.cherry-markdown.theme__red .cherry-table td{border-color:#c2255c}.cherry-markdown.theme__red .footnote{border-color:#c2255c}.cherry-markdown.theme__red .footnote .footnote-title{background-color:#ffdeeb}.cherry-markdown.theme__red .footnote .one-footnote{color:#a61e4d;border-color:#c2255c}.cherry-markdown.theme__red .footnote .one-footnote a.footnote-ref{padding:5px}.cherry-markdown.theme__red .toc{border-bottom:1px solid #c2255c;padding-bottom:15px;margin-bottom:30px}.cherry-markdown.theme__red .toc .toc-title{text-align:center;padding-bottom:15px;margin-top:30px;margin-bottom:15px;border-bottom:1px solid #c2255c}.cherry-markdown.theme__red .toc .toc-li{border:none}.cherry-markdown.theme__red .toc .toc-li a{color:#a61e4d}.cherry-markdown.theme__red .toc .toc-li a:hover{color:#d6336c}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0 !important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:rgba(0,0,0,0)}}@-webkit-keyframes blink{50%{background-color:rgba(0,0,0,0)}}@keyframes blink{50%{background-color:rgba(0,0,0,0)}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:bold}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:blue}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll !important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:50px solid rgba(0,0,0,0)}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none !important;border:none !important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:rgba(0,0,0,0)}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:rgba(0,0,0,0)}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:rgba(0,0,0,0);font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none} \ No newline at end of file diff --git a/vscodePlugin/web-resources/dist/cherry-markdown.min.js b/vscodePlugin/web-resources/dist/cherry-markdown.min.js new file mode 100644 index 000000000..10bad506b --- /dev/null +++ b/vscodePlugin/web-resources/dist/cherry-markdown.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).Cherry={})}(this,(function(t){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function r(t,e){return t(e={exports:{}},e.exports),e.exports}var i,a,o=function(t){return t&&t.Math==Math&&t},s=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof e&&e)||function(){return this}()||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},A=!l((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})),u=Function.prototype,h=u.apply,f=u.call,d="object"==typeof Reflect&&Reflect.apply||(A?f.bind(h):function(){return f.apply(h,arguments)}),p=Function.prototype,g=p.bind,m=p.call,y=A&&g.bind(m,m),v=A?function(t){return t&&y(t)}:function(t){return t&&function(){return m.apply(t,arguments)}},b=function(t){return"function"==typeof t},_=!l((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),w=Function.prototype.call,E=A?w.bind(w):function(){return w.apply(w,arguments)},C={}.propertyIsEnumerable,x=Object.getOwnPropertyDescriptor,B={f:x&&!C.call({1:2},1)?function(t){var e=x(this,t);return!!e&&e.enumerable}:C},T=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},k=v({}.toString),S=v("".slice),I=function(t){return S(k(t),8,-1)},L=s.Object,F=v("".split),N=l((function(){return!L("z").propertyIsEnumerable(0)}))?function(t){return"String"==I(t)?F(t,""):L(t)}:L,D=s.TypeError,O=function(t){if(null==t)throw D("Can't call method on "+t);return t},M=function(t){return N(O(t))},R=function(t){return"object"==typeof t?null!==t:b(t)},U={},P=function(t){return b(t)?t:void 0},H=function(t,e){return arguments.length<2?P(U[t])||P(s[t]):U[t]&&U[t][e]||s[t]&&s[t][e]},Q=v({}.isPrototypeOf),G=H("navigator","userAgent")||"",$=s.process,K=s.Deno,j=$&&$.versions||K&&K.version,Y=j&&j.v8;Y&&(a=(i=Y.split("."))[0]>0&&i[0]<4?1:+(i[0]+i[1])),!a&&G&&(!(i=G.match(/Edge\/(\d+)/))||i[1]>=74)&&(i=G.match(/Chrome\/(\d+)/))&&(a=+i[1]);var z=a,W=!!Object.getOwnPropertySymbols&&!l((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&z&&z<41})),V=W&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,q=s.Object,X=V?function(t){return"symbol"==typeof t}:function(t){var e=H("Symbol");return b(e)&&Q(e.prototype,q(t))},J=s.String,Z=function(t){try{return J(t)}catch(t){return"Object"}},tt=s.TypeError,et=function(t){if(b(t))return t;throw tt(Z(t)+" is not a function")},nt=function(t,e){var n=t[e];return null==n?void 0:et(n)},rt=s.TypeError,it=Object.defineProperty,at=s["__core-js_shared__"]||function(t,e){try{it(s,t,{value:e,configurable:!0,writable:!0})}catch(n){s[t]=e}return e}("__core-js_shared__",{}),ot=r((function(t){(t.exports=function(t,e){return at[t]||(at[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.22.6",mode:"pure",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.6/LICENSE",source:"https://github.com/zloirock/core-js"})})),st=s.Object,ct=function(t){return st(O(t))},lt=v({}.hasOwnProperty),At=Object.hasOwn||function(t,e){return lt(ct(t),e)},ut=0,ht=Math.random(),ft=v(1..toString),dt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+ft(++ut+ht,36)},pt=ot("wks"),gt=s.Symbol,mt=gt&>.for,yt=V?gt:gt&>.withoutSetter||dt,vt=function(t){if(!At(pt,t)||!W&&"string"!=typeof pt[t]){var e="Symbol."+t;W&&At(gt,t)?pt[t]=gt[t]:pt[t]=V&&mt?mt(e):yt(e)}return pt[t]},bt=s.TypeError,_t=vt("toPrimitive"),wt=function(t,e){if(!R(t)||X(t))return t;var n,r=nt(t,_t);if(r){if(void 0===e&&(e="default"),n=E(r,t,e),!R(n)||X(n))return n;throw bt("Can't convert object to primitive value")}return void 0===e&&(e="number"),function(t,e){var n,r;if("string"===e&&b(n=t.toString)&&!R(r=E(n,t)))return r;if(b(n=t.valueOf)&&!R(r=E(n,t)))return r;if("string"!==e&&b(n=t.toString)&&!R(r=E(n,t)))return r;throw rt("Can't convert object to primitive value")}(t,e)},Et=function(t){var e=wt(t,"string");return X(e)?e:e+""},Ct=s.document,xt=R(Ct)&&R(Ct.createElement),Bt=function(t){return xt?Ct.createElement(t):{}},Tt=!_&&!l((function(){return 7!=Object.defineProperty(Bt("div"),"a",{get:function(){return 7}}).a})),kt=Object.getOwnPropertyDescriptor,St={f:_?kt:function(t,e){if(t=M(t),e=Et(e),Tt)try{return kt(t,e)}catch(t){}if(At(t,e))return T(!E(B.f,t,e),t[e])}},It=/#|\.prototype\./,Lt=function(t,e){var n=Nt[Ft(t)];return n==Ot||n!=Dt&&(b(e)?l(e):!!e)},Ft=Lt.normalize=function(t){return String(t).replace(It,".").toLowerCase()},Nt=Lt.data={},Dt=Lt.NATIVE="N",Ot=Lt.POLYFILL="P",Mt=Lt,Rt=v(v.bind),Ut=function(t,e){return et(t),void 0===e?t:A?Rt(t,e):function(){return t.apply(e,arguments)}},Pt=_&&l((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),Ht=s.String,Qt=s.TypeError,Gt=function(t){if(R(t))return t;throw Qt(Ht(t)+" is not an object")},$t=s.TypeError,Kt=Object.defineProperty,jt=Object.getOwnPropertyDescriptor,Yt={f:_?Pt?function(t,e,n){if(Gt(t),e=Et(e),Gt(n),"function"==typeof t&&"prototype"===e&&"value"in n&&"writable"in n&&!n.writable){var r=jt(t,e);r&&r.writable&&(t[e]=n.value,n={configurable:"configurable"in n?n.configurable:r.configurable,enumerable:"enumerable"in n?n.enumerable:r.enumerable,writable:!1})}return Kt(t,e,n)}:Kt:function(t,e,n){if(Gt(t),e=Et(e),Gt(n),Tt)try{return Kt(t,e,n)}catch(t){}if("get"in n||"set"in n)throw $t("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},zt=_?function(t,e,n){return Yt.f(t,e,T(1,n))}:function(t,e,n){return t[e]=n,t},Wt=St.f,Vt=function(t){var e=function(n,r,i){if(this instanceof e){switch(arguments.length){case 0:return new t;case 1:return new t(n);case 2:return new t(n,r)}return new t(n,r,i)}return d(t,this,arguments)};return e.prototype=t.prototype,e},qt=function(t,e){var n,r,i,a,o,c,l,A,u=t.target,h=t.global,f=t.stat,d=t.proto,p=h?s:f?s[u]:(s[u]||{}).prototype,g=h?U:U[u]||zt(U,u,{})[u],m=g.prototype;for(i in e)n=!Mt(h?i:u+(f?".":"#")+i,t.forced)&&p&&At(p,i),o=g[i],n&&(c=t.dontCallGetSet?(A=Wt(p,i))&&A.value:p[i]),a=n&&c?c:e[i],n&&typeof o==typeof a||(l=t.bind&&n?Ut(a,s):t.wrap&&n?Vt(a):d&&b(a)?v(a):a,(t.sham||a&&a.sham||o&&o.sham)&&zt(l,"sham",!0),zt(g,i,l),d&&(At(U,r=u+"Prototype")||zt(U,r,{}),zt(U[r],i,a),t.real&&m&&!m[i]&&zt(m,i,a)))},Xt=v([].slice),Jt=s.Function,Zt=v([].concat),te=v([].join),ee={},ne=function(t,e,n){if(!At(ee,e)){for(var r=[],i=0;i0?xe:Ce)(e)},Te=function(t){var e=+t;return e!=e||0===e?0:Be(e)},ke=Math.max,Se=Math.min,Ie=function(t,e){var n=Te(t);return n<0?ke(n+e,0):Se(n,e)},Le=Math.min,Fe=function(t){return t>0?Le(Te(t),9007199254740991):0},Ne=function(t){return Fe(t.length)},De=function(t){return function(e,n,r){var i,a=M(e),o=Ne(a),s=Ie(r,o);if(t&&n!=n){for(;o>s;)if((i=a[s++])!=i)return!0}else for(;o>s;s++)if((t||s in a)&&a[s]===n)return t||s||0;return!t&&-1}},Oe={includes:De(!0),indexOf:De(!1)},Me={},Re=Oe.indexOf,Ue=v([].push),Pe=function(t,e){var n,r=M(t),i=0,a=[];for(n in r)!At(Me,n)&&At(r,n)&&Ue(a,n);for(;e.length>i;)At(r,n=e[i++])&&(~Re(a,n)||Ue(a,n));return a},He=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Qe=Object.keys||function(t){return Pe(t,He)},Ge={f:_&&!Pt?Object.defineProperties:function(t,e){Gt(t);for(var n,r=M(e),i=Qe(e),a=i.length,o=0;a>o;)Yt.f(t,n=i[o++],r[n]);return t}},$e=H("document","documentElement"),Ke=ot("keys"),je=function(t){return Ke[t]||(Ke[t]=dt(t))},Ye=je("IE_PROTO"),ze=function(){},We=function(t){return" + + + + diff --git a/vscodePlugin/web-resources/logo/favicon.ico b/vscodePlugin/web-resources/logo/favicon.ico new file mode 100644 index 000000000..aa8c8987c Binary files /dev/null and b/vscodePlugin/web-resources/logo/favicon.ico differ diff --git a/vscodePlugin/web-resources/markdown/basic.md b/vscodePlugin/web-resources/markdown/basic.md new file mode 100644 index 000000000..75540f483 --- /dev/null +++ b/vscodePlugin/web-resources/markdown/basic.md @@ -0,0 +1,792 @@ +# 例子 +> [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$ + + +----- + + + +## 插入音视频 +**说明** +- 使用 `!v[描述](视频链接地址)` 插入视频 + - 使用 `!v[描述](视频链接地址){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 THL A29 Limited, a Tencent company. All rights reserved. + * The below software in this distribution may have been modified by THL A29 Limited ("Tencent Modifications"). + * + * All Tencent Modifications are Copyright (C) THL A29 Limited. + * + * 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) diff --git a/vscodePlugin/web-resources/scripts/index-demo.js b/vscodePlugin/web-resources/scripts/index-demo.js new file mode 100644 index 000000000..2c3b264b6 --- /dev/null +++ b/vscodePlugin/web-resources/scripts/index-demo.js @@ -0,0 +1,298 @@ +/* eslint-disable no-unused-vars */ +/* eslint-disable no-undef */ +/** + * 自定义一个语法 + */ +const CustomHookA = Cherry.createSyntaxHook( + 'codeBlock', + Cherry.constants.HOOKS_TYPE_LIST.PAR, + { + makeHtml(str) { + console.warn('custom hook', 'hello'); + return str; + }, + rule(str) { + const regex = { + begin: '', + content: '', + end: '', + }; + regex.reg = new RegExp(regex.begin + regex.content + regex.end, 'g'); + return regex; + }, + }, +); +/** + * 自定义一个自定义菜单 + * 点第一次时,把选中的文字变成同时加粗和斜体 + * 保持光标选区不变,点第二次时,把加粗斜体的文字变成普通文本 + */ +const customMenuA = Cherry.createMenuHook('加粗斜体', { + iconName: 'font', + onClick(selection) { + // 获取用户选中的文字,调用getSelection方法后,如果用户没有选中任何文字,会尝试获取光标所在位置的单词或句子 + let $selection = this.getSelection(selection) || '同时加粗斜体'; + // 如果是单选,并且选中内容的开始结束内没有加粗语法,则扩大选中范围 + if (!this.isSelections && !/^\s*(\*\*\*)[\s\S]+(\1)/.test($selection)) { + this.getMoreSelection('***', '***', () => { + const newSelection = this.editor.editor.getSelection(); + const isBoldItalic = /^\s*(\*\*\*)[\s\S]+(\1)/.test(newSelection); + if (isBoldItalic) { + $selection = newSelection; + } + return isBoldItalic; + }); + } + // 如果选中的文本中已经有加粗语法了,则去掉加粗语法 + if (/^\s*(\*\*\*)[\s\S]+(\1)/.test($selection)) { + return $selection.replace( + /(^)(\s*)(\*\*\*)([^\n]+)(\3)(\s*)($)/gm, + '$1$4$7', + ); + } + /** + * 注册缩小选区的规则 + * 注册后,插入“***TEXT***”,选中状态会变成“***【TEXT】***” + * 如果不注册,插入后效果为:“【***TEXT***】” + */ + this.registerAfterClickCb(() => { + this.setLessSelection('***', '***'); + }); + return $selection.replace(/(^)([^\n]+)($)/gm, '$1***$2***$3'); + }, +}); +/** + * 定义一个空壳,用于自行规划cherry已有工具栏的层级结构 + */ +const customMenuB = Cherry.createMenuHook('实验室', { + iconName: '', +}); +/** + * 定义一个自带二级菜单的工具栏 + */ +const customMenuC = Cherry.createMenuHook('帮助中心', { + iconName: 'question', + onClick: (selection, type) => { + switch (type) { + case 'shortKey': + return `${selection}快捷键看这里:https://codemirror.net/5/demo/sublime.html`; + case 'github': + return `${selection}我们在这里:https://github.com/Tencent/cherry-markdown`; + case 'release': + return `${selection}我们在这里:https://github.com/Tencent/cherry-markdown/releases`; + default: + return selection; + } + }, + subMenuConfig: [ + { + noIcon: true, + name: '快捷键', + onclick: (event) => { + cherry.toolbar.menus.hooks.customMenuCName.fire(null, 'shortKey'); + }, + }, + { + noIcon: true, + name: '联系我们', + onclick: (event) => { + cherry.toolbar.menus.hooks.customMenuCName.fire(null, 'github'); + }, + }, + { + noIcon: true, + name: '更新日志', + onclick: (event) => { + cherry.toolbar.menus.hooks.customMenuCName.fire(null, 'release'); + }, + }, + ], +}); + +const basicConfig = { + id: 'markdown', + externals: { + echarts: window.echarts, + katex: window.katex, + MathJax: window.MathJax, + }, + isPreviewOnly: false, + engine: { + global: { + urlProcessor(url, srcType) { + console.log('url-processor', url, srcType); + return url; + }, + }, + syntax: { + codeBlock: { + theme: 'twilight', + }, + table: { + enableChart: false, + // chartEngine: Engine Class + }, + fontEmphasis: { + allowWhitespace: false, // 是否允许首尾空格 + }, + strikethrough: { + needWhitespace: false, // 是否必须有前后空格 + }, + mathBlock: { + engine: 'MathJax', // katex或MathJax + src: 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js', // 如果使用MathJax plugins,则需要使用该url通过script标签引入 + }, + inlineMath: { + engine: 'MathJax', // katex或MathJax + }, + emoji: { + useUnicode: false, + customResourceURL: + 'https://github.githubassets.com/images/icons/emoji/unicode/${code}.png?v8', + upperCase: true, + }, + // toc: { + // tocStyle: 'nested' + // } + // 'header': { + // strict: false + // } + }, + customSyntax: { + // SyntaxHookClass + CustomHook: { + syntaxClass: CustomHookA, + force: false, + after: 'br', + }, + }, + }, + toolbars: { + toolbar: [ + 'bold', + 'italic', + { + strikethrough: [ + 'strikethrough', + 'underline', + 'sub', + 'sup', + 'ruby', + 'customMenuAName', + ], + }, + 'size', + '|', + 'color', + 'header', + '|', + 'ol', + 'ul', + 'checklist', + '|', + 'formula', + { + insert: [ + 'image', + 'audio', + 'video', + 'link', + 'hr', + 'br', + 'code', + 'formula', + 'toc', + 'table', + 'pdf', + 'word', + 'ruby', + ], + }, + 'graph', + 'togglePreview', + 'settings', + 'switchModel', + 'codeTheme', + 'export', + { + customMenuBName: ['ruby', 'audio', 'video', 'customMenuAName'], + }, + 'customMenuCName', + 'theme', + ], + bubble: [ + 'bold', + 'italic', + 'underline', + 'strikethrough', + 'sub', + 'sup', + 'quote', + 'ruby', + '|', + 'size', + 'color', + ], // array or false + sidebar: ['mobilePreview', 'copy'], + customMenu: { + customMenuAName: customMenuA, + customMenuBName: customMenuB, + customMenuCName: customMenuC, + }, + }, + editor: { + defaultModel: 'edit&preview', + }, + previewer: { + // 自定义markdown预览区域class + // className: 'markdown' + }, + keydown: [], + // extensions: [], + callback: { + changeString2Pinyin: pinyin, + }, +}; + +(function () { + const config = Object.assign({}, basicConfig, { value: '' }); + const cherryMakdown = new Cherry(config); + // Get a reference to the VS Code webview api. + // We use this API to post messages back to our extension. + + // @ts-ignore + const vscode = acquireVsCodeApi(); + + document.addEventListener('keydown', (e) => { + if (e.ctrlKey && e.key === 's') { + const text = cherryMakdown.getValue(); + vscode.postMessage({ + type: 'save', + data: { + text, + }, + }); + vscode.setState({ text }); + } + }); + + function updateContent(/** @type {string} */ text) { + cherryMakdown.setValue(text, true); + } + + window.addEventListener('message', (event) => { + const message = event.data; // The json data that the extension sent + const { text } = message; + switch (message.type) { + case 'update': + updateContent(text); + vscode.setState({ text }); + return; + } + }); + + const state = vscode.getState(); + if (state) { + updateContent(state.text); + } +}()); diff --git a/vscodePlugin/web-resources/scripts/index.css b/vscodePlugin/web-resources/scripts/index.css new file mode 100644 index 000000000..0590214f8 --- /dev/null +++ b/vscodePlugin/web-resources/scripts/index.css @@ -0,0 +1,108 @@ +#markdown-info { + display: none; +} + +.cherry-toolbar { + height: 32px; +} + +.cherry-dropdown { + margin-top: -4px; +} + +.cherry-sidebar { + top: 33px; +} + +.cherry-editor, .cherry-previewer { + max-height: calc(100% - 33px) !important; +} + +.cherry-toolbar .cherry-toolbar-insertChart { + display: none; +} + +.markdown-preview-only .cherry-toolbar { + display: none; +} +.markdown-preview-only .cherry-sidebar { + top: 0; + padding-top: 33px; +} +.markdown-preview-only .cherry-editor { + display: none; +} +.markdown-preview-only .cherry-previewer { + width: 100% !important; + max-height: 100% !important; + display: block !important; +} + +.cherry-copy-code-block { + display: none; +} + +.cherry-color-item__000000 { background-color: #000000;} +.cherry-color-item__444444 { background-color: #444444;} +.cherry-color-item__666666 { background-color: #666666;} +.cherry-color-item__999999 { background-color: #999999;} +.cherry-color-item__cccccc { background-color: #cccccc;} +.cherry-color-item__eeeeee { background-color: #eeeeee;} +.cherry-color-item__f3f3f3 { background-color: #f3f3f3;} +.cherry-color-item__ffffff { background-color: #ffffff;} +.cherry-color-item__ff0000 { background-color: #ff0000;} +.cherry-color-item__ff9900 { background-color: #ff9900;} +.cherry-color-item__ffff00 { background-color: #ffff00;} +.cherry-color-item__00ff00 { background-color: #00ff00;} +.cherry-color-item__00ffff { background-color: #00ffff;} +.cherry-color-item__0000ff { background-color: #0000ff;} +.cherry-color-item__9900ff { background-color: #9900ff;} +.cherry-color-item__ff00ff { background-color: #ff00ff;} +.cherry-color-item__f4cccc { background-color: #f4cccc;} +.cherry-color-item__fce5cd { background-color: #fce5cd;} +.cherry-color-item__fff2cc { background-color: #fff2cc;} +.cherry-color-item__d9ead3 { background-color: #d9ead3;} +.cherry-color-item__d0e0e3 { background-color: #d0e0e3;} +.cherry-color-item__cfe2f3 { background-color: #cfe2f3;} +.cherry-color-item__d9d2e9 { background-color: #d9d2e9;} +.cherry-color-item__ead1dc { background-color: #ead1dc;} +.cherry-color-item__ea9999 { background-color: #ea9999;} +.cherry-color-item__f9cb9c { background-color: #f9cb9c;} +.cherry-color-item__ffe599 { background-color: #ffe599;} +.cherry-color-item__b6d7a8 { background-color: #b6d7a8;} +.cherry-color-item__a2c4c9 { background-color: #a2c4c9;} +.cherry-color-item__9fc5e8 { background-color: #9fc5e8;} +.cherry-color-item__b4a7d6 { background-color: #b4a7d6;} +.cherry-color-item__d5a6bd { background-color: #d5a6bd;} +.cherry-color-item__e06666 { background-color: #e06666;} +.cherry-color-item__f6b26b { background-color: #f6b26b;} +.cherry-color-item__ffd966 { background-color: #ffd966;} +.cherry-color-item__93c47d { background-color: #93c47d;} +.cherry-color-item__76a5af { background-color: #76a5af;} +.cherry-color-item__6fa8dc { background-color: #6fa8dc;} +.cherry-color-item__8e7cc3 { background-color: #8e7cc3;} +.cherry-color-item__c27ba0 { background-color: #c27ba0;} +.cherry-color-item__cc0000 { background-color: #cc0000;} +.cherry-color-item__e69138 { background-color: #e69138;} +.cherry-color-item__f1c232 { background-color: #f1c232;} +.cherry-color-item__6aa84f { background-color: #6aa84f;} +.cherry-color-item__45818e { background-color: #45818e;} +.cherry-color-item__3d85c6 { background-color: #3d85c6;} +.cherry-color-item__674ea7 { background-color: #674ea7;} +.cherry-color-item__a64d79 { background-color: #a64d79;} +.cherry-color-item__990000 { background-color: #990000;} +.cherry-color-item__b45f06 { background-color: #b45f06;} +.cherry-color-item__bf9000 { background-color: #bf9000;} +.cherry-color-item__38761d { background-color: #38761d;} +.cherry-color-item__134f5c { background-color: #134f5c;} +.cherry-color-item__0b5394 { background-color: #0b5394;} +.cherry-color-item__351c75 { background-color: #351c75;} +.cherry-color-item__741b47 { background-color: #741b47;} +.cherry-color-item__660000 { background-color: #660000;} +.cherry-color-item__783f04 { background-color: #783f04;} +.cherry-color-item__7f6000 { background-color: #7f6000;} +.cherry-color-item__274e13 { background-color: #274e13;} +.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 diff --git a/vscodePlugin/web-resources/scripts/index.js b/vscodePlugin/web-resources/scripts/index.js new file mode 100644 index 000000000..e1d9a658c --- /dev/null +++ b/vscodePlugin/web-resources/scripts/index.js @@ -0,0 +1,373 @@ +import 'mathjax/es5/tex-svg.js'; + +/** + * 在侧边栏增加编辑/预览入口 + */ +// eslint-disable-next-line no-undef +const customMenuChangeModule = Cherry.createMenuHook('编辑', { + iconName: 'pen', + onClick(selection) { + if (window.isDisableEdit) { + vscode.postMessage({ + type: 'tips', + data: 'can\'t edit presently 当前文档已失焦点,编辑后无法保存', + }); + return selection; + } + const pen = document.getElementsByClassName('cherry-toolbar-pen')[0]; + const markdown = document.getElementById('markdown'); + const isPreviewOnly = !/active/.test(pen.className); + if (isPreviewOnly) { + markdown.className = 'markdown-edit-preview'; + pen.className = `${pen.className} active`; + pen.innerHTML = ''; + } else { + markdown.className = 'markdown-preview-only'; + pen.className = pen.className.replace(' active', ''); + pen.innerHTML = ''; + } + return selection; + }, +}); + +// eslint-disable-next-line no-undef +const customMenuFont = Cherry.createMenuHook('字体样式', { + iconName: 'font', +}); + +// eslint-disable-next-line no-undef +// const customMenuPublish = Cherry.createMenuHook('发布', { +// iconName: 'publish', +// onClick: (selection, type) => { +// publish(type); +// }, +// subMenuConfig: [ +// { noIcon: true, name: '发布到Iwiki', onclick: () => { +// cherry.toolbar.menus.hooks.customMenuChangeTheme.fire(null, 'iwiki'); +// } }, +// { noIcon: true, name: '发布到KM', onclick: () => { +// cherry.toolbar.menus.hooks.customMenuChangeTheme.fire(null, 'km'); +// } }, +// { noIcon: true, name: '发布到简书', onclick: () => { +// cherry.toolbar.menus.hooks.customMenuChangeTheme.fire(null, 'jianshu'); +// } }, +// ], +// }); + + +// eslint-disable-next-line no-undef +const customMenuChangeTheme = Cherry.createMenuHook('主题', { + iconName: 'insertChart', + onClick: (selection, type) => { + changeTheme(type); + vscode.postMessage({ + type: 'change-theme', + data: type, + }); + }, + subMenuConfig: [ + { noIcon: true, name: '默认·default', onclick: () => { + cherry.toolbar.menus.hooks.customMenuChangeTheme.fire(null, 'default'); + } }, + { noIcon: true, name: '暗黑·dark', onclick: () => { + cherry.toolbar.menus.hooks.customMenuChangeTheme.fire(null, 'dark'); + } }, + { noIcon: true, name: '明亮·light', onclick: () => { + cherry.toolbar.menus.hooks.customMenuChangeTheme.fire(null, 'light'); + } }, + { noIcon: true, name: '清新·green', onclick: () => { + cherry.toolbar.menus.hooks.customMenuChangeTheme.fire(null, 'green'); + } }, + { noIcon: true, name: '热情·red', onclick: () => { + cherry.toolbar.menus.hooks.customMenuChangeTheme.fire(null, 'red'); + } }, + ], +}); + +function changeTheme(theme) { + const cherryDom = cherry.wrapperDom; + const cherryPreviewDom = cherry.previewer.getDom(); + cherryDom.className = `${cherryDom.className.replace(/ theme__[\S]+$/, '')} theme__${theme}`; + cherryPreviewDom.className = `${cherryPreviewDom.className.replace(/ theme__[\S]+$/, '')} theme__${theme}`; +} + +const basicConfig = { + id: 'markdown', + externals: { + echarts: window.echarts, + MathJax: window.MathJax, + }, + isPreviewOnly: false, + engine: { + global: { + urlProcessor(url, srcType) { + console.log('url-processor', url, srcType); + return url; + }, + }, + syntax: { + codeBlock: { + theme: 'twilight', + }, + table: { + enableChart: false, + // chartEngine: Engine Class + }, + fontEmphasis: { + allowWhitespace: false, // 是否允许首尾空格 + }, + strikethrough: { + needWhitespace: false, // 是否必须有前后空格 + }, + mathBlock: { + engine: 'MathJax', // katex或MathJax + }, + inlineMath: { + engine: 'MathJax', // katex或MathJax + }, + emoji: { + useUnicode: true, + }, + header: { + anchorStyle: 'none', + }, + }, + }, + toolbars: { + toolbar: [ + 'bold', + 'italic', + { + customMenuFont: [ + 'strikethrough', + 'underline', + 'sub', + 'sup', + 'ruby', + ], + }, + 'size', + 'color', + '|', + 'header', + 'list', + '|', + { + insert: [ + // 'image', + // 'audio', + // 'video', + 'link', + 'hr', + 'br', + 'code', + 'formula', + 'toc', + 'table', + // 'pdf', + // 'word', + 'ruby', + ], + }, + 'graph', + 'togglePreview', + 'customMenuChangeTheme', + ], + bubble: [ + 'bold', + 'italic', + 'underline', + 'strikethrough', + 'sub', + 'sup', + 'quote', + 'ruby', + '|', + 'size', + 'color', + ], // array or false + sidebar: ['customMenuChangeModule', 'mobilePreview', 'copy', 'customMenuChangeTheme'], + customMenu: { + customMenuChangeModule, + customMenuFont, + customMenuChangeTheme, + }, + }, + editor: { + }, + previewer: { + // 自定义markdown预览区域class + // className: 'markdown' + }, + keydown: [], + // extensions: [], + callback: { + // eslint-disable-next-line no-undef + changeString2Pinyin: pinyin, + }, +}; + +const mdInfo = JSON.parse(document.getElementById('markdown-info').value); +const config = Object.assign({}, basicConfig, { value: mdInfo.text }); +const { theme } = mdInfo; +// eslint-disable-next-line new-cap, no-undef +const cherry = new Cherry(config); +// eslint-disable-next-line no-undef +const vscode = acquireVsCodeApi(); +changeTheme(theme); + +// 预览区域滚动的时候发送事件 +cherry.previewer.getDom().addEventListener('scroll', () => { + const domContainer = cherry.previewer.getDom(); + if (window.disableScrollListener) { + return true; + } + if (domContainer.scrollTop <= 0) { + postScrollMessage(0); + return true; + } + if (domContainer.scrollTop + domContainer.offsetHeight > domContainer.scrollHeight) { + postScrollMessage(-1); + return true; + } + // 获取预览容器基准坐标 + const basePoint = domContainer.getBoundingClientRect(); + // 观察点坐标,取容器中轴线 + const watchPoint = { + x: basePoint.left + basePoint.width / 2, + y: basePoint.top + 1, + }; + // 获取观察点处的DOM + const targetElements = elementsFromPoint(watchPoint.x, watchPoint.y); + let targetElement; + for (let i = 0; i < targetElements.length; i++) { + if (domContainer.contains(targetElements[i])) { + targetElement = targetElements[i]; + break; + } + } + if (!targetElement || targetElement === domContainer) { + return; + } + // 获取观察点处最近的markdown元素 + let mdElement = targetElement.closest('[data-sign]'); + // 由于新增脚注,内部容器也有可能存在data-sign,所以需要循环往父级找 + while (mdElement && mdElement.parentElement && mdElement.parentElement !== domContainer) { + mdElement = mdElement.parentElement.closest('[data-sign]'); + } + if (!mdElement) { + return; + } + // 计算当前焦点容器的所在行数 + let lines = 0; + let element = mdElement; + while (element) { + lines += +element.getAttribute('data-lines'); + element = element.previousElementSibling; // 取上一个兄弟节点,直到为null + } + // markdown元素存在margin,getBoundingRect不能获取到margin + const mdElementStyle = getComputedStyle(mdElement); + const marginTop = parseFloat(mdElementStyle.marginTop); + const marginBottom = parseFloat(mdElementStyle.marginBottom); + // markdown元素基于当前页面的矩形模型 + const mdRect = mdElement.getBoundingClientRect(); + const mdActualHeight = mdRect.height + marginTop + marginBottom; + // (mdRect.y - marginTop)为顶部触达区域,basePoint.y为预览区域的顶部,故可视范围应减去预览区域的偏移 + const mdOffsetTop = mdRect.y - marginTop - basePoint.y; + const lineNum = +mdElement.getAttribute('data-lines'); // 当前markdown元素所占行数 + const percent = Math.abs(mdOffsetTop) / mdActualHeight; + postScrollMessage(lines - lineNum + parseInt(lineNum * percent, 10)); +}); + +function postScrollMessage(line) { + vscode.postMessage({ + type: 'preview-scroll', + data: line, + }); +} + +cherry.onChange((newValue) => { + if (window.disableEditListener) { + return true; + } + vscode.postMessage({ + type: 'cherry-change', + data: newValue, + }); +}); + +let scrollTimeOut; +let editTimeOut; +window.addEventListener('message', (e) => { + const { cmd, data } = e.data; + switch (cmd) { + case 'editor-change': + window.disableEditListener = true; + cherry.setValue(data.text); + changeTheme(data.theme); + editTimeOut && clearTimeout(editTimeOut); + editTimeOut = setTimeout(() => { + window.disableEditListener = false; + }, 500); + break; + case 'editor-scroll': + window.disableScrollListener = true; + cherry.previewer.scrollToLineNumWithOffset(data, 0); + scrollTimeOut && clearTimeout(scrollTimeOut); + scrollTimeOut = setTimeout(() => { + window.disableScrollListener = false; + }, 500); + break; + case 'disable-edit': + // 强制进入预览模式 + window.isDisableEdit = true; + // eslint-disable-next-line no-case-declarations + const pen = document.getElementsByClassName('cherry-toolbar-pen')[0]; + // eslint-disable-next-line no-case-declarations + const markdown = document.getElementById('markdown'); + markdown.className = 'markdown-preview-only'; + pen.className = pen.className.replace(' active', ''); + pen.innerHTML = ''; + break; + case 'enable-edit': + window.isDisableEdit = false; + break; + } +}); + +/** + * document.elementsFromPoint polyfill + * ref: https://github.com/JSmith01/elementsfrompoint-polyfill/blob/master/index.js + * @param {number} x + * @param {number} y + */ +function elementsFromPoint(x, y) { + // see https://caniuse.com/#search=elementsFromPoint + if (typeof document.elementsFromPoint === 'function') { + return document.elementsFromPoint(x, y); + } + + if (typeof (/** @type {any}*/ (document).msElementsFromPoint) === 'function') { + const nodeList = /** @type {any}*/ (document).msElementsFromPoint(x, y); + return nodeList !== null ? Array.from(nodeList) : nodeList; + } + const elements = []; + const pointerEvents = []; + /** @type {HTMLElement} */ + let ele; + do { + const currentElement = /** @type {HTMLElement} */ (document.elementFromPoint(x, y)); + if (ele !== currentElement) { + ele = currentElement; + elements.push(ele); + pointerEvents.push(ele.style.pointerEvents); + ele.style.pointerEvents = 'none'; + } else { + ele = null; + } + } while (ele); + elements.forEach((e, index) => { + e.style.pointerEvents = pointerEvents[index]; + }); + return elements; +} diff --git a/vscodePlugin/web-resources/scripts/pinyin/pinyin_dist.js b/vscodePlugin/web-resources/scripts/pinyin/pinyin_dist.js new file mode 100644 index 000000000..0ffea9ed7 --- /dev/null +++ b/vscodePlugin/web-resources/scripts/pinyin/pinyin_dist.js @@ -0,0 +1,28 @@ +/* eslint-disable no-unused-vars */ +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; + + let str = ''; + + let s; + + for (let 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; +} diff --git a/vscodePlugin/webpack.config.js b/vscodePlugin/webpack.config.js new file mode 100644 index 000000000..6be8c865f --- /dev/null +++ b/vscodePlugin/webpack.config.js @@ -0,0 +1,75 @@ +// @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];