---
CMakeLists.txt | 35 +-
Cargo.lock | 398 +-
Cargo.toml | 11 +-
capi/chewing-internal/Cargo.toml | 4 +-
capi/chewing-internal/cbindgen.toml | 4 +-
.../include/chewing_internal.h | 472 +
capi/chewing-internal/src/
key2pho.rs | 16 +-
capi/chewing-internal/src/
lib.rs | 12 +-
capi/chewing-public/Cargo.toml | 2 +-
capi/chewing-public/src/
lib.rs | 2 +-
data/CMakeLists.txt | 24 +-
data/word.src | 26096 ++++++++++++++++
include/internal/bopomofo-private.h | 4 +
include/internal/chewing-private.h | 32 +-
src/bopomofo.c | 21 +
src/chewing-sql.c | 82 +-
src/chewing.c | 0
src/chewingio.c | 222 +-
src/chewingutil.c | 165 +-
src/choice.c | 42 +-
src/
lib.rs | 10 +-
src/mod_aux.c | 8 +-
src/
path.rs | 58 +
src/pinyin.c | 42 +-
src/private.h | 37 +
src/tree.c | 26 +-
src/userphrase-hash.c | 8 +-
src/userphrase-sql.c | 76 +-
test/CMakeLists.txt | 13 +-
test/test-bopomofo.c | 5 +
test/test-path.c | 11 +
test/testhelper.c | 8 +-
test/testhelper.h | 10 +-
65 files changed, 34410 insertions(+), 342 deletions(-)
create mode 100644 capi/chewing-internal/src/
binding.rs
create mode 100644 capi/chewing-internal/src/
bopomofo.rs
create mode 100644 capi/chewing-internal/src/
compat.rs
create mode 100644 capi/chewing-internal/src/
conversion.rs
create mode 100644 capi/chewing-internal/src/
dict.rs
create mode 100644 capi/chewing-internal/src/
ffi.rs
create mode 100644 capi/chewing-internal/src/
path.rs
create mode 100644 capi/chewing-internal/src/
types.rs
create mode 100644 capi/chewing-internal/src/
userphrase.rs
create mode 100644 capi/chewing-internal/src/
utf8.rs
create mode 100644 data/word.src
create mode 100644 src/chewing.c
create mode 100644 src/
path.rs
create mode 100644 tools/Cargo.toml
create mode 100644 tools/src/bin/
init_database.rs
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 76c155f..90ab4f5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -75,7 +75,7 @@ option(USE_VALGRIND "Use valgrind when testing" true)
option(WITH_RUST "Use rust implemented internals (experimental)" true)
if (WITH_RUST)
add_subdirectory(cmake/corrosion)
- corrosion_import_crate(MANIFEST_PATH Cargo.toml)
+ corrosion_import_crate(MANIFEST_PATH Cargo.toml NO_LINKER_OVERRIDE)
add_compile_definitions(WITH_RUST)
endif()
@@ -167,8 +167,8 @@ set(ALL_INC
)
if (WITH_RUST)
- include_directories(capi/chewing-internal/include)
include_directories(capi/chewing-public/include)
+ include_directories(capi/chewing-internal/include)
list(APPEND ALL_INC capi/chewing-public/include/chewing_rs.h)
endif()
@@ -182,8 +182,7 @@ add_library(common OBJECT
${INC_DIR}/internal/key2pho-private.h
${INC_DIR}/internal/memory-private.h
- ${SRC_DIR}/common/chewing-utf8-util.c
- ${SRC_DIR}/common/key2pho.c
+ src/chewing.c
)
add_library(chewing OBJECT
@@ -191,19 +190,28 @@ add_library(chewing OBJECT
${INC_DIR}/internal/chewing-private.h
${INC_DIR}/internal/chewingutil.h
${INC_DIR}/internal/choice-private.h
- ${INC_DIR}/internal/dict-private.h
${INC_DIR}/internal/global-private.h
- ${INC_DIR}/internal/pinyin-private.h
- ${INC_DIR}/internal/tree-private.h
- ${INC_DIR}/internal/userphrase-private.h
- ${INC_DIR}/internal/bopomofo-private.h
${SRC_DIR}/compat.c
${SRC_DIR}/chewingio.c
${SRC_DIR}/chewingutil.c
${SRC_DIR}/choice.c
- ${SRC_DIR}/dict.c
${SRC_DIR}/mod_aux.c
+ ${SRC_DIR}/private.h
+)
+if (NOT WITH_RUST)
+target_sources(common PRIVATE
+ ${SRC_DIR}/common/chewing-utf8-util.c
+ ${SRC_DIR}/common/key2pho.c
+)
+target_sources(chewing PRIVATE
+ ${INC_DIR}/internal/dict-private.h
+ ${INC_DIR}/internal/pinyin-private.h
+ ${INC_DIR}/internal/tree-private.h
+ ${INC_DIR}/internal/userphrase-private.h
+ ${INC_DIR}/internal/bopomofo-private.h
+
+ ${SRC_DIR}/dict.c
${SRC_DIR}/pinyin.c
${SRC_DIR}/porting_layer/include/plat_mmap.h
${SRC_DIR}/porting_layer/include/plat_path.h
@@ -214,15 +222,16 @@ add_library(chewing OBJECT
${SRC_DIR}/porting_layer/src/plat_mmap_windows.c
${SRC_DIR}/porting_layer/src/plat_path.c
${SRC_DIR}/porting_layer/src/rpl_malloc.c
- ${SRC_DIR}/private.h
${SRC_DIR}/tree.c
${SRC_DIR}/userphrase.c
${SRC_DIR}/bopomofo.c
)
+endif()
target_compile_definitions(chewing PRIVATE
CHEWING_DATADIR=\"${CMAKE_INSTALL_FULL_DATADIR}/libchewing\"
)
+if (NOT WITH_RUST)
if (WITH_SQLITE3)
add_library(userphrase STATIC
${INC_DIR}/internal/chewing-sql.h
@@ -262,6 +271,7 @@ else()
${SRC_DIR}/userphrase-hash.c
)
endif()
+endif()
if (BUILD_DLL OR NOT MSVC)
if (MSVC)
@@ -285,13 +295,14 @@ if (NOT BUILD_DLL)
endif()
foreach(lib ${LIBS})
- target_link_libraries(${lib} userphrase)
if (WITH_SQLITE3 AND NOT WITH_INTERNAL_SQLITE3)
target_link_libraries(${lib} ${SQLITE3_LIBRARY})
endif()
if (WITH_RUST)
target_link_libraries(${lib} chewing-public)
target_link_libraries(${lib} chewing-internal)
+ else()
+ target_link_libraries(${lib} userphrase)
endif()
endforeach()
diff --git a/Cargo.lock b/Cargo.lock
index 49659ae..3574fae 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2,13 +2,30 @@
# It is not intended for manual editing.
version = 3
+[[package]]
+name = "ahash"
+version = "0.7.6"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
+dependencies = [
+ "getrandom",
+ "once_cell",
+ "version_check",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.68"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
+
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+
https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
- "hermit-abi",
+ "hermit-abi 0.1.19",
"libc",
"winapi",
]
@@ -19,6 +36,16 @@ version = "1.1.0"
source = "registry+
https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+[[package]]
+name = "binary-layout"
+version = "3.1.3"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "4eb8cda7e0cb274442a8ac32a9d5719e89355a4871be9dccae681fb8f5e9ec1c"
+dependencies = [
+ "doc-comment",
+ "paste",
+]
+
[[package]]
name = "bitflags"
version = "1.3.2"
@@ -31,7 +58,7 @@ version = "0.24.3"
source = "registry+
https://github.com/rust-lang/crates.io-index"
checksum = "a6358dedf60f4d9b8db43ad187391afe959746101346fe51bb978126bec61dfb"
dependencies = [
- "clap",
+ "clap 3.2.23",
"heck",
"indexmap",
"log",
@@ -44,6 +71,12 @@ dependencies = [
"toml",
]
+[[package]]
+name = "cc"
+version = "1.0.78"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d"
+
[[package]]
name = "cfg-if"
version = "1.0.0"
@@ -54,7 +87,14 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
name = "chewing"
version = "0.5.1-alpha.1"
dependencies = [
+ "binary-layout",
+ "dirs-next",
+ "indexmap",
+ "riff",
+ "rusqlite",
+ "tempfile",
"thiserror",
+ "tracing",
]
[[package]]
@@ -63,6 +103,8 @@ version = "0.5.1-alpha.1"
dependencies = [
"cbindgen",
"chewing",
+ "chewing-public",
+ "ffi-opaque",
]
[[package]]
@@ -73,6 +115,16 @@ dependencies = [
"chewing",
]
+[[package]]
+name = "chewing-tools"
+version = "0.5.1-alpha.1"
+dependencies = [
+ "anyhow",
+ "chewing",
+ "clap 4.1.4",
+ "thiserror",
+]
+
[[package]]
name = "clap"
version = "3.2.23"
@@ -81,13 +133,26 @@ checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
dependencies = [
"atty",
"bitflags",
- "clap_lex",
+ "clap_lex 0.2.4",
"indexmap",
"strsim",
"termcolor",
"textwrap",
]
+[[package]]
+name = "clap"
+version = "4.1.4"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "f13b9c79b5d1dd500d20ef541215a6423c75829ef43117e1b4d17fd8af0b5d76"
+dependencies = [
+ "bitflags",
+ "clap_lex 0.3.1",
+ "is-terminal",
+ "strsim",
+ "termcolor",
+]
+
[[package]]
name = "clap_lex"
version = "0.2.4"
@@ -97,6 +162,75 @@ dependencies = [
"os_str_bytes",
]
+[[package]]
+name = "clap_lex"
+version = "0.3.1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade"
+dependencies = [
+ "os_str_bytes",
+]
+
+[[package]]
+name = "dirs-next"
+version = "2.0.0"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
+dependencies = [
+ "cfg-if",
+ "dirs-sys-next",
+]
+
+[[package]]
+name = "dirs-sys-next"
+version = "0.1.2"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "doc-comment"
+version = "0.3.3"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
+
+[[package]]
+name = "errno"
+version = "0.2.8"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
+dependencies = [
+ "errno-dragonfly",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "errno-dragonfly"
+version = "0.1.2"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "fallible-iterator"
+version = "0.2.0"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
+
+[[package]]
+name = "fallible-streaming-iterator"
+version = "0.1.9"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
+
[[package]]
name = "fastrand"
version = "1.8.0"
@@ -106,11 +240,40 @@ dependencies = [
"instant",
]
+[[package]]
+name = "ffi-opaque"
+version = "2.0.1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "ec54ac60a7f2ee9a97cad9946f9bf629a3bc6a7ae59e68983dc9318f5a54b81a"
+
+[[package]]
+name = "getrandom"
+version = "0.2.8"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+
https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+dependencies = [
+ "ahash",
+]
+
+[[package]]
+name = "hashlink"
+version = "0.8.1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa"
+dependencies = [
+ "hashbrown",
+]
[[package]]
name = "heck"
@@ -127,6 +290,15 @@ dependencies = [
"libc",
]
+[[package]]
+name = "hermit-abi"
+version = "0.2.6"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
+dependencies = [
+ "libc",
+]
+
[[package]]
name = "indexmap"
version = "1.9.2"
@@ -146,6 +318,28 @@ dependencies = [
"cfg-if",
]
+[[package]]
+name = "io-lifetimes"
+version = "1.0.4"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e"
+dependencies = [
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.2"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189"
+dependencies = [
+ "hermit-abi 0.2.6",
+ "io-lifetimes",
+ "rustix",
+ "windows-sys",
+]
+
[[package]]
name = "itoa"
version = "1.0.5"
@@ -158,6 +352,22 @@ version = "0.2.139"
source = "registry+
https://github.com/rust-lang/crates.io-index"
checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
+[[package]]
+name = "libsqlite3-sys"
+version = "0.25.2"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa"
+dependencies = [
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.1.4"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
+
[[package]]
name = "log"
version = "0.4.17"
@@ -167,12 +377,36 @@ dependencies = [
"cfg-if",
]
+[[package]]
+name = "once_cell"
+version = "1.17.0"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
+
[[package]]
name = "os_str_bytes"
version = "6.4.1"
source = "registry+
https://github.com/rust-lang/crates.io-index"
checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
+[[package]]
+name = "paste"
+version = "1.0.11"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba"
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.9"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.26"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+
[[package]]
name = "proc-macro2"
version = "1.0.50"
@@ -200,6 +434,17 @@ dependencies = [
"bitflags",
]
+[[package]]
+name = "redox_users"
+version = "0.4.3"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+dependencies = [
+ "getrandom",
+ "redox_syscall",
+ "thiserror",
+]
+
[[package]]
name = "remove_dir_all"
version = "0.5.3"
@@ -209,6 +454,40 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "riff"
+version = "1.0.1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "b9b1a3d5f46d53f4a3478e2be4a5a5ce5108ea58b100dcd139830eae7f79a3a1"
+
+[[package]]
+name = "rusqlite"
+version = "0.28.0"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a"
+dependencies = [
+ "bitflags",
+ "fallible-iterator",
+ "fallible-streaming-iterator",
+ "hashlink",
+ "libsqlite3-sys",
+ "smallvec",
+]
+
+[[package]]
+name = "rustix"
+version = "0.36.7"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03"
+dependencies = [
+ "bitflags",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys",
+]
+
[[package]]
name = "ryu"
version = "1.0.12"
@@ -246,6 +525,12 @@ dependencies = [
"serde",
]
+[[package]]
+name = "smallvec"
+version = "1.10.0"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+
[[package]]
name = "strsim"
version = "0.10.0"
@@ -321,12 +606,62 @@ dependencies = [
"serde",
]
+[[package]]
+name = "tracing"
+version = "0.1.37"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+dependencies = [
+ "cfg-if",
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.23"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.30"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
+dependencies = [
+ "once_cell",
+]
+
[[package]]
name = "unicode-ident"
version = "1.0.6"
source = "registry+
https://github.com/rust-lang/crates.io-index"
checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
[[package]]
name = "winapi"
version = "0.3.9"
@@ -357,3 +692,60 @@ name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+
https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.42.0"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.1"
+source = "registry+
https://github.com/rust-lang/crates.io-index"
+checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
diff --git a/Cargo.toml b/Cargo.toml
index 4db5cf4..7be2878 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,12 +7,19 @@ version = "0.5.1-alpha.1"
edition = "2021"
[dependencies]
+binary-layout = "3.0.0"
+dirs-next = "2.0.0"
+indexmap = "1.9.2"
+riff = "1.0.0"
+rusqlite = "0.28.0"
thiserror = "1.0.0"
+tracing = "0.1.37"
[dev-dependencies]
+tempfile = "3"
[workspace]
-members = ["capi/chewing-internal", "capi/chewing-public"]
+members = ["capi/chewing-internal", "capi/chewing-public", "tools"]
[profile.release]
-lto = "thin"
+lto = "thin"
\ No newline at end of file
diff --git a/capi/chewing-internal/Cargo.toml b/capi/chewing-internal/Cargo.toml
index dd53c9b..c5f1bed 100644
--- a/capi/chewing-internal/Cargo.toml
+++ b/capi/chewing-internal/Cargo.toml
@@ -7,9 +7,11 @@ edition = "2021"
[dependencies]
chewing = { version = "0.5.1-alpha.1", path = "../.." }
+chewing-public = { version = "0.5.1-alpha.1", path = "../chewing-public" }
+ffi-opaque = "2.0.0"
[lib]
-crate-type = ["staticlib"]
+crate-type = ["rlib", "staticlib"]
[build-dependencies]
cbindgen = "0.24.3"
diff --git a/capi/chewing-internal/cbindgen.toml b/capi/chewing-internal/cbindgen.toml
index af85092..afd1357 100644
--- a/capi/chewing-internal/cbindgen.toml
+++ b/capi/chewing-internal/cbindgen.toml
@@ -16,7 +16,7 @@ header = """
include_guard = "chewing_internal_bindings_h"
autogen_warning = "/* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */"
pragma_once = true
-include_version = false
+includes = ["chewing_rs.h"]
cpp_compat = true
usize_is_size_t = true
@@ -31,4 +31,4 @@ rename_fields = "CamelCase"
rename_variants = "ScreamingSnakeCase"
[export]
-include = []
+include = ["BOPOMOFO", "KB", "UserUpdate", "ChewingContext", "Phrase"]
diff --git a/capi/chewing-internal/include/chewing_internal.h b/capi/chewing-internal/include/chewing_internal.h
index 3d7bbbf..9d2a690 100644
--- a/capi/chewing-internal/include/chewing_internal.h
+++ b/capi/chewing-internal/include/chewing_internal.h
@@ -18,11 +18,422 @@
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
+#include "chewing_rs.h"
+
+#define MAX_UTF8_SIZE 4
+
+#define MAX_UTF8_BUF (MAX_UTF8_SIZE + 1)
+
+#define BOPOMOFO_SIZE 4
+
+#define MAX_BOPOMOFO_UTF8_BUF ((BOPOMOFO_SIZE * MAX_UTF8_SIZE) + 1)
+
+#define PINYIN_SIZE 10
+
+#define MAX_PHRASE_LEN 11
+
+#define MAX_PHRASE_UTF8_BUF ((MAX_PHRASE_LEN * MAX_UTF8_SIZE) + 1)
+
+#define MAX_PHONE_SEQ_LEN 50
+
+#define MAX_PHONE_SEQ_BUF (MAX_PHONE_SEQ_LEN + 1)
+
+#define MAX_PHONE_SEQ_UTF8_BUF ((MAX_PHONE_SEQ_LEN * MAX_UTF8_SIZE) + 1)
+
+#define MIN_CHI_SYMBOL_LEN 0
+
+#define MAX_CHI_SYMBOL_LEN (MAX_PHONE_SEQ_LEN - MAX_PHRASE_LEN)
+
+#define MAX_INTERVAL (((MAX_PHONE_SEQ_LEN + 1) * MAX_PHONE_SEQ_LEN) / 2)
+
+#define MAX_CHOICE 567
+
+#define MAX_CHOICE_BUF 50
+
+#define EASY_SYMBOL_KEY_TAB_LEN 36
+
+#define AUX_PREFIX_LEN 3
+
+#define MAX_SHOW_MSG_BUF ((MAX_UTF8_SIZE * (MAX_PHRASE_LEN + AUX_PREFIX_LEN)) + 1)
+
+#define N_HASH_BIT 14
+
+#define HASH_TABLE_SIZE (1 << N_HASH_BIT)
+
+#define WORD_CHOICE 0
+
+#define SYMBOL_CATEGORY_CHOICE 1
+
+#define SYMBOL_CHOICE_INSERT 2
+
+#define SYMBOL_CHOICE_UPDATE 3
+
+typedef enum BOPOMOFO {
+ BOPOMOFO_IGNORE,
+ BOPOMOFO_ABSORB,
+ BOPOMOFO_COMMIT,
+ BOPOMOFO_KEY_ERROR,
+ BOPOMOFO_ERROR,
+ BOPOMOFO_NO_WORD,
+ BOPOMOFO_OPEN_SYMBOL_TABLE,
+} BOPOMOFO;
+
+typedef enum Category {
+ CHEWING_NONE,
+ CHEWING_CHINESE,
+ CHEWING_SYMBOL,
+} Category;
+
+typedef enum KB {
+ KB_DEFAULT,
+ KB_HSU,
+ KB_IBM,
+ KB_GIN_YIEH,
+ KB_ET,
+ KB_ET26,
+ KB_DVORAK,
+ KB_DVORAK_HSU,
+ KB_DACHEN_CP26,
+ KB_HANYU_PINYIN,
+ KB_THL_PINYIN,
+ KB_MPS2_PINYIN,
+ KB_CARPALX,
+ KB_TYPE_NUM,
+} KB;
+
+typedef enum KeyBehavior {
+ IGNORE = 0,
+ ABSORB,
+ COMMIT,
+ KEY_ERROR,
+ ERROR,
+ NO_WORD,
+ OPEN_SYMBOL_TABLE,
+} KeyBehavior;
+
+typedef enum KeyboardLayoutCompat {
+ DEFAULT = 0,
+ HSU,
+ IBM,
+ GIN_YIEH,
+ ET,
+ ET26,
+ DVORAK,
+ DVORAK_HSU,
+ DACHEN_CP26,
+ HANYU_PINYIN,
+ THL_PINYIN,
+ MPS2_PINYIN,
+ CARPALX,
+} KeyboardLayoutCompat;
+
+enum UserUpdate
+#ifdef __cplusplus
+ : uint8_t
+#endif // __cplusplus
+ {
+ USER_UPDATE_INSERT = 1,
+ USER_UPDATE_MODIFY = 2,
+ USER_UPDATE_FAIL = 4,
+};
+#ifndef __cplusplus
+typedef uint8_t UserUpdate;
+#endif // __cplusplus
+
+typedef struct ChewingConversionEngine ChewingConversionEngine;
+
+/**
+ * A collection of dictionaries that returns the union of the lookup results.
+ * # Examples
+ *
+ * ```
+ * # fn main() -> Result<(), Box<dyn std::error::Error>> {
+ * use std::collections::{HashMap, HashSet};
+ *
+ * use chewing::{dictionary::{LayeredDictionary, Dictionary}, syl, zhuyin::Bopomofo};
+ *
+ * let mut sys_dict = Box::new(HashMap::new());
+ * let mut user_dict = Box::new(HashMap::new());
+ * sys_dict.insert(
+ * vec![syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]],
+ * vec![("測", 1).into(), ("冊", 1).into(), ("側", 1).into()]
+ * );
+ * user_dict.insert(
+ * vec![syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]],
+ * vec![("策", 100).into(), ("冊", 100).into()]
+ * );
+ *
+ * let user_block_list = Box::new(HashSet::from(["側".to_string()]));
+ *
+ * let dict = LayeredDictionary::new(vec![sys_dict, user_dict], vec![user_block_list]);
+ * assert_eq!(
+ * [
+ * ("策", 100).into(),
+ * ("冊", 100).into(),
+ * ("測", 1).into(),
+ * ]
+ * .into_iter()
+ * .collect::<HashSet<_>>(),
+ * dict.lookup_phrase(&[
+ * syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]
+ * ])
+ * .collect::<HashSet<_>>(),
+ * );
+ * # Ok(())
+ * # }
+ * ```
+ */
+typedef struct LayeredDictionary LayeredDictionary;
+
+typedef struct SyllableEditorWithKeymap SyllableEditorWithKeymap;
+
+typedef struct TreeType TreeType;
+
+typedef struct UserphraseDbAndEstimate UserphraseDbAndEstimate;
+
+typedef struct AvailInfoAvail {
+ int len;
+ const void *id;
+} AvailInfoAvail;
+
+/**
+ * Information of available phrase or character choices.
+ */
+typedef struct AvailInfo {
+ /**
+ * All kinds of lengths of available phrases.
+ */
+ struct AvailInfoAvail avail[MAX_PHRASE_LEN];
+ /**
+ * Total number of available lengths.
+ */
+ int nAvail;
+ /**
+ * The current choosing available length.
+ */
+ int currentAvail;
+} AvailInfo;
+
+typedef struct ChoiceInfo {
+ /**
+ * Total page number.
+ */
+ int nPage;
+ /**
+ * Current page number.
+ */
+ int pageNo;
+ /**
+ * Number of choices per page.
+ */
+ int nChoicePerPage;
+ /**
+ * Store possible phrases for being chosen.
+ */
+ char totalChoiceStr[MAX_CHOICE][MAX_PHRASE_UTF8_BUF];
+ /**
+ * Number of phrases to choose.
+ */
+ int nTotalChoice;
+ int oldChiSymbolCursor;
+ int isSymbol;
+} ChoiceInfo;
+
+typedef struct PhrasingOutput {
+ IntervalType dispInterval[MAX_INTERVAL];
+ int nDispInterval;
+ int nNumCut;
+} PhrasingOutput;
+
+typedef struct BopomofoData {
+ struct SyllableEditorWithKeymap *editorWithKeymap;
+} BopomofoData;
+
+typedef struct PreeditBuf {
+ enum Category category;
+ uint8_t char_[MAX_UTF8_BUF];
+} PreeditBuf;
+
+typedef struct UserPhraseData {
+ uint16_t phoneSeq[MAX_PHONE_SEQ_LEN];
+ char wordSeq[MAX_PHRASE_UTF8_BUF];
+ int userfreq;
+ int recentTime;
+ int origfreq;
+ int maxfreq;
+} UserPhraseData;
+
+typedef struct SymbolEntry {
+ /**
+ * Total number of symbols in the category.
+ *
+ * If n_symbols = 0, the category is treat as a symbol,
+ * which is a zero-terminated utf-8 string.
+ *
+ * In that case, `symbols` is unused and isn't allocated at all.
+ */
+ int nSymbols;
+ /**
+ * Category name of the symbols.
+ */
+ char category[MAX_PHRASE_UTF8_BUF];
+ char symbols[0][MAX_UTF8_BUF];
+} SymbolEntry;
+
+typedef struct ChewingStaticData {
+ unsigned int nSymbolEntry;
+ struct SymbolEntry **symbolTable;
+ char *gEasySymbolValue[EASY_SYMBOL_KEY_TAB_LEN];
+ int gEasySymbolNum[EASY_SYMBOL_KEY_TAB_LEN];
+} ChewingStaticData;
+
+typedef struct ChewingData {
+ struct AvailInfo availInfo;
+ struct ChoiceInfo choiceInfo;
+ struct PhrasingOutput phrOut;
+ struct BopomofoData bopomofoData;
+ ChewingConfigData config;
+ /**
+ * Current input buffer, content == 0 means Chinese code
+ */
+ struct PreeditBuf preeditBuf[MAX_PHONE_SEQ_LEN];
+ int chiSymbolCursor;
+ int chiSymbolBufLen;
+ int pointStart;
+ int pointEnd;
+ int bShowMsg;
+ char showMsg[MAX_SHOW_MSG_BUF];
+ int showMsgLen;
+ uint16_t phoneSeq[MAX_PHONE_SEQ_LEN];
+ uint16_t phoneSeqAlt[MAX_PHONE_SEQ_LEN];
+ int nPhoneSeq;
+ char selectStr[MAX_PHONE_SEQ_LEN][MAX_PHRASE_UTF8_BUF];
+ IntervalType selectInterval[MAX_PHONE_SEQ_LEN];
+ int nSelect;
+ IntervalType preferInterval[MAX_INTERVAL];
+ int nPrefer;
+ int bUserArrCnnct[MAX_PHONE_SEQ_BUF];
+ int bUserArrBrkpt[MAX_PHONE_SEQ_BUF];
+ int bArrBrkpt[MAX_PHONE_SEQ_BUF];
+ int bSymbolArrBrkpt[MAX_PHONE_SEQ_BUF];
+ int bChiSym;
+ int bSelect;
+ int bFirstKey;
+ int bFullShape;
+ char symbolKeyBuf[MAX_PHONE_SEQ_LEN];
+ struct UserPhraseData userphraseData;
+ struct ChewingStaticData staticData;
+ void (*logger)(void *data, int level, const char *fmt);
+ void *loggerData;
+ const struct LayeredDictionary *dict;
+ struct ChewingConversionEngine *ce;
+ struct UserphraseDbAndEstimate *ue;
+ void *phraseIter;
+} ChewingData;
+
+typedef struct Phrase {
+ char phrase[MAX_PHONE_SEQ_BUF];
+ int freq;
+} Phrase;
+
+typedef struct ChewingOutput {
+ /**
+ * The content of edit buffer
+ */
+ char preeditBuf[MAX_PHONE_SEQ_UTF8_BUF];
+ /**
+ * The length of edit buffer
+ */
+ int chiSymbolBufLen;
+ /**
+ * The current position of the cursor
+ */
+ long chiSymbolCursor;
+ long pointStart;
+ long pointEnd;
+ char bopomofoBuf[MAX_BOPOMOFO_UTF8_BUF];
+ IntervalType dispInterval[MAX_INTERVAL];
+ int nDispInterval;
+ int dispBrkpt[MAX_PHONE_SEQ_BUF];
+ char commitBuf[MAX_PHONE_SEQ_UTF8_BUF];
+ int commitBufLen;
+ struct ChoiceInfo *pci;
+ int bChiSym;
+ int selKey[MAX_SELKEY];
+ int keystrokeRtn;
+} ChewingOutput;
+
+typedef struct ChewingContext {
+ struct ChewingData *data;
+ struct ChewingOutput *output;
+ int cand_no;
+ int it_no;
+ int kb_no;
+} ChewingContext;
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
+extern int toPreeditBufIndex(struct ChewingData *pgdata, int pos);
+
+extern int HaninSymbolInput(struct ChewingData *pgdata);
+
+struct SyllableEditorWithKeymap *NewPhoneticEditor(enum KeyboardLayoutCompat kb_type);
+
+void FreePhoneticEditor(struct SyllableEditorWithKeymap *editor_keymap);
+
+enum KeyBehavior BopomofoPhoInput(struct ChewingData *pgdata, int32_t key);
+
+void BopomofoPhoInx(const struct BopomofoData *bopomofo_data, int32_t *pho_inx);
+
+void BopomofoPhoInxAlt(const struct BopomofoData *bopomofo_data, int32_t *pho_inx);
+
+void BopomofoKeyseq(const struct BopomofoData *bopomofo_data, char *key_seq);
+
+uint16_t BopomofoSyllableIndex(const struct BopomofoData *bopomofo_data);
+
+uint16_t BopomofoSyllableIndexAlt(const struct BopomofoData *bopomofo_data);
+
+uint16_t BopomofoRemoveLast(struct BopomofoData *bopomofo_data);
+
+uint16_t BopomofoRemoveAll(struct BopomofoData *bopomofo_data);
+
+int BopomofoKbType(const struct BopomofoData *bopomofo_data);
+
+uint16_t BopomofoIsEntering(const struct BopomofoData *bopomofo_data);
+
+bool InitPinyin(struct ChewingData *_pgdata, char *_path);
+
+void TerminatePinyin(struct ChewingData *_pgdata);
+
+int InitTree(struct ChewingData *pgdata, const char *_prefix);
+
+void TerminateTree(struct ChewingData *pgdata);
+
+void Phrasing(struct ChewingData *pgdata, bool _all_phrasing);
+
+bool IsIntersect(IntervalType in1, IntervalType in2);
+
+int InitDict(struct ChewingData *pgdata, const char *prefix);
+
+void TerminateDict(struct ChewingData *pgdata);
+
+bool GetCharFirst(struct ChewingData *pgdata, struct Phrase *phrase, uint16_t syllable_u16);
+
+void GetPhraseFirst(struct ChewingData *pgdata,
+ struct Phrase *phrase,
+ const struct TreeType *tree_type);
+
+struct TreeType *TreeFindPhrase(struct ChewingData *pgdata,
+ int begin,
+ int end,
+ uint16_t *syllables_u16);
+
+void FreeTreePhrase(struct TreeType *tree_type);
+
+bool GetVocabNext(struct ChewingData *pgdata, struct Phrase *phrase);
+
uint16_t UintFromPhone(const char *phone);
uint16_t UintFromPhoneInx(const int *ph_inx);
@@ -33,6 +444,67 @@ ptrdiff_t UintArrayFromBopomofo(uint16_t *phone_seq, size_t phone_len, const cha
int GetPhoneLenFromUint(uint16_t phone_num);
+int get_search_path(char *path, size_t path_len);
+
+int find_path_by_files(const char *search_path,
+ const char *const *files,
+ uint8_t *output,
+ size_t output_len);
+
+char *GetDefaultUserPhrasePath(void *_data);
+
+void FreeDefaultUserPhrasePath(char *path);
+
+int InitUserphrase(struct ChewingData *pgdata, char *path);
+
+void TerminateUserphrase(struct ChewingData *pgdata);
+
+const struct UserPhraseData *UserGetPhraseFirst(struct ChewingData *pgdata,
+ uint16_t *syllables_u16_ptr);
+
+const struct UserPhraseData *UserGetPhraseNext(struct ChewingData *pgdata,
+ uint16_t *_syllables_u16_ptr);
+
+void UserGetPhraseEnd(struct ChewingData *pgdata, uint16_t *_syllables_u16_ptr);
+
+uint8_t UserUpdatePhrase(struct ChewingData *pgdata,
+ uint16_t *syllables_u16_ptr,
+ char *phrase_str_ptr);
+
+bool UserRemovePhrase(struct ChewingData *pgdata,
+ uint16_t *syllables_u16_ptr,
+ char *phrase_str_ptr);
+
+void IncreaseLifeTime(struct ChewingData *pgdata);
+
+void UserUpdatePhraseBegin(struct ChewingData *_pgdata);
+
+void UserUpdatePhraseEnd(struct ChewingData *_pgdata);
+
+void *UserEnumeratePhrase(const struct UserphraseDbAndEstimate *ue);
+
+bool UserEnumerateHasNext(void *iter_ptr, unsigned int *phrase_len_ptr, unsigned int *bopomofo_len);
+
+int UserEnumerateGet(void *iter_ptr,
+ char *phrase_buf,
+ const unsigned int *_phrase_len_ptr,
+ char *bopomofo_buf,
+ const unsigned int *_bopomofo_len);
+
+int ueStrLen(const char *str);
+
+int ueBytesFromChar(unsigned char b);
+
+int ueStrNBytes(const char *str, int n);
+
+int ueStrNCpy(char *dest, const char *src, size_t n, int end);
+
+char *ueStrSeek(char *src, size_t n);
+
+const char *ueConstStrSeek(const char *src, size_t n);
+
+const char *ueStrStr(const char *str, size_t _lstr, const char *substr, size_t _lsub);
+
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus
diff --git a/capi/chewing-internal/src/
binding.rs b/capi/chewing-internal/src/
binding.rs
new file mode 100644
index 0000000..7cc475b
--- /dev/null
+++ b/capi/chewing-internal/src/
binding.rs
@@ -0,0 +1,13 @@
+use std::ffi::c_int;
+
+use ffi_opaque::opaque;
+
+opaque! {
+ pub struct ChewingData;
+ pub struct ChewingContext;
+}
+
+extern "C" {
+ pub fn toPreeditBufIndex(pgdata: *mut ChewingData, pos: c_int) -> c_int;
+ pub fn HaninSymbolInput(pgdata: *mut ChewingData) -> c_int;
+}
\ No newline at end of file
diff --git a/capi/chewing-internal/src/
bopomofo.rs b/capi/chewing-internal/src/
bopomofo.rs
new file mode 100644
index 0000000..70596f6
--- /dev/null
+++ b/capi/chewing-internal/src/
bopomofo.rs
@@ -0,0 +1,242 @@
+use std::{
+ ffi::{c_int, CString},
+ os::raw::c_char,
+ slice,
+};
+
+use chewing::editor::{
+ keymap::{
+ IdentityKeymap, KeyCode, KeyCodeFromQwerty, Keymap, RemappingKeymap, CARPALX, DVORAK,
+ QWERTY,
+ },
+ layout::{
+ DaiChien26, Et, Et26, GinYieh, Hsu, Ibm, KeyBehavior, KeyboardLayoutCompat, Pinyin,
+ Standard,
+ },
+ SyllableEditor,
+};
+
+use super::{
+ binding::HaninSymbolInput,
+ types::{BopomofoData, ChewingData},
+};
+
+#[repr(C)]
+pub struct SyllableEditorWithKeymap {
+ kb_type: KeyboardLayoutCompat,
+ keymap: Box<dyn Keymap>,
+ editor: Box<dyn SyllableEditor>,
+}
+
+#[no_mangle]
+pub extern "C" fn NewPhoneticEditor(
+ kb_type: KeyboardLayoutCompat,
+) -> Box<SyllableEditorWithKeymap> {
+ use KeyboardLayoutCompat as KB;
+ match kb_type {
+ KB::Default => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(IdentityKeymap::new(QWERTY)),
+ editor: Box::new(Standard::new()),
+ }),
+ KB::Hsu => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(IdentityKeymap::new(QWERTY)),
+ editor: Box::new(Hsu::new()),
+ }),
+ KB::Ibm => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(IdentityKeymap::new(QWERTY)),
+ editor: Box::new(Ibm::new()),
+ }),
+ KB::GinYieh => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(IdentityKeymap::new(QWERTY)),
+ editor: Box::new(GinYieh::new()),
+ }),
+ KB::Et => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(IdentityKeymap::new(QWERTY)),
+ editor: Box::new(Et::new()),
+ }),
+ KB::Et26 => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(IdentityKeymap::new(QWERTY)),
+ editor: Box::new(Et26::new()),
+ }),
+ KB::Dvorak => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(RemappingKeymap::new(DVORAK, QWERTY)),
+ editor: Box::new(Standard::new()),
+ }),
+ KB::DvorakHsu => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(RemappingKeymap::new(DVORAK, QWERTY)),
+ editor: Box::new(Hsu::new()),
+ }),
+ KB::DachenCp26 => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(IdentityKeymap::new(QWERTY)),
+ editor: Box::new(DaiChien26::new()),
+ }),
+ KB::HanyuPinyin => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(IdentityKeymap::new(QWERTY)),
+ editor: Box::new(Pinyin::hanyu()),
+ }),
+ KB::ThlPinyin => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(IdentityKeymap::new(QWERTY)),
+ editor: Box::new(Pinyin::thl()),
+ }),
+ KB::Mps2Pinyin => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(IdentityKeymap::new(QWERTY)),
+ editor: Box::new(Pinyin::mps2()),
+ }),
+ KB::Carpalx => Box::new(SyllableEditorWithKeymap {
+ kb_type,
+ keymap: Box::new(RemappingKeymap::new(CARPALX, QWERTY)),
+ editor: Box::new(Standard::new()),
+ }),
+ }
+}
+
+#[no_mangle]
+pub extern "C" fn FreePhoneticEditor(editor_keymap: Option<Box<SyllableEditorWithKeymap>>) {
+ drop(editor_keymap);
+}
+
+#[no_mangle]
+pub extern "C" fn BopomofoPhoInput(pgdata: &mut ChewingData, key: i32) -> KeyBehavior {
+ if key == b'`' as i32 {
+ pgdata.b_select = 1;
+ pgdata.choice_info.old_chi_symbol_cursor = pgdata.chi_symbol_cursor;
+ unsafe { HaninSymbolInput((pgdata as *mut ChewingData).cast()) };
+ return KeyBehavior::OpenSymbolTable;
+ }
+
+ let editor_keymap = pgdata.bopomofo_data.editor_with_keymap.as_mut();
+ let key_code = match (key as u8).as_key_code() {
+ Some(key_code) => key_code,
+ None => return KeyBehavior::KeyError,
+ };
+ let key_event = editor_keymap.keymap.map_key(key_code);
+ let result = editor_keymap.editor.key_press(key_event);
+ let key_buf = editor_keymap.editor.read();
+
+ if result == KeyBehavior::Commit {
+ if key_buf.is_empty() {
+ return if key_code == KeyCode::Space {
+ KeyBehavior::KeyError
+ } else {
+ KeyBehavior::NoWord
+ };
+ }
+ // FIXME make sure editors fills the tone
+ // FIXME if dictionary doesn't have a word, return NO_WORD
+ }
+
+ result
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn BopomofoPhoInx(bopomofo_data: &BopomofoData, pho_inx: *mut i32) {
+ let editor_keymap = bopomofo_data.editor_with_keymap.as_ref();
+ let pho_inx = unsafe { slice::from_raw_parts_mut(pho_inx, 4) };
+ let syllable = editor_keymap.editor.read();
+
+ pho_inx[0] = match syllable.initial() {
+ Some(b) => b.initial_index() as i32,
+ None => 0,
+ };
+ pho_inx[1] = match syllable.medial() {
+ Some(b) => b.medial_index() as i32,
+ None => 0,
+ };
+ pho_inx[2] = match syllable.rime() {
+ Some(b) => b.rime_index() as i32,
+ None => 0,
+ };
+ pho_inx[3] = match syllable.tone() {
+ Some(b) => b.tone_index() as i32,
+ None => 0,
+ };
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn BopomofoPhoInxAlt(bopomofo_data: &BopomofoData, pho_inx: *mut i32) {
+ let editor_keymap = bopomofo_data.editor_with_keymap.as_ref();
+ let pho_inx = unsafe { slice::from_raw_parts_mut(pho_inx, 4) };
+ // FIXME
+ let syllable = editor_keymap.editor.read();
+
+ pho_inx[0] = match syllable.initial() {
+ Some(b) => b.initial_index() as i32,
+ None => 0,
+ };
+ pho_inx[1] = match syllable.medial() {
+ Some(b) => b.medial_index() as i32,
+ None => 0,
+ };
+ pho_inx[2] = match syllable.rime() {
+ Some(b) => b.rime_index() as i32,
+ None => 0,
+ };
+ pho_inx[3] = match syllable.tone() {
+ Some(b) => b.tone_index() as i32,
+ None => 0,
+ };
+}
+
+#[no_mangle]
+pub extern "C" fn BopomofoKeyseq(bopomofo_data: &BopomofoData, key_seq: *mut c_char) {
+ let editor_keymap = bopomofo_data.editor_with_keymap.as_ref();
+ let key_seq = unsafe { slice::from_raw_parts_mut(key_seq as *mut u8, 10) };
+ if let Some(key_seq_str) = editor_keymap.editor.key_seq() {
+ let key_seq_cstr = CString::new(key_seq_str).unwrap();
+ let key_seq_bytes = key_seq_cstr.as_bytes_with_nul();
+ key_seq[..key_seq_bytes.len()].copy_from_slice(key_seq_bytes);
+ }
+}
+
+#[no_mangle]
+pub extern "C" fn BopomofoSyllableIndex(bopomofo_data: &BopomofoData) -> u16 {
+ let editor_keymap = bopomofo_data.editor_with_keymap.as_ref();
+ let syllable = editor_keymap.editor.read();
+ syllable.to_u16()
+}
+
+#[no_mangle]
+pub extern "C" fn BopomofoSyllableIndexAlt(bopomofo_data: &BopomofoData) -> u16 {
+ let editor_keymap = bopomofo_data.editor_with_keymap.as_ref();
+ // FIXME
+ let syllable = editor_keymap.editor.read();
+ syllable.to_u16()
+}
+
+#[no_mangle]
+pub extern "C" fn BopomofoRemoveLast(bopomofo_data: &mut BopomofoData) -> u16 {
+ let editor_keymap = bopomofo_data.editor_with_keymap.as_mut();
+ editor_keymap.editor.remove_last();
+ 0
+}
+
+#[no_mangle]
+pub extern "C" fn BopomofoRemoveAll(bopomofo_data: &mut BopomofoData) -> u16 {
+ let editor_keymap = bopomofo_data.editor_with_keymap.as_mut();
+ editor_keymap.editor.clear();
+ 0
+}
+
+#[no_mangle]
+pub extern "C" fn BopomofoKbType(bopomofo_data: &BopomofoData) -> c_int {
+ let editor_keymap = bopomofo_data.editor_with_keymap.as_ref();
+ editor_keymap.kb_type as c_int
+}
+
+#[no_mangle]
+pub extern "C" fn BopomofoIsEntering(bopomofo_data: &BopomofoData) -> u16 {
+ let editor_keymap = bopomofo_data.editor_with_keymap.as_ref();
+ u16::from(!editor_keymap.editor.is_empty())
+}
diff --git a/capi/chewing-internal/src/
compat.rs b/capi/chewing-internal/src/
compat.rs
new file mode 100644
index 0000000..484b9f6
--- /dev/null
+++ b/capi/chewing-internal/src/
compat.rs
@@ -0,0 +1,11 @@
+use std::ffi::c_char;
+
+use crate::types::ChewingData;
+
+#[no_mangle]
+pub extern "C" fn InitPinyin(_pgdata: &mut ChewingData, _path: *mut c_char) -> bool {
+ true
+}
+
+#[no_mangle]
+pub extern "C" fn TerminatePinyin(_pgdata: &mut ChewingData) {}
diff --git a/capi/chewing-internal/src/
conversion.rs b/capi/chewing-internal/src/
conversion.rs
new file mode 100644
index 0000000..2106777
--- /dev/null
+++ b/capi/chewing-internal/src/
conversion.rs
@@ -0,0 +1,94 @@
+use std::{
+ ffi::{c_char, c_int, CStr},
+ rc::Rc,
+};
+
+use chewing::conversion::{
+ Break, ChewingConversionEngine, ChineseSequence, ConversionEngine, Interval,
+};
+use chewing_public::types::IntervalType;
+
+use super::{binding::toPreeditBufIndex, types::ChewingData};
+
+#[no_mangle]
+pub extern "C" fn InitTree(pgdata: &mut ChewingData, _prefix: *const c_char) -> c_int {
+ let dict = unsafe {
+ Rc::increment_strong_count(pgdata.dict);
+ Rc::from_raw(pgdata.dict)
+ };
+ pgdata.ce = Some(Box::new(ChewingConversionEngine::new(dict)));
+ 0
+}
+
+#[no_mangle]
+pub extern "C" fn TerminateTree(pgdata: &mut ChewingData) {
+ pgdata.ce = None;
+}
+
+#[no_mangle]
+pub extern "C" fn Phrasing(pgdata: &mut ChewingData, _all_phrasing: bool) {
+ let ce = pgdata.ce.as_ref().expect("nonnull pointer");
+ let syllables_u16 = &pgdata.phone_seq[..pgdata.n_phone_seq as usize];
+ let select_strs = pgdata
+ .select_str
+ .iter()
+ .take(pgdata.n_select as usize)
+ .map(|it| unsafe { CStr::from_ptr(it.as_ptr()) });
+ let select_intervals = pgdata.select_interval.iter().take(pgdata.n_select as usize);
+ let breaks = pgdata
+ .b_arr_brkpt
+ .iter()
+ .enumerate()
+ .filter(|it| *it.1 == 1)
+ .map(|it| Break(it.0))
+ .collect();
+ let syllables = syllables_u16
+ .iter()
+ .map(|&syl_u16| syl_u16.try_into().expect("convert u16 to syllable"))
+ .collect();
+
+ let selections = select_intervals
+ .zip(select_strs)
+ .map(|(interval, str)| Interval {
+ start: interval.from as usize,
+ end:
interval.to as usize,
+ phrase: str.to_string_lossy().to_string(),
+ })
+ .collect();
+
+ let sequence = ChineseSequence {
+ syllables,
+ selections,
+ breaks,
+ };
+ let intervals = match pgdata.phr_out.n_num_cut {
+ 0 => ce.convert(&sequence),
+ _ => ce.convert_next(&sequence, pgdata.phr_out.n_num_cut as usize),
+ };
+
+ pgdata.phr_out.n_disp_interval = intervals.len() as c_int;
+ for (i, interval) in intervals.into_iter().enumerate() {
+ let from = interval.start as c_int;
+ let to = interval.end as c_int;
+ fill_preedit_buf(pgdata, &interval.phrase, from, to);
+ let display_intervals = &mut pgdata.phr_out.disp_interval;
+ display_intervals[i].from = from;
+ display_intervals[i].to = to;
+ }
+}
+
+fn fill_preedit_buf(pgdata: &mut ChewingData, phrase: &str, from: c_int, to: c_int) {
+ let start = unsafe { toPreeditBufIndex((pgdata as *mut ChewingData).cast(), from) } as usize;
+ for i in 0..(to - from) as usize {
+ phrase
+ .chars()
+ .nth(i)
+ .unwrap()
+ .encode_utf8(&mut pgdata.preedit_buf[start + i].char_);
+ }
+}
+
+#[no_mangle]
+pub extern "C" fn IsIntersect(in1: IntervalType, in2: IntervalType) -> bool {
+ in1.from.max(in2.from) < in1.to.min(
in2.to)
+}
diff --git a/capi/chewing-internal/src/
dict.rs b/capi/chewing-internal/src/
dict.rs
new file mode 100644
index 0000000..5b06c75
--- /dev/null
+++ b/capi/chewing-internal/src/
dict.rs
@@ -0,0 +1,165 @@
+use std::{
+ ffi::{CStr, CString},
+ os::raw::{c_char, c_int},
+ path::Path,
+ rc::Rc,
+ slice,
+};
+
+use chewing::dictionary::{
+ Dictionary, LayeredDictionary, Phrases, SqliteDictionary, TrieDictionary,
+};
+
+use crate::types::ChewingData;
+
+use super::types::Phrase;
+
+pub struct TreeType<'a> {
+ phrases: Vec<chewing::dictionary::Phrase<'a>>,
+}
+
+pub struct TreeIter<'a> {
+ iter: Phrases<'a, 'a>,
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn InitDict(pgdata: &mut ChewingData, prefix: *const c_char) -> c_int {
+ let prefix = unsafe { CStr::from_ptr(prefix) }
+ .to_str()
+ .expect("Invalid prefix string");
+ let path: &Path = prefix.as_ref();
+
+ let mut tsi_db_path = path.to_path_buf();
+ tsi_db_path.push("tsi.dat");
+ let tsi_db = if let Ok(db) = SqliteDictionary::open_read_only(&tsi_db_path) {
+ Box::new(db) as Box<dyn Dictionary>
+ } else if let Ok(db) = TrieDictionary::open(&tsi_db_path) {
+ Box::new(db) as Box<dyn Dictionary>
+ } else {
+ panic!(
+ "Unsupported db format for {}",
+ tsi_db_path.to_string_lossy()
+ );
+ };
+
+ let mut word_db_path = path.to_path_buf();
+ word_db_path.push("word.dat");
+ let word_db = if let Ok(db) = SqliteDictionary::open_read_only(&word_db_path) {
+ Box::new(db) as Box<dyn Dictionary>
+ } else if let Ok(db) = TrieDictionary::open(&word_db_path) {
+ Box::new(db) as Box<dyn Dictionary>
+ } else {
+ panic!(
+ "Unsupported db format for {}",
+ word_db_path.to_string_lossy()
+ );
+ };
+
+ let dict = Rc::new(LayeredDictionary::new(vec![word_db, tsi_db], vec![]));
+ pgdata.dict = Rc::into_raw(dict);
+ 0
+}
+
+#[no_mangle]
+pub extern "C" fn TerminateDict(pgdata: &mut ChewingData) {
+ unsafe {
+ if !pgdata.dict.is_null() {
+ Rc::decrement_strong_count(pgdata.dict);
+ }
+ }
+ pgdata.dict = std::ptr::null();
+}
+
+#[no_mangle]
+pub extern "C" fn GetCharFirst(
+ pgdata: &mut ChewingData,
+ phrase: &mut Phrase,
+ syllable_u16: u16,
+) -> bool {
+ let dict = unsafe { pgdata.dict.as_ref().expect("nonnull dict") };
+ let syllable = syllable_u16
+ .try_into()
+ .expect("Unable to convert u16 to syllable");
+ let mut iter = dict.lookup_word(syllable);
+ if let Some(p) = iter.next() {
+ let phrase_str = CString::new(p.as_str()).expect("Unable to convert to CString");
+ let phrase_bytes = phrase_str.as_bytes_with_nul();
+ phrase.freq = p.freq() as c_int;
+ phrase.phrase[0..phrase_bytes.len()].copy_from_slice(unsafe {
+ slice::from_raw_parts(phrase_bytes.as_ptr().cast(), phrase_bytes.len())
+ });
+ pgdata.phrase_iter = Box::into_raw(Box::new(TreeIter { iter })).cast();
+ return true;
+ }
+ pgdata.phrase_iter = std::ptr::null_mut();
+ false
+}
+
+#[no_mangle]
+pub extern "C" fn GetPhraseFirst(
+ pgdata: &mut ChewingData,
+ phrase: &mut Phrase,
+ tree_type: &TreeType,
+) {
+ let mut iter = Box::new(tree_type.phrases.clone().into_iter());
+ pgdata.phrase_iter = std::ptr::null_mut();
+ if let Some(p) = iter.next() {
+ let phrase_str = CString::new(p.as_str()).expect("Unable to convert to CString");
+ let phrase_bytes = phrase_str.as_bytes_with_nul();
+ phrase.freq = p.freq() as c_int;
+ phrase.phrase[0..phrase_bytes.len()].copy_from_slice(unsafe {
+ slice::from_raw_parts(phrase_bytes.as_ptr().cast(), phrase_bytes.len())
+ });
+ pgdata.phrase_iter = Box::into_raw(Box::new(TreeIter { iter })).cast();
+ }
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn TreeFindPhrase(
+ pgdata: &mut ChewingData,
+ begin: c_int,
+ end: c_int,
+ syllables_u16: *mut u16,
+) -> Option<Box<TreeType>> {
+ let dict = unsafe { pgdata.dict.as_ref().expect("nonnull dict") };
+ let syllables_u16 = unsafe { slice::from_raw_parts(syllables_u16, 50) };
+ let begin = begin as usize;
+ let end = end as usize;
+ let syllables = syllables_u16[begin..=end]
+ .iter()
+ .map(|&syl_u16| {
+ syl_u16
+ .try_into()
+ .expect("Unable to convert u16 to syllable")
+ })
+ .collect::<Vec<_>>();
+ let phrases = dict.lookup_phrase(syllables.as_slice()).collect::<Vec<_>>();
+ if !phrases.is_empty() {
+ let ptr = Some(Box::new(TreeType { phrases }));
+ return ptr;
+ }
+ None
+}
+
+#[no_mangle]
+pub extern "C" fn FreeTreePhrase(tree_type: Option<Box<TreeType>>) {
+ drop(tree_type)
+}
+
+#[no_mangle]
+pub extern "C" fn GetVocabNext(pgdata: &mut ChewingData, phrase: &mut Phrase) -> bool {
+ let tree_iter_ptr: *mut TreeIter = pgdata.phrase_iter.cast();
+ let tree_iter: &mut TreeIter = unsafe { tree_iter_ptr.as_mut().expect("nonnull iter") };
+ if let Some(p) = tree_iter.iter.next() {
+ let phrase_str = CString::new(p.as_str()).expect("Unable to convert to CString");
+ let phrase_bytes = phrase_str.as_bytes_with_nul();
+ phrase.freq = p.freq() as c_int;
+ phrase.phrase[0..phrase_bytes.len()].copy_from_slice(unsafe {
+ slice::from_raw_parts(phrase_bytes.as_ptr().cast(), phrase_bytes.len())
+ });
+ return true;
+ }
+ unsafe { Box::from_raw(tree_iter_ptr) };
+ pgdata.phrase_iter = std::ptr::null_mut();
+ false
+}
diff --git a/capi/chewing-internal/src/
ffi.rs b/capi/chewing-internal/src/
ffi.rs
new file mode 100644
index 0000000..7ec6245
--- /dev/null
+++ b/capi/chewing-internal/src/
ffi.rs
@@ -0,0 +1,21 @@
+use std::{
+ ffi::{c_char, CString},
+ slice,
+};
+
+use chewing::dictionary::Phrase;
+
+pub trait CopyToCString {
+ fn copy_to(&self, buf: &mut [c_char]);
+}
+
+impl CopyToCString for Phrase<'_> {
+ fn copy_to(&self, buf: &mut [c_char]) {
+ let phrase_str = CString::new(self.as_str()).expect("Unable to convert to CString");
+ let phrase_bytes = phrase_str.as_bytes_with_nul();
+ let phrase_bytes = unsafe {
+ slice::from_raw_parts(phrase_bytes.as_ptr() as *const i8, phrase_bytes.len())
+ };
+ buf[0..phrase_bytes.len()].copy_from_slice(phrase_bytes);
+ }
+}
diff --git a/capi/chewing-internal/src/
key2pho.rs b/capi/chewing-internal/src/
key2pho.rs
index 270bb65..41b8a17 100644
--- a/capi/chewing-internal/src/
key2pho.rs
+++ b/capi/chewing-internal/src/
key2pho.rs
@@ -6,7 +6,7 @@ use std::{
use chewing::zhuyin::{Bopomofo, Syllable};
#[no_mangle]
-pub extern "C" fn UintFromPhone(phone: *const c_char) -> u16 {
+pub unsafe extern "C" fn UintFromPhone(phone: *const c_char) -> u16 {
let cstr = unsafe { CStr::from_ptr(phone) };
let rstr = match cstr.to_str() {
Ok(rstr) => rstr,
@@ -20,7 +20,7 @@ pub extern "C" fn UintFromPhone(phone: *const c_char) -> u16 {
}
#[no_mangle]
-pub extern "C" fn UintFromPhoneInx(ph_inx: *const c_int) -> u16 {
+pub unsafe extern "C" fn UintFromPhoneInx(ph_inx: *const c_int) -> u16 {
let ph_inx = unsafe { slice::from_raw_parts(ph_inx, 4) };
let mut builder = Syllable::builder();
if ph_inx[0] > 0 {
@@ -71,7 +71,11 @@ pub extern "C" fn UintFromPhoneInx(ph_inx: *const c_int) -> u16 {
}
#[no_mangle]
-pub extern "C" fn PhoneFromUint(phone: *mut c_char, phone_len: usize, phone_num: u16) -> c_int {
+pub unsafe extern "C" fn PhoneFromUint(
+ phone: *mut c_char,
+ phone_len: usize,
+ phone_num: u16,
+) -> c_int {
let syl = match Syllable::try_from(phone_num) {
Ok(syl) => syl,
Err(_) => return 1,
@@ -82,13 +86,13 @@ pub extern "C" fn PhoneFromUint(phone: *mut c_char, phone_len: usize, phone_num:
}
unsafe {
phone.copy_from(str.as_ptr() as *const c_char, str.len());
- ptr::write(phone.offset(str.len() as isize), 0);
+ ptr::write(phone.add(str.len()), 0);
}
0
}
#[no_mangle]
-pub extern "C" fn UintArrayFromBopomofo(
+pub unsafe extern "C" fn UintArrayFromBopomofo(
phone_seq: *mut u16,
phone_len: usize,
bopomofo_buf: *const c_char,
@@ -110,7 +114,7 @@ pub extern "C" fn UintArrayFromBopomofo(
}
for (i, syl) in syllables.into_iter().enumerate() {
let syl_u16 = syl.unwrap();
- unsafe { ptr::write(phone_seq.offset(i as isize), syl_u16) };
+ unsafe { ptr::write(phone_seq.add(i), syl_u16) };
}
len as isize
}
diff --git a/capi/chewing-internal/src/
lib.rs b/capi/chewing-internal/src/
lib.rs
index e9c322e..8eec535 100644
--- a/capi/chewing-internal/src/
lib.rs
+++ b/capi/chewing-internal/src/
lib.rs
@@ -1 +1,11 @@
-pub mod key2pho;
\ No newline at end of file
+pub mod binding;
+pub mod bopomofo;
+pub mod compat;
+pub mod conversion;
+pub mod dict;
+pub mod ffi;
+pub mod key2pho;
+pub mod path;
+pub mod types;
+pub mod userphrase;
+pub mod utf8;
diff --git a/capi/chewing-internal/src/
path.rs b/capi/chewing-internal/src/
path.rs
new file mode 100644
index 0000000..b6ec897
--- /dev/null
+++ b/capi/chewing-internal/src/
path.rs
@@ -0,0 +1,86 @@
+use core::slice;
+use std::{
+ borrow::Cow,
+ env,
+ ffi::{c_char, c_int, CStr, CString},
+ path::Path,
+};
+
+#[no_mangle]
+pub extern "C" fn get_search_path(path: *mut c_char, path_len: usize) -> c_int {
+ let chewing_path = env::var("CHEWING_PATH");
+ if let Ok(chewing_path) = chewing_path {
+ let path_cstring = CString::new(chewing_path).expect("string should not have internal nul");
+ let bytes = path_cstring.as_bytes_with_nul();
+ if bytes.len() > path_len {
+ return 1;
+ }
+ let out = unsafe { slice::from_raw_parts_mut(path as *mut u8, bytes.len()) };
+ out.copy_from_slice(bytes);
+ } else {
+ let user_datadir = chewing::path::data_dir();
+ if let Some(datadir) = user_datadir.as_ref().and_then(|p| p.to_str()) {
+ let path_cstring = CString::new(format!("{}:/usr/share/libchewing", datadir)).unwrap();
+ let bytes = path_cstring.as_bytes_with_nul();
+ if bytes.len() > path_len {
+ return 1;
+ }
+ let out = unsafe { slice::from_raw_parts_mut(path as *mut u8, bytes.len()) };
+ out.copy_from_slice(bytes);
+ }
+ }
+ 0
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn find_path_by_files(
+ search_path: *const c_char,
+ files: *const *const c_char,
+ output: *mut u8,
+ output_len: usize,
+) -> c_int {
+ let search_path = unsafe { CStr::from_ptr(search_path) };
+ let search_path = search_path.to_str();
+ let files = files_ptr_to_slice(files);
+ if let Ok(search_path) = search_path {
+ for path in search_path.split(':') {
+ let prefix = Path::new(path).to_path_buf();
+ if files
+ .iter()
+ .map(|it| {
+ let mut path = prefix.clone();
+ path.push(it.as_ref());
+ path
+ })
+ .all(|it| it.exists())
+ {
+ let path = CString::new(path).expect("no internal null");
+ let path = path.as_bytes_with_nul();
+ if path.len() > output_len {
+ return -1;
+ }
+ let output = unsafe { slice::from_raw_parts_mut(output, path.len()) };
+ output.copy_from_slice(path);
+
+ return 0;
+ }
+ }
+ }
+ -1
+}
+
+fn files_ptr_to_slice(files: *const *const i8) -> Vec<Cow<'static, str>> {
+ let len = {
+ let mut i = 0;
+ while unsafe { !files.add(i).read().is_null() } {
+ i += 1;
+ }
+ i
+ };
+ let files = unsafe { slice::from_raw_parts(files, len) };
+ files
+ .iter()
+ .map(|&it| unsafe { CStr::from_ptr(it) })
+ .map(|it| it.to_string_lossy())
+ .collect()
+}
diff --git a/capi/chewing-internal/src/
types.rs b/capi/chewing-internal/src/
types.rs
new file mode 100644
index 0000000..221dcf6
--- /dev/null
+++ b/capi/chewing-internal/src/
types.rs
@@ -0,0 +1,256 @@
+use std::ffi::{c_char, c_int, c_long, c_uint, c_void};
+
+use chewing::{conversion::ChewingConversionEngine, dictionary::LayeredDictionary};
+use chewing_public::types::{ChewingConfigData, IntervalType, MAX_SELKEY};
+
+use crate::userphrase::UserphraseDbAndEstimate;
+
+use super::bopomofo::SyllableEditorWithKeymap;
+
+pub const MAX_UTF8_SIZE: usize = 4;
+pub const MAX_UTF8_BUF: usize = MAX_UTF8_SIZE + 1;
+pub const BOPOMOFO_SIZE: usize = 4;
+pub const MAX_BOPOMOFO_UTF8_BUF: usize = BOPOMOFO_SIZE * MAX_UTF8_SIZE + 1;
+pub const PINYIN_SIZE: usize = 10;
+pub const MAX_PHRASE_LEN: usize = 11;
+pub const MAX_PHRASE_UTF8_BUF: usize = MAX_PHRASE_LEN * MAX_UTF8_SIZE + 1;
+pub const MAX_PHONE_SEQ_LEN: usize = 50;
+pub const MAX_PHONE_SEQ_BUF: usize = MAX_PHONE_SEQ_LEN + 1;
+pub const MAX_PHONE_SEQ_UTF8_BUF: usize = MAX_PHONE_SEQ_LEN * MAX_UTF8_SIZE + 1;
+pub const MIN_CHI_SYMBOL_LEN: usize = 0;
+pub const MAX_CHI_SYMBOL_LEN: usize = MAX_PHONE_SEQ_LEN - MAX_PHRASE_LEN;
+pub const MAX_INTERVAL: usize = (MAX_PHONE_SEQ_LEN + 1) * MAX_PHONE_SEQ_LEN / 2;
+pub const MAX_CHOICE: usize = 567;
+pub const MAX_CHOICE_BUF: usize = 50;
+pub const EASY_SYMBOL_KEY_TAB_LEN: usize = 36;
+pub const AUX_PREFIX_LEN: usize = 3;
+pub const MAX_SHOW_MSG_BUF: usize = MAX_UTF8_SIZE * (MAX_PHRASE_LEN + AUX_PREFIX_LEN) + 1;
+
+pub const N_HASH_BIT: usize = 14;
+pub const HASH_TABLE_SIZE: usize = 1 << N_HASH_BIT;
+
+pub const WORD_CHOICE: usize = 0;
+pub const SYMBOL_CATEGORY_CHOICE: usize = 1;
+pub const SYMBOL_CHOICE_INSERT: usize = 2;
+pub const SYMBOL_CHOICE_UPDATE: usize = 3;
+
+/// cbindgen:prefix-with-name
+/// cbindgen:enum-trailing-values=[TypeNum]
+#[derive(Clone, Copy, Debug, PartialEq)]
+#[repr(C)]
+pub enum KB {
+ Default,
+ Hsu,
+ Ibm,
+ GinYieh,
+ Et,
+ Et26,
+ Dvorak,
+ DvorakHsu,
+ DachenCp26,
+ HanyuPinyin,
+ ThlPinyin,
+ Mps2Pinyin,
+ Carpalx,
+}
+
+/// cbindgen:prefix-with-name
+#[repr(C)]
+pub enum BOPOMOFO {
+ Ignore,
+ Absorb,
+ Commit,
+ KeyError,
+ Error,
+ NoWord,
+ OpenSymbolTable,
+}
+
+/// cbindgen:prefix-with-name
+#[repr(u8)]
+pub enum UserUpdate {
+ Insert = 1,
+ Modify = 2,
+ Fail = 4,
+}
+
+#[repr(C)]
+pub struct PhrasingOutput {
+ pub disp_interval: [IntervalType; MAX_INTERVAL],
+ pub n_disp_interval: c_int,
+ pub n_num_cut: c_int,
+}
+
+#[repr(C)]
+pub struct BopomofoData {
+ pub editor_with_keymap: Box<SyllableEditorWithKeymap>,
+}
+
+#[repr(C)]
+pub struct PinYinData {
+ pub r#type: c_int,
+ pub key_seq: [c_char; PINYIN_SIZE],
+}
+
+/// Information of available phrase or character choices.
+#[repr(C)]
+pub struct AvailInfo {
+ /// All kinds of lengths of available phrases.
+ pub avail: [AvailInfoAvail; MAX_PHRASE_LEN],
+ /// Total number of available lengths.
+ pub n_avail: c_int,
+ /// The current choosing available length.
+ pub current_avail: c_int,
+}
+
+#[repr(C)]
+pub struct AvailInfoAvail {
+ pub len: c_int,
+ pub id: *const c_void,
+}
+
+#[repr(C)]
+pub struct ChoiceInfo {
+ /// Total page number.
+ pub n_page: c_int,
+ /// Current page number.
+ pub page_no: c_int,
+ /// Number of choices per page.
+ pub n_choice_per_page: c_int,
+ /// Store possible phrases for being chosen.
+ pub total_choice_str: [[c_char; MAX_PHRASE_UTF8_BUF]; MAX_CHOICE],
+ /// Number of phrases to choose.
+ pub n_total_choice: c_int,
+ pub old_chi_symbol_cursor: c_int,
+ pub is_symbol: c_int,
+}
+
+#[repr(C)]
+pub struct SymbolEntry {
+ /// Total number of symbols in the category.
+ ///
+ /// If n_symbols = 0, the category is treat as a symbol,
+ /// which is a zero-terminated utf-8 string.
+ ///
+ /// In that case, `symbols` is unused and isn't allocated at all.
+ pub n_symbols: c_int,
+ /// Category name of the symbols.
+ pub category: [c_char; MAX_PHRASE_UTF8_BUF],
+ pub symbols: [[c_char; MAX_UTF8_BUF]; 0],
+}
+
+#[repr(C)]
+pub struct ChewingStaticData {
+ pub n_symbol_entry: c_uint,
+ pub symbol_table: *mut *mut SymbolEntry,
+ pub g_easy_symbol_value: [*mut c_char; EASY_SYMBOL_KEY_TAB_LEN],
+ pub g_easy_symbol_num: [c_int; EASY_SYMBOL_KEY_TAB_LEN],
+}
+
+#[derive(Debug)]
+#[repr(C)]
+pub enum Category {
+ ChewingNone,
+ ChewingChinese,
+ ChewingSymbol,
+}
+
+#[derive(Debug)]
+#[repr(C)]
+pub struct PreeditBuf {
+ pub category: Category,
+ pub char_: [u8; MAX_UTF8_BUF],
+}
+
+#[repr(C)]
+pub struct UserPhraseData {
+ pub phone_seq: [u16; MAX_PHONE_SEQ_LEN],
+ pub word_seq: [c_char; MAX_PHRASE_UTF8_BUF],
+ pub userfreq: c_int,
+ pub recent_time: c_int,
+ pub origfreq: c_int,
+ pub maxfreq: c_int,
+}
+
+#[repr(C)]
+pub struct ChewingData {
+ pub avail_info: AvailInfo,
+ pub choice_info: ChoiceInfo,
+ pub phr_out: PhrasingOutput,
+ pub bopomofo_data: BopomofoData,
+ pub config: ChewingConfigData,
+ /// Current input buffer, content == 0 means Chinese code
+ pub preedit_buf: [PreeditBuf; MAX_PHONE_SEQ_LEN],
+ pub chi_symbol_cursor: c_int,
+ pub chi_symbol_buf_len: c_int,
+ pub point_start: c_int,
+ pub point_end: c_int,
+ pub b_show_msg: c_int,
+ pub show_msg: [c_char; MAX_SHOW_MSG_BUF],
+ pub show_msg_len: c_int,
+ pub phone_seq: [u16; MAX_PHONE_SEQ_LEN],
+ pub phone_seq_alt: [u16; MAX_PHONE_SEQ_LEN],
+ pub n_phone_seq: c_int,
+ pub select_str: [[c_char; MAX_PHRASE_UTF8_BUF]; MAX_PHONE_SEQ_LEN],
+ pub select_interval: [IntervalType; MAX_PHONE_SEQ_LEN],
+ pub n_select: c_int,
+ pub prefer_interval: [IntervalType; MAX_INTERVAL],
+ pub n_prefer: c_int,
+ pub b_user_arr_cnnct: [c_int; MAX_PHONE_SEQ_BUF],
+ pub b_user_arr_brkpt: [c_int; MAX_PHONE_SEQ_BUF],
+ pub b_arr_brkpt: [c_int; MAX_PHONE_SEQ_BUF],
+ pub b_symbol_arr_brkpt: [c_int; MAX_PHONE_SEQ_BUF],
+ pub b_chi_sym: c_int,
+ pub b_select: c_int,
+ pub b_first_key: c_int,
+ pub b_full_shape: c_int,
+ pub symbol_key_buf: [c_char; MAX_PHONE_SEQ_LEN],
+ pub userphrase_data: UserPhraseData,
+ pub static_data: ChewingStaticData,
+
+ pub logger: extern "C" fn(data: *mut c_void, level: c_int, fmt: *const c_char, ...),
+ pub logger_data: *mut c_void,
+
+ pub dict: *const LayeredDictionary,
+ pub ce: Option<Box<ChewingConversionEngine>>,
+ pub ue: Option<Box<UserphraseDbAndEstimate>>,
+ pub phrase_iter: *mut c_void,
+}
+
+#[repr(C)]
+pub struct ChewingOutput {
+ /// The content of edit buffer
+ pub preedit_buf: [c_char; MAX_PHONE_SEQ_UTF8_BUF],
+ /// The length of edit buffer
+ pub chi_symbol_buf_len: c_int,
+ /// The current position of the cursor
+ pub chi_symbol_cursor: c_long,
+ pub point_start: c_long,
+ pub point_end: c_long,
+ pub bopomofo_buf: [c_char; MAX_BOPOMOFO_UTF8_BUF],
+ pub disp_interval: [IntervalType; MAX_INTERVAL],
+ pub n_disp_interval: c_int,
+ pub disp_brkpt: [c_int; MAX_PHONE_SEQ_BUF],
+ pub commit_buf: [c_char; MAX_PHONE_SEQ_UTF8_BUF],
+ pub commit_buf_len: c_int,
+ pub pci: *mut ChoiceInfo,
+ pub b_chi_sym: c_int,
+ pub sel_key: [c_int; MAX_SELKEY],
+ pub keystroke_rtn: c_int,
+}
+
+/// cbindgen:rename-all=None
+#[repr(C)]
+pub struct ChewingContext {
+ pub data: *mut ChewingData,
+ pub output: *mut ChewingOutput,
+ pub cand_no: c_int,
+ pub it_no: c_int,
+ pub kb_no: c_int,
+}
+
+#[repr(C)]
+pub struct Phrase {
+ pub phrase: [c_char; MAX_PHONE_SEQ_BUF],
+ pub freq: c_int,
+}
diff --git a/capi/chewing-internal/src/
userphrase.rs b/capi/chewing-internal/src/
userphrase.rs
new file mode 100644
index 0000000..d6775c4
--- /dev/null
+++ b/capi/chewing-internal/src/
userphrase.rs
@@ -0,0 +1,299 @@
+use std::{
+ ffi::{c_void, CStr, CString},
+ iter::Peekable,
+ os::raw::{c_char, c_int, c_uint},
+ path::Path,
+ slice,
+};
+
+use chewing::{
+ dictionary::{DictEntries, Dictionary, SqliteDictionary},
+ editor::{SqliteUserFreqEstimate, UserFreqEstimate},
+ path::userphrase_path,
+ zhuyin::Syllable,
+};
+
+use crate::{
+ ffi::CopyToCString,
+ types::{ChewingData, UserPhraseData, UserUpdate},
+};
+
+pub struct UserphraseDbAndEstimate {
+ db: SqliteDictionary,
+ estimate: SqliteUserFreqEstimate,
+}
+
+#[no_mangle]
+pub extern "C" fn GetDefaultUserPhrasePath(_data: *mut c_void) -> *mut c_char {
+ match userphrase_path() {
+ Some(path) => CString::new(
+ path.as_os_str()
+ .to_str()
+ .expect("path should be valid utf-8"),
+ )
+ .expect("path should be vaild C string")
+ .into_raw(),
+ None => std::ptr::null_mut(),
+ }
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn FreeDefaultUserPhrasePath(path: *mut c_char) {
+ unsafe { CString::from_raw(path) };
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn InitUserphrase(pgdata: &mut ChewingData, path: *mut c_char) -> c_int {
+ let path = unsafe { CStr::from_ptr(path) }
+ .to_str()
+ .expect("Invalid prefix string");
+ let path: &Path = path.as_ref();
+
+ let chewing_db = match SqliteDictionary::open(path) {
+ Ok(db) => db,
+ Err(_) => return -1,
+ };
+
+ let estimate = match SqliteUserFreqEstimate::open(path) {
+ Ok(db) => db,
+ Err(_) => return -1,
+ };
+
+ pgdata.ue = Some(Box::new(UserphraseDbAndEstimate {
+ db: chewing_db,
+ estimate,
+ }));
+ 0
+}
+
+#[no_mangle]
+pub extern "C" fn TerminateUserphrase(pgdata: &mut ChewingData) {
+ pgdata.ue = None;
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn UserGetPhraseFirst<'a>(
+ pgdata: &'a mut ChewingData,
+ syllables_u16_ptr: *mut u16,
+) -> Option<&'a UserPhraseData> {
+ let ue = pgdata.ue.as_ref().expect("nonnull ue");
+ let syllables_u16 = unsafe { slice::from_raw_parts(syllables_u16_ptr, 50) };
+ let syllables = syllables_u16
+ .iter()
+ .take_while(|&&syl_u16| syl_u16 != 0)
+ .map(|&syl_u16| Syllable::try_from(syl_u16).unwrap())
+ .collect::<Vec<_>>();
+ let iter = Box::new(
+ ue.db
+ .lookup_phrase(syllables.as_slice())
+ .collect::<Vec<_>>()
+ .into_iter(),
+ ) as Box<dyn Iterator<Item = chewing::dictionary::Phrase>>;
+ let mut iter = Box::new(iter);
+
+ if let Some(phrase) = iter.next() {
+ pgdata.phrase_iter = Box::into_raw(iter).cast();
+ pgdata.userphrase_data.userfreq = phrase.freq() as c_int;
+ phrase.copy_to(&mut pgdata.userphrase_data.word_seq);
+ return Some(&pgdata.userphrase_data);
+ }
+
+ pgdata.phrase_iter = std::ptr::null_mut();
+ None
+}
+
+#[no_mangle]
+pub extern "C" fn UserGetPhraseNext<'a>(
+ pgdata: &'a mut ChewingData,
+ _syllables_u16_ptr: *mut u16,
+) -> Option<&'a UserPhraseData> {
+ let iter_ptr: *mut Box<dyn Iterator<Item = chewing::dictionary::Phrase>> =
+ pgdata.phrase_iter.cast();
+ let iter = unsafe { iter_ptr.as_mut().expect("nonnull iter") };
+ if let Some(phrase) = iter.next() {
+ pgdata.userphrase_data.userfreq = phrase.freq() as c_int;
+ phrase.copy_to(&mut pgdata.userphrase_data.word_seq);
+ return Some(&pgdata.userphrase_data);
+ }
+ None
+}
+
+#[no_mangle]
+pub extern "C" fn UserGetPhraseEnd(pgdata: &mut ChewingData, _syllables_u16_ptr: *mut u16) {
+ if !pgdata.phrase_iter.is_null() {
+ let iter_ptr: *mut Box<dyn Iterator<Item = chewing::dictionary::Phrase>> =
+ pgdata.phrase_iter.cast();
+ let _ = unsafe { Box::from_raw(iter_ptr) };
+ pgdata.phrase_iter = std::ptr::null_mut();
+ }
+}
+
+const C_API_MAX_USER_PHRASE_LEN: usize = 11;
+
+#[no_mangle]
+pub unsafe extern "C" fn UserUpdatePhrase(
+ pgdata: &mut ChewingData,
+ syllables_u16_ptr: *mut u16,
+ phrase_str_ptr: *mut c_char,
+) -> u8 {
+ let ue = pgdata.ue.as_mut().expect("nonnull ue");
+ let syllables_u16 = unsafe { slice::from_raw_parts(syllables_u16_ptr, 50) };
+ let syllables = syllables_u16
+ .iter()
+ .take_while(|&&syl_u16| syl_u16 != 0)
+ .map(|&syl_u16| Syllable::try_from(syl_u16).unwrap())
+ .collect::<Vec<_>>();
+ let phrase_str = unsafe { CStr::from_ptr(phrase_str_ptr) }
+ .to_str()
+ .expect("Invalid UTF-8 str");
+ if syllables.len() > C_API_MAX_USER_PHRASE_LEN {
+ return UserUpdate::Fail as u8;
+ }
+ let phrases = ue.db.lookup_phrase(&syllables).collect::<Vec<_>>();
+ if phrases.is_empty() {
+ // FIXME provide max_freq, orig_freq
+ ue.db
+ .as_mut_dict()
+ .unwrap()
+ .insert(&syllables, (phrase_str, 1).into())
+ .expect("SQL error");
+ return UserUpdate::Insert as u8;
+ }
+ let phrase_freq = phrases
+ .iter()
+ .find(|p| p.as_str() == phrase_str)
+ .map(|p| p.freq())
+ .unwrap_or(1);
+ let phrase = (phrase_str, phrase_freq).into();
+ let max_freq = phrases.iter().map(|p| p.freq()).max().unwrap();
+ let user_freq = ue.estimate.estimate(&phrase, phrase.freq(), max_freq);
+ let time = ue.estimate.now().unwrap();
+ ue.db
+ .as_mut_dict()
+ .unwrap()
+ .update(&syllables, phrase, user_freq, time)
+ .expect("SQL error");
+ UserUpdate::Modify as u8
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn UserRemovePhrase(
+ pgdata: &mut ChewingData,
+ syllables_u16_ptr: *mut u16,
+ phrase_str_ptr: *mut c_char,
+) -> bool {
+ let ue = pgdata.ue.as_mut().expect("nonnull ue");
+ let syllables_u16 = unsafe { slice::from_raw_parts(syllables_u16_ptr, 50) };
+ let syllables = syllables_u16
+ .iter()
+ .take_while(|&&syl_u16| syl_u16 != 0)
+ .map(|&syl_u16| Syllable::try_from(syl_u16).unwrap())
+ .collect::<Vec<_>>();
+ let phrase_str = unsafe { CStr::from_ptr(phrase_str_ptr) }
+ .to_str()
+ .expect("Invalid UTF-8 str");
+ let has_phrase = ue
+ .db
+ .lookup_phrase(&syllables)
+ .any(|p| p.as_str() == phrase_str);
+ ue.db
+ .as_mut_dict()
+ .unwrap()
+ .remove(&syllables, phrase_str)
+ .expect("SQL error");
+ has_phrase
+}
+
+#[no_mangle]
+pub extern "C" fn IncreaseLifeTime(pgdata: &mut ChewingData) {
+ pgdata
+ .ue
+ .as_mut()
+ .expect("nonnull ue")
+ .estimate
+ .tick()
+ .expect("SQL error");
+}
+
+#[no_mangle]
+pub extern "C" fn UserUpdatePhraseBegin(_pgdata: &mut ChewingData) {}
+
+#[no_mangle]
+pub extern "C" fn UserUpdatePhraseEnd(_pgdata: &mut ChewingData) {}
+
+#[no_mangle]
+pub extern "C" fn UserEnumeratePhrase(ue: &UserphraseDbAndEstimate) -> *mut c_void {
+ Box::into_raw(Box::new(ue.db.entries().peekable()) as Box<Peekable<DictEntries>>).cast()
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn UserEnumerateHasNext(
+ iter_ptr: *mut c_void,
+ phrase_len_ptr: *mut c_uint,
+ bopomofo_len: *mut c_uint,
+) -> bool {
+ let iter_ptr: *mut Peekable<DictEntries> = iter_ptr.cast();
+ let iter = unsafe { iter_ptr.as_mut() }.expect("Null ptr");
+ match iter.peek() {
+ Some(entry) => {
+ unsafe {
+ phrase_len_ptr.write((entry.1.as_str().len() + 1) as u32);
+ bopomofo_len.write(
+ (entry
+ .0
+ .iter()
+ .map(|syl| syl.to_string().len() + 1)
+ .sum::<usize>()
+ + 1) as u32,
+ );
+ }
+ true
+ }
+ None => false,
+ }
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn UserEnumerateGet(
+ iter_ptr: *mut c_void,
+ phrase_buf: *mut c_char,
+ _phrase_len_ptr: *const c_uint,
+ bopomofo_buf: *mut c_char,
+ _bopomofo_len: *const c_uint,
+) -> c_int {
+ let iter_ptr: *mut Peekable<DictEntries> = iter_ptr.cast();
+ let iter = unsafe { iter_ptr.as_mut() }.expect("Null ptr");
+ match iter.next() {
+ Some(entry) => {
+ unsafe {
+ let phrase_str = CString::new(entry.1.as_str()).unwrap();
+ let phrase_str_bytes = phrase_str.as_bytes_with_nul();
+ phrase_buf.copy_from(
+ phrase_str_bytes.as_ptr() as *const i8,
+ phrase_str_bytes.len(),
+ );
+ // phrase_len_ptr.write((entry.1.as_str().len() + 1) as u32);
+ let bopomofo_str = CString::new(
+ entry
+ .0
+ .iter()
+ .map(|syl| syl.to_string())
+ .collect::<Vec<_>>()
+ .join(" "),
+ )
+ .unwrap();
+ let bopomofo_str_bytes = bopomofo_str.as_bytes_with_nul();
+ bopomofo_buf.copy_from(
+ bopomofo_str_bytes.as_ptr() as *const i8,
+ bopomofo_str_bytes.len(),
+ );
+ // bopomofo_len.write(bopomofo_str_bytes.len() as u32);
+ }
+ 0
+ }
+ None => {
+ let _ = unsafe { Box::from_raw(iter_ptr) };
+ 1
+ }
+ }
+}
diff --git a/capi/chewing-internal/src/
utf8.rs b/capi/chewing-internal/src/
utf8.rs
new file mode 100644
index 0000000..18788c6
--- /dev/null
+++ b/capi/chewing-internal/src/
utf8.rs
@@ -0,0 +1,94 @@
+use std::{
+ ffi::{c_char, c_int, c_uchar, CStr},
+ ptr::{self, null},
+ str,
+};
+
+#[no_mangle]
+pub unsafe extern "C" fn ueStrLen(str: *const c_char) -> c_int {
+ let cstr = unsafe { CStr::from_ptr(str) };
+ cstr.to_str().unwrap_or("").chars().count() as c_int
+}
+
+#[no_mangle]
+pub extern "C" fn ueBytesFromChar(b: c_uchar) -> c_int {
+ const UTF8LEN_TAB: [c_int; 256] = [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*bogus */
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, /*bogus */
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5,
+ 6, 6, 1, 1,
+ ];
+ UTF8LEN_TAB[b as usize]
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn ueStrNBytes(str: *const c_char, n: c_int) -> c_int {
+ let cstr = unsafe { CStr::from_ptr(str) };
+ let rstr = match cstr.to_str() {
+ Ok(rstr) => rstr,
+ Err(err) => str::from_utf8(&cstr.to_bytes()[..err.valid_up_to()]).unwrap(),
+ };
+ rstr.chars()
+ .take(n as usize)
+ .map(|it| it.len_utf8())
+ .sum::<usize>() as c_int
+}
+
+#[repr(C)]
+pub enum StrNCpyClose {
+ StrncpyClose = 1,
+ StrncpyNotClose = 0,
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn ueStrNCpy(
+ dest: *mut c_char,
+ src: *const c_char,
+ n: usize,
+ end: c_int,
+) -> c_int {
+ let bytes = ueStrNBytes(src, n as c_int) as usize;
+ unsafe { src.copy_to(dest, bytes) };
+ if end == StrNCpyClose::StrncpyClose as i32 {
+ unsafe { ptr::write(dest.add(bytes), 0) };
+ }
+ bytes as c_int
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn ueStrSeek(src: *mut c_char, n: usize) -> *mut c_char {
+ let bytes = ueStrNBytes(src, n as c_int);
+ unsafe { src.offset(bytes as isize) }
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn ueConstStrSeek(src: *const c_char, n: usize) -> *const c_char {
+ let bytes = ueStrNBytes(src, n as c_int);
+ unsafe { src.offset(bytes as isize) }
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn ueStrStr(
+ str: *const c_char,
+ _lstr: usize,
+ substr: *const c_char,
+ _lsub: usize,
+) -> *const c_char {
+ let cstr = unsafe { CStr::from_ptr(str) }
+ .to_str()
+ .expect("should be valid utf8");
+ let sub = unsafe { CStr::from_ptr(substr) }
+ .to_str()
+ .expect("should be valid utf8");
+ match cstr.find(sub) {
+ Some(count) => unsafe { str.add(count) },
+ None => null(),
+ }
+}
diff --git a/capi/chewing-public/Cargo.toml b/capi/chewing-public/Cargo.toml
index 69c32f9..846870b 100644
--- a/capi/chewing-public/Cargo.toml
+++ b/capi/chewing-public/Cargo.toml
@@ -9,7 +9,7 @@ edition = "2021"
chewing = { version = "0.5.1-alpha.1", path = "../.." }
[lib]
-crate-type = ["staticlib"]
+crate-type = ["rlib", "staticlib"]
[build-dependencies]
cbindgen = "0.24.3"
\ No newline at end of file
diff --git a/capi/chewing-public/src/
lib.rs b/capi/chewing-public/src/
lib.rs
index dd198c6..cd40856 100644
--- a/capi/chewing-public/src/
lib.rs
+++ b/capi/chewing-public/src/
lib.rs
@@ -1 +1 @@
-pub mod types;
\ No newline at end of file
+pub mod types;
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index aefc78a..7e45582 100644
--- a/data/CMakeLists.txt
+++ b/data/CMakeLists.txt
@@ -20,13 +20,12 @@ add_custom_target(all_static_data
# tools
set(ALL_TOOLS init_database)
-add_executable(init_database ${TOOLS_SRC_DIR}/init_database.c $<TARGET_OBJECTS:common>)
if (WITH_RUST)
-target_link_libraries(init_database chewing-internal)
endif()
if (NOT WITH_RUST)
list(APPEND ALL_TOOLS dump_database)
+add_executable(init_database ${TOOLS_SRC_DIR}/init_database.c $<TARGET_OBJECTS:common>)
add_executable(dump_database
${TOOLS_SRC_DIR}/dump_database.c
${SRC_DIR}/porting_layer/src/plat_mmap_posix.c
@@ -44,6 +43,24 @@ set_target_properties(${ALL_TOOLS} PROPERTIES
)
# tools command
+if (WITH_RUST)
+set(DATA_COPYRIGHT "Copyright \\(c\\) 2022 libchewing Core Team")
+set(DATA_LICENSE "LGPL-2.1-or-later")
+set(DATA_VERSION ${LIBCHEWING_VERSION})
+add_custom_target(build_database
+ COMMAND init_database -c ${DATA_COPYRIGHT} -l ${DATA_LICENSE} -r ${DATA_VERSION} -t trie -n 內建詞庫 ${DATA_SRC_DIR}/tsi.src ${DATA_BIN_DIR}/tsi.dat
+ COMMAND init_database -c ${DATA_COPYRIGHT} -l ${DATA_LICENSE} -r ${DATA_VERSION} -t trie -n 內建字庫 ${DATA_SRC_DIR}/word.src ${DATA_BIN_DIR}/word.dat
+)
+add_custom_command(
+ OUTPUT
+ ${ALL_DATA}
+ DEPENDS
+ ${ALL_TOOLS}
+ build_database
+ ${DATA_SRC_DIR}/word.src
+ ${DATA_SRC_DIR}/tsi.src
+)
+else()
add_custom_command(
OUTPUT
${ALL_DATA}
@@ -53,4 +70,5 @@ add_custom_command(
${ALL_TOOLS}
${DATA_SRC_DIR}/phone.cin
${DATA_SRC_DIR}/tsi.src
-)
\ No newline at end of file
+)
+endif()
\ No newline at end of file
diff --git a/data/word.src b/data/word.src
new file mode 100644
index 0000000..073e6cc
--- /dev/null
+++ b/data/word.src
@@ -0,0 +1,26096 @@
+ㄦ 0 ㄦ
+兒 0 ㄦ
+児 0 ㄦ
+ㄝ 0 ㄝ
+誒 0 ㄝˋ
+歐 0 ㄡ
+甌 0 ㄡ
+毆 0 ㄡ
+嘔 0 ㄡ
+謳 0 ㄡ
+鷗 0 ㄡ
+ㄡ 0 ㄡ
+慪 0 ㄡ
+區 0 ㄡ
+熰 0 ㄡ
+蓲 0 ㄡ
+櫙 0 ㄡ
+漚 0 ㄡ
+敺 0 ㄡ
+藲 0 ㄡ
+鏂 0 ㄡ
+区 0 ㄡ
+欧 0 ㄡ
+瓯 0 ㄡ
+塸 0 ㄡ
+膒 0 ㄡ
+瞘 0 ㄡ
+䥲 0 ㄡ
+偶 0 ㄡˇ
+藕 0 ㄡˇ
+嘔 0 ㄡˇ
+耦 0 ㄡˇ
+吘 0 ㄡˇ
+湡 0 ㄡˇ
+腢 0 ㄡˇ
+蕅 0 ㄡˇ
+隅 0 ㄡˇ
+歐 0 ㄡˇ
+藒 0 ㄡˇ
+饇 0 ㄡˇ
+㒖 0 ㄡˇ
+髃 0 ㄡˇ
+㸸 0 ㄡˇ
+嘔 0 ㄡˋ
+漚 0 ㄡˋ
+噢 0 ㄡˋ
+慪 0 ㄡˋ
+醧 0 ㄡˋ
+吽 0 ㄡˊ
+齵 0 ㄡˊ
+鞥 0 ㄥ
+ㄥ 0 ㄥ
+骯 0 ㄤ
+腌 0 ㄤ
+ㄤ 0 ㄤ
+軮 0 ㄤˇ
+雵 0 ㄤˇ
+䇦 0 ㄤˇ
+盎 0 ㄤˋ
+醠 0 ㄤˋ
+枊 0 ㄤˋ
+㼜 0 ㄤˋ
+昂 0 ㄤˊ
+卬 0 ㄤˊ
+䒢 0 ㄤˊ
+昻 0 ㄤˊ
+岇 0 ㄤˊ
+安 0 ㄢ
+鞍 0 ㄢ
+鮟 0 ㄢ
+庵 0 ㄢ
+諳 0 ㄢ
+氨 0 ㄢ
+銨 0 ㄢ
+胺 0 ㄢ
+ㄢ 0 ㄢ
+鵪 0 ㄢ
+媕 0 ㄢ
+侒 0 ㄢ
+盦 0 ㄢ
+峖 0 ㄢ
+痷 0 ㄢ
+腤 0 ㄢ
+萻 0 ㄢ
+垵 0 ㄢ
+陰 0 ㄢ
+菴 0 ㄢ
+厂 0 ㄢ
+闇 0 ㄢ
+鴳 0 ㄢ
+阴 0 ㄢ
+侌 0 ㄢ
+隂 0 ㄢ
+葊 0 ㄢ
+誝 0 ㄢ
+蓭 0 ㄢ
+鞌 0 ㄢ
+嬜 0 ㄢ
+盫 0 ㄢ
+鶕 0 ㄢ
+厈 0 ㄢ
+阥 0 ㄢ
+俺 0 ㄢˇ
+唵 0 ㄢˇ
+晻 0 ㄢˇ
+堷 0 ㄢˇ
+匼 0 ㄢˇ
+噾 0 ㄢˇ
+馣 0 ㄢˇ
+黤 0 ㄢˇ
+黭 0 ㄢˇ
+埯 0 ㄢˇ
+揞 0 ㄢˇ
+隌 0 ㄢˇ
+罯 0 ㄢˇ
+暗 0 ㄢˋ
+案 0 ㄢˋ
+岸 0 ㄢˋ
+按 0 ㄢˋ
+黯 0 ㄢˋ
+菴 0 ㄢˋ
+闇 0 ㄢˋ
+犴 0 ㄢˋ
+豻 0 ㄢˋ
+匼 0 ㄢˋ
+桉 0 ㄢˋ
+洝 0 ㄢˋ
+荌 0 ㄢˋ
+錌 0 ㄢˋ
+匎 0 ㄢˋ
+婩 0 ㄢˋ
+儑 0 ㄢˋ
+矸 0 ㄢˋ
+晻 0 ㄢˋ
+湆 0 ㄢˋ
+噾 0 ㄢˋ
+韽 0 ㄢˋ
+垾 0 ㄢˋ
+隌 0 ㄢˋ
+遃 0 ㄢˋ
+貋 0 ㄢˋ
+䮗 0 ㄢˋ
+鮟 0 ㄢˋ
+雸 0 ㄢˊ
+玵 0 ㄢˊ
+啽 0 ㄢˊ
+ㄅ 0 ㄅ
+崩 0 ㄅㄥ
+繃 0 ㄅㄥ
+伻 0 ㄅㄥ
+弸 0 ㄅㄥ
+祊 0 ㄅㄥ
+閍 0 ㄅㄥ
+塴 0 ㄅㄥ
+絣 0 ㄅㄥ
+痭 0 ㄅㄥ
+嵭 0 ㄅㄥ
+綳 0 ㄅㄥ
+奟 0 ㄅㄥ
+菶 0 ㄅㄥˇ
+玤 0 ㄅㄥˇ
+琫 0 ㄅㄥˇ
+埲 0 ㄅㄥˇ
+誁 0 ㄅㄥˇ
+繃 0 ㄅㄥˇ
+琣 0 ㄅㄥˇ
+浲 0 ㄅㄥˇ
+漨 0 ㄅㄥˇ
+綳 0 ㄅㄥˇ
+鞛 0 ㄅㄥˇ
+䭰 0 ㄅㄥˇ
+蹦 0 ㄅㄥˋ
+搒 0 ㄅㄥˋ
+洴 0 ㄅㄥˋ
+迸 0 ㄅㄥˋ
+跰 0 ㄅㄥˋ
+泵 0 ㄅㄥˋ
+蚌 0 ㄅㄥˋ
+榜 0 ㄅㄥˋ
+磅 0 ㄅㄥˋ
+繃 0 ㄅㄥˋ
+堋 0 ㄅㄥˋ
+埲 0 ㄅㄥˋ
+塴 0 ㄅㄥˋ
+㧍 0 ㄅㄥˋ
+沯 0 ㄅㄥˋ
+埄 0 ㄅㄥˋ
+挷 0 ㄅㄥˋ
+逬 0 ㄅㄥˋ
+綳 0 ㄅㄥˋ
+蜯 0 ㄅㄥˋ
+甭 0 ㄅㄥˊ
+甮 0 ㄅㄥˊ
+幫 0 ㄅㄤ
+邦 0 ㄅㄤ
+傍 0 ㄅㄤ
+梆 0 ㄅㄤ
+鞤 0 ㄅㄤ
+縍 0 ㄅㄤ
+垹 0 ㄅㄤ
+沯 0 ㄅㄤ
+帮 0 ㄅㄤ
+邫 0 ㄅㄤ
+幇 0 ㄅㄤ
+幚 0 ㄅㄤ
+峀 0 ㄅㄤ
+榜 0 ㄅㄤˇ
+綁 0 ㄅㄤˇ
+牓 0 ㄅㄤˇ
+膀 0 ㄅㄤˇ
+螃 0 ㄅㄤˇ
+搒 0 ㄅㄤˇ
+㧍 0 ㄅㄤˇ
+挷 0 ㄅㄤˇ
+騯 0 ㄅㄤˇ
+髈 0 ㄅㄤˇ
+棒 0 ㄅㄤˋ
+磅 0 ㄅㄤˋ
+謗 0 ㄅㄤˋ
+蚌 0 ㄅㄤˋ
+傍 0 ㄅㄤˋ
+鎊 0 ㄅㄤˋ
+旁 0 ㄅㄤˋ
+甏 0 ㄅㄤˋ
+塝 0 ㄅㄤˋ
+艕 0 ㄅㄤˋ
+徬 0 ㄅㄤˋ
+膀 0 ㄅㄤˋ
+玤 0 ㄅㄤˋ
+棓 0 ㄅㄤˋ
+蒡 0 ㄅㄤˋ
+蚄 0 ㄅㄤˋ
+嫎 0 ㄅㄤˋ
+髈 0 ㄅㄤˋ
+稖 0 ㄅㄤˋ
+蜯 0 ㄅㄤˋ
+班 0 ㄅㄢ
+般 0 ㄅㄢ
+搬 0 ㄅㄢ
+斑 0 ㄅㄢ
+頒 0 ㄅㄢ
+扳 0 ㄅㄢ
+瘢 0 ㄅㄢ
+虨 0 ㄅㄢ
+斒 0 ㄅㄢ
+攽 0 ㄅㄢ
+褩 0 ㄅㄢ
+朌 0 ㄅㄢ
+肦 0 ㄅㄢ
+㻞 0 ㄅㄢ
+辬 0 ㄅㄢ
+螌 0 ㄅㄢ
+板 0 ㄅㄢˇ
+版 0 ㄅㄢˇ
+闆 0 ㄅㄢˇ
+阪 0 ㄅㄢˇ
+舨 0 ㄅㄢˇ
+昄 0 ㄅㄢˇ
+鈑 0 ㄅㄢˇ
+粄 0 ㄅㄢˇ
+蝂 0 ㄅㄢˇ
+魬 0 ㄅㄢˇ
+坂 0 ㄅㄢˇ
+瓪 0 ㄅㄢˇ
+半 0 ㄅㄢˋ
+辦 0 ㄅㄢˋ
+伴 0 ㄅㄢˋ
+扮 0 ㄅㄢˋ
+拌 0 ㄅㄢˋ
+絆 0 ㄅㄢˋ
+姅 0 ㄅㄢˋ
+瓣 0 ㄅㄢˋ
+爿 0 ㄅㄢˋ
+怑 0 ㄅㄢˋ
+湴 0 ㄅㄢˋ
+鉡 0 ㄅㄢˋ
+靽 0 ㄅㄢˋ
+畔 0 ㄅㄢˋ
+办 0 ㄅㄢˋ
+㫠 0 ㄅㄢˋ
+秚 0 ㄅㄢˋ
+八 0 ㄅㄚ
+捌 0 ㄅㄚ
+巴 0 ㄅㄚ
+吧 0 ㄅㄚ
+疤 0 ㄅㄚ
+芭 0 ㄅㄚ
+笆 0 ㄅㄚ
+粑 0 ㄅㄚ
+叭 0 ㄅㄚ
+扒 0 ㄅㄚ
+豝 0 ㄅㄚ
+仈 0 ㄅㄚ
+朳 0 ㄅㄚ
+葩 0 ㄅㄚ
+岊 0 ㄅㄚ
+峇 0 ㄅㄚ
+舥 0 ㄅㄚ
+蚆 0 ㄅㄚ
+玌 0 ㄅㄚ
+岜 0 ㄅㄚ
+哵 0 ㄅㄚ
+羓 0 ㄅㄚ
+釟 0 ㄅㄚ
+㺩 0 ㄅㄚ
+䰾 0 ㄅㄚ
+䶕 0 ㄅㄚ
+把 0 ㄅㄚˇ
+靶 0 ㄅㄚˇ
+鈀 0 ㄅㄚˇ
+罷 0 ㄅㄚˋ
+爸 0 ㄅㄚˋ
+霸 0 ㄅㄚˋ
+壩 0 ㄅㄚˋ
+耙 0 ㄅㄚˋ
+弝 0 ㄅㄚˋ
+灞 0 ㄅㄚˋ
+伯 0 ㄅㄚˋ
+猈 0 ㄅㄚˋ
+把 0 ㄅㄚˋ
+跁 0 ㄅㄚˋ
+矲 0 ㄅㄚˋ
+垻 0 ㄅㄚˋ
+罢 0 ㄅㄚˋ
+覇 0 ㄅㄚˋ
+皅 0 ㄅㄚˋ
+䎱 0 ㄅㄚˋ
+拔 0 ㄅㄚˊ
+跋 0 ㄅㄚˊ
+鈸 0 ㄅㄚˊ
+魃 0 ㄅㄚˊ
+茇 0 ㄅㄚˊ
+鼥 0 ㄅㄚˊ
+軷 0 ㄅㄚˊ
+犮 0 ㄅㄚˊ
+菝 0 ㄅㄚˊ
+胈 0 ㄅㄚˊ
+詙 0 ㄅㄚˊ
+帗 0 ㄅㄚˊ
+柭 0 ㄅㄚˊ
+祓 0 ㄅㄚˊ
+袚 0 ㄅㄚˊ
+抜 0 ㄅㄚˊ
+秡 0 ㄅㄚˊ
+墢 0 ㄅㄚˊ
+坺 0 ㄅㄚˊ
+炦 0 ㄅㄚˊ
+颰 0 ㄅㄚˊ
+鮁 0 ㄅㄚˊ
+吧 0 ㄅㄚ˙
+罷 0 ㄅㄚ˙
+琶 0 ㄅㄚ˙
+杷 0 ㄅㄚ˙
+罢 0 ㄅㄚ˙
+欛 0 ㄅㄚ˙
+爸 0 ㄅㄚ˙
+掰 0 ㄅㄞ
+搿 0 ㄅㄞ
+百 0 ㄅㄞˇ
+擺 0 ㄅㄞˇ
+佰 0 ㄅㄞˇ
+襬 0 ㄅㄞˇ
+粨 0 ㄅㄞˇ
+捭 0 ㄅㄞˇ
+絔 0 ㄅㄞˇ
+伯 0 ㄅㄞˇ
+把 0 ㄅㄞˇ
+柏 0 ㄅㄞˇ
+陌 0 ㄅㄞˇ
+栢 0 ㄅㄞˇ
+摆 0 ㄅㄞˇ
+敗 0 ㄅㄞˋ
+拜 0 ㄅㄞˋ
+唄 0 ㄅㄞˋ
+粺 0 ㄅㄞˋ
+稗 0 ㄅㄞˋ
+庍 0 ㄅㄞˋ
+湃 0 ㄅㄞˋ
+拝 0 ㄅㄞˋ
+贁 0 ㄅㄞˋ
+白 0 ㄅㄞˊ
+玻 0 ㄅㄛ
+撥 0 ㄅㄛ
+剝 0 ㄅㄛ
+菠 0 ㄅㄛ
+缽 0 ㄅㄛ
+嶓 0 ㄅㄛ
+砵 0 ㄅㄛ
+播 0 ㄅㄛ
+般 0 ㄅㄛ
+碆 0 ㄅㄛ
+袚 0 ㄅㄛ
+襏 0 ㄅㄛ
+鱍 0 ㄅㄛ
+啵 0 ㄅㄛ
+柭 0 ㄅㄛ
+蹳 0 ㄅㄛ
+岥 0 ㄅㄛ
+波 0 ㄅㄛ
+餑 0 ㄅㄛ
+癶 0 ㄅㄛ
+肑 0 ㄅㄛ
+剥 0 ㄅㄛ
+盋 0 ㄅㄛ
+紴 0 ㄅㄛ
+鉢 0 ㄅㄛ
+鮁 0 ㄅㄛ
+㿺 0 ㄅㄛ
+驋 0 ㄅㄛ
+跛 0 ㄅㄛˇ
+簸 0 ㄅㄛˇ
+蚾 0 ㄅㄛˇ
+播 0 ㄅㄛˋ
+擘 0 ㄅㄛˋ
+簸 0 ㄅㄛˋ
+亳 0 ㄅㄛˋ
+薜 0 ㄅㄛˋ
+譒 0 ㄅㄛˋ
+薄 0 ㄅㄛˋ
+檗 0 ㄅㄛˋ
+蘗 0 ㄅㄛˋ
+挀 0 ㄅㄛˋ
+北 0 ㄅㄛˋ
+畚 0 ㄅㄛˋ
+鄱 0 ㄅㄛˋ
+孹 0 ㄅㄛˋ
+檘 0 ㄅㄛˋ
+襎 0 ㄅㄛˋ
+奙 0 ㄅㄛˋ
+蔢 0 ㄅㄛˋ
+捭 0 ㄅㄛˋ
+伯 0 ㄅㄛˊ
+博 0 ㄅㄛˊ
+柏 0 ㄅㄛˊ
+泊 0 ㄅㄛˊ
+勃 0 ㄅㄛˊ
+搏 0 ㄅㄛˊ
+渤 0 ㄅㄛˊ
+駁 0 ㄅㄛˊ
+白 0 ㄅㄛˊ
+薄 0 ㄅㄛˊ
+脖 0 ㄅㄛˊ
+帛 0 ㄅㄛˊ
+舶 0 ㄅㄛˊ
+箔 0 ㄅㄛˊ
+荸 0 ㄅㄛˊ
+蔔 0 ㄅㄛˊ
+膊 0 ㄅㄛˊ
+鈸 0 ㄅㄛˊ
+餑 0 ㄅㄛˊ
+鉑 0 ㄅㄛˊ
+欂 0 ㄅㄛˊ
+鵓 0 ㄅㄛˊ
+踣 0 ㄅㄛˊ
+浡 0 ㄅㄛˊ
+襮 0 ㄅㄛˊ
+踄 0 ㄅㄛˊ
+鎛 0 ㄅㄛˊ
+駮 0 ㄅㄛˊ
+僰 0 ㄅㄛˊ
+餺 0 ㄅㄛˊ
+髆 0 ㄅㄛˊ
+桲 0 ㄅㄛˊ
+謈 0 ㄅㄛˊ
+馞 0 ㄅㄛˊ
+胉 0 ㄅㄛˊ
+挬 0 ㄅㄛˊ
+猼 0 ㄅㄛˊ
+葧 0 ㄅㄛˊ
+鋍 0 ㄅㄛˊ
+懪 0 ㄅㄛˊ
+簙 0 ㄅㄛˊ
+礡 0 ㄅㄛˊ
+鑮 0 ㄅㄛˊ
+郣 0 ㄅㄛˊ
+鸔 0 ㄅㄛˊ
+糪 0 ㄅㄛˊ
+百 0 ㄅㄛˊ
+孛 0 ㄅㄛˊ
+佰 0 ㄅㄛˊ
+洎 0 ㄅㄛˊ
+悖 0 ㄅㄛˊ
+缽 0 ㄅㄛˊ
+菠 0 ㄅㄛˊ
+菔 0 ㄅㄛˊ
+貊 0 ㄅㄛˊ
+雹 0 ㄅㄛˊ
+爆 0 ㄅㄛˊ
+簿 0 ㄅㄛˊ
+犮 0 ㄅㄛˊ
+瓝 0 ㄅㄛˊ
+菝 0 ㄅㄛˊ
+軷 0 ㄅㄛˊ
+摶 0 ㄅㄛˊ
+濼 0 ㄅㄛˊ
+襏 0 ㄅㄛˊ
+叐 0 ㄅㄛˊ
+犻 0 ㄅㄛˊ
+妭 0 ㄅㄛˊ
+敀 0 ㄅㄛˊ
+洦 0 ㄅㄛˊ
+苩 0 ㄅㄛˊ
+栢 0 ㄅㄛˊ
+盋 0 ㄅㄛˊ
+湐 0 ㄅㄛˊ
+貃 0 ㄅㄛˊ
+愽 0 ㄅㄛˊ
+鉢 0 ㄅㄛˊ
+煿 0 ㄅㄛˊ
+艊 0 ㄅㄛˊ
+髉 0 ㄅㄛˊ
+侼 0 ㄅㄛˊ
+㫲 0 ㄅㄛˊ
+㶿 0 ㄅㄛˊ
+㼎 0 ㄅㄛˊ
+愂 0 ㄅㄛˊ
+牔 0 ㄅㄛˊ
+䭯 0 ㄅㄛˊ
+䗚 0 ㄅㄛˊ
+鮊 0 ㄅㄛˊ
+㩧 0 ㄅㄛˊ
+馛 0 ㄅㄛˊ
+伯 0 ㄅㄛ˙
+菔 0 ㄅㄛ˙
+蔔 0 ㄅㄛ˙
+啵 0 ㄅㄛ˙
+膊 0 ㄅㄛ˙
+餑 0 ㄅㄛ˙
+逋 0 ㄅㄨ
+晡 0 ㄅㄨ
+餔 0 ㄅㄨ
+峬 0 ㄅㄨ
+鵏 0 ㄅㄨ
+不 0 ㄅㄨ
+鯆 0 ㄅㄨ
+庯 0 ㄅㄨ
+陠 0 ㄅㄨ
+補 0 ㄅㄨˇ
+捕 0 ㄅㄨˇ
+埔 0 ㄅㄨˇ
+哺 0 ㄅㄨˇ
+卜 0 ㄅㄨˇ
+鳪 0 ㄅㄨˇ
+獛 0 ㄅㄨˇ
+訃 0 ㄅㄨˇ
+轐 0 ㄅㄨˇ
+不 0 ㄅㄨˋ
+部 0 ㄅㄨˋ
+布 0 ㄅㄨˋ
+步 0 ㄅㄨˋ
+怖 0 ㄅㄨˋ
+佈 0 ㄅㄨˋ
+簿 0 ㄅㄨˋ
+埠 0 ㄅㄨˋ
+鈽 0 ㄅㄨˋ
+蔀 0 ㄅㄨˋ
+篰 0 ㄅㄨˋ
+捗 0 ㄅㄨˋ
+咘 0 ㄅㄨˋ
+阜 0 ㄅㄨˋ
+哺 0 ㄅㄨˋ
+捕 0 ㄅㄨˋ
+抪 0 ㄅㄨˋ
+陟 0 ㄅㄨˋ
+餔 0 ㄅㄨˋ
+歨 0 ㄅㄨˋ
+歩 0 ㄅㄨˋ
+㳍 0 ㄅㄨˋ
+柨 0 ㄅㄨˋ
+徏 0 ㄅㄨˋ
+陠 0 ㄅㄨˋ
+荹 0 ㄅㄨˋ
+餢 0 ㄅㄨˋ
+廍 0 ㄅㄨˋ
+悑 0 ㄅㄨˋ
+郶 0 ㄅㄨˋ
+不 0 ㄅㄨˊ
+醭 0 ㄅㄨˊ
+不 0 ㄅㄨ˙
+包 0 ㄅㄠ
+胞 0 ㄅㄠ
+苞 0 ㄅㄠ
+褒 0 ㄅㄠ
+枹 0 ㄅㄠ
+笣 0 ㄅㄠ
+蕔 0 ㄅㄠ
+孢 0 ㄅㄠ
+炮 0 ㄅㄠ
+剝 0 ㄅㄠ
+皰 0 ㄅㄠ
+煲 0 ㄅㄠ
+褻 0 ㄅㄠ
+鞄 0 ㄅㄠ
+褎 0 ㄅㄠ
+齙 0 ㄅㄠ
+剥 0 ㄅㄠ
+靤 0 ㄅㄠ
+裦 0 ㄅㄠ
+闁 0 ㄅㄠ
+襃 0 ㄅㄠ
+礮 0 ㄅㄠ
+礟 0 ㄅㄠ
+保 0 ㄅㄠˇ
+寶 0 ㄅㄠˇ
+飽 0 ㄅㄠˇ
+堡 0 ㄅㄠˇ
+褓 0 ㄅㄠˇ
+葆 0 ㄅㄠˇ
+鴇 0 ㄅㄠˇ
+怉 0 ㄅㄠˇ
+駂 0 ㄅㄠˇ
+鳵 0 ㄅㄠˇ
+媬 0 ㄅㄠˇ
+褒 0 ㄅㄠˇ
+煲 0 ㄅㄠˇ
+宝 0 ㄅㄠˇ
+珤 0 ㄅㄠˇ
+堢 0 ㄅㄠˇ
+寚 0 ㄅㄠˇ
+緥 0 ㄅㄠˇ
+裦 0 ㄅㄠˇ
+賲 0 ㄅㄠˇ
+闁 0 ㄅㄠˇ
+襃 0 ㄅㄠˇ
+寳 0 ㄅㄠˇ
+䴐 0 ㄅㄠˇ
+宲 0 ㄅㄠˇ
+報 0 ㄅㄠˋ
+抱 0 ㄅㄠˋ
+暴 0 ㄅㄠˋ
+爆 0 ㄅㄠˋ
+豹 0 ㄅㄠˋ
+鮑 0 ㄅㄠˋ
+刨 0 ㄅㄠˋ
+趵 0 ㄅㄠˋ
+鉋 0 ㄅㄠˋ
+虣 0 ㄅㄠˋ
+鑤 0 ㄅㄠˋ
+儤 0 ㄅㄠˋ
+菢 0 ㄅㄠˋ
+煲 0 ㄅㄠˋ
+袌 0 ㄅㄠˋ
+嚗 0 ㄅㄠˋ
+犦 0 ㄅㄠˋ
+忁 0 ㄅㄠˋ
+匏 0 ㄅㄠˋ
+雹 0 ㄅㄠˋ
+瀑 0 ㄅㄠˋ
+謈 0 ㄅㄠˋ
+勽 0 ㄅㄠˋ
+报 0 ㄅㄠˋ
+煿 0 ㄅㄠˋ
+骲 0 ㄅㄠˋ
+曓 0 ㄅㄠˋ
+雹 0 ㄅㄠˊ
+薄 0 ㄅㄠˊ
+窇 0 ㄅㄠˊ
+瓝 0 ㄅㄠˊ
+箔 0 ㄅㄠˊ
+瓟 0 ㄅㄠˊ
+背 0 ㄅㄟ
+杯 0 ㄅㄟ
+悲 0 ㄅㄟ
+卑 0 ㄅㄟ
+碑 0 ㄅㄟ
+俾 0 ㄅㄟ
+揹 0 ㄅㄟ
+偝 0 ㄅㄟ
+盃 0 ㄅㄟ
+裨 0 ㄅㄟ
+萆 0 ㄅㄟ
+桮 0 ㄅㄟ
+椑 0 ㄅㄟ
+伓 0 ㄅㄟ
+綼 0 ㄅㄟ
+鵯 0 ㄅㄟ
+藣 0 ㄅㄟ
+埤 0 ㄅㄟ
+坏 0 ㄅㄟ
+婢 0 ㄅㄟ
+庳 0 ㄅㄟ
+捭 0 ㄅㄟ
+錍 0 ㄅㄟ
+阫 0 ㄅㄟ
+錃 0 ㄅㄟ
+䎱 0 ㄅㄟ
+北 0 ㄅㄟˇ
+邶 0 ㄅㄟˇ
+被 0 ㄅㄟˋ
+備 0 ㄅㄟˋ
+背 0 ㄅㄟˋ
+貝 0 ㄅㄟˋ
+輩 0 ㄅㄟˋ
+倍 0 ㄅㄟˋ
+臂 0 ㄅㄟˋ
+狽 0 ㄅㄟˋ
+憊 0 ㄅㄟˋ
+悖 0 ㄅㄟˋ
+孛 0 ㄅㄟˋ
+焙 0 ㄅㄟˋ
+蓓 0 ㄅㄟˋ
+褙 0 ㄅㄟˋ
+邶 0 ㄅㄟˋ
+琲 0 ㄅㄟˋ
+誖 0 ㄅㄟˋ
+鋇 0 ㄅㄟˋ
+哱 0 ㄅㄟˋ
+糒 0 ㄅㄟˋ
+梖 0 ㄅㄟˋ
+珼 0 ㄅㄟˋ
+鄁 0 ㄅㄟˋ
+牬 0 ㄅㄟˋ
+郥 0 ㄅㄟˋ
+犕 0 ㄅㄟˋ
+奰 0 ㄅㄟˋ
+北 0 ㄅㄟˋ
+婢 0 ㄅㄟˋ
+僻 0 ㄅㄟˋ
+避 0 ㄅㄟˋ
+昢 0 ㄅㄟˋ
+唄 0 ㄅㄟˋ
+偝 0 ㄅㄟˋ
+碚 0 ㄅㄟˋ
+鞁 0 ㄅㄟˋ
+鼰 0 ㄅㄟˋ
+俻 0 ㄅㄟˋ
+㛝 0 ㄅㄟˋ
+偹 0 ㄅㄟˋ
+旇 0 ㄅㄟˋ
+僃 0 ㄅㄟˋ
+㻗 0 ㄅㄟˋ
+蛽 0 ㄅㄟˋ
+㫲 0 ㄅㄟˋ
+軰 0 ㄅㄟˋ
+愂 0 ㄅㄟˋ
+唄 0 ㄅㄟ˙
+奔 0 ㄅㄣ
+賁 0 ㄅㄣ
+錛 0 ㄅㄣ
+泍 0 ㄅㄣ
+渀 0 ㄅㄣ
+卉 0 ㄅㄣ
+犇 0 ㄅㄣ
+倴 0 ㄅㄣ
+𩣺 0 ㄅㄣ
+本 0 ㄅㄣˇ
+畚 0 ㄅㄣˇ
+苯 0 ㄅㄣˇ
+泍 0 ㄅㄣˇ
+夲 0 ㄅㄣˇ
+楍 0 ㄅㄣˇ
+奙 0 ㄅㄣˇ
+笨 0 ㄅㄣˋ
+体 0 ㄅㄣˋ
+坌 0 ㄅㄣˋ
+奔 0 ㄅㄣˋ
+泍 0 ㄅㄣˋ
+捹 0 ㄅㄣˋ
+桳 0 ㄅㄣˋ
+犇 0 ㄅㄣˋ
+逩 0 ㄅㄣˋ
+撪 0 ㄅㄣˋ
+𦯀 0 ㄅㄣˋ
+獖 0 ㄅㄣˋ
+逼 0 ㄅㄧ
+屄 0 ㄅㄧ
+偪 0 ㄅㄧ
+稫 0 ㄅㄧ
+豍 0 ㄅㄧ
+皀 0 ㄅㄧ
+毴 0 ㄅㄧ
+悂 0 ㄅㄧ
+螕 0 ㄅㄧ
+憋 0 ㄅㄧㄝ
+鱉 0 ㄅㄧㄝ
+虌 0 ㄅㄧㄝ
+癟 0 ㄅㄧㄝ
+鷩 0 ㄅㄧㄝ
+鼈 0 ㄅㄧㄝ
+㿜 0 ㄅㄧㄝ
+龞 0 ㄅㄧㄝ
+癟 0 ㄅㄧㄝˇ
+蛂 0 ㄅㄧㄝˇ
+㿜 0 ㄅㄧㄝˇ
+彆 0 ㄅㄧㄝˋ
+縪 0 ㄅㄧㄝˋ
+蹩 0 ㄅㄧㄝˋ
+別 0 ㄅㄧㄝˊ
+蹩 0 ㄅㄧㄝˊ
+咇 0 ㄅㄧㄝˊ
+徶 0 ㄅㄧㄝˊ
+襒 0 ㄅㄧㄝˊ
+蟞 0 ㄅㄧㄝˊ
+彆 0 ㄅㄧㄝˊ
+蛂 0 ㄅㄧㄝˊ
+别 0 ㄅㄧㄝˊ
+吡 0 ㄅㄧㄝˊ
+㧙 0 ㄅㄧㄝˊ
+莂 0 ㄅㄧㄝˊ
+兵 0 ㄅㄧㄥ
+冰 0 ㄅㄧㄥ
+掤 0 ㄅㄧㄥ
+栟 0 ㄅㄧㄥ
+并 0 ㄅㄧㄥ
+屏 0 ㄅㄧㄥ
+檳 0 ㄅㄧㄥ
+仌 0 ㄅㄧㄥ
+氷 0 ㄅㄧㄥ
+幷 0 ㄅㄧㄥ
+屛 0 ㄅㄧㄥ
+梹 0 ㄅㄧㄥ
+幈 0 ㄅㄧㄥ
+餅 0 ㄅㄧㄥˇ
+丙 0 ㄅㄧㄥˇ
+稟 0 ㄅㄧㄥˇ
+柄 0 ㄅㄧㄥˇ
+秉 0 ㄅㄧㄥˇ
+炳 0 ㄅㄧㄥˇ
+昺 0 ㄅㄧㄥˇ
+邴 0 ㄅㄧㄥˇ
+怲 0 ㄅㄧㄥˇ
+鞞 0 ㄅㄧㄥˇ
+鉼 0 ㄅㄧㄥˇ
+蛃 0 ㄅㄧㄥˇ
+陃 0 ㄅㄧㄥˇ
+苪 0 ㄅㄧㄥˇ
+窉 0 ㄅㄧㄥˇ
+屏 0 ㄅㄧㄥˇ
+庰 0 ㄅㄧㄥˇ
+迸 0 ㄅㄧㄥˇ
+芮 0 ㄅㄧㄥˇ
+抦 0 ㄅㄧㄥˇ
+昞 0 ㄅㄧㄥˇ
+眪 0 ㄅㄧㄥˇ
+屛 0 ㄅㄧㄥˇ
+幈 0 ㄅㄧㄥˇ
+棅 0 ㄅㄧㄥˇ
+逬 0 ㄅㄧㄥˇ
+禀 0 ㄅㄧㄥˇ
+餠 0 ㄅㄧㄥˇ
+餜 0 ㄅㄧㄥˇ
+並 0 ㄅㄧㄥˋ
+病 0 ㄅㄧㄥˋ
+併 0 ㄅㄧㄥˋ
+并 0 ㄅㄧㄥˋ
+摒 0 ㄅㄧㄥˋ
+寎 0 ㄅㄧㄥˋ
+鵧 0 ㄅㄧㄥˋ
+偋 0 ㄅㄧㄥˋ
+柄 0 ㄅㄧㄥˋ
+幵 0 ㄅㄧㄥˋ
+庰 0 ㄅㄧㄥˋ
+窉 0 ㄅㄧㄥˋ
+㓈 0 ㄅㄧㄥˋ
+幷 0 ㄅㄧㄥˋ
+抦 0 ㄅㄧㄥˋ
+倂 0 ㄅㄧㄥˋ
+栤 0 ㄅㄧㄥˋ
+竝 0 ㄅㄧㄥˋ
+棅 0 ㄅㄧㄥˋ
+逬 0 ㄅㄧㄥˋ
+鈵 0 ㄅㄧㄥˋ
+靐 0 ㄅㄧㄥˋ
+开 0 ㄅㄧㄥˋ
+傡 0 ㄅㄧㄥˋ
+鮩 0 ㄅㄧㄥˋ
+𢔧 0 ㄅㄧㄥˋ
+邊 0 ㄅㄧㄢ
+編 0 ㄅㄧㄢ
+鞭 0 ㄅㄧㄢ
+蝙 0 ㄅㄧㄢ
+砭 0 ㄅㄧㄢ
+籩 0 ㄅㄧㄢ
+箯 0 ㄅㄧㄢ
+稨 0 ㄅㄧㄢ
+猵 0 ㄅㄧㄢ
+甂 0 ㄅㄧㄢ
+柉 0 ㄅㄧㄢ
+楄 0 ㄅㄧㄢ
+煸 0 ㄅㄧㄢ
+揙 0 ㄅㄧㄢ
+边 0 ㄅㄧㄢ
+牑 0 ㄅㄧㄢ
+獱 0 ㄅㄧㄢ
+鍽 0 ㄅㄧㄢ
+邉 0 ㄅㄧㄢ
+鯾 0 ㄅㄧㄢ
+鯿 0 ㄅㄧㄢ
+扁 0 ㄅㄧㄢˇ
+貶 0 ㄅㄧㄢˇ
+匾 0 ㄅㄧㄢˇ
+褊 0 ㄅㄧㄢˇ
+窆 0 ㄅㄧㄢˇ
+萹 0 ㄅㄧㄢˇ
+惼 0 ㄅㄧㄢˇ
+碥 0 ㄅㄧㄢˇ
+砭 0 ㄅㄧㄢˇ
+蝙 0 ㄅㄧㄢˇ
+揙 0 ㄅㄧㄢˇ
+稨 0 ㄅㄧㄢˇ
+鴘 0 ㄅㄧㄢˇ
+糄 0 ㄅㄧㄢˇ
+藊 0 ㄅㄧㄢˇ
+便 0 ㄅㄧㄢˋ
+變 0 ㄅㄧㄢˋ
+遍 0 ㄅㄧㄢˋ
+辨 0 ㄅㄧㄢˋ
+辯 0 ㄅㄧㄢˋ
+汴 0 ㄅㄧㄢˋ
+辮 0 ㄅㄧㄢˋ
+忭 0 ㄅㄧㄢˋ
+弁 0 ㄅㄧㄢˋ
+釆 0 ㄅㄧㄢˋ
+抃 0 ㄅㄧㄢˋ
+緶 0 ㄅㄧㄢˋ
+艑 0 ㄅㄧㄢˋ
+卞 0 ㄅㄧㄢˋ
+揙 0 ㄅㄧㄢˋ
+汳 0 ㄅㄧㄢˋ
+鴘 0 ㄅㄧㄢˋ
+閞 0 ㄅㄧㄢˋ
+犿 0 ㄅㄧㄢˋ
+玣 0 ㄅㄧㄢˋ
+苄 0 ㄅㄧㄢˋ
+変 0 ㄅㄧㄢˋ
+徧 0 ㄅㄧㄢˋ
+辡 0 ㄅㄧㄢˋ
+辧 0 ㄅㄧㄢˋ
+昪 0 ㄅㄧㄢˋ
+覍 0 ㄅㄧㄢˋ
+比 0 ㄅㄧˇ
+筆 0 ㄅㄧˇ
+彼 0 ㄅㄧˇ
+鄙 0 ㄅㄧˇ
+鈵 0 ㄅㄧㄥˇ
+匕 0 ㄅㄧˇ
+沘 0 ㄅㄧˇ
+秕 0 ㄅㄧˇ
+屄 0 ㄅㄧˇ
+蚍 0 ㄅㄧˇ
+妣 0 ㄅㄧˇ
+疕 0 ㄅㄧˇ
+潷 0 ㄅㄧˇ
+柀 0 ㄅㄧˇ
+朼 0 ㄅㄧˇ
+貏 0 ㄅㄧˇ
+仳 0 ㄅㄧˇ
+毗 0 ㄅㄧˇ
+媲 0 ㄅㄧˇ
+壁 0 ㄅㄧˇ
+貔 0 ㄅㄧˇ
+夶 0 ㄅㄧˇ
+佊 0 ㄅㄧˇ
+㚰 0 ㄅㄧˇ
+笔 0 ㄅㄧˇ
+粃 0 ㄅㄧˇ
+舭 0 ㄅㄧˇ
+啚 0 ㄅㄧˇ
+袐 0 ㄅㄧˇ
+豼 0 ㄅㄧˇ
+魮 0 ㄅㄧˇ
+滗 0 ㄅㄧˇ
+必 0 ㄅㄧˋ
+敝 0 ㄅㄧˋ
+畢 0 ㄅㄧˋ
+壁 0 ㄅㄧˋ
+避 0 ㄅㄧˋ
+璧 0 ㄅㄧˋ
+閉 0 ㄅㄧˋ
+鄙 0 ㄅㄧˋ
+臂 0 ㄅㄧˋ
+幣 0 ㄅㄧˋ
+弊 0 ㄅㄧˋ
+婢 0 ㄅㄧˋ
+斃 0 ㄅㄧˋ
+碧 0 ㄅㄧˋ
+泌 0 ㄅㄧˋ
+祕 0 ㄅㄧˋ
+俾 0 ㄅㄧˋ
+蔽 0 ㄅㄧˋ
+庇 0 ㄅㄧˋ
+嗶 0 ㄅㄧˋ
+愎 0 ㄅㄧˋ
+辟 0 ㄅㄧˋ
+弼 0 ㄅㄧˋ
+裨 0 ㄅㄧˋ
+陛 0 ㄅㄧˋ
+埤 0 ㄅㄧˋ
+箄 0 ㄅㄧˋ
+篦 0 ㄅㄧˋ
+畀 0 ㄅㄧˋ
+比 0 ㄅㄧˋ
+嬖 0 ㄅㄧˋ
+睥 0 ㄅㄧˋ
+賁 0 ㄅㄧˋ
+贔 0 ㄅㄧˋ
+襞 0 ㄅㄧˋ
+毖 0 ㄅㄧˋ
+蓽 0 ㄅㄧˋ
+蹕 0 ㄅㄧˋ
+髀 0 ㄅㄧˋ
+怭 0 ㄅㄧˋ
+庳 0 ㄅㄧˋ
+愊 0 ㄅㄧˋ
+楅 0 ㄅㄧˋ
+湢 0 ㄅㄧˋ
+狴 0 ㄅㄧˋ
+獘 0 ㄅㄧˋ
+篳 0 ㄅㄧˋ
+苾 0 ㄅㄧˋ
+薜 0 ㄅㄧˋ
+觱 0 ㄅㄧˋ
+詖 0 ㄅㄧˋ
+躄 0 ㄅㄧˋ
+邲 0 ㄅㄧˋ
+閟 0 ㄅㄧˋ
+柲 0 ㄅㄧˋ
+梐 0 ㄅㄧˋ
+珌 0 ㄅㄧˋ
+痺 0 ㄅㄧˋ
+飶 0 ㄅㄧˋ
+馝 0 ㄅㄧˋ
+駜 0 ㄅㄧˋ
+鎞 0 ㄅㄧˋ
+鷩 0 ㄅㄧˋ
+皕 0 ㄅㄧˋ
+堛 0 ㄅㄧˋ
+鉍 0 ㄅㄧˋ
+痹 0 ㄅㄧˋ
+腷 0 ㄅㄧˋ
+骳 0 ㄅㄧˋ
+坒 0 ㄅㄧˋ
+滭 0 ㄅㄧˋ
+熚 0 ㄅㄧˋ
+疪 0 ㄅㄧˋ
+妼 0 ㄅㄧˋ
+鏎 0 ㄅㄧˋ
+鷝 0 ㄅㄧˋ
+柫 0 ㄅㄧˋ
+佖 0 ㄅㄧˋ
+蜌 0 ㄅㄧˋ
+彃 0 ㄅㄧˋ
+箅 0 ㄅㄧˋ
+蓖 0 ㄅㄧˋ
+鄪 0 ㄅㄧˋ
+罼 0 ㄅㄧˋ
+鮅 0 ㄅㄧˋ
+襒 0 ㄅㄧˋ
+鵖 0 ㄅㄧˋ
+襣 0 ㄅㄧˋ
+驆 0 ㄅㄧˋ
+鼊 0 ㄅㄧˋ
+芘 0 ㄅㄧˋ
+粊 0 ㄅㄧˋ
+稗 0 ㄅㄧˋ
+嫳 0 ㄅㄧˋ
+獙 0 ㄅㄧˋ
+廦 0 ㄅㄧˋ
+鄨 0 ㄅㄧˋ
+縪 0 ㄅㄧˋ
+佛 0 ㄅㄧˋ
+拂 0 ㄅㄧˋ
+秘 0 ㄅㄧˋ
+費 0 ㄅㄧˋ
+跛 0 ㄅㄧˋ
+逼 0 ㄅㄧˋ
+擘 0 ㄅㄧˋ
+謐 0 ㄅㄧˋ
+咇 0 ㄅㄧˋ
+毘 0 ㄅㄧˋ
+胇 0 ㄅㄧˋ
+萆 0 ㄅㄧˋ
+稫 0 ㄅㄧˋ
+綼 0 ㄅㄧˋ
+髲 0 ㄅㄧˋ
+踾 0 ㄅㄧˋ
+貔 0 ㄅㄧˋ
+繴 0 ㄅㄧˋ
+仏 0 ㄅㄧˋ
+夶 0 ㄅㄧˋ
+吡 0 ㄅㄧˋ
+怶 0 ㄅㄧˋ
+畁 0 ㄅㄧˋ
+啚 0 ㄅㄧˋ
+豼 0 ㄅㄧˋ
+閇 0 ㄅㄧˋ
+弻 0 ㄅㄧˋ
+貱 0 ㄅㄧˋ
+煏 0 ㄅㄧˋ
+睤 0 ㄅㄧˋ
+箆 0 ㄅㄧˋ
+聛 0 ㄅㄧˋ
+壀 0 ㄅㄧˋ
+孹 0 ㄅㄧˋ
+嚊 0 ㄅㄧˋ
+躃 0 ㄅㄧˋ
+鞸 0 ㄅㄧˋ
+魓 0 ㄅㄧˋ
+㧙 0 ㄅㄧˋ
+枈 0 ㄅㄧˋ
+䏟 0 ㄅㄧˋ
+虑 0 ㄅㄧˋ
+㻫 0 ㄅㄧˋ
+䠋 0 ㄅㄧˋ
+饆 0 ㄅㄧˋ
+韠 0 ㄅㄧˋ
+鰏 0 ㄅㄧˋ
+鐴 0 ㄅㄧˋ
+鐾 0 ㄅㄧˋ
+𢕾 0 ㄅㄧˋ
+朇 0 ㄅㄧˋ
+鼻 0 ㄅㄧˊ
+荸 0 ㄅㄧˊ
+鼽 0 ㄅㄧˊ
+標 0 ㄅㄧㄠ
+彪 0 ㄅㄧㄠ
+鑣 0 ㄅㄧㄠ
+鏢 0 ㄅㄧㄠ
+飆 0 ㄅㄧㄠ
+膘 0 ㄅㄧㄠ
+熛 0 ㄅㄧㄠ
+麃 0 ㄅㄧㄠ
+嘌 0 ㄅㄧㄠ
+杓 0 ㄅㄧㄠ
+滮 0 ㄅㄧㄠ
+瀌 0 ㄅㄧㄠ
+猋 0 ㄅㄧㄠ
+瘭 0 ㄅㄧㄠ
+穮 0 ㄅㄧㄠ
+颮 0 ㄅㄧㄠ
+驫 0 ㄅㄧㄠ
+摽 0 ㄅㄧㄠ
+儦 0 ㄅㄧㄠ
+臕 0 ㄅㄧㄠ
+颩 0 ㄅㄧㄠ
+髟 0 ㄅㄧㄠ
+謤 0 ㄅㄧㄠ
+墂 0 ㄅㄧㄠ
+贆 0 ㄅㄧㄠ
+蔈 0 ㄅㄧㄠ
+爂 0 ㄅㄧㄠ
+藨 0 ㄅㄧㄠ
+僄 0 ㄅㄧㄠ
+虨 0 ㄅㄧㄠ
+颷 0 ㄅㄧㄠ
+飈 0 ㄅㄧㄠ
+飊 0 ㄅㄧㄠ
+飇 0 ㄅㄧㄠ
+䮽 0 ㄅㄧㄠ
+飍 0 ㄅㄧㄠ
+脿 0 ㄅㄧㄠ
+幖 0 ㄅㄧㄠ
+徱 0 ㄅㄧㄠ
+磦 0 ㄅㄧㄠ
+𢖐 0 ㄅㄧㄠ
+表 0 ㄅㄧㄠˇ
+錶 0 ㄅㄧㄠˇ
+婊 0 ㄅㄧㄠˇ
+裱 0 ㄅㄧㄠˇ
+俵 0 ㄅㄧㄠˇ
+褾 0 ㄅㄧㄠˇ
+檦 0 ㄅㄧㄠˇ
+諘 0 ㄅㄧㄠˇ
+鰾 0 ㄅㄧㄠˋ
+摽 0 ㄅㄧㄠˋ
+賓 0 ㄅㄧㄣ
+濱 0 ㄅㄧㄣ
+彬 0 ㄅㄧㄣ
+檳 0 ㄅㄧㄣ
+儐 0 ㄅㄧㄣ
+斌 0 ㄅㄧㄣ
+繽 0 ㄅㄧㄣ
+豳 0 ㄅㄧㄣ
+瀕 0 ㄅㄧㄣ
+邠 0 ㄅㄧㄣ
+璸 0 ㄅㄧㄣ
+蠙 0 ㄅㄧㄣ
+鑌 0 ㄅㄧㄣ
+豩 0 ㄅㄧㄣ
+汃 0 ㄅㄧㄣ
+椕 0 ㄅㄧㄣ
+霦 0 ㄅㄧㄣ
+驞 0 ㄅㄧㄣ
+份 0 ㄅㄧㄣ
+稟 0 ㄅㄧㄣ
+嬪 0 ㄅㄧㄣ
+殯 0 ㄅㄧㄣ
+鬢 0 ㄅㄧㄣ
+攽 0 ㄅㄧㄣ
+玢 0 ㄅㄧㄣ
+砏 0 ㄅㄧㄣ
+郴 0 ㄅㄧㄣ
+虨 0 ㄅㄧㄣ
+娦 0 ㄅㄧㄣ
+浜 0 ㄅㄧㄣ
+梹 0 ㄅㄧㄣ
+滨 0 ㄅㄧㄣ
+㻞 0 ㄅㄧㄣ
+禀 0 ㄅㄧㄣ
+殡 0 ㄅㄧㄣ
+賔 0 ㄅㄧㄣ
+髩 0 ㄅㄧㄣ
+濵 0 ㄅㄧㄣ
+鬂 0 ㄅㄧㄣ
+穦 0 ㄅㄧㄣ
+顮 0 ㄅㄧㄣ
+馪 0 ㄅㄧㄣ
+𠚼 0 ㄅㄧㄣ
+稟 0 ㄅㄧㄣˇ
+禀 0 ㄅㄧㄣˇ
+癛 0 ㄅㄧㄣˇ
+殯 0 ㄅㄧㄣˋ
+鬢 0 ㄅㄧㄣˋ
+儐 0 ㄅㄧㄣˋ
+擯 0 ㄅㄧㄣˋ
+臏 0 ㄅㄧㄣˋ
+髕 0 ㄅㄧㄣˋ
+鶣 0 ㄅㄧㄣˋ
+賓 0 ㄅㄧㄣˋ
+殡 0 ㄅㄧㄣˋ
+賔 0 ㄅㄧㄣˋ
+髩 0 ㄅㄧㄣˋ
+鬂 0 ㄅㄧㄣˋ
+ㄉ 0 ㄉ
+都 0 ㄉㄡ
+兜 0 ㄉㄡ
+郖 0 ㄉㄡ
+唗 0 ㄉㄡ
+吺 0 ㄉㄡ
+侸 0 ㄉㄡ
+剅 0 ㄉㄡ
+兠 0 ㄉㄡ
+篼 0 ㄉㄡ
+㨮 0 ㄉㄡ
+蔸 0 ㄉㄡ
+斗 0 ㄉㄡˇ
+抖 0 ㄉㄡˇ
+陡 0 ㄉㄡˇ
+蚪 0 ㄉㄡˇ
+枓 0 ㄉㄡˇ
+唗 0 ㄉㄡˇ
+敨 0 ㄉㄡˇ
+阧 0 ㄉㄡˇ
+鬥 0 ㄉㄡˋ
+豆 0 ㄉㄡˋ
+逗 0 ㄉㄡˋ
+痘 0 ㄉㄡˋ
+竇 0 ㄉㄡˋ
+荳 0 ㄉㄡˋ
+脰 0 ㄉㄡˋ
+餖 0 ㄉㄡˋ
+鋀 0 ㄉㄡˋ
+梪 0 ㄉㄡˋ
+浢 0 ㄉㄡˋ
+讀 0 ㄉㄡˋ
+郖 0 ㄉㄡˋ
+裋 0 ㄉㄡˋ
+鬩 0 ㄉㄡˋ
+狵 0 ㄉㄡˋ
+毭 0 ㄉㄡˋ
+鬦 0 ㄉㄡˋ
+䦧 0 ㄉㄡˋ
+闘 0 ㄉㄡˋ
+鬪 0 ㄉㄡˋ
+鬬 0 ㄉㄡˋ
+𢭃 0 ㄉㄡˋ
+𥥷 0 ㄉㄡˋ
+斣 0 ㄉㄡˋ
+鬭 0 ㄉㄡˋ
+登 0 ㄉㄥ
+燈 0 ㄉㄥ
+鐙 0 ㄉㄥ
+簦 0 ㄉㄥ
+豋 0 ㄉㄥ
+璒 0 ㄉㄥ
+嬁 0 ㄉㄥ
+墱 0 ㄉㄥ
+撜 0 ㄉㄥ
+灯 0 ㄉㄥ
+噔 0 ㄉㄥ
+竳 0 ㄉㄥ
+等 0 ㄉㄥˇ
+戥 0 ㄉㄥˇ
+鄧 0 ㄉㄥˋ
+瞪 0 ㄉㄥˋ
+蹬 0 ㄉㄥˋ
+凳 0 ㄉㄥˋ
+嶝 0 ㄉㄥˋ
+磴 0 ㄉㄥˋ
+墱 0 ㄉㄥˋ
+邆 0 ㄉㄥˋ
+霯 0 ㄉㄥˋ
+澄 0 ㄉㄥˋ
+鐙 0 ㄉㄥˋ
+邓 0 ㄉㄥˋ
+僜 0 ㄉㄥˋ
+憕 0 ㄉㄥˋ
+隥 0 ㄉㄥˋ
+櫈 0 ㄉㄥˋ
+覴 0 ㄉㄥˋ
+當 0 ㄉㄤ
+噹 0 ㄉㄤ
+噹 0 ㄉㄤ˙
+鐺 0 ㄉㄤ
+襠 0 ㄉㄤ
+璫 0 ㄉㄤ
+簹 0 ㄉㄤ
+儅 0 ㄉㄤ
+澢 0 ㄉㄤ
+艡 0 ㄉㄤ
+嵣 0 ㄉㄤ
+当 0 ㄉㄤ
+檔 0 ㄉㄤˇ
+黨 0 ㄉㄤˇ
+擋 0 ㄉㄤˇ
+讜 0 ㄉㄤˇ
+攩 0 ㄉㄤˇ
+欓 0 ㄉㄤˇ
+党 0 ㄉㄤˇ
+當 0 ㄉㄤˇ
+襠 0 ㄉㄤˇ
+儻 0 ㄉㄤˇ
+当 0 ㄉㄤˇ
+挡 0 ㄉㄤˇ
+譡 0 ㄉㄤˇ
+灙 0 ㄉㄤˇ
+當 0 ㄉㄤˋ
+蕩 0 ㄉㄤˋ
+擋 0 ㄉㄤˋ
+盪 0 ㄉㄤˋ
+碭 0 ㄉㄤˋ
+宕 0 ㄉㄤˋ
+菪 0 ㄉㄤˋ
+逿 0 ㄉㄤˋ
+璗 0 ㄉㄤˋ
+愓 0 ㄉㄤˋ
+瓽 0 ㄉㄤˋ
+礑 0 ㄉㄤˋ
+簜 0 ㄉㄤˋ
+闣 0 ㄉㄤˋ
+檔 0 ㄉㄤˋ
+蟷 0 ㄉㄤˋ
+婸 0 ㄉㄤˋ
+崵 0 ㄉㄤˋ
+嵣 0 ㄉㄤˋ
+氹 0 ㄉㄤˋ
+圵 0 ㄉㄤˋ
+当 0 ㄉㄤˋ
+挡 0 ㄉㄤˋ
+偒 0 ㄉㄤˋ
+雼 0 ㄉㄤˋ
+瞊 0 ㄉㄤˋ
+趤 0 ㄉㄤˋ
+蘯 0 ㄉㄤˋ
+單 0 ㄉㄢ
+擔 0 ㄉㄢ
+丹 0 ㄉㄢ
+耽 0 ㄉㄢ
+簞 0 ㄉㄢ
+鄲 0 ㄉㄢ
+眈 0 ㄉㄢ
+聃 0 ㄉㄢ
+酖 0 ㄉㄢ
+砃 0 ㄉㄢ
+甔 0 ㄉㄢ
+襌 0 ㄉㄢ
+匰 0 ㄉㄢ
+聸 0 ㄉㄢ
+勯 0 ㄉㄢ
+嚪 0 ㄉㄢ
+湛 0 ㄉㄢ
+憚 0 ㄉㄢ
+旃 0 ㄉㄢ
+栴 0 ㄉㄢ
+儋 0 ㄉㄢ
+鴅 0 ㄉㄢ
+殫 0 ㄉㄢ
+癉 0 ㄉㄢ
+鄿 0 ㄉㄢ
+鷤 0 ㄉㄢ
+妉 0 ㄉㄢ
+单 0 ㄉㄢ
+担 0 ㄉㄢ
+䒟 0 ㄉㄢ
+単 0 ㄉㄢ
+耼 0 ㄉㄢ
+惮 0 ㄉㄢ
+躭 0 ㄉㄢ
+媅 0 ㄉㄢ
+頕 0 ㄉㄢ
+旜 0 ㄉㄢ
+㴷 0 ㄉㄢ
+㐤 0 ㄉㄢ
+膽 0 ㄉㄢˇ
+疸 0 ㄉㄢˇ
+撢 0 ㄉㄢˇ
+亶 0 ㄉㄢˇ
+紞 0 ㄉㄢˇ
+刐 0 ㄉㄢˇ
+撣 0 ㄉㄢˇ
+玬 0 ㄉㄢˇ
+衴 0 ㄉㄢˇ
+黵 0 ㄉㄢˇ
+丼 0 ㄉㄢˇ
+澸 0 ㄉㄢˇ
+黕 0 ㄉㄢˇ
+瓭 0 ㄉㄢˇ
+胆 0 ㄉㄢˇ
+馾 0 ㄉㄢˇ
+䪴 0 ㄉㄢˇ
+㔊 0 ㄉㄢˇ
+但 0 ㄉㄢˋ
+旦 0 ㄉㄢˋ
+淡 0 ㄉㄢˋ
+蛋 0 ㄉㄢˋ
+誕 0 ㄉㄢˋ
+擔 0 ㄉㄢˋ
+彈 0 ㄉㄢˋ
+憚 0 ㄉㄢˋ
+氮 0 ㄉㄢˋ
+啖 0 ㄉㄢˋ
+澹 0 ㄉㄢˋ
+憺 0 ㄉㄢˋ
+儋 0 ㄉㄢˋ
+啗 0 ㄉㄢˋ
+噉 0 ㄉㄢˋ
+石 0 ㄉㄢˋ
+癉 0 ㄉㄢˋ
+窞 0 ㄉㄢˋ
+僤 0 ㄉㄢˋ
+贉 0 ㄉㄢˋ
+幨 0 ㄉㄢˋ
+霮 0 ㄉㄢˋ
+髧 0 ㄉㄢˋ
+萏 0 ㄉㄢˋ
+鉭 0 ㄉㄢˋ
+暺 0 ㄉㄢˋ
+柦 0 ㄉㄢˋ
+帎 0 ㄉㄢˋ
+潬 0 ㄉㄢˋ
+沊 0 ㄉㄢˋ
+狚 0 ㄉㄢˋ
+觛 0 ㄉㄢˋ
+啿 0 ㄉㄢˋ
+舕 0 ㄉㄢˋ
+蜑 0 ㄉㄢˋ
+嘾 0 ㄉㄢˋ
+鴠 0 ㄉㄢˋ
+癚 0 ㄉㄢˋ
+殫 0 ㄉㄢˋ
+灗 0 ㄉㄢˋ
+泹 0 ㄉㄢˋ
+怛 0 ㄉㄢˋ
+靼 0 ㄉㄢˋ
+妲 0 ㄉㄢˋ
+欻 0 ㄉㄢˋ
+嘽 0 ㄉㄢˋ
+餤 0 ㄉㄢˋ
+膻 0 ㄉㄢˋ
+嚪 0 ㄉㄢˋ
+繵 0 ㄉㄢˋ
+担 0 ㄉㄢˋ
+弹 0 ㄉㄢˋ
+惮 0 ㄉㄢˋ
+弾 0 ㄉㄢˋ
+腅 0 ㄉㄢˋ
+㗖 0 ㄉㄢˋ
+馾 0 ㄉㄢˋ
+醈 0 ㄉㄢˋ
+歘 0 ㄉㄢˋ
+駳 0 ㄉㄢˋ
+䨵 0 ㄉㄢˋ
+臽 0 ㄉㄢˋ
+䪴 0 ㄉㄢˋ
+搭 0 ㄉㄚ
+褡 0 ㄉㄚ
+答 0 ㄉㄚ
+撘 0 ㄉㄚ
+瘩 0 ㄉㄚ
+躂 0 ㄉㄚ
+咑 0 ㄉㄚ
+耷 0 ㄉㄚ
+荅 0 ㄉㄚ
+畣 0 ㄉㄚ
+溚 0 ㄉㄚ
+噠 0 ㄉㄚ
+打 0 ㄉㄚˇ
+大 0 ㄉㄚˋ
+亣 0 ㄉㄚˋ
+答 0 ㄉㄚˊ
+達 0 ㄉㄚˊ
+韃 0 ㄉㄚˊ
+靼 0 ㄉㄚˊ
+瘩 0 ㄉㄚˊ
+怛 0 ㄉㄚˊ
+繨 0 ㄉㄚˊ
+噠 0 ㄉㄚˊ
+妲 0 ㄉㄚˊ
+笪 0 ㄉㄚˊ
+荅 0 ㄉㄚˊ
+薘 0 ㄉㄚˊ
+褟 0 ㄉㄚˊ
+鐽 0 ㄉㄚˊ
+匒 0 ㄉㄚˊ
+呾 0 ㄉㄚˊ
+畣 0 ㄉㄚˊ
+炟 0 ㄉㄚˊ
+鎝 0 ㄉㄚˊ
+打 0 ㄉㄚˊ
+撻 0 ㄉㄚˊ
+躂 0 ㄉㄚˊ
+疊 0 ㄉㄚˊ
+榙 0 ㄉㄚˊ
+劄 0 ㄉㄚˊ
+譗 0 ㄉㄚˊ
+达 0 ㄉㄚˊ
+迏 0 ㄉㄚˊ
+剳 0 ㄉㄚˊ
+詚 0 ㄉㄚˊ
+叠 0 ㄉㄚˊ
+曡 0 ㄉㄚˊ
+蟽 0 ㄉㄚˊ
+疉 0 ㄉㄚˊ
+𦖿 0 ㄉㄚˊ
+疸 0 ㄉㄚ˙
+瘩 0 ㄉㄚ˙
+咑 0 ㄉㄚ˙
+打 0 ㄉㄚ˙
+繨 0 ㄉㄚ˙
+呆 0 ㄉㄞ
+待 0 ㄉㄞ
+獃 0 ㄉㄞ
+鮘 0 ㄉㄞ
+懛 0 ㄉㄞ
+歹 0 ㄉㄞˇ
+逮 0 ㄉㄞˇ
+得 0 ㄉㄞˇ
+炱 0 ㄉㄞˇ
+傣 0 ㄉㄞˇ
+歺 0 ㄉㄞˇ
+炲 0 ㄉㄞˇ
+代 0 ㄉㄞˋ
+帶 0 ㄉㄞˋ
+待 0 ㄉㄞˋ
+袋 0 ㄉㄞˋ
+戴 0 ㄉㄞˋ
+怠 0 ㄉㄞˋ
+殆 0 ㄉㄞˋ
+黛 0 ㄉㄞˋ
+貸 0 ㄉㄞˋ
+迨 0 ㄉㄞˋ
+大 0 ㄉㄞˋ
+玳 0 ㄉㄞˋ
+岱 0 ㄉㄞˋ
+逮 0 ㄉㄞˋ
+襶 0 ㄉㄞˋ
+埭 0 ㄉㄞˋ
+靆 0 ㄉㄞˋ
+紿 0 ㄉㄞˋ
+廗 0 ㄉㄞˋ
+汏 0 ㄉㄞˋ
+忕 0 ㄉㄞˋ
+瀻 0 ㄉㄞˋ
+軩 0 ㄉㄞˋ
+跢 0 ㄉㄞˋ
+艜 0 ㄉㄞˋ
+蹛 0 ㄉㄞˋ
+柋 0 ㄉㄞˋ
+酨 0 ㄉㄞˋ
+軑 0 ㄉㄞˋ
+釱 0 ㄉㄞˋ
+駘 0 ㄉㄞˋ
+亣 0 ㄉㄞˋ
+㐲 0 ㄉㄞˋ
+侢 0 ㄉㄞˋ
+帒 0 ㄉㄞˋ
+隶 0 ㄉㄞˋ
+帯 0 ㄉㄞˋ
+㻖 0 ㄉㄞˋ
+瑇 0 ㄉㄞˋ
+鉪 0 ㄉㄞˋ
+㯂 0 ㄉㄞˋ
+緿 0 ㄉㄞˋ
+鴏 0 ㄉㄞˋ
+簤 0 ㄉㄞˋ
+霴 0 ㄉㄞˋ
+黱 0 ㄉㄞˋ
+軚 0 ㄉㄞˋ
+都 0 ㄉㄨ
+督 0 ㄉㄨ
+嘟 0 ㄉㄨ
+闍 0 ㄉㄨ
+醏 0 ㄉㄨ
+裻 0 ㄉㄨ
+錖 0 ㄉㄨ
+東 0 ㄉㄨㄥ
+冬 0 ㄉㄨㄥ
+咚 0 ㄉㄨㄥ
+鼕 0 ㄉㄨㄥ
+苳 0 ㄉㄨㄥ
+蝀 0 ㄉㄨㄥ
+埬 0 ㄉㄨㄥ
+崠 0 ㄉㄨㄥ
+氡 0 ㄉㄨㄥ
+炵 0 ㄉㄨㄥ
+涷 0 ㄉㄨㄥ
+菄 0 ㄉㄨㄥ
+鶇 0 ㄉㄨㄥ
+㚵 0 ㄉㄨㄥ
+昸 0 ㄉㄨㄥ
+倲 0 ㄉㄨㄥ
+娻 0 ㄉㄨㄥ
+崬 0 ㄉㄨㄥ
+笗 0 ㄉㄨㄥ
+氭 0 ㄉㄨㄥ
+鯟 0 ㄉㄨㄥ
+𤷆 0 ㄉㄨㄥ
+𩂓 0 ㄉㄨㄥ
+懂 0 ㄉㄨㄥˇ
+董 0 ㄉㄨㄥˇ
+嬞 0 ㄉㄨㄥˇ
+墥 0 ㄉㄨㄥˇ
+蕫 0 ㄉㄨㄥˇ
+諌 0 ㄉㄨㄥˇ
+箽 0 ㄉㄨㄥˇ
+𣿅 0 ㄉㄨㄥˇ
+𢤦 0 ㄉㄨㄥˇ
+動 0 ㄉㄨㄥˋ
+洞 0 ㄉㄨㄥˋ
+凍 0 ㄉㄨㄥˋ
+棟 0 ㄉㄨㄥˋ
+恫 0 ㄉㄨㄥˋ
+胴 0 ㄉㄨㄥˋ
+挏 0 ㄉㄨㄥˋ
+戙 0 ㄉㄨㄥˋ
+駧 0 ㄉㄨㄥˋ
+霘 0 ㄉㄨㄥˋ
+峒 0 ㄉㄨㄥˋ
+湩 0 ㄉㄨㄥˋ
+慟 0 ㄉㄨㄥˋ
+姛 0 ㄉㄨㄥˋ
+迵 0 ㄉㄨㄥˋ
+詷 0 ㄉㄨㄥˋ
+蝀 0 ㄉㄨㄥˋ
+动 0 ㄉㄨㄥˋ
+峝 0 ㄉㄨㄥˋ
+働 0 ㄉㄨㄥˋ
+勭 0 ㄉㄨㄥˋ
+憅 0 ㄉㄨㄥˋ
+端 0 ㄉㄨㄢ
+耑 0 ㄉㄨㄢ
+偳 0 ㄉㄨㄢ
+剬 0 ㄉㄨㄢ
+媏 0 ㄉㄨㄢ
+鍴 0 ㄉㄨㄢ
+褍 0 ㄉㄨㄢ
+短 0 ㄉㄨㄢˇ
+段 0 ㄉㄨㄢˋ
+斷 0 ㄉㄨㄢˋ
+緞 0 ㄉㄨㄢˋ
+鍛 0 ㄉㄨㄢˋ
+毈 0 ㄉㄨㄢˋ
+腶 0 ㄉㄨㄢˋ
+籪 0 ㄉㄨㄢˋ
+椴 0 ㄉㄨㄢˋ
+葮 0 ㄉㄨㄢˋ
+碫 0 ㄉㄨㄢˋ
+躖 0 ㄉㄨㄢˋ
+断 0 ㄉㄨㄢˋ
+煅 0 ㄉㄨㄢˋ
+瑖 0 ㄉㄨㄢˋ
+塅 0 ㄉㄨㄢˋ
+賭 0 ㄉㄨˇ
+堵 0 ㄉㄨˇ
+睹 0 ㄉㄨˇ
+篤 0 ㄉㄨˇ
+肚 0 ㄉㄨˇ
+錖 0 ㄉㄨˇ
+裻 0 ㄉㄨˇ
+帾 0 ㄉㄨˇ
+蠹 0 ㄉㄨˇ
+媎 0 ㄉㄨˇ
+覿 0 ㄉㄨˇ
+琽 0 ㄉㄨˇ
+覩 0 ㄉㄨˇ
+螙 0 ㄉㄨˇ
+蠧 0 ㄉㄨˇ
+度 0 ㄉㄨˋ
+渡 0 ㄉㄨˋ
+肚 0 ㄉㄨˋ
+妒 0 ㄉㄨˋ
+鍍 0 ㄉㄨˋ
+杜 0 ㄉㄨˋ
+蠹 0 ㄉㄨˋ
+秺 0 ㄉㄨˋ
+喥 0 ㄉㄨˋ
+踱 0 ㄉㄨˋ
+斁 0 ㄉㄨˋ
+妬 0 ㄉㄨˋ
+靯 0 ㄉㄨˋ
+螙 0 ㄉㄨˋ
+歝 0 ㄉㄨˋ
+蠧 0 ㄉㄨˋ
+簬 0 ㄉㄨˋ
+荰 0 ㄉㄨˋ
+𪐞 0 ㄉㄨˋ
+殬 0 ㄉㄨˋ
+讀 0 ㄉㄨˊ
+獨 0 ㄉㄨˊ
+毒 0 ㄉㄨˊ
+牘 0 ㄉㄨˊ
+纛 0 ㄉㄨˊ
+瀆 0 ㄉㄨˊ
+犢 0 ㄉㄨˊ
+髑 0 ㄉㄨˊ
+讟 0 ㄉㄨˊ
+黷 0 ㄉㄨˊ
+櫝 0 ㄉㄨˊ
+儥 0 ㄉㄨˊ
+碡 0 ㄉㄨˊ
+殰 0 ㄉㄨˊ
+蝳 0 ㄉㄨˊ
+贕 0 ㄉㄨˊ
+韇 0 ㄉㄨˊ
+韥 0 ㄉㄨˊ
+皾 0 ㄉㄨˊ
+督 0 ㄉㄨˊ
+頓 0 ㄉㄨˊ
+篤 0 ㄉㄨˊ
+蠹 0 ㄉㄨˊ
+豰 0 ㄉㄨˊ
+襩 0 ㄉㄨˊ
+韣 0 ㄉㄨˊ
+独 0 ㄉㄨˊ
+螙 0 ㄉㄨˊ
+凟 0 ㄉㄨˊ
+匵 0 ㄉㄨˊ
+嬻 0 ㄉㄨˊ
+瓄 0 ㄉㄨˊ
+蠧 0 ㄉㄨˊ
+鑟 0 ㄉㄨˊ
+𧰵 0 ㄉㄨˊ
+𡂝 0 ㄉㄨˊ
+騳 0 ㄉㄨˊ
+𡱰 0 ㄉㄨˊ
+多 0 ㄉㄨㄛ
+朵 0 ㄉㄨㄛ
+哆 0 ㄉㄨㄛ
+柁 0 ㄉㄨㄛ
+茤 0 ㄉㄨㄛ
+跢 0 ㄉㄨㄛ
+崜 0 ㄉㄨㄛ
+夛 0 ㄉㄨㄛ
+掇 0 ㄉㄨㄛ
+躲 0 ㄉㄨㄛˇ
+朵 0 ㄉㄨㄛˇ
+埵 0 ㄉㄨㄛˇ
+垛 0 ㄉㄨㄛˇ
+嚲 0 ㄉㄨㄛˇ
+鬌 0 ㄉㄨㄛˇ
+痑 0 ㄉㄨㄛˇ
+趓 0 ㄉㄨㄛˇ
+綞 0 ㄉㄨㄛˇ
+朶 0 ㄉㄨㄛˇ
+哚 0 ㄉㄨㄛˇ
+垜 0 ㄉㄨㄛˇ
+挅 0 ㄉㄨㄛˇ
+躱 0 ㄉㄨㄛˇ
+軃 0 ㄉㄨㄛˇ
+袳 0 ㄉㄨㄛˇ
+䤪 0 ㄉㄨㄛˇ
+挆 0 ㄉㄨㄛˇ
+𧊶 0 ㄉㄨㄛˇ
+惰 0 ㄉㄨㄛˋ
+墮 0 ㄉㄨㄛˋ
+舵 0 ㄉㄨㄛˋ
+跺 0 ㄉㄨㄛˋ
+剁 0 ㄉㄨㄛˋ
+咄 0 ㄉㄨㄛˋ
+踱 0 ㄉㄨㄛˋ
+馱 0 ㄉㄨㄛˋ
+垛 0 ㄉㄨㄛˋ
+墯 0 ㄉㄨㄛˋ
+嶞 0 ㄉㄨㄛˋ
+柮 0 ㄉㄨㄛˋ
+陏 0 ㄉㄨㄛˋ
+陊 0 ㄉㄨㄛˋ
+度 0 ㄉㄨㄛˋ
+袉 0 ㄉㄨㄛˋ
+貀 0 ㄉㄨㄛˋ
+鵽 0 ㄉㄨㄛˋ
+灺 0 ㄉㄨㄛˋ
+柁 0 ㄉㄨㄛˋ
+痑 0 ㄉㄨㄛˋ
+刴 0 ㄉㄨㄛˋ
+垜 0 ㄉㄨㄛˋ
+炨 0 ㄉㄨㄛˋ
+炧 0 ㄉㄨㄛˋ
+笜 0 ㄉㄨㄛˋ
+飿 0 ㄉㄨㄛˋ
+㻧 0 ㄉㄨㄛˋ
+䭾 0 ㄉㄨㄛˋ
+駄 0 ㄉㄨㄛˋ
+憜 0 ㄉㄨㄛˋ
+嚉 0 ㄉㄨㄛˋ
+㨊 0 ㄉㄨㄛˋ
+奪 0 ㄉㄨㄛˊ
+鐸 0 ㄉㄨㄛˊ
+多 0 ㄉㄨㄛˊ
+掇 0 ㄉㄨㄛˊ
+裰 0 ㄉㄨㄛˊ
+剟 0 ㄉㄨㄛˊ
+敪 0 ㄉㄨㄛˊ
+椯 0 ㄉㄨㄛˊ
+剫 0 ㄉㄨㄛˊ
+敓 0 ㄉㄨㄛˊ
+莌 0 ㄉㄨㄛˊ
+毲 0 ㄉㄨㄛˊ
+腏 0 ㄉㄨㄛˊ
+鮵 0 ㄉㄨㄛˊ
+襗 0 ㄉㄨㄛˊ
+喥 0 ㄉㄨㄛˊ
+檡 0 ㄉㄨㄛˊ
+鵽 0 ㄉㄨㄛˊ
+敚 0 ㄉㄨㄛˊ
+敠 0 ㄉㄨㄛˊ
+痥 0 ㄉㄨㄛˊ
+凙 0 ㄉㄨㄛˊ
+夛 0 ㄉㄨㄛˊ
+掇 0 ㄉㄨㄛ˙
+堆 0 ㄉㄨㄟ
+頧 0 ㄉㄨㄟ
+痽 0 ㄉㄨㄟ
+追 0 ㄉㄨㄟ
+敦 0 ㄉㄨㄟ
+鐓 0 ㄉㄨㄟ
+垖 0 ㄉㄨㄟ
+塠 0 ㄉㄨㄟ
+磓 0 ㄉㄨㄟ
+鐜 0 ㄉㄨㄟ
+嵟 0 ㄉㄨㄟ
+䔻 0 ㄉㄨㄟ
+䭔 0 ㄉㄨㄟ
+謉 0 ㄉㄨㄟˇ
+㨃 0 ㄉㄨㄟˇ
+䇏 0 ㄉㄨㄟˇ
+𦞙 0 ㄉㄨㄟˇ
+對 0 ㄉㄨㄟˋ
+隊 0 ㄉㄨㄟˋ
+兌 0 ㄉㄨㄟˋ
+碓 0 ㄉㄨㄟˋ
+懟 0 ㄉㄨㄟˋ
+譈 0 ㄉㄨㄟˋ
+濧 0 ㄉㄨㄟˋ
+薱 0 ㄉㄨㄟˋ
+轛 0 ㄉㄨㄟˋ
+濻 0 ㄉㄨㄟˋ
+瀩 0 ㄉㄨㄟˋ
+憝 0 ㄉㄨㄟˋ
+敦 0 ㄉㄨㄟˋ
+祋 0 ㄉㄨㄟˋ
+莌 0 ㄉㄨㄟˋ
+錞 0 ㄉㄨㄟˋ
+鐓 0 ㄉㄨㄟˋ
+对 0 ㄉㄨㄟˋ
+兊 0 ㄉㄨㄟˋ
+兑 0 ㄉㄨㄟˋ
+対 0 ㄉㄨㄟˋ
+陮 0 ㄉㄨㄟˋ
+綐 0 ㄉㄨㄟˋ
+憞 0 ㄉㄨㄟˋ
+鐜 0 ㄉㄨㄟˋ
+譵 0 ㄉㄨㄟˋ
+敦 0 ㄉㄨㄣ
+蹲 0 ㄉㄨㄣ
+墩 0 ㄉㄨㄣ
+惇 0 ㄉㄨㄣ
+礅 0 ㄉㄨㄣ
+驐 0 ㄉㄨㄣ
+蜳 0 ㄉㄨㄣ
+撉 0 ㄉㄨㄣ
+鐓 0 ㄉㄨㄣ
+噸 0 ㄉㄨㄣ
+憝 0 ㄉㄨㄣ
+橔 0 ㄉㄨㄣ
+弴 0 ㄉㄨㄣ
+墪 0 ㄉㄨㄣ
+憞 0 ㄉㄨㄣ
+撴 0 ㄉㄨㄣ
+䃦 0 ㄉㄨㄣ
+鐜 0 ㄉㄨㄣ
+犜 0 ㄉㄨㄣ
+盹 0 ㄉㄨㄣˇ
+躉 0 ㄉㄨㄣˇ
+𣎴 0 ㄉㄨㄣˇ
+頓 0 ㄉㄨㄣˋ
+噸 0 ㄉㄨㄣˋ
+盾 0 ㄉㄨㄣˋ
+鈍 0 ㄉㄨㄣˋ
+遁 0 ㄉㄨㄣˋ
+盹 0 ㄉㄨㄣˋ
+燉 0 ㄉㄨㄣˋ
+沌 0 ㄉㄨㄣˋ
+囤 0 ㄉㄨㄣˋ
+遯 0 ㄉㄨㄣˋ
+炖 0 ㄉㄨㄣˋ
+坉 0 ㄉㄨㄣˋ
+扽 0 ㄉㄨㄣˋ
+伅 0 ㄉㄨㄣˋ
+庉 0 ㄉㄨㄣˋ
+潡 0 ㄉㄨㄣˋ
+崸 0 ㄉㄨㄣˋ
+鶨 0 ㄉㄨㄣˋ
+腞 0 ㄉㄨㄣˋ
+敦 0 ㄉㄨㄣˋ
+飩 0 ㄉㄨㄣˋ
+扥 0 ㄉㄨㄣˋ
+楯 0 ㄉㄨㄣˋ
+瞃 0 ㄉㄨㄣˋ
+輴 0 ㄉㄨㄣˋ
+鐓 0 ㄉㄨㄣˋ
+踲 0 ㄉㄨㄣˋ
+鐜 0 ㄉㄨㄣˋ
+逇 0 ㄉㄨㄣˋ
+得 0 ㄉㄜˊ
+德 0 ㄉㄜˊ
+淂 0 ㄉㄜˊ
+恴 0 ㄉㄜˊ
+惪 0 ㄉㄜˊ
+悳 0 ㄉㄜˊ
+徳 0 ㄉㄜˊ
+𢔨 0 ㄉㄜˊ
+𢔶 0 ㄉㄜˊ
+的 0 ㄉㄜ˙
+得 0 ㄉㄜ˙
+地 0 ㄉㄜ˙
+底 0 ㄉㄜ˙
+襶 0 ㄉㄜ˙
+坔 0 ㄉㄜ˙
+埊 0 ㄉㄜ˙
+嶳 0 ㄉㄜ˙
+𢔨 0 ㄉㄜ˙
+𢔶 0 ㄉㄜ˙
+刀 0 ㄉㄠ
+叨 0 ㄉㄠ
+忉 0 ㄉㄠ
+舠 0 ㄉㄠ
+氘 0 ㄉㄠ
+幍 0 ㄉㄠ
+魛 0 ㄉㄠ
+灱 0 ㄉㄠ
+朷 0 ㄉㄠ
+灲 0 ㄉㄠ
+釖 0 ㄉㄠ
+刂 0 ㄉㄠ
+倒 0 ㄉㄠˇ
+島 0 ㄉㄠˇ
+導 0 ㄉㄠˇ
+禱 0 ㄉㄠˇ
+搗 0 ㄉㄠˇ
+擣 0 ㄉㄠˇ
+壔 0 ㄉㄠˇ
+禂 0 ㄉㄠˇ
+蹈 0 ㄉㄠˇ
+嶋 0 ㄉㄠˇ
+嶌 0 ㄉㄠˇ
+隝 0 ㄉㄠˇ
+嶹 0 ㄉㄠˇ
+隯 0 ㄉㄠˇ
+祷 0 ㄉㄠˇ
+到 0 ㄉㄠˋ
+道 0 ㄉㄠˋ
+倒 0 ㄉㄠˋ
+稻 0 ㄉㄠˋ
+盜 0 ㄉㄠˋ
+蹈 0 ㄉㄠˋ
+悼 0 ㄉㄠˋ
+導 0 ㄉㄠˋ
+纛 0 ㄉㄠˋ
+翿 0 ㄉㄠˋ
+檤 0 ㄉㄠˋ
+菿 0 ㄉㄠˋ
+瓙 0 ㄉㄠˋ
+燾 0 ㄉㄠˋ
+韜 0 ㄉㄠˋ
+箌 0 ㄉㄠˋ
+幬 0 ㄉㄠˋ
+盗 0 ㄉㄠˋ
+稲 0 ㄉㄠˋ
+衜 0 ㄉㄠˋ
+衟 0 ㄉㄠˋ
+轁 0 ㄉㄠˋ
+鞱 0 ㄉㄠˋ
+噵 0 ㄉㄠˋ
+軇 0 ㄉㄠˋ
+捯 0 ㄉㄠˊ
+得 0 ㄉㄟˇ
+𢔶 0 ㄉㄟˇ
+㩐 0 ㄉㄣˋ
+低 0 ㄉㄧ
+滴 0 ㄉㄧ
+氐 0 ㄉㄧ
+羝 0 ㄉㄧ
+鞮 0 ㄉㄧ
+彽 0 ㄉㄧ
+磾 0 ㄉㄧ
+鍉 0 ㄉㄧ
+袛 0 ㄉㄧ
+菂 0 ㄉㄧ
+墑 0 ㄉㄧ
+熵 0 ㄉㄧ
+堤 0 ㄉㄧ
+提 0 ㄉㄧ
+隄 0 ㄉㄧ
+嫡 0 ㄉㄧ
+埞 0 ㄉㄧ
+趆 0 ㄉㄧ
+仾 0 ㄉㄧ
+奃 0 ㄉㄧ
+𩑾 0 ㄉㄧ
+爹 0 ㄉㄧㄝ
+嗲 0 ㄉㄧㄝ
+𠅗 0 ㄉㄧㄝˋ
+跌 0 ㄉㄧㄝˊ
+蝶 0 ㄉㄧㄝˊ
+諜 0 ㄉㄧㄝˊ
+碟 0 ㄉㄧㄝˊ
+疊 0 ㄉㄧㄝˊ
+迭 0 ㄉㄧㄝˊ
+牒 0 ㄉㄧㄝˊ
+喋 0 ㄉㄧㄝˊ
+瓞 0 ㄉㄧㄝˊ
+耋 0 ㄉㄧㄝˊ
+絰 0 ㄉㄧㄝˊ
+咥 0 ㄉㄧㄝˊ
+垤 0 ㄉㄧㄝˊ
+堞 0 ㄉㄧㄝˊ
+蜨 0 ㄉㄧㄝˊ
+蹀 0 ㄉㄧㄝˊ
+鰈 0 ㄉㄧㄝˊ
+跕 0 ㄉㄧㄝˊ
+昳 0 ㄉㄧㄝˊ
+峌 0 ㄉㄧㄝˊ
+挕 0 ㄉㄧㄝˊ
+胅 0 ㄉㄧㄝˊ
+苵 0 ㄉㄧㄝˊ
+眣 0 ㄉㄧㄝˊ
+聑 0 ㄉㄧㄝˊ
+臷 0 ㄉㄧㄝˊ
+詄 0 ㄉㄧㄝˊ
+镻 0 ㄉㄧㄝˊ
+艓 0 ㄉㄧㄝˊ
+褋 0 ㄉㄧㄝˊ
+惵 0 ㄉㄧㄝˊ
+楪 0 ㄉㄧㄝˊ
+嶀 0 ㄉㄧㄝˊ
+凸 0 ㄉㄧㄝˊ
+趺 0 ㄉㄧㄝˊ
+褶 0 ㄉㄧㄝˊ
+柣 0 ㄉㄧㄝˊ
+媟 0 ㄉㄧㄝˊ
+揲 0 ㄉㄧㄝˊ
+渫 0 ㄉㄧㄝˊ
+墆 0 ㄉㄧㄝˊ
+嵽 0 ㄉㄧㄝˊ
+屧 0 ㄉㄧㄝˊ
+螲 0 ㄉㄧㄝˊ
+鞢 0 ㄉㄧㄝˊ
+呋 0 ㄉㄧㄝˊ
+恎 0 ㄉㄧㄝˊ
+耊 0 ㄉㄧㄝˊ
+眰 0 ㄉㄧㄝˊ
+䏲 0 ㄉㄧㄝˊ
+屟 0 ㄉㄧㄝˊ
+趃 0 ㄉㄧㄝˊ
+叠 0 ㄉㄧㄝˊ
+殜 0 ㄉㄧㄝˊ
+㻡 0 ㄉㄧㄝˊ
+曡 0 ㄉㄧㄝˊ
+疉 0 ㄉㄧㄝˊ
+戜 0 ㄉㄧㄝˊ
+𣶏 0 ㄉㄧㄝˊ
+褺 0 ㄉㄧㄝˊ
+爹 0 ㄉㄧㄝ˙
+丟 0 ㄉㄧㄡ
+銩 0 ㄉㄧㄡ
+丢 0 ㄉㄧㄡ
+厾 0 ㄉㄧㄡ
+丁 0 ㄉㄧㄥ
+釘 0 ㄉㄧㄥ
+叮 0 ㄉㄧㄥ
+疔 0 ㄉㄧㄥ
+酊 0 ㄉㄧㄥ
+盯 0 ㄉㄧㄥ
+仃 0 ㄉㄧㄥ
+玎 0 ㄉㄧㄥ
+帄 0 ㄉㄧㄥ
+靪 0 ㄉㄧㄥ
+虰 0 ㄉㄧㄥ
+汀 0 ㄉㄧㄥ
+町 0 ㄉㄧㄥ
+糽 0 ㄉㄧㄥ
+飣 0 ㄉㄧㄥ
+𠆤 0 ㄉㄧㄥ
+頂 0 ㄉㄧㄥˇ
+鼎 0 ㄉㄧㄥˇ
+酊 0 ㄉㄧㄥˇ
+嵿 0 ㄉㄧㄥˇ
+濎 0 ㄉㄧㄥˇ
+薡 0 ㄉㄧㄥˇ
+鼏 0 ㄉㄧㄥˇ
+奵 0 ㄉㄧㄥˇ
+檙 0 ㄉㄧㄥˇ
+鼑 0 ㄉㄧㄥˇ
+定 0 ㄉㄧㄥˋ
+訂 0 ㄉㄧㄥˋ
+釘 0 ㄉㄧㄥˋ
+錠 0 ㄉㄧㄥˋ
+碇 0 ㄉㄧㄥˋ
+飣 0 ㄉㄧㄥˋ
+娗 0 ㄉㄧㄥˋ
+椗 0 ㄉㄧㄥˋ
+掟 0 ㄉㄧㄥˋ
+碠 0 ㄉㄧㄥˋ
+顁 0 ㄉㄧㄥˋ
+萣 0 ㄉㄧㄥˋ
+啶 0 ㄉㄧㄥˋ
+綻 0 ㄉㄧㄥˋ
+靛 0 ㄉㄧㄥˋ
+鋌 0 ㄉㄧㄥˋ
+忊 0 ㄉㄧㄥˋ
+矴 0 ㄉㄧㄥˋ
+䋎 0 ㄉㄧㄥˋ
+磸 0 ㄉㄧㄥˋ
+顛 0 ㄉㄧㄢ
+巔 0 ㄉㄧㄢ
+癲 0 ㄉㄧㄢ
+滇 0 ㄉㄧㄢ
+拈 0 ㄉㄧㄢ
+掂 0 ㄉㄧㄢ
+傎 0 ㄉㄧㄢ
+瘨 0 ㄉㄧㄢ
+敁 0 ㄉㄧㄢ
+蹎 0 ㄉㄧㄢ
+槙 0 ㄉㄧㄢ
+齻 0 ㄉㄧㄢ
+厧 0 ㄉㄧㄢ
+闐 0 ㄉㄧㄢ
+嵮 0 ㄉㄧㄢ
+巓 0 ㄉㄧㄢ
+攧 0 ㄉㄧㄢ
+槇 0 ㄉㄧㄢ
+顚 0 ㄉㄧㄢ
+點 0 ㄉㄧㄢˇ
+典 0 ㄉㄧㄢˇ
+碘 0 ㄉㄧㄢˇ
+錪 0 ㄉㄧㄢˇ
+婰 0 ㄉㄧㄢˇ
+琠 0 ㄉㄧㄢˇ
+蕇 0 ㄉㄧㄢˇ
+腆 0 ㄉㄧㄢˇ
+痶 0 ㄉㄧㄢˇ
+奌 0 ㄉㄧㄢˇ
+点 0 ㄉㄧㄢˇ
+㙉 0 ㄉㄧㄢˇ
+敟 0 ㄉㄧㄢˇ
+電 0 ㄉㄧㄢˋ
+店 0 ㄉㄧㄢˋ
+殿 0 ㄉㄧㄢˋ
+甸 0 ㄉㄧㄢˋ
+奠 0 ㄉㄧㄢˋ
+墊 0 ㄉㄧㄢˋ
+澱 0 ㄉㄧㄢˋ
+惦 0 ㄉㄧㄢˋ
+靛 0 ㄉㄧㄢˋ
+佃 0 ㄉㄧㄢˋ
+淀 0 ㄉㄧㄢˋ
+玷 0 ㄉㄧㄢˋ
+鈿 0 ㄉㄧㄢˋ
+簟 0 ㄉㄧㄢˋ
+坫 0 ㄉㄧㄢˋ
+痁 0 ㄉㄧㄢˋ
+癜 0 ㄉㄧㄢˋ
+磹 0 ㄉㄧㄢˋ
+阽 0 ㄉㄧㄢˋ
+扂 0 ㄉㄧㄢˋ
+婝 0 ㄉㄧㄢˋ
+踮 0 ㄉㄧㄢˋ
+壂 0 ㄉㄧㄢˋ
+唸 0 ㄉㄧㄢˋ
+臀 0 ㄉㄧㄢˋ
+掂 0 ㄉㄧㄢˋ
+驔 0 ㄉㄧㄢˋ
+埝 0 ㄉㄧㄢˋ
+琔 0 ㄉㄧㄢˋ
+頕 0 ㄉㄧㄢˋ
+橂 0 ㄉㄧㄢˋ
+𤩱 0 ㄉㄧㄢˋ
+𠶧 0 ㄉㄧㄢˋ
+𢕯 0 ㄉㄧㄢˋ
+蜔 0 ㄉㄧㄢˋ
+底 0 ㄉㄧˇ
+抵 0 ㄉㄧˇ
+邸 0 ㄉㄧˇ
+詆 0 ㄉㄧˇ
+牴 0 ㄉㄧˇ
+砥 0 ㄉㄧˇ
+氐 0 ㄉㄧˇ
+坻 0 ㄉㄧˇ
+柢 0 ㄉㄧˇ
+弤 0 ㄉㄧˇ
+觝 0 ㄉㄧˇ
+呧 0 ㄉㄧˇ
+阺 0 ㄉㄧˇ
+聜 0 ㄉㄧˇ
+菧 0 ㄉㄧˇ
+軧 0 ㄉㄧˇ
+扺 0 ㄉㄧˇ
+厎 0 ㄉㄧˇ
+汦 0 ㄉㄧˇ
+秖 0 ㄉㄧˇ
+蚔 0 ㄉㄧˇ
+蚳 0 ㄉㄧˇ
+貾 0 ㄉㄧˇ
+坘 0 ㄉㄧˇ
+拞 0 ㄉㄧˇ
+茋 0 ㄉㄧˇ
+掋 0 ㄉㄧˇ
+地 0 ㄉㄧˋ
+第 0 ㄉㄧˋ
+弟 0 ㄉㄧˋ
+帝 0 ㄉㄧˋ
+遞 0 ㄉㄧˋ
+蒂 0 ㄉㄧˋ
+的 0 ㄉㄧˋ
+締 0 ㄉㄧˋ
+諦 0 ㄉㄧˋ
+娣 0 ㄉㄧˋ
+睇 0 ㄉㄧˋ
+棣 0 ㄉㄧˋ
+杕 0 ㄉㄧˋ
+玓 0 ㄉㄧˋ
+禘 0 ㄉㄧˋ
+蔕 0 ㄉㄧˋ
+螮 0 ㄉㄧˋ
+踶 0 ㄉㄧˋ
+楴 0 ㄉㄧˋ
+渧 0 ㄉㄧˋ
+碲 0 ㄉㄧˋ
+虳 0 ㄉㄧˋ
+釱 0 ㄉㄧˋ
+樀 0 ㄉㄧˋ
+旳 0 ㄉㄧˋ
+軑 0 ㄉㄧˋ
+梊 0 ㄉㄧˋ
+焍 0 ㄉㄧˋ
+馰 0 ㄉㄧˋ
+墆 0 ㄉㄧˋ
+嵽 0 ㄉㄧˋ
+珶 0 ㄉㄧˋ
+甋 0 ㄉㄧˋ
+悌 0 ㄉㄧˋ
+啻 0 ㄉㄧˋ
+逮 0 ㄉㄧˋ
+晜 0 ㄉㄧˋ
+搋 0 ㄉㄧˋ
+蝃 0 ㄉㄧˋ
+墬 0 ㄉㄧˋ
+遰 0 ㄉㄧˋ
+篪 0 ㄉㄧˋ
+坔 0 ㄉㄧˋ
+竾 0 ㄉㄧˋ
+苐 0 ㄉㄧˋ
+埊 0 ㄉㄧˋ
+偙 0 ㄉㄧˋ
+递 0 ㄉㄧˋ
+逓 0 ㄉㄧˋ
+媂 0 ㄉㄧˋ
+祶 0 ㄉㄧˋ
+筂 0 ㄉㄧˋ
+腣 0 ㄉㄧˋ
+摕 0 ㄉㄧˋ
+裭 0 ㄉㄧˋ
+骶 0 ㄉㄧˋ
+嶳 0 ㄉㄧˋ
+怟 0 ㄉㄧˋ
+啇 0 ㄉㄧˋ
+䟡 0 ㄉㄧˋ
+僀 0 ㄉㄧˋ
+䐭 0 ㄉㄧˋ
+𨮹 0 ㄉㄧˋ
+的 0 ㄉㄧˊ
+敵 0 ㄉㄧˊ
+迪 0 ㄉㄧˊ
+狄 0 ㄉㄧˊ
+笛 0 ㄉㄧˊ
+滌 0 ㄉㄧˊ
+翟 0 ㄉㄧˊ
+荻 0 ㄉㄧˊ
+嫡 0 ㄉㄧˊ
+嘀 0 ㄉㄧˊ
+鏑 0 ㄉㄧˊ
+蹢 0 ㄉㄧˊ
+糴 0 ㄉㄧˊ
+覿 0 ㄉㄧˊ
+篴 0 ㄉㄧˊ
+蔋 0 ㄉㄧˊ
+靮 0 ㄉㄧˊ
+梑 0 ㄉㄧˊ
+潪 0 ㄉㄧˊ
+苖 0 ㄉㄧˊ
+嚁 0 ㄉㄧˊ
+鸐 0 ㄉㄧˊ
+藋 0 ㄉㄧˊ
+藡 0 ㄉㄧˊ
+岫 0 ㄉㄧˊ
+抵 0 ㄉㄧˊ
+條 0 ㄉㄧˊ
+逖 0 ㄉㄧˊ
+適 0 ㄉㄧˊ
+濯 0 ㄉㄧˊ
+櫂 0 ㄉㄧˊ
+謫 0 ㄉㄧˊ
+扺 0 ㄉㄧˊ
+魡 0 ㄉㄧˊ
+樀 0 ㄉㄧˊ
+甋 0 ㄉㄧˊ
+鍉 0 ㄉㄧˊ
+蠗 0 ㄉㄧˊ
+条 0 ㄉㄧˊ
+廸 0 ㄉㄧˊ
+拞 0 ㄉㄧˊ
+籴 0 ㄉㄧˊ
+唙 0 ㄉㄧˊ
+逷 0 ㄉㄧˊ
+頔 0 ㄉㄧˊ
+樤 0 ㄉㄧˊ
+豴 0 ㄉㄧˊ
+讁 0 ㄉㄧˊ
+䑲 0 ㄉㄧˊ
+蔐 0 ㄉㄧˊ
+䨤 0 ㄉㄧˊ
+𢕚 0 ㄉㄧˊ
+弟 0 ㄉㄧ˙
+雕 0 ㄉㄧㄠ
+凋 0 ㄉㄧㄠ
+刁 0 ㄉㄧㄠ
+貂 0 ㄉㄧㄠ
+鵰 0 ㄉㄧㄠ
+碉 0 ㄉㄧㄠ
+叼 0 ㄉㄧㄠ
+彫 0 ㄉㄧㄠ
+瞗 0 ㄉㄧㄠ
+琱 0 ㄉㄧㄠ
+鯛 0 ㄉㄧㄠ
+扚 0 ㄉㄧㄠ
+蛁 0 ㄉㄧㄠ
+鳭 0 ㄉㄧㄠ
+虭 0 ㄉㄧㄠ
+殦 0 ㄉㄧㄠ
+蜩 0 ㄉㄧㄠ
+錭 0 ㄉㄧㄠ
+刟 0 ㄉㄧㄠ
+奝 0 ㄉㄧㄠ
+弴 0 ㄉㄧㄠ
+鮉 0 ㄉㄧㄠ
+鼦 0 ㄉㄧㄠ
+屌 0 ㄉㄧㄠˇ
+鳥 0 ㄉㄧㄠˇ
+扚 0 ㄉㄧㄠˇ
+調 0 ㄉㄧㄠˋ
+掉 0 ㄉㄧㄠˋ
+釣 0 ㄉㄧㄠˋ
+吊 0 ㄉㄧㄠˋ
+弔 0 ㄉㄧㄠˋ
+窵 0 ㄉㄧㄠˋ
+蓧 0 ㄉㄧㄠˋ
+誂 0 ㄉㄧㄠˋ
+伄 0 ㄉㄧㄠˋ
+魡 0 ㄉㄧㄠˋ
+悼 0 ㄉㄧㄠˋ
+帣 0 ㄉㄧㄠˋ
+淖 0 ㄉㄧㄠˋ
+銚 0 ㄉㄧㄠˋ
+藋 0 ㄉㄧㄠˋ
+訋 0 ㄉㄧㄠˋ
+莜 0 ㄉㄧㄠˋ
+銱 0 ㄉㄧㄠˋ
+鋽 0 ㄉㄧㄠˋ
+鑃 0 ㄉㄧㄠˋ
+㪕 0 ㄉㄧㄠˋ
+竨 0 ㄉㄧㄠˋ
+瘹 0 ㄉㄧㄠˋ
+鈟 0 ㄉㄧㄠˋ
+ˇ 0 ˇ
+爾 0 ㄦˇ
+耳 0 ㄦˇ
+洱 0 ㄦˇ
+餌 0 ㄦˇ
+邇 0 ㄦˇ
+珥 0 ㄦˇ
+駬 0 ㄦˇ
+薾 0 ㄦˇ
+鉺 0 ㄦˇ
+峏 0 ㄦˇ
+尒 0 ㄦˇ
+栮 0 ㄦˇ
+茸 0 ㄦˇ
+尔 0 ㄦˇ
+迩 0 ㄦˇ
+儞 0 ㄦˇ
+尓 0 ㄦˇ
+ˋ 0 ˋ
+二 0 ㄦˋ
+貳 0 ㄦˋ
+佴 0 ㄦˋ
+刵 0 ㄦˋ
+咡 0 ㄦˋ
+樲 0 ㄦˋ
+聏 0 ㄦˋ
+毦 0 ㄦˋ
+眲 0 ㄦˋ
+衈 0 ㄦˋ
+鉺 0 ㄦˋ
+弍 0 ㄦˋ
+㛅 0 ㄦˋ
+貮 0 ㄦˋ
+誀 0 ㄦˋ
+之 0 ㄓ
+知 0 ㄓ
+隻 0 ㄓ
+織 0 ㄓ
+支 0 ㄓ
+枝 0 ㄓ
+汁 0 ㄓ
+只 0 ㄓ
+吱 0 ㄓ
+芝 0 ㄓ
+脂 0 ㄓ
+肢 0 ㄓ
+蜘 0 ㄓ
+祇 0 ㄓ
+梔 0 ㄓ
+祗 0 ㄓ
+氏 0 ㄓ
+枳 0 ㄓ
+ㄓ 0 ㄓ
+胝 0 ㄓ
+鴟 0 ㄓ
+卮 0 ㄓ
+搘 0 ㄓ
+秖 0 ㄓ
+跖 0 ㄓ
+鳷 0 ㄓ
+汥 0 ㄓ
+秪 0 ㄓ
+榰 0 ㄓ
+胑 0 ㄓ
+衼 0 ㄓ
+椥 0 ㄓ
+氐 0 ㄓ
+芰 0 ㄓ
+衹 0 ㄓ
+庋 0 ㄓ
+疧 0 ㄓ
+栺 0 ㄓ
+鬾 0 ㄓ
+謢 0 ㄓ
+攵 0 ㄓ
+巵 0 ㄓ
+栀 0 ㄓ
+秓 0 ㄓ
+祬 0 ㄓ
+綕 0 ㄓ
+馶 0 ㄓ
+㯄 0 ㄓ
+鼅 0 ㄓ
+倁 0 ㄓ
+疷 0 ㄓ
+鴲 0 ㄓ
+周 0 ㄓㄡ
+週 0 ㄓㄡ
+州 0 ㄓㄡ
+洲 0 ㄓㄡ
+舟 0 ㄓㄡ
+粥 0 ㄓㄡ
+賙 0 ㄓㄡ
+啁 0 ㄓㄡ
+盩 0 ㄓㄡ
+譸 0 ㄓㄡ
+輈 0 ㄓㄡ
+喌 0 ㄓㄡ
+騆 0 ㄓㄡ
+鵃 0 ㄓㄡ
+洀 0 ㄓㄡ
+淍 0 ㄓㄡ
+銂 0 ㄓㄡ
+珘 0 ㄓㄡ
+徟 0 ㄓㄡ
+輖 0 ㄓㄡ
+侜 0 ㄓㄡ
+婤 0 ㄓㄡ
+倜 0 ㄓㄡ
+睭 0 ㄓㄡ
+詶 0 ㄓㄡ
+㖄 0 ㄓㄡ
+烐 0 ㄓㄡ
+郮 0 ㄓㄡ
+䓟 0 ㄓㄡ
+霌 0 ㄓㄡ
+矪 0 ㄓㄡ
+嚋 0 ㄓㄡ
+帚 0 ㄓㄡˇ
+肘 0 ㄓㄡˇ
+睭 0 ㄓㄡˇ
+鯞 0 ㄓㄡˇ
+疛 0 ㄓㄡˇ
+晭 0 ㄓㄡˇ
+箒 0 ㄓㄡˇ
+晝 0 ㄓㄡˋ
+皺 0 ㄓㄡˋ
+宙 0 ㄓㄡˋ
+紂 0 ㄓㄡˋ
+縐 0 ㄓㄡˋ
+冑 0 ㄓㄡˋ
+咒 0 ㄓㄡˋ
+繇 0 ㄓㄡˋ
+甃 0 ㄓㄡˋ
+籀 0 ㄓㄡˋ
+咮 0 ㄓㄡˋ
+酎 0 ㄓㄡˋ
+僽 0 ㄓㄡˋ
+怞 0 ㄓㄡˋ
+胄 0 ㄓㄡˋ
+噣 0 ㄓㄡˋ
+駎 0 ㄓㄡˋ
+軸 0 ㄓㄡˋ
+伷 0 ㄓㄡˋ
+呪 0 ㄓㄡˋ
+昼 0 ㄓㄡˋ
+詋 0 ㄓㄡˋ
+葤 0 ㄓㄡˋ
+籕 0 ㄓㄡˋ
+㑳 0 ㄓㄡˋ
+籒 0 ㄓㄡˋ
+軸 0 ㄓㄡˊ
+妯 0 ㄓㄡˊ
+岫 0 ㄓㄡˊ
+舳 0 ㄓㄡˊ
+爭 0 ㄓㄥ
+征 0 ㄓㄥ
+蒸 0 ㄓㄥ
+睜 0 ㄓㄥ
+徵 0 ㄓㄥ
+掙 0 ㄓㄥ
+箏 0 ㄓㄥ
+正 0 ㄓㄥ
+怔 0 ㄓㄥ
+猙 0 ㄓㄥ
+錚 0 ㄓㄥ
+崢 0 ㄓㄥ
+諍 0 ㄓㄥ
+癥 0 ㄓㄥ
+鉦 0 ㄓㄥ
+烝 0 ㄓㄥ
+篜 0 ㄓㄥ
+姃 0 ㄓㄥ
+炡 0 ㄓㄥ
+埩 0 ㄓㄥ
+聇 0 ㄓㄥ
+丁 0 ㄓㄥ
+眐 0 ㄓㄥ
+鯖 0 ㄓㄥ
+玎 0 ㄓㄥ
+糽 0 ㄓㄥ
+凈 0 ㄓㄥ
+脀 0 ㄓㄥ
+棦 0 ㄓㄥ
+琤 0 ㄓㄥ
+澂 0 ㄓㄥ
+㣔 0 ㄓㄥ
+争 0 ㄓㄥ
+佂 0 ㄓㄥ
+峥 0 ㄓㄥ
+䒱 0 ㄓㄥ
+䋊 0 ㄓㄥ
+徴 0 ㄓㄥ
+鴊 0 ㄓㄥ
+瀓 0 ㄓㄥ
+鬇 0 ㄓㄥ
+鏳 0 ㄓㄥ
+𡈼 0 ㄓㄥ
+挣 0 ㄓㄥ
+睁 0 ㄓㄥ
+㬹 0 ㄓㄥ
+𨜓 0 ㄓㄥ
+徰 0 ㄓㄥ
+整 0 ㄓㄥˇ
+拯 0 ㄓㄥˇ
+氶 0 ㄓㄥˇ
+撜 0 ㄓㄥˇ
+糽 0 ㄓㄥˇ
+掟 0 ㄓㄥˇ
+晸 0 ㄓㄥˇ
+抍 0 ㄓㄥˇ
+愸 0 ㄓㄥˇ
+鄭 0 ㄓㄥˋ
+正 0 ㄓㄥˋ
+證 0 ㄓㄥˋ
+政 0 ㄓㄥˋ
+証 0 ㄓㄥˋ
+症 0 ㄓㄥˋ
+掙 0 ㄓㄥˋ
+幀 0 ㄓㄥˋ
+諍 0 ㄓㄥˋ
+姃 0 ㄓㄥˋ
+炡 0 ㄓㄥˋ
+眐 0 ㄓㄥˋ
+罡 0 ㄓㄥˋ
+聇 0 ㄓㄥˋ
+晸 0 ㄓㄥˋ
+徎 0 ㄓㄥˋ
+憕 0 ㄓㄥˋ
+鋥 0 ㄓㄥˋ
+鴊 0 ㄓㄥˋ
+挣 0 ㄓㄥˋ
+䂻 0 ㄓㄥˋ
+䈣 0 ㄓㄥˋ
+㡧 0 ㄓㄥˋ
+𩏠 0 ㄓㄥˋ
+張 0 ㄓㄤ
+章 0 ㄓㄤ
+彰 0 ㄓㄤ
+漳 0 ㄓㄤ
+樟 0 ㄓㄤ
+璋 0 ㄓㄤ
+獐 0 ㄓㄤ
+嫜 0 ㄓㄤ
+暲 0 ㄓㄤ
+鄣 0 ㄓㄤ
+蟑 0 ㄓㄤ
+鱆 0 ㄓㄤ
+慞 0 ㄓㄤ
+傽 0 ㄓㄤ
+墇 0 ㄓㄤ
+騿 0 ㄓㄤ
+遧 0 ㄓㄤ
+粻 0 ㄓㄤ
+蔁 0 ㄓㄤ
+麞 0 ㄓㄤ
+𢕎 0 ㄓㄤ
+𢕔 0 ㄓㄤ
+餦 0 ㄓㄤ
+長 0 ㄓㄤˇ
+掌 0 ㄓㄤˇ
+漲 0 ㄓㄤˇ
+仉 0 ㄓㄤˇ
+鞝 0 ㄓㄤˇ
+仧 0 ㄓㄤˇ
+涱 0 ㄓㄤˇ
+兏 0 ㄓㄤˇ
+镸 0 ㄓㄤˇ
+丈 0 ㄓㄤˋ
+仗 0 ㄓㄤˋ
+帳 0 ㄓㄤˋ
+障 0 ㄓㄤˋ
+賬 0 ㄓㄤˋ
+脹 0 ㄓㄤˋ
+杖 0 ㄓㄤˋ
+漲 0 ㄓㄤˋ
+長 0 ㄓㄤˋ
+幛 0 ㄓㄤˋ
+瘴 0 ㄓㄤˋ
+嶂 0 ㄓㄤˋ
+扙 0 ㄓㄤˋ
+瞕 0 ㄓㄤˋ
+粀 0 ㄓㄤˋ
+張 0 ㄓㄤˋ
+悵 0 ㄓㄤˋ
+仧 0 ㄓㄤˋ
+涱 0 ㄓㄤˋ
+痮 0 ㄓㄤˋ
+瘬 0 ㄓㄤˋ
+兏 0 ㄓㄤˋ
+镸 0 ㄓㄤˋ
+𢕔 0 ㄓㄤˋ
+詹 0 ㄓㄢ
+沾 0 ㄓㄢ
+瞻 0 ㄓㄢ
+氈 0 ㄓㄢ
+霑 0 ㄓㄢ
+旃 0 ㄓㄢ
+譫 0 ㄓㄢ
+鱣 0 ㄓㄢ
+覘 0 ㄓㄢ
+邅 0 ㄓㄢ
+栴 0 ㄓㄢ
+鸇 0 ㄓㄢ
+驙 0 ㄓㄢ
+占 0 ㄓㄢ
+呫 0 ㄓㄢ
+饘 0 ㄓㄢ
+鉆 0 ㄓㄢ
+詀 0 ㄓㄢ
+薝 0 ㄓㄢ
+譠 0 ㄓㄢ
+佔 0 ㄓㄢ
+玷 0 ㄓㄢ
+贍 0 ㄓㄢ
+怗 0 ㄓㄢ
+枮 0 ㄓㄢ
+粘 0 ㄓㄢ
+蛅 0 ㄓㄢ
+惉 0 ㄓㄢ
+颭 0 ㄓㄢ
+幨 0 ㄓㄢ
+餰 0 ㄓㄢ
+襜 0 ㄓㄢ
+魙 0 ㄓㄢ
+毡 0 ㄓㄢ
+趈 0 ㄓㄢ
+閚 0 ㄓㄢ
+噡 0 ㄓㄢ
+嶦 0 ㄓㄢ
+氊 0 ㄓㄢ
+旜 0 ㄓㄢ
+讝 0 ㄓㄢ
+厃 0 ㄓㄢ
+展 0 ㄓㄢˇ
+斬 0 ㄓㄢˇ
+盞 0 ㄓㄢˇ
+輾 0 ㄓㄢˇ
+搌 0 ㄓㄢˇ
+嶄 0 ㄓㄢˇ
+琖 0 ㄓㄢˇ
+魙 0 ㄓㄢˇ
+醆 0 ㄓㄢˇ
+颭 0 ㄓㄢˇ
+樿 0 ㄓㄢˇ
+皽 0 ㄓㄢˇ
+蹍 0 ㄓㄢˇ
+嫸 0 ㄓㄢˇ
+榐 0 ㄓㄢˇ
+橏 0 ㄓㄢˇ
+獑 0 ㄓㄢˇ
+槧 0 ㄓㄢˇ
+㠭 0 ㄓㄢˇ
+㜊 0 ㄓㄢˇ
+㔊 0 ㄓㄢˇ
+𨃨 0 ㄓㄢˇ
+𧬆 0 ㄓㄢˇ
+佔 0 ㄓㄢˋ
+戰 0 ㄓㄢˋ
+站 0 ㄓㄢˋ
+暫 0 ㄓㄢˋ
+占 0 ㄓㄢˋ
+棧 0 ㄓㄢˋ
+顫 0 ㄓㄢˋ
+湛 0 ㄓㄢˋ
+綻 0 ㄓㄢˋ
+蹔 0 ㄓㄢˋ
+蘸 0 ㄓㄢˋ
+虥 0 ㄓㄢˋ
+轏 0 ㄓㄢˋ
+輚 0 ㄓㄢˋ
+偡 0 ㄓㄢˋ
+襢 0 ㄓㄢˋ
+枮 0 ㄓㄢˋ
+迠 0 ㄓㄢˋ
+蛅 0 ㄓㄢˋ
+鉆 0 ㄓㄢˋ
+辴 0 ㄓㄢˋ
+譧 0 ㄓㄢˋ
+驏 0 ㄓㄢˋ
+战 0 ㄓㄢˋ
+䋎 0 ㄓㄢˋ
+菚 0 ㄓㄢˋ
+椾 0 ㄓㄢˋ
+碊 0 ㄓㄢˋ
+嶘 0 ㄓㄢˋ
+覱 0 ㄓㄢˋ
+戦 0 ㄓㄢˋ
+𩥇 0 ㄓㄢˋ
+虦 0 ㄓㄢˋ
+只 0 ㄓˇ
+指 0 ㄓˇ
+紙 0 ㄓˇ
+止 0 ㄓˇ
+旨 0 ㄓˇ
+址 0 ㄓˇ
+徵 0 ㄓˇ
+祇 0 ㄓˇ
+趾 0 ㄓˇ
+祉 0 ㄓˇ
+咫 0 ㄓˇ
+枳 0 ㄓˇ
+酯 0 ㄓˇ
+恉 0 ㄓˇ
+沚 0 ㄓˇ
+阯 0 ㄓˇ
+芷 0 ㄓˇ
+黹 0 ㄓˇ
+軹 0 ㄓˇ
+疻 0 ㄓˇ
+晊 0 ㄓˇ
+厎 0 ㄓˇ
+坁 0 ㄓˇ
+藢 0 ㄓˇ
+栺 0 ㄓˇ
+淽 0 ㄓˇ
+滍 0 ㄓˇ
+抵 0 ㄓˇ
+砥 0 ㄓˇ
+詣 0 ㄓˇ
+忯 0 ㄓˇ
+扺 0 ㄓˇ
+汦 0 ㄓˇ
+秖 0 ㄓˇ
+蚚 0 ㄓˇ
+軝 0 ㄓˇ
+鮨 0 ㄓˇ
+夂 0 ㄓˇ
+帋 0 ㄓˇ
+抧 0 ㄓˇ
+拞 0 ㄓˇ
+杫 0 ㄓˇ
+砋 0 ㄓˇ
+䇛 0 ㄓˇ
+祬 0 ㄓˇ
+茝 0 ㄓˇ
+訨 0 ㄓˇ
+筫 0 ㄓˇ
+徴 0 ㄓˇ
+襧 0 ㄓˇ
+劧 0 ㄓˇ
+至 0 ㄓˋ
+制 0 ㄓˋ
+治 0 ㄓˋ
+志 0 ㄓˋ
+製 0 ㄓˋ
+致 0 ㄓˋ
+置 0 ㄓˋ
+智 0 ㄓˋ
+秩 0 ㄓˋ
+誌 0 ㄓˋ
+稚 0 ㄓˋ
+質 0 ㄓˋ
+峙 0 ㄓˋ
+緻 0 ㄓˋ
+幟 0 ㄓˋ
+滯 0 ㄓˋ
+摯 0 ㄓˋ
+窒 0 ㄓˋ
+炙 0 ㄓˋ
+痔 0 ㄓˋ
+雉 0 ㄓˋ
+識 0 ㄓˋ
+懥 0 ㄓˋ
+痣 0 ㄓˋ
+輊 0 ㄓˋ
+騭 0 ㄓˋ
+帙 0 ㄓˋ
+陟 0 ㄓˋ
+知 0 ㄓˋ
+寘 0 ㄓˋ
+忮 0 ㄓˋ
+桎 0 ㄓˋ
+躓 0 ㄓˋ
+蛭 0 ㄓˋ
+贄 0 ㄓˋ
+鷙 0 ㄓˋ
+厔 0 ㄓˋ
+鑕 0 ㄓˋ
+豸 0 ㄓˋ
+庤 0 ㄓˋ
+彘 0 ㄓˋ
+猘 0 ㄓˋ
+畤 0 ㄓˋ
+疐 0 ㄓˋ
+紩 0 ㄓˋ
+觶 0 ㄓˋ
+郅 0 ㄓˋ
+銍 0 ㄓˋ
+偫 0 ㄓˋ
+跱 0 ㄓˋ
+遰 0 ㄓˋ
+鋕 0 ㄓˋ
+櫍 0 ㄓˋ
+袟 0 ㄓˋ
+騺 0 ㄓˋ
+淛 0 ㄓˋ
+狾 0 ㄓˋ
+胵 0 ㄓˋ
+膣 0 ㄓˋ
+挃 0 ㄓˋ
+洷 0 ㄓˋ
+覟 0 ㄓˋ
+庢 0 ㄓˋ
+鴙 0 ㄓˋ
+迣 0 ㄓˋ
+翐 0 ㄓˋ
+臸 0 ㄓˋ
+駤 0 ㄓˋ
+祑 0 ㄓˋ
+觢 0 ㄓˋ
+鴩 0 ㄓˋ
+灸 0 ㄓˋ
+值 0 ㄓˋ
+掣 0 ㄓˋ
+絰 0 ㄓˋ
+耋 0 ㄓˋ
+熾 0 ㄓˋ
+遲 0 ㄓˋ
+伿 0 ㄓˋ
+咥 0 ㄓˋ
+垤 0 ㄓˋ
+晊 0 ㄓˋ
+罝 0 ㄓˋ
+荎 0 ㄓˋ
+秷 0 ㄓˋ
+窐 0 ㄓˋ
+廌 0 ㄓˋ
+滍 0 ㄓˋ
+瘈 0 ㄓˋ
+嬂 0 ㄓˋ
+潪 0 ㄓˋ
+薙 0 ㄓˋ
+懫 0 ㄓˋ
+垁 0 ㄓˋ
+斦 0 ㄓˋ
+洔 0 ㄓˋ
+値 0 ㄓˋ
+娡 0 ㄓˋ
+徏 0 ㄓˋ
+耊 0 ㄓˋ
+秲 0 ㄓˋ
+袠 0 ㄓˋ
+貭 0 ㄓˋ
+赿 0 ㄓˋ
+崻 0 ㄓˋ
+搱 0 ㄓˋ
+筫 0 ㄓˋ
+腟 0 ㄓˋ
+遅 0 ㄓˋ
+遟 0 ㄓˋ
+熫 0 ㄓˋ
+㻰 0 ㄓˋ
+稺 0 ㄓˋ
+儨 0 ㄓˋ
+穉 0 ㄓˋ
+隲 0 ㄓˋ
+豑 0 ㄓˋ
+芖 0 ㄓˋ
+徝 0 ㄓˋ
+㨁 0 ㄓˋ
+觗 0 ㄓˋ
+㨖 0 ㄓˋ
+䎺 0 ㄓˋ
+旘 0 ㄓˋ
+璏 0 ㄓˋ
+䭁 0 ㄓˋ
+劕 0 ㄓˋ
+𨑨 0 ㄓˋ
+𢙺 0 ㄓˋ
+𡍶 0 ㄓˋ
+𢕞 0 ㄓˋ
+憄 0 ㄓˋ
+𦤹 0 ㄓˋ
+驇 0 ㄓˋ
+直 0 ㄓˊ
+職 0 ㄓˊ
+質 0 ㄓˊ
+值 0 ㄓˊ
+植 0 ㄓˊ
+執 0 ㄓˊ
+殖 0 ㄓˊ
+擲 0 ㄓˊ
+姪 0 ㄓˊ
+侄 0 ㄓˊ
+蹠 0 ㄓˊ
+蟄 0 ㄓˊ
+躑 0 ㄓˊ
+埴 0 ㄓˊ
+稙 0 ㄓˊ
+摭 0 ㄓˊ
+縶 0 ㄓˊ
+柣 0 ㄓˊ
+犆 0 ㄓˊ
+秷 0 ㄓˊ
+擿 0 ㄓˊ
+馽 0 ㄓˊ
+慹 0 ㄓˊ
+樴 0 ㄓˊ
+膱 0 ㄓˊ
+懫 0 ㄓˊ
+蟙 0 ㄓˊ
+褁 0 ㄓˊ
+瓡 0 ㄓˊ
+嬂 0 ㄓˊ
+蘵 0 ㄓˊ
+拓 0 ㄓˊ
+蛭 0 ㄓˊ
+戢 0 ㄓˊ
+摯 0 ㄓˊ
+躓 0 ㄓˊ
+挃 0 ㄓˊ
+烢 0 ㄓˊ
+跖 0 ㄓˊ
+戠 0 ㄓˊ
+蓻 0 ㄓˊ
+謺 0 ㄓˊ
+贄 0 ㄓˊ
+蹢 0 ㄓˊ
+櫍 0 ㄓˊ
+礩 0 ㄓˊ
+騺 0 ㄓˊ
+鷙 0 ㄓˊ
+鑕 0 ㄓˊ
+执 0 ㄓˊ
+坧 0 ㄓˊ
+妷 0 ㄓˊ
+値 0 ㄓˊ
+聀 0 ㄓˊ
+釞 0 ㄓˊ
+貭 0 ㄓˊ
+禃 0 ㄓˊ
+綕 0 ㄓˊ
+墌 0 ㄓˊ
+漐 0 ㄓˊ
+𡸜 0 ㄓˊ
+㨁 0 ㄓˊ
+瓆 0 ㄓˊ
+軄 0 ㄓˊ
+豴 0 ㄓˊ
+渣 0 ㄓㄚ
+扎 0 ㄓㄚ
+喳 0 ㄓㄚ
+楂 0 ㄓㄚ
+查 0 ㄓㄚ
+齇 0 ㄓㄚ
+柤 0 ㄓㄚ
+皻 0 ㄓㄚ
+抯 0 ㄓㄚ
+挓 0 ㄓㄚ
+樝 0 ㄓㄚ
+謯 0 ㄓㄚ
+眨 0 ㄓㄚ
+奓 0 ㄓㄚ
+觰 0 ㄓㄚ
+譇 0 ㄓㄚ
+査 0 ㄓㄚ
+揸 0 ㄓㄚ
+偧 0 ㄓㄚ
+摣 0 ㄓㄚ
+齄 0 ㄓㄚ
+眨 0 ㄓㄚˇ
+渣 0 ㄓㄚˇ
+鮓 0 ㄓㄚˇ
+厏 0 ㄓㄚˇ
+苲 0 ㄓㄚˇ
+扎 0 ㄓㄚˇ
+砟 0 ㄓㄚˇ
+詐 0 ㄓㄚˇ
+扠 0 ㄓㄚˇ
+搩 0 ㄓㄚˇ
+䕢 0 ㄓㄚˇ
+㴙 0 ㄓㄚˇ
+䃎 0 ㄓㄚˇ
+踷 0 ㄓㄚˇ
+榨 0 ㄓㄚˋ
+柵 0 ㄓㄚˋ
+炸 0 ㄓㄚˋ
+詐 0 ㄓㄚˋ
+乍 0 ㄓㄚˋ
+搾 0 ㄓㄚˋ
+蚱 0 ㄓㄚˋ
+咋 0 ㄓㄚˋ
+蜡 0 ㄓㄚˋ
+吒 0 ㄓㄚˋ
+溠 0 ㄓㄚˋ
+砟 0 ㄓㄚˋ
+醡 0 ㄓㄚˋ
+鮓 0 ㄓㄚˋ
+痄 0 ㄓㄚˋ
+簎 0 ㄓㄚˋ
+笮 0 ㄓㄚˋ
+閘 0 ㄓㄚˋ
+酢 0 ㄓㄚˋ
+灹 0 ㄓㄚˋ
+咤 0 ㄓㄚˋ
+栅 0 ㄓㄚˋ
+䄍 0 ㄓㄚˋ
+齚 0 ㄓㄚˋ
+宱 0 ㄓㄚˋ
+䖳 0 ㄓㄚˋ
+𢕮 0 ㄓㄚˋ
+𧨊 0 ㄓㄚˋ
+扎 0 ㄓㄚˊ
+札 0 ㄓㄚˊ
+紮 0 ㄓㄚˊ
+閘 0 ㄓㄚˊ
+炸 0 ㄓㄚˊ
+霅 0 ㄓㄚˊ
+鍘 0 ㄓㄚˊ
+哳 0 ㄓㄚˊ
+劄 0 ㄓㄚˊ
+蚻 0 ㄓㄚˊ
+譗 0 ㄓㄚˊ
+蠿 0 ㄓㄚˊ
+癿 0 ㄓㄚˊ
+煠 0 ㄓㄚˊ
+紥 0 ㄓㄚˊ
+剳 0 ㄓㄚˊ
+牐 0 ㄓㄚˊ
+耫 0 ㄓㄚˊ
+𨰉 0 ㄓㄚˊ
+軋 0 ㄓㄚˊ
+蚱 0 ㄓㄚ˙
+摘 0 ㄓㄞ
+齋 0 ㄓㄞ
+齊 0 ㄓㄞ
+捚 0 ㄓㄞ
+霽 0 ㄓㄞ
+齐 0 ㄓㄞ
+亝 0 ㄓㄞ
+斉 0 ㄓㄞ
+夈 0 ㄓㄞ
+斋 0 ㄓㄞ
+斎 0 ㄓㄞ
+膪 0 ㄓㄞ
+䔝 0 ㄓㄞ
+斊 0 ㄓㄞ
+榸 0 ㄓㄞ
+𩱳 0 ㄓㄞ
+窄 0 ㄓㄞˇ
+岝 0 ㄓㄞˇ
+鉙 0 ㄓㄞˇ
+䍉 0 ㄓㄞˇ
+債 0 ㄓㄞˋ
+寨 0 ㄓㄞˋ
+祭 0 ㄓㄞˋ
+責 0 ㄓㄞˋ
+瘵 0 ㄓㄞˋ
+砦 0 ㄓㄞˋ
+柴 0 ㄓㄞˋ
+宅 0 ㄓㄞˊ
+翟 0 ㄓㄞˊ
+擇 0 ㄓㄞˊ
+垞 0 ㄓㄞˊ
+挓 0 ㄓㄞˊ
+烢 0 ㄓㄞˊ
+択 0 ㄓㄞˊ
+珠 0 ㄓㄨ
+朱 0 ㄓㄨ
+諸 0 ㄓㄨ
+株 0 ㄓㄨ
+豬 0 ㄓㄨ
+蛛 0 ㄓㄨ
+茱 0 ㄓㄨ
+硃 0 ㄓㄨ
+誅 0 ㄓㄨ
+銖 0 ㄓㄨ
+侏 0 ㄓㄨ
+洙 0 ㄓㄨ
+瀦 0 ㄓㄨ
+邾 0 ㄓㄨ
+櫫 0 ㄓㄨ
+櫧 0 ㄓㄨ
+祩 0 ㄓㄨ
+藷 0 ㄓㄨ
+絑 0 ㄓㄨ
+袾 0 ㄓㄨ
+觰 0 ㄓㄨ
+鴸 0 ㄓㄨ
+蠩 0 ㄓㄨ
+蝫 0 ㄓㄨ
+鮢 0 ㄓㄨ
+跦 0 ㄓㄨ
+姝 0 ㄓㄨ
+㧣 0 ㄓㄨ
+猪 0 ㄓㄨ
+敱 0 ㄓㄨ
+潴 0 ㄓㄨ
+駯 0 ㄓㄨ
+鼄 0 ㄓㄨ
+劯 0 ㄓㄨ
+橥 0 ㄓㄨ
+蕏 0 ㄓㄨ
+鯺 0 ㄓㄨ
+中 0 ㄓㄨㄥ
+鐘 0 ㄓㄨㄥ
+終 0 ㄓㄨㄥ
+忠 0 ㄓㄨㄥ
+鍾 0 ㄓㄨㄥ
+衷 0 ㄓㄨㄥ
+忪 0 ㄓㄨㄥ
+盅 0 ㄓㄨㄥ
+螽 0 ㄓㄨㄥ
+伀 0 ㄓㄨㄥ
+妐 0 ㄓㄨㄥ
+蔠 0 ㄓㄨㄥ
+柊 0 ㄓㄨㄥ
+煄 0 ㄓㄨㄥ
+彸 0 ㄓㄨㄥ
+舯 0 ㄓㄨㄥ
+炂 0 ㄓㄨㄥ
+籦 0 ㄓㄨㄥ
+鼨 0 ㄓㄨㄥ
+汷 0 ㄓㄨㄥ
+刣 0 ㄓㄨㄥ
+㕬 0 ㄓㄨㄥ
+泈 0 ㄓㄨㄥ
+衳 0 ㄓㄨㄥ
+幒 0 ㄓㄨㄥ
+徸 0 ㄓㄨㄥ
+銿 0 ㄓㄨㄥ
+鴤 0 ㄓㄨㄥ
+𦬕 0 ㄓㄨㄥ
+蹱 0 ㄓㄨㄥ
+𩅞 0 ㄓㄨㄥ
+種 0 ㄓㄨㄥˇ
+腫 0 ㄓㄨㄥˇ
+塚 0 ㄓㄨㄥˇ
+踵 0 ㄓㄨㄥˇ
+冢 0 ㄓㄨㄥˇ
+种 0 ㄓㄨㄥˇ
+喠 0 ㄓㄨㄥˇ
+歱 0 ㄓㄨㄥˇ
+中 0 ㄓㄨㄥˋ
+種 0 ㄓㄨㄥˋ
+重 0 ㄓㄨㄥˋ
+仲 0 ㄓㄨㄥˋ
+眾 0 ㄓㄨㄥˋ
+尰 0 ㄓㄨㄥˋ
+湩 0 ㄓㄨㄥˋ
+狆 0 ㄓㄨㄥˋ
+衶 0 ㄓㄨㄥˋ
+偅 0 ㄓㄨㄥˋ
+堹 0 ㄓㄨㄥˋ
+緟 0 ㄓㄨㄥˋ
+粽 0 ㄓㄨㄥˋ
+祌 0 ㄓㄨㄥˋ
+种 0 ㄓㄨㄥˋ
+潀 0 ㄓㄨㄥˋ
+众 0 ㄓㄨㄥˋ
+蚛 0 ㄓㄨㄥˋ
+媑 0 ㄓㄨㄥˋ
+筗 0 ㄓㄨㄥˋ
+衆 0 ㄓㄨㄥˋ
+糉 0 ㄓㄨㄥˋ
+諥 0 ㄓㄨㄥˋ
+灇 0 ㄓㄨㄥˋ
+乑 0 ㄓㄨㄥˋ
+妕 0 ㄓㄨㄥˋ
+茽 0 ㄓㄨㄥˋ
+潨 0 ㄓㄨㄥˋ
+褈 0 ㄓㄨㄥˋ
+裝 0 ㄓㄨㄤ
+莊 0 ㄓㄨㄤ
+樁 0 ㄓㄨㄤ
+妝 0 ㄓㄨㄤ
+粧 0 ㄓㄨㄤ
+庄 0 ㄓㄨㄤ
+梉 0 ㄓㄨㄤ
+妀 0 ㄓㄨㄤ
+籹 0 ㄓㄨㄤ
+妆 0 ㄓㄨㄤ
+庒 0 ㄓㄨㄤ
+疞 0 ㄓㄨㄤ
+娤 0 ㄓㄨㄤ
+荘 0 ㄓㄨㄤ
+糚 0 ㄓㄨㄤ
+奘 0 ㄓㄨㄤˇ
+狀 0 ㄓㄨㄤˋ
+壯 0 ㄓㄨㄤˋ
+撞 0 ㄓㄨㄤˋ
+戇 0 ㄓㄨㄤˋ
+焋 0 ㄓㄨㄤˋ
+獞 0 ㄓㄨㄤˋ
+壮 0 ㄓㄨㄤˋ
+状 0 ㄓㄨㄤˋ
+壵 0 ㄓㄨㄤˋ
+漴 0 ㄓㄨㄤˋ
+戅 0 ㄓㄨㄤˋ
+專 0 ㄓㄨㄢ
+磚 0 ㄓㄨㄢ
+耑 0 ㄓㄨㄢ
+顓 0 ㄓㄨㄢ
+塼 0 ㄓㄨㄢ
+鄟 0 ㄓㄨㄢ
+鱄 0 ㄓㄨㄢ
+剸 0 ㄓㄨㄢ
+嫥 0 ㄓㄨㄢ
+瑼 0 ㄓㄨㄢ
+篿 0 ㄓㄨㄢ
+鷒 0 ㄓㄨㄢ
+膞 0 ㄓㄨㄢ
+蟤 0 ㄓㄨㄢ
+蓴 0 ㄓㄨㄢ
+蒓 0 ㄓㄨㄢ
+甎 0 ㄓㄨㄢ
+叀 0 ㄓㄨㄢ
+轉 0 ㄓㄨㄢˇ
+囀 0 ㄓㄨㄢˇ
+竱 0 ㄓㄨㄢˇ
+孨 0 ㄓㄨㄢˇ
+傳 0 ㄓㄨㄢˋ
+賺 0 ㄓㄨㄢˋ
+篆 0 ㄓㄨㄢˋ
+撰 0 ㄓㄨㄢˋ
+譔 0 ㄓㄨㄢˋ
+饌 0 ㄓㄨㄢˋ
+轉 0 ㄓㄨㄢˋ
+僎 0 ㄓㄨㄢˋ
+瑑 0 ㄓㄨㄢˋ
+縳 0 ㄓㄨㄢˋ
+腞 0 ㄓㄨㄢˋ
+篹 0 ㄓㄨㄢˋ
+蟤 0 ㄓㄨㄢˋ
+鐉 0 ㄓㄨㄢˋ
+灷 0 ㄓㄨㄢˋ
+堟 0 ㄓㄨㄢˋ
+瑃 0 ㄓㄨㄢˋ
+蒃 0 ㄓㄨㄢˋ
+襈 0 ㄓㄨㄢˋ
+籑 0 ㄓㄨㄢˋ
+主 0 ㄓㄨˇ
+屬 0 ㄓㄨˇ
+煮 0 ㄓㄨˇ
+囑 0 ㄓㄨˇ
+貯 0 ㄓㄨˇ
+渚 0 ㄓㄨˇ
+矚 0 ㄓㄨˇ
+著 0 ㄓㄨˇ
+麈 0 ㄓㄨˇ
+拄 0 ㄓㄨˇ
+瘃 0 ㄓㄨˇ
+砫 0 ㄓㄨˇ
+陼 0 ㄓㄨˇ
+孎 0 ㄓㄨˇ
+壴 0 ㄓㄨˇ
+罜 0 ㄓㄨˇ
+欘 0 ㄓㄨˇ
+泞 0 ㄓㄨˇ
+眝 0 ㄓㄨˇ
+枓 0 ㄓㄨˇ
+鬻 0 ㄓㄨˇ
+灟 0 ㄓㄨˇ
+蠾 0 ㄓㄨˇ
+丶 0 ㄓㄨˇ
+宔 0 ㄓㄨˇ
+俼 0 ㄓㄨˇ
+属 0 ㄓㄨˇ
+詝 0 ㄓㄨˇ
+煑 0 ㄓㄨˇ
+嘱 0 ㄓㄨˇ
+濐 0 ㄓㄨˇ
+瞩 0 ㄓㄨˇ
+𠰍 0 ㄓㄨˇ
+𪐴 0 ㄓㄨˇ
+住 0 ㄓㄨˋ
+著 0 ㄓㄨˋ
+助 0 ㄓㄨˋ
+注 0 ㄓㄨˋ
+祝 0 ㄓㄨˋ
+駐 0 ㄓㄨˋ
+註 0 ㄓㄨˋ
+柱 0 ㄓㄨˋ
+蛀 0 ㄓㄨˋ
+鑄 0 ㄓㄨˋ
+炷 0 ㄓㄨˋ
+苧 0 ㄓㄨˋ
+佇 0 ㄓㄨˋ
+箸 0 ㄓㄨˋ
+杼 0 ㄓㄨˋ
+紵 0 ㄓㄨˋ
+翥 0 ㄓㄨˋ
+宁 0 ㄓㄨˋ
+柷 0 ㄓㄨˋ
+羜 0 ㄓㄨˋ
+馵 0 ㄓㄨˋ
+疰 0 ㄓㄨˋ
+莇 0 ㄓㄨˋ
+鉒 0 ㄓㄨˋ
+紸 0 ㄓㄨˋ
+嵀 0 ㄓㄨˋ
+跓 0 ㄓㄨˋ
+軴 0 ㄓㄨˋ
+樦 0 ㄓㄨˋ
+麆 0 ㄓㄨˋ
+櫡 0 ㄓㄨˋ
+殶 0 ㄓㄨˋ
+諔 0 ㄓㄨˋ
+粥 0 ㄓㄨˋ
+芧 0 ㄓㄨˋ
+壴 0 ㄓㄨˋ
+怷 0 ㄓㄨˋ
+炾 0 ㄓㄨˋ
+眝 0 ㄓㄨˋ
+砫 0 ㄓㄨˋ
+罜 0 ㄓㄨˋ
+謯 0 ㄓㄨˋ
+鬻 0 ㄓㄨˋ
+宔 0 ㄓㄨˋ
+拀 0 ㄓㄨˋ
+俼 0 ㄓㄨˋ
+竚 0 ㄓㄨˋ
+着 0 ㄓㄨˋ
+筯 0 ㄓㄨˋ
+飳 0 ㄓㄨˋ
+嗻 0 ㄓㄨˋ
+鋳 0 ㄓㄨˋ
+霔 0 ㄓㄨˋ
+坾 0 ㄓㄨˋ
+竹 0 ㄓㄨˊ
+築 0 ㄓㄨˊ
+逐 0 ㄓㄨˊ
+燭 0 ㄓㄨˊ
+蠋 0 ㄓㄨˊ
+筑 0 ㄓㄨˊ
+竺 0 ㄓㄨˊ
+朮 0 ㄓㄨˊ
+躅 0 ㄓㄨˊ
+舳 0 ㄓㄨˊ
+軸 0 ㄓㄨˊ
+窋 0 ㄓㄨˊ
+蓫 0 ㄓㄨˊ
+笁 0 ㄓㄨˊ
+趉 0 ㄓㄨˊ
+鱁 0 ㄓㄨˊ
+灟 0 ㄓㄨˊ
+蠾 0 ㄓㄨˊ
+茿 0 ㄓㄨˊ
+篫 0 ㄓㄨˊ
+妯 0 ㄓㄨˊ
+柚 0 ㄓㄨˊ
+泏 0 ㄓㄨˊ
+瓨 0 ㄓㄨˊ
+怷 0 ㄓㄨˊ
+瘃 0 ㄓㄨˊ
+蒆 0 ㄓㄨˊ
+孎 0 ㄓㄨˊ
+斸 0 ㄓㄨˊ
+欘 0 ㄓㄨˊ
+术 0 ㄓㄨˊ
+炢 0 ㄓㄨˊ
+烛 0 ㄓㄨˊ
+劚 0 ㄓㄨˊ
+曯 0 ㄓㄨˊ
+爥 0 ㄓㄨˊ
+薥 0 ㄓㄨˊ
+䟉 0 ㄓㄨˊ
+𦸇 0 ㄓㄨˊ
+抓 0 ㄓㄨㄚ
+撾 0 ㄓㄨㄚ
+髽 0 ㄓㄨㄚ
+檛 0 ㄓㄨㄚ
+膼 0 ㄓㄨㄚ
+簻 0 ㄓㄨㄚ
+爪 0 ㄓㄨㄚˇ
+爫 0 ㄓㄨㄚˇ
+拽 0 ㄓㄨㄞ
+跩 0 ㄓㄨㄞˇ
+拽 0 ㄓㄨㄞˋ
+顡 0 ㄓㄨㄞˋ
+捉 0 ㄓㄨㄛ
+桌 0 ㄓㄨㄛ
+涿 0 ㄓㄨㄛ
+棹 0 ㄓㄨㄛ
+穛 0 ㄓㄨㄛ
+卓 0 ㄓㄨㄛ
+槕 0 ㄓㄨㄛ
+𥼚 0 ㄓㄨㄛ
+㑁 0 ㄓㄨㄛ
+㧳 0 ㄓㄨㄛˋ
+卓 0 ㄓㄨㄛˊ
+茁 0 ㄓㄨㄛˊ
+濁 0 ㄓㄨㄛˊ
+拙 0 ㄓㄨㄛˊ
+濯 0 ㄓㄨㄛˊ
+酌 0 ㄓㄨㄛˊ
+灼 0 ㄓㄨㄛˊ
+著 0 ㄓㄨㄛˊ
+啄 0 ㄓㄨㄛˊ
+鐲 0 ㄓㄨㄛˊ
+擢 0 ㄓㄨㄛˊ
+琢 0 ㄓㄨㄛˊ
+諑 0 ㄓㄨㄛˊ
+倬 0 ㄓㄨㄛˊ
+斲 0 ㄓㄨㄛˊ
+斮 0 ㄓㄨㄛˊ
+梲 0 ㄓㄨㄛˊ
+椓 0 ㄓㄨㄛˊ
+焯 0 ㄓㄨㄛˊ
+蝃 0 ㄓㄨㄛˊ
+踔 0 ㄓㄨㄛˊ
+鷟 0 ㄓㄨㄛˊ
+彴 0 ㄓㄨㄛˊ
+汋 0 ㄓㄨㄛˊ
+斫 0 ㄓㄨㄛˊ
+禚 0 ㄓㄨㄛˊ
+篧 0 ㄓㄨㄛˊ
+浞 0 ㄓㄨㄛˊ
+棳 0 ㄓㄨㄛˊ
+謶 0 ㄓㄨㄛˊ
+錣 0 ㄓㄨㄛˊ
+啅 0 ㄓㄨㄛˊ
+罬 0 ㄓㄨㄛˊ
+斀 0 ㄓㄨㄛˊ
+蠗 0 ㄓㄨㄛˊ
+圴 0 ㄓㄨㄛˊ
+剢 0 ㄓㄨㄛˊ
+灂 0 ㄓㄨㄛˊ
+涿 0 ㄓㄨㄛˊ
+絀 0 ㄓㄨㄛˊ
+黜 0 ㄓㄨㄛˊ
+繳 0 ㄓㄨㄛˊ
+胐 0 ㄓㄨㄛˊ
+婥 0 ㄓㄨㄛˊ
+烼 0 ㄓㄨㄛˊ
+腏 0 ㄓㄨㄛˊ
+詘 0 ㄓㄨㄛˊ
+畷 0 ㄓㄨㄛˊ
+噣 0 ㄓㄨㄛˊ
+嬥 0 ㄓㄨㄛˊ
+穛 0 ㄓㄨㄛˊ
+櫡 0 ㄓㄨㄛˊ
+籗 0 ㄓㄨㄛˊ
+鸐 0 ㄓㄨㄛˊ
+蠿 0 ㄓㄨㄛˊ
+叕 0 ㄓㄨㄛˊ
+坧 0 ㄓㄨㄛˊ
+妰 0 ㄓㄨㄛˊ
+泎 0 ㄓㄨㄛˊ
+炪 0 ㄓㄨㄛˊ
+娺 0 ㄓㄨㄛˊ
+棁 0 ㄓㄨㄛˊ
+烵 0 ㄓㄨㄛˊ
+着 0 ㄓㄨㄛˊ
+聉 0 ㄓㄨㄛˊ
+晫 0 ㄓㄨㄛˊ
+琸 0 ㄓㄨㄛˊ
+硺 0 ㄓㄨㄛˊ
+窡 0 ㄓㄨㄛˊ
+墌 0 ㄓㄨㄛˊ
+擆 0 ㄓㄨㄛˊ
+撯 0 ㄓㄨㄛˊ
+誳 0 ㄓㄨㄛˊ
+斵 0 ㄓㄨㄛˊ
+仢 0 ㄓㄨㄛˊ
+犳 0 ㄓㄨㄛˊ
+丵 0 ㄓㄨㄛˊ
+㧻 0 ㄓㄨㄛˊ
+䖦 0 ㄓㄨㄛˊ
+𢽴 0 ㄓㄨㄛˊ
+斱 0 ㄓㄨㄛˊ
+鉵 0 ㄓㄨㄛˊ
+劅 0 ㄓㄨㄛˊ
+䮓 0 ㄓㄨㄛˊ
+鐯 0 ㄓㄨㄛˊ
+𥇍 0 ㄓㄨㄛˊ
+𤏸 0 ㄓㄨㄛˊ
+𨧧 0 ㄓㄨㄛˊ
+𢂚 0 ㄓㄨㄛˊ
+追 0 ㄓㄨㄟ
+錐 0 ㄓㄨㄟ
+椎 0 ㄓㄨㄟ
+隹 0 ㄓㄨㄟ
+騅 0 ㄓㄨㄟ
+鵻 0 ㄓㄨㄟ
+腄 0 ㄓㄨㄟ
+鴭 0 ㄓㄨㄟ
+碓 0 ㄓㄨㄟ
+娺 0 ㄓㄨㄟ
+䳡 0 ㄓㄨㄟ
+沝 0 ㄓㄨㄟˇ
+綴 0 ㄓㄨㄟˋ
+墜 0 ㄓㄨㄟˋ
+贅 0 ㄓㄨㄟˋ
+縋 0 ㄓㄨㄟˋ
+惴 0 ㄓㄨㄟˋ
+餟 0 ㄓㄨㄟˋ
+硾 0 ㄓㄨㄟˋ
+膇 0 ㄓㄨㄟˋ
+鑆 0 ㄓㄨㄟˋ
+掇 0 ㄓㄨㄟˋ
+甀 0 ㄓㄨㄟˋ
+裰 0 ㄓㄨㄟˋ
+錣 0 ㄓㄨㄟˋ
+笍 0 ㄓㄨㄟˋ
+礈 0 ㄓㄨㄟˋ
+𠄌 0 ㄓㄨㄟˋ
+諄 0 ㄓㄨㄣ
+屯 0 ㄓㄨㄣ
+肫 0 ㄓㄨㄣ
+窀 0 ㄓㄨㄣ
+迍 0 ㄓㄨㄣ
+宒 0 ㄓㄨㄣ
+訰 0 ㄓㄨㄣ
+炖 0 ㄓㄨㄣ
+衠 0 ㄓㄨㄣ
+準 0 ㄓㄨㄣˇ
+准 0 ㄓㄨㄣˇ
+隼 0 ㄓㄨㄣˇ
+埻 0 ㄓㄨㄣˇ
+綧 0 ㄓㄨㄣˇ
+純 0 ㄓㄨㄣˇ
+凖 0 ㄓㄨㄣˇ
+鶽 0 ㄓㄨㄣˇ
+稕 0 ㄓㄨㄣˋ
+訰 0 ㄓㄨㄣˋ
+遮 0 ㄓㄜ
+螫 0 ㄓㄜ
+晢 0 ㄓㄜ
+嫬 0 ㄓㄜ
+折 0 ㄓㄜ
+嗻 0 ㄓㄜ
+者 0 ㄓㄜˇ
+赭 0 ㄓㄜˇ
+鍺 0 ㄓㄜˇ
+摺 0 ㄓㄜˇ
+遮 0 ㄓㄜˇ
+這 0 ㄓㄜˋ
+浙 0 ㄓㄜˋ
+蔗 0 ㄓㄜˋ
+鷓 0 ㄓㄜˋ
+柘 0 ㄓㄜˋ
+宅 0 ㄓㄜˋ
+檡 0 ㄓㄜˋ
+烢 0 ㄓㄜˋ
+蟅 0 ㄓㄜˋ
+挓 0 ㄓㄜˋ
+跖 0 ㄓㄜˋ
+这 0 ㄓㄜˋ
+嗻 0 ㄓㄜˋ
+樜 0 ㄓㄜˋ
+䗪 0 ㄓㄜˋ
+折 0 ㄓㄜˊ
+哲 0 ㄓㄜˊ
+摺 0 ㄓㄜˊ
+懾 0 ㄓㄜˊ
+褶 0 ㄓㄜˊ
+謫 0 ㄓㄜˊ
+輒 0 ㄓㄜˊ
+摘 0 ㄓㄜˊ
+轍 0 ㄓㄜˊ
+慴 0 ㄓㄜˊ
+蜇 0 ㄓㄜˊ
+磔 0 ㄓㄜˊ
+乇 0 ㄓㄜˊ
+讋 0 ㄓㄜˊ
+晢 0 ㄓㄜˊ
+鮿 0 ㄓㄜˊ
+耴 0 ㄓㄜˊ
+悊 0 ㄓㄜˊ
+砓 0 ㄓㄜˊ
+謺 0 ㄓㄜˊ
+虴 0 ㄓㄜˊ
+鸅 0 ㄓㄜˊ
+讘 0 ㄓㄜˊ
+瓋 0 ㄓㄜˊ
+浙 0 ㄓㄜˊ
+翟 0 ㄓㄜˊ
+鏑 0 ㄓㄜˊ
+囁 0 ㄓㄜˊ
+焎 0 ㄓㄜˊ
+皙 0 ㄓㄜˊ
+裚 0 ㄓㄜˊ
+馲 0 ㄓㄜˊ
+蟄 0 ㄓㄜˊ
+扸 0 ㄓㄜˊ
+籷 0 ㄓㄜˊ
+埑 0 ㄓㄜˊ
+晣 0 ㄓㄜˊ
+烲 0 ㄓㄜˊ
+喆 0 ㄓㄜˊ
+棏 0 ㄓㄜˊ
+輙 0 ㄓㄜˊ
+銸 0 ㄓㄜˊ
+嚞 0 ㄓㄜˊ
+礋 0 ㄓㄜˊ
+䕪 0 ㄓㄜˊ
+讁 0 ㄓㄜˊ
+厇 0 ㄓㄜˊ
+歽 0 ㄓㄜˊ
+啠 0 ㄓㄜˊ
+襵 0 ㄓㄜˊ
+著 0 ㄓㄜ˙
+遮 0 ㄓㄜ˙
+晢 0 ㄓㄜ˙
+嫬 0 ㄓㄜ˙
+着 0 ㄓㄜ˙
+朝 0 ㄓㄠ
+招 0 ㄓㄠ
+昭 0 ㄓㄠ
+召 0 ㄓㄠ
+著 0 ㄓㄠ
+嘲 0 ㄓㄠ
+釗 0 ㄓㄠ
+駋 0 ㄓㄠ
+鉊 0 ㄓㄠ
+晁 0 ㄓㄠ
+盄 0 ㄓㄠ
+鍣 0 ㄓㄠ
+妱 0 ㄓㄠ
+抓 0 ㄓㄠ
+迢 0 ㄓㄠ
+弨 0 ㄓㄠ
+怊 0 ㄓㄠ
+佋 0 ㄓㄠ
+巶 0 ㄓㄠ
+着 0 ㄓㄠ
+謿 0 ㄓㄠ
+窼 0 ㄓㄠ
+找 0 ㄓㄠˇ
+沼 0 ㄓㄠˇ
+爪 0 ㄓㄠˇ
+菬 0 ㄓㄠˇ
+瑵 0 ㄓㄠˇ
+爫 0 ㄓㄠˇ
+照 0 ㄓㄠˋ
+趙 0 ㄓㄠˋ
+召 0 ㄓㄠˋ
+罩 0 ㄓㄠˋ
+兆 0 ㄓㄠˋ
+肇 0 ㄓㄠˋ
+詔 0 ㄓㄠˋ
+晁 0 ㄓㄠˋ
+笊 0 ㄓㄠˋ
+櫂 0 ㄓㄠˋ
+炤 0 ㄓㄠˋ
+雿 0 ㄓㄠˋ
+狣 0 ㄓㄠˋ
+棹 0 ㄓㄠˋ
+箌 0 ㄓㄠˋ
+鵫 0 ㄓㄠˋ
+垗 0 ㄓㄠˋ
+旐 0 ㄓㄠˋ
+曌 0 ㄓㄠˋ
+頫 0 ㄓㄠˋ
+妱 0 ㄓㄠˋ
+淖 0 ㄓㄠˋ
+鉊 0 ㄓㄠˋ
+銚 0 ㄓㄠˋ
+髫 0 ㄓㄠˋ
+繉 0 ㄓㄠˋ
+鮡 0 ㄓㄠˋ
+㨄 0 ㄓㄠˋ
+燳 0 ㄓㄠˋ
+瞾 0 ㄓㄠˋ
+鑃 0 ㄓㄠˋ
+籱 0 ㄓㄠˋ
+枛 0 ㄓㄠˋ
+䍮 0 ㄓㄠˋ
+䑲 0 ㄓㄠˋ
+羄 0 ㄓㄠˋ
+肁 0 ㄓㄠˋ
+肈 0 ㄓㄠˋ
+著 0 ㄓㄠˊ
+着 0 ㄓㄠˊ
+這 0 ㄓㄟˋ
+这 0 ㄓㄟˋ
+真 0 ㄓㄣ
+針 0 ㄓㄣ
+珍 0 ㄓㄣ
+貞 0 ㄓㄣ
+偵 0 ㄓㄣ
+禎 0 ㄓㄣ
+斟 0 ㄓㄣ
+箴 0 ㄓㄣ
+砧 0 ㄓㄣ
+甄 0 ㄓㄣ
+臻 0 ㄓㄣ
+楨 0 ㄓㄣ
+榛 0 ㄓㄣ
+診 0 ㄓㄣ
+蓁 0 ㄓㄣ
+獉 0 ㄓㄣ
+溱 0 ㄓㄣ
+碪 0 ㄓㄣ
+胗 0 ㄓㄣ
+鍼 0 ㄓㄣ
+鱵 0 ㄓㄣ
+媜 0 ㄓㄣ
+駗 0 ㄓㄣ
+薽 0 ㄓㄣ
+禛 0 ㄓㄣ
+樼 0 ㄓㄣ
+潧 0 ㄓㄣ
+瑊 0 ㄓㄣ
+遉 0 ㄓㄣ
+寊 0 ㄓㄣ
+蒧 0 ㄓㄣ
+轃 0 ㄓㄣ
+籈 0 ㄓㄣ
+鷏 0 ㄓㄣ
+堻 0 ㄓㄣ
+唇 0 ㄓㄣ
+振 0 ㄓㄣ
+疹 0 ㄓㄣ
+幀 0 ㄓㄣ
+殄 0 ㄓㄣ
+桭 0 ㄓㄣ
+紾 0 ㄓㄣ
+湞 0 ㄓㄣ
+軫 0 ㄓㄣ
+鄄 0 ㄓㄣ
+椹 0 ㄓㄣ
+葴 0 ㄓㄣ
+磡 0 ㄓㄣ
+赬 0 ㄓㄣ
+鍖 0 ㄓㄣ
+鍞 0 ㄓㄣ
+瀙 0 ㄓㄣ
+珎 0 ㄓㄣ
+帪 0 ㄓㄣ
+栕 0 ㄓㄣ
+眞 0 ㄓㄣ
+酙 0 ㄓㄣ
+嫃 0 ㄓㄣ
+搸 0 ㄓㄣ
+鉁 0 ㄓㄣ
+靕 0 ㄓㄣ
+蒖 0 ㄓㄣ
+緽 0 ㄓㄣ
+澵 0 ㄓㄣ
+錱 0 ㄓㄣ
+頳 0 ㄓㄣ
+殝 0 ㄓㄣ
+儬 0 ㄓㄣ
+㡧 0 ㄓㄣ
+㖘 0 ㄓㄣ
+診 0 ㄓㄣˇ
+枕 0 ㄓㄣˇ
+疹 0 ㄓㄣˇ
+軫 0 ㄓㄣˇ
+畛 0 ㄓㄣˇ
+袗 0 ㄓㄣˇ
+縝 0 ㄓㄣˇ
+稹 0 ㄓㄣˇ
+紾 0 ㄓㄣˇ
+鬒 0 ㄓㄣˇ
+眕 0 ㄓㄣˇ
+黰 0 ㄓㄣˇ
+辴 0 ㄓㄣˇ
+抮 0 ㄓㄣˇ
+抌 0 ㄓㄣˇ
+笉 0 ㄓㄣˇ
+絼 0 ㄓㄣˇ
+祳 0 ㄓㄣˇ
+晸 0 ㄓㄣˇ
+縥 0 ㄓㄣˇ
+黕 0 ㄓㄣˇ
+賑 0 ㄓㄣˇ
+餮 0 ㄓㄣˇ
+胗 0 ㄓㄣˇ
+裖 0 ㄓㄣˇ
+駗 0 ㄓㄣˇ
+姫 0 ㄓㄣˇ
+昣 0 ㄓㄣˇ
+屒 0 ㄓㄣˇ
+聄 0 ㄓㄣˇ
+弫 0 ㄓㄣˇ
+敐 0 ㄓㄣˇ
+䪴 0 ㄓㄣˇ
+飻 0 ㄓㄣˇ
+覙 0 ㄓㄣˇ
+鎮 0 ㄓㄣˋ
+陣 0 ㄓㄣˋ
+振 0 ㄓㄣˋ
+震 0 ㄓㄣˋ
+賑 0 ㄓㄣˋ
+朕 0 ㄓㄣˋ
+枕 0 ㄓㄣˋ
+鴆 0 ㄓㄣˋ
+揕 0 ㄓㄣˋ
+酖 0 ㄓㄣˋ
+眹 0 ㄓㄣˋ
+娠 0 ㄓㄣˋ
+侲 0 ㄓㄣˋ
+挋 0 ㄓㄣˋ
+栚 0 ㄓㄣˋ
+蜄 0 ㄓㄣˋ
+桭 0 ㄓㄣˋ
+誫 0 ㄓㄣˋ
+敶 0 ㄓㄣˋ
+陳 0 ㄓㄣˋ
+紖 0 ㄓㄣˋ
+瑱 0 ㄓㄣˋ
+迧 0 ㄓㄣˋ
+栕 0 ㄓㄣˋ
+軙 0 ㄓㄣˋ
+塦 0 ㄓㄣˋ
+鎭 0 ㄓㄣˋ
+䟴 0 ㄓㄣˋ
+𨦸 0 ㄓㄣˋ
+圳 0 ㄓㄣˋ
+ˊ 0 ˊ
+兒 0 ㄦˊ
+而 0 ㄦˊ
+洏 0 ㄦˊ
+耏 0 ㄦˊ
+胹 0 ㄦˊ
+輀 0 ㄦˊ
+侕 0 ㄦˊ
+栭 0 ㄦˊ
+陑 0 ㄦˊ
+鮞 0 ㄦˊ
+檽 0 ㄦˊ
+聏 0 ㄦˊ
+荋 0 ㄦˊ
+唲 0 ㄦˊ
+鴯 0 ㄦˊ
+峏 0 ㄦˊ
+恧 0 ㄦˊ
+婼 0 ㄦˊ
+臑 0 ㄦˊ
+鬩 0 ㄦˊ
+児 0 ㄦˊ
+㖇 0 ㄦˊ
+袻 0 ㄦˊ
+腝 0 ㄦˊ
+䦧 0 ㄦˊ
+髵 0 ㄦˊ
+隭 0 ㄦˊ
+轜 0 ㄦˊ
+˙ 0 ˙
+阿 0 ㄚ
+啊 0 ㄚ
+ㄚ 0 ㄚ
+腌 0 ㄚ
+吖 0 ㄚ
+阿 0 ㄚˇ
+阿 0 ㄚˋ
+錒 0 ㄚˋ
+嗄 0 ㄚˊ
+啊 0 ㄚ˙
+挨 0 ㄞ
+哀 0 ㄞ
+埃 0 ㄞ
+唉 0 ㄞ
+哎 0 ㄞ
+ㄞ 0 ㄞ
+欸 0 ㄞ
+矮 0 ㄞˇ
+藹 0 ㄞˇ
+靄 0 ㄞˇ
+欸 0 ㄞˇ
+毐 0 ㄞˇ
+昹 0 ㄞˇ
+佁 0 ㄞˇ
+乃 0 ㄞˇ
+噯 0 ㄞˇ
+娾 0 ㄞˇ
+暟 0 ㄞˇ
+藒 0 ㄞˇ
+躷 0 ㄞˇ
+愛 0 ㄞˋ
+礙 0 ㄞˋ
+艾 0 ㄞˋ
+曖 0 ㄞˋ
+璦 0 ㄞˋ
+隘 0 ㄞˋ
+噯 0 ㄞˋ
+乂 0 ㄞˋ
+靉 0 ㄞˋ
+僾 0 ㄞˋ
+堨 0 ㄞˋ
+嬡 0 ㄞˋ
+鑀 0 ㄞˋ
+賹 0 ㄞˋ
+濭 0 ㄞˋ
+鴱 0 ㄞˋ
+譪 0 ㄞˋ
+薆 0 ㄞˋ
+阨 0 ㄞˋ
+砨 0 ㄞˋ
+嗌 0 ㄞˋ
+餀 0 ㄞˋ
+壒 0 ㄞˋ
+餲 0 ㄞˋ
+戹 0 ㄞˋ
+砈 0 ㄞˋ
+硋 0 ㄞˋ
+碍 0 ㄞˋ
+䔽 0 ㄞˋ
+懝 0 ㄞˋ
+瞹 0 ㄞˋ
+馤 0 ㄞˋ
+饚 0 ㄞˋ
+𣎴 0 ㄞˋ
+伌 0 ㄞˋ
+阸 0 ㄞˋ
+塧 0 ㄞˋ
+䅬 0 ㄞˋ
+皧 0 ㄞˋ
+捱 0 ㄞˊ
+皚 0 ㄞˊ
+騃 0 ㄞˊ
+敳 0 ㄞˊ
+呆 0 ㄞˊ
+挨 0 ㄞˊ
+崖 0 ㄞˊ
+癌 0 ㄞˊ
+啀 0 ㄞˊ
+堐 0 ㄞˊ
+隑 0 ㄞˊ
+獃 0 ㄞˊ
+磑 0 ㄞˊ
+厓 0 ㄞˊ
+崕 0 ㄞˊ
+凒 0 ㄞˊ
+敱 0 ㄞˊ
+嘊 0 ㄞˊ
+ㄇ 0 ㄇ
+哞 0 ㄇㄡ
+某 0 ㄇㄡˇ
+冇 0 ㄇㄡˇ
+踇 0 ㄇㄡˇ
+牡 0 ㄇㄡˇ
+畝 0 ㄇㄡˇ
+畂 0 ㄇㄡˇ
+畆 0 ㄇㄡˇ
+畞 0 ㄇㄡˇ
+畮 0 ㄇㄡˇ
+𦳑 0 ㄇㄡˇ
+茂 0 ㄇㄡˋ
+貿 0 ㄇㄡˋ
+懋 0 ㄇㄡˋ
+袤 0 ㄇㄡˋ
+楙 0 ㄇㄡˋ
+瞀 0 ㄇㄡˋ
+柕 0 ㄇㄡˋ
+愗 0 ㄇㄡˋ
+謀 0 ㄇㄡˊ
+眸 0 ㄇㄡˊ
+繆 0 ㄇㄡˊ
+牟 0 ㄇㄡˊ
+侔 0 ㄇㄡˊ
+蝥 0 ㄇㄡˊ
+鍪 0 ㄇㄡˊ
+蛑 0 ㄇㄡˊ
+麰 0 ㄇㄡˊ
+洠 0 ㄇㄡˊ
+鉾 0 ㄇㄡˊ
+鴾 0 ㄇㄡˊ
+譕 0 ㄇㄡˊ
+呣 0 ㄇㄡˊ
+哞 0 ㄇㄡˊ
+堥 0 ㄇㄡˊ
+鞪 0 ㄇㄡˊ
+劺 0 ㄇㄡˊ
+矇 0 ㄇㄥ
+猛 0 ㄇㄥˇ
+蜢 0 ㄇㄥˇ
+艋 0 ㄇㄥˇ
+錳 0 ㄇㄥˇ
+懵 0 ㄇㄥˇ
+鼆 0 ㄇㄥˇ
+蠓 0 ㄇㄥˇ
+懞 0 ㄇㄥˇ
+瓾 0 ㄇㄥˇ
+幪 0 ㄇㄥˇ
+勐 0 ㄇㄥˇ
+顭 0 ㄇㄥˇ
+鯭 0 ㄇㄥˇ
+𢕙 0 ㄇㄥˇ
+鸏 0 ㄇㄥˇ
+夢 0 ㄇㄥˋ
+孟 0 ㄇㄥˋ
+霥 0 ㄇㄥˋ
+艋 0 ㄇㄥˋ
+梦 0 ㄇㄥˋ
+夣 0 ㄇㄥˋ
+懜 0 ㄇㄥˋ
+䓝 0 ㄇㄥˋ
+䁅 0 ㄇㄥˋ
+蒙 0 ㄇㄥˊ
+盟 0 ㄇㄥˊ
+萌 0 ㄇㄥˊ
+矇 0 ㄇㄥˊ
+朦 0 ㄇㄥˊ
+濛 0 ㄇㄥˊ
+檬 0 ㄇㄥˊ
+懵 0 ㄇㄥˊ
+幪 0 ㄇㄥˊ
+甍 0 ㄇㄥˊ
+瞢 0 ㄇㄥˊ
+艨 0 ㄇㄥˊ
+虻 0 ㄇㄥˊ
+曚 0 ㄇㄥˊ
+甿 0 ㄇㄥˊ
+礞 0 ㄇㄥˊ
+氋 0 ㄇㄥˊ
+雺 0 ㄇㄥˊ
+莔 0 ㄇㄥˊ
+儚 0 ㄇㄥˊ
+蕄 0 ㄇㄥˊ
+鄳 0 ㄇㄥˊ
+鄸 0 ㄇㄥˊ
+饛 0 ㄇㄥˊ
+鸏 0 ㄇㄥˊ
+氓 0 ㄇㄥˊ
+尨 0 ㄇㄥˊ
+罞 0 ㄇㄥˊ
+嫇 0 ㄇㄥˊ
+懞 0 ㄇㄥˊ
+霿 0 ㄇㄥˊ
+冡 0 ㄇㄥˊ
+䀄 0 ㄇㄥˊ
+蝱 0 ㄇㄥˊ
+橗 0 ㄇㄥˊ
+懜 0 ㄇㄥˊ
+㩚 0 ㄇㄥˊ
+鯍 0 ㄇㄥˊ
+靀 0 ㄇㄥˊ
+顭 0 ㄇㄥˊ
+溕 0 ㄇㄥˊ
+𡁏 0 ㄇㄥˊ
+獴 0 ㄇㄥˊ
+矒 0 ㄇㄥˊ
+莽 0 ㄇㄤˇ
+蟒 0 ㄇㄤˇ
+漭 0 ㄇㄤˇ
+汒 0 ㄇㄤˇ
+庬 0 ㄇㄤˇ
+硥 0 ㄇㄤˇ
+茻 0 ㄇㄤˇ
+壾 0 ㄇㄤˇ
+蠎 0 ㄇㄤˇ
+莾 0 ㄇㄤˇ
+忙 0 ㄇㄤˊ
+芒 0 ㄇㄤˊ
+茫 0 ㄇㄤˊ
+盲 0 ㄇㄤˊ
+氓 0 ㄇㄤˊ
+尨 0 ㄇㄤˊ
+硭 0 ㄇㄤˊ
+邙 0 ㄇㄤˊ
+哤 0 ㄇㄤˊ
+奀 0 ㄇㄤˊ
+杗 0 ㄇㄤˊ
+盳 0 ㄇㄤˊ
+鋩 0 ㄇㄤˊ
+娏 0 ㄇㄤˊ
+牻 0 ㄇㄤˊ
+痝 0 ㄇㄤˊ
+蛖 0 ㄇㄤˊ
+駹 0 ㄇㄤˊ
+蘉 0 ㄇㄤˊ
+笀 0 ㄇㄤˊ
+肓 0 ㄇㄤˊ
+汒 0 ㄇㄤˊ
+厖 0 ㄇㄤˊ
+庬 0 ㄇㄤˊ
+恾 0 ㄇㄤˊ
+浝 0 ㄇㄤˊ
+朚 0 ㄇㄤˊ
+吂 0 ㄇㄤˊ
+釯 0 ㄇㄤˊ
+鸏 0 ㄇㄤˊ
+滿 0 ㄇㄢˇ
+屘 0 ㄇㄢˇ
+矕 0 ㄇㄢˇ
+懣 0 ㄇㄢˇ
+蹣 0 ㄇㄢˇ
+顢 0 ㄇㄢˇ
+満 0 ㄇㄢˇ
+鏋 0 ㄇㄢˇ
+𨃟 0 ㄇㄢˇ
+慢 0 ㄇㄢˋ
+漫 0 ㄇㄢˋ
+曼 0 ㄇㄢˋ
+蔓 0 ㄇㄢˋ
+幔 0 ㄇㄢˋ
+嫚 0 ㄇㄢˋ
+鏝 0 ㄇㄢˋ
+縵 0 ㄇㄢˋ
+墁 0 ㄇㄢˋ
+熳 0 ㄇㄢˋ
+澫 0 ㄇㄢˋ
+僈 0 ㄇㄢˋ
+獌 0 ㄇㄢˋ
+屘 0 ㄇㄢˋ
+饅 0 ㄇㄢˋ
+鰻 0 ㄇㄢˋ
+鄤 0 ㄇㄢˋ
+槾 0 ㄇㄢˋ
+蟃 0 ㄇㄢˋ
+謾 0 ㄇㄢˋ
+摱 0 ㄇㄢˋ
+蔄 0 ㄇㄢˋ
+澷 0 ㄇㄢˋ
+䕕 0 ㄇㄢˋ
+𤅎 0 ㄇㄢˋ
+蠻 0 ㄇㄢˊ
+饅 0 ㄇㄢˊ
+瞞 0 ㄇㄢˊ
+蹣 0 ㄇㄢˊ
+漫 0 ㄇㄢˊ
+顢 0 ㄇㄢˊ
+謾 0 ㄇㄢˊ
+鰻 0 ㄇㄢˊ
+璊 0 ㄇㄢˊ
+悗 0 ㄇㄢˊ
+慲 0 ㄇㄢˊ
+槾 0 ㄇㄢˊ
+鬘 0 ㄇㄢˊ
+鬗 0 ㄇㄢˊ
+埋 0 ㄇㄢˊ
+蔓 0 ㄇㄢˊ
+姏 0 ㄇㄢˊ
+樠 0 ㄇㄢˊ
+鞔 0 ㄇㄢˊ
+蛮 0 ㄇㄢˊ
+摱 0 ㄇㄢˊ
+澷 0 ㄇㄢˊ
+蟎 0 ㄇㄢˊ
+䕕 0 ㄇㄢˊ
+䅼 0 ㄇㄢˊ
+𨃟 0 ㄇㄢˊ
+㒼 0 ㄇㄢˊ
+𥲑 0 ㄇㄢˊ
+𧜞 0 ㄇㄢˊ
+媽 0 ㄇㄚ
+嗎 0 ㄇㄚ
+嬤 0 ㄇㄚ
+摩 0 ㄇㄚ
+螞 0 ㄇㄚ
+嬷 0 ㄇㄚ
+㕰 0 ㄇㄚ
+馬 0 ㄇㄚˇ
+螞 0 ㄇㄚˇ
+碼 0 ㄇㄚˇ
+瑪 0 ㄇㄚˇ
+溤 0 ㄇㄚˇ
+嗎 0 ㄇㄚˇ
+鎷 0 ㄇㄚˇ
+鷌 0 ㄇㄚˇ
+嘜 0 ㄇㄚˇ
+鰢 0 ㄇㄚˇ
+罵 0 ㄇㄚˋ
+禡 0 ㄇㄚˋ
+傌 0 ㄇㄚˋ
+榪 0 ㄇㄚˋ
+螞 0 ㄇㄚˋ
+鬕 0 ㄇㄚˋ
+閁 0 ㄇㄚˋ
+獁 0 ㄇㄚˋ
+駡 0 ㄇㄚˋ
+睰 0 ㄇㄚˋ
+麻 0 ㄇㄚˊ
+痲 0 ㄇㄚˊ
+嘛 0 ㄇㄚˊ
+麼 0 ㄇㄚˊ
+蟆 0 ㄇㄚˊ
+犘 0 ㄇㄚˊ
+尛 0 ㄇㄚˊ
+麽 0 ㄇㄚˊ
+蔴 0 ㄇㄚˊ
+蟇 0 ㄇㄚˊ
+嘛 0 ㄇㄚ˙
+嗎 0 ㄇㄚ˙
+媽 0 ㄇㄚ˙
+嬤 0 ㄇㄚ˙
+蟆 0 ㄇㄚ˙
+麼 0 ㄇㄚ˙
+尛 0 ㄇㄚ˙
+麽 0 ㄇㄚ˙
+蟇 0 ㄇㄚ˙
+買 0 ㄇㄞˇ
+嘪 0 ㄇㄞˇ
+鷶 0 ㄇㄞˇ
+蕒 0 ㄇㄞˇ
+賣 0 ㄇㄞˋ
+麥 0 ㄇㄞˋ
+邁 0 ㄇㄞˋ
+脈 0 ㄇㄞˋ
+勱 0 ㄇㄞˋ
+蝐 0 ㄇㄞˋ
+眽 0 ㄇㄞˋ
+佅 0 ㄇㄞˋ
+売 0 ㄇㄞˋ
+麦 0 ㄇㄞˋ
+脉 0 ㄇㄞˋ
+眿 0 ㄇㄞˋ
+衇 0 ㄇㄞˋ
+𪄳 0 ㄇㄞˋ
+埋 0 ㄇㄞˊ
+霾 0 ㄇㄞˊ
+薶 0 ㄇㄞˊ
+㜥 0 ㄇㄞˊ
+摸 0 ㄇㄛ
+抹 0 ㄇㄛˇ
+秣 0 ㄇㄛˇ
+懡 0 ㄇㄛˇ
+末 0 ㄇㄛˋ
+莫 0 ㄇㄛˋ
+默 0 ㄇㄛˋ
+漠 0 ㄇㄛˋ
+沒 0 ㄇㄛˋ
+膜 0 ㄇㄛˋ
+寞 0 ㄇㄛˋ
+陌 0 ㄇㄛˋ
+歿 0 ㄇㄛˋ
+脈 0 ㄇㄛˋ
+沫 0 ㄇㄛˋ
+秣 0 ㄇㄛˋ
+茉 0 ㄇㄛˋ
+驀 0 ㄇㄛˋ
+墨 0 ㄇㄛˋ
+貊 0 ㄇㄛˋ
+磨 0 ㄇㄛˋ
+嘿 0 ㄇㄛˋ
+瘼 0 ㄇㄛˋ
+靺 0 ㄇㄛˋ
+歾 0 ㄇㄛˋ
+鄚 0 ㄇㄛˋ
+纆 0 ㄇㄛˋ
+霢 0 ㄇㄛˋ
+嚜 0 ㄇㄛˋ
+眽 0 ㄇㄛˋ
+瞙 0 ㄇㄛˋ
+藦 0 ㄇㄛˋ
+暯 0 ㄇㄛˋ
+枺 0 ㄇㄛˋ
+爅 0 ㄇㄛˋ
+妺 0 ㄇㄛˋ
+万 0 ㄇㄛˋ
+銆 0 ㄇㄛˋ
+鏌 0 ㄇㄛˋ
+貘 0 ㄇㄛˋ
+粖 0 ㄇㄛˋ
+蛨 0 ㄇㄛˋ
+袹 0 ㄇㄛˋ
+嗼 0 ㄇㄛˋ
+塻 0 ㄇㄛˋ
+慔 0 ㄇㄛˋ
+蟔 0 ㄇㄛˋ
+鬕 0 ㄇㄛˋ
+莈 0 ㄇㄛˋ
+覛 0 ㄇㄛˋ
+縸 0 ㄇㄛˋ
+嘜 0 ㄇㄛˋ
+佰 0 ㄇㄛˋ
+抹 0 ㄇㄛˋ
+沬 0 ㄇㄛˋ
+冒 0 ㄇㄛˋ
+苜 0 ㄇㄛˋ
+麥 0 ㄇㄛˋ
+貉 0 ㄇㄛˋ
+幕 0 ㄇㄛˋ
+蟆 0 ㄇㄛˋ
+砓 0 ㄇㄛˋ
+塺 0 ㄇㄛˋ
+圽 0 ㄇㄛˋ
+麦 0 ㄇㄛˋ
+没 0 ㄇㄛˋ
+冐 0 ㄇㄛˋ
+帓 0 ㄇㄛˋ
+殁 0 ㄇㄛˋ
+昩 0 ㄇㄛˋ
+狢 0 ㄇㄛˋ
+脉 0 ㄇㄛˋ
+眿 0 ㄇㄛˋ
+袜 0 ㄇㄛˋ
+衇 0 ㄇㄛˋ
+貃 0 ㄇㄛˋ
+貈 0 ㄇㄛˋ
+獏 0 ㄇㄛˋ
+嫼 0 ㄇㄛˋ
+瞐 0 ㄇㄛˋ
+魩 0 ㄇㄛˋ
+頮 0 ㄇㄛˋ
+蟇 0 ㄇㄛˋ
+䃺 0 ㄇㄛˋ
+𤣻 0 ㄇㄛˋ
+皌 0 ㄇㄛˋ
+㱄 0 ㄇㄛˋ
+黙 0 ㄇㄛˋ
+霡 0 ㄇㄛˋ
+䘃 0 ㄇㄛˋ
+耱 0 ㄇㄛˋ
+模 0 ㄇㄛˊ
+磨 0 ㄇㄛˊ
+摩 0 ㄇㄛˊ
+膜 0 ㄇㄛˊ
+糢 0 ㄇㄛˊ
+魔 0 ㄇㄛˊ
+摹 0 ㄇㄛˊ
+謨 0 ㄇㄛˊ
+蘑 0 ㄇㄛˊ
+劘 0 ㄇㄛˊ
+嫫 0 ㄇㄛˊ
+藦 0 ㄇㄛˊ
+髍 0 ㄇㄛˊ
+無 0 ㄇㄛˊ
+摸 0 ㄇㄛˊ
+麼 0 ㄇㄛˊ
+嬤 0 ㄇㄛˊ
+饃 0 ㄇㄛˊ
+无 0 ㄇㄛˊ
+尛 0 ㄇㄛˊ
+麽 0 ㄇㄛˊ
+橅 0 ㄇㄛˊ
+嬷 0 ㄇㄛˊ
+謩 0 ㄇㄛˊ
+戂 0 ㄇㄛˊ
+䃺 0 ㄇㄛˊ
+饝 0 ㄇㄛˊ
+嚩 0 ㄇㄛˊ
+擵 0 ㄇㄛˊ
+譕 0 ㄇㄛˊ
+母 0 ㄇㄨˇ
+畝 0 ㄇㄨˇ
+牡 0 ㄇㄨˇ
+姆 0 ㄇㄨˇ
+拇 0 ㄇㄨˇ
+牳 0 ㄇㄨˇ
+鉧 0 ㄇㄨˇ
+姥 0 ㄇㄨˇ
+峔 0 ㄇㄨˇ
+砪 0 ㄇㄨˇ
+踇 0 ㄇㄨˇ
+畂 0 ㄇㄨˇ
+畆 0 ㄇㄨˇ
+胟 0 ㄇㄨˇ
+娒 0 ㄇㄨˇ
+畞 0 ㄇㄨˇ
+畮 0 ㄇㄨˇ
+𧿹 0 ㄇㄨˇ
+木 0 ㄇㄨˋ
+目 0 ㄇㄨˋ
+幕 0 ㄇㄨˋ
+牧 0 ㄇㄨˋ
+慕 0 ㄇㄨˋ
+墓 0 ㄇㄨˋ
+募 0 ㄇㄨˋ
+穆 0 ㄇㄨˋ
+睦 0 ㄇㄨˋ
+暮 0 ㄇㄨˋ
+沐 0 ㄇㄨˋ
+苜 0 ㄇㄨˋ
+鶩 0 ㄇㄨˋ
+楘 0 ㄇㄨˋ
+霂 0 ㄇㄨˋ
+鉬 0 ㄇㄨˋ
+炑 0 ㄇㄨˋ
+坶 0 ㄇㄨˋ
+毣 0 ㄇㄨˋ
+蚞 0 ㄇㄨˋ
+幙 0 ㄇㄨˋ
+莯 0 ㄇㄨˋ
+莫 0 ㄇㄨˋ
+冪 0 ㄇㄨˋ
+繆 0 ㄇㄨˋ
+驀 0 ㄇㄨˋ
+慔 0 ㄇㄨˋ
+冖 0 ㄇㄨˋ
+朷 0 ㄇㄨˋ
+狇 0 ㄇㄨˋ
+幂 0 ㄇㄨˋ
+雮 0 ㄇㄨˋ
+㜈 0 ㄇㄨˋ
+樢 0 ㄇㄨˋ
+模 0 ㄇㄨˊ
+氁 0 ㄇㄨˊ
+毪 0 ㄇㄨˊ
+墲 0 ㄇㄨˊ
+橅 0 ㄇㄨˊ
+恈 0 ㄇㄨˊ
+麼 0 ㄇㄜ˙
+嚜 0 ㄇㄜ˙
+尛 0 ㄇㄜ˙
+麽 0 ㄇㄜ˙
+貓 0 ㄇㄠ
+摸 0 ㄇㄠ
+猫 0 ㄇㄠ
+卯 0 ㄇㄠˇ
+昴 0 ㄇㄠˇ
+泖 0 ㄇㄠˇ
+茆 0 ㄇㄠˇ
+鉚 0 ㄇㄠˇ
+窌 0 ㄇㄠˇ
+戼 0 ㄇㄠˇ
+峁 0 ㄇㄠˇ
+帽 0 ㄇㄠˋ
+冒 0 ㄇㄠˋ
+貌 0 ㄇㄠˋ
+貿 0 ㄇㄠˋ
+茂 0 ㄇㄠˋ
+瑁 0 ㄇㄠˋ
+懋 0 ㄇㄠˋ
+旄 0 ㄇㄠˋ
+耄 0 ㄇㄠˋ
+媢 0 ㄇㄠˋ
+楙 0 ㄇㄠˋ
+眊 0 ㄇㄠˋ
+瞀 0 ㄇㄠˋ
+芼 0 ㄇㄠˋ
+袤 0 ㄇㄠˋ
+毷 0 ㄇㄠˋ
+艒 0 ㄇㄠˋ
+萺 0 ㄇㄠˋ
+鄮 0 ㄇㄠˋ
+毣 0 ㄇㄠˋ
+蓩 0 ㄇㄠˋ
+皃 0 ㄇㄠˋ
+冐 0 ㄇㄠˋ
+柕 0 ㄇㄠˋ
+覒 0 ㄇㄠˋ
+暓 0 ㄇㄠˋ
+冃 0 ㄇㄠˋ
+毛 0 ㄇㄠˊ
+茅 0 ㄇㄠˊ
+矛 0 ㄇㄠˊ
+髦 0 ㄇㄠˊ
+錨 0 ㄇㄠˊ
+旄 0 ㄇㄠˊ
+蟊 0 ㄇㄠˊ
+芼 0 ㄇㄠˊ
+蝥 0 ㄇㄠˊ
+髳 0 ㄇㄠˊ
+媌 0 ㄇㄠˊ
+堥 0 ㄇㄠˊ
+罞 0 ㄇㄠˊ
+酕 0 ㄇㄠˊ
+嫹 0 ㄇㄠˊ
+鶜 0 ㄇㄠˊ
+枆 0 ㄇㄠˊ
+軞 0 ㄇㄠˊ
+渵 0 ㄇㄠˊ
+耄 0 ㄇㄠˊ
+犛 0 ㄇㄠˊ
+麾 0 ㄇㄠˊ
+乇 0 ㄇㄠˊ
+毠 0 ㄇㄠˊ
+毼 0 ㄇㄠˊ
+雺 0 ㄇㄠˊ
+氂 0 ㄇㄠˊ
+牦 0 ㄇㄠˊ
+嵍 0 ㄇㄠˊ
+緢 0 ㄇㄠˊ
+𨥨 0 ㄇㄠˊ
+美 0 ㄇㄟˇ
+每 0 ㄇㄟˇ
+鎂 0 ㄇㄟˇ
+浼 0 ㄇㄟˇ
+媺 0 ㄇㄟˇ
+渼 0 ㄇㄟˇ
+媄 0 ㄇㄟˇ
+挴 0 ㄇㄟˇ
+燘 0 ㄇㄟˇ
+毎 0 ㄇㄟˇ
+凂 0 ㄇㄟˇ
+羙 0 ㄇㄟˇ
+嵄 0 ㄇㄟˇ
+嬍 0 ㄇㄟˇ
+黣 0 ㄇㄟˇ
+䆀 0 ㄇㄟˇ
+妹 0 ㄇㄟˋ
+媚 0 ㄇㄟˋ
+寐 0 ㄇㄟˋ
+昧 0 ㄇㄟˋ
+眛 0 ㄇㄟˋ
+魅 0 ㄇㄟˋ
+瑁 0 ㄇㄟˋ
+沬 0 ㄇㄟˋ
+袂 0 ㄇㄟˋ
+痗 0 ㄇㄟˋ
+韎 0 ㄇㄟˋ
+煝 0 ㄇㄟˋ
+蝞 0 ㄇㄟˋ
+謎 0 ㄇㄟˋ
+蝐 0 ㄇㄟˋ
+抺 0 ㄇㄟˋ
+祙 0 ㄇㄟˋ
+跊 0 ㄇㄟˋ
+詸 0 ㄇㄟˋ
+鬽 0 ㄇㄟˋ
+睸 0 ㄇㄟˋ
+篃 0 ㄇㄟˋ
+沒 0 ㄇㄟˊ
+煤 0 ㄇㄟˊ
+眉 0 ㄇㄟˊ
+枚 0 ㄇㄟˊ
+梅 0 ㄇㄟˊ
+媒 0 ㄇㄟˊ
+莓 0 ㄇㄟˊ
+霉 0 ㄇㄟˊ
+玫 0 ㄇㄟˊ
+黴 0 ㄇㄟˊ
+酶 0 ㄇㄟˊ
+楣 0 ㄇㄟˊ
+湄 0 ㄇㄟˊ
+嵋 0 ㄇㄟˊ
+苺 0 ㄇㄟˊ
+禖 0 ㄇㄟˊ
+郿 0 ㄇㄟˊ
+堳 0 ㄇㄟˊ
+瑂 0 ㄇㄟˊ
+脢 0 ㄇㄟˊ
+鋂 0 ㄇㄟˊ
+呅 0 ㄇㄟˊ
+腜 0 ㄇㄟˊ
+塺 0 ㄇㄟˊ
+徾 0 ㄇㄟˊ
+攗 0 ㄇㄟˊ
+糜 0 ㄇㄟˊ
+没 0 ㄇㄟˊ
+脄 0 ㄇㄟˊ
+珻 0 ㄇㄟˊ
+湈 0 ㄇㄟˊ
+猸 0 ㄇㄟˊ
+睂 0 ㄇㄟˊ
+楳 0 ㄇㄟˊ
+葿 0 ㄇㄟˊ
+槑 0 ㄇㄟˊ
+䉠 0 ㄇㄟˊ
+鶥 0 ㄇㄟˊ
+𪑛 0 ㄇㄟˊ
+妹 0 ㄇㄟ˙
+悶 0 ㄇㄣ
+燜 0 ㄇㄣ
+暪 0 ㄇㄣˇ
+悶 0 ㄇㄣˋ
+燜 0 ㄇㄣˋ
+懣 0 ㄇㄣˋ
+門 0 ㄇㄣˊ
+們 0 ㄇㄣˊ
+捫 0 ㄇㄣˊ
+樠 0 ㄇㄣˊ
+鍆 0 ㄇㄣˊ
+穈 0 ㄇㄣˊ
+菛 0 ㄇㄣˊ
+亹 0 ㄇㄣˊ
+虋 0 ㄇㄣˊ
+璊 0 ㄇㄣˊ
+斖 0 ㄇㄣˊ
+玧 0 ㄇㄣˊ
+閅 0 ㄇㄣˊ
+㻊 0 ㄇㄣˊ
+們 0 ㄇㄣ˙
+咪 0 ㄇㄧ
+瞇 0 ㄇㄧ
+咩 0 ㄇㄧㄝ
+乜 0 ㄇㄧㄝ
+羋 0 ㄇㄧㄝ
+滅 0 ㄇㄧㄝˋ
+蔑 0 ㄇㄧㄝˋ
+衊 0 ㄇㄧㄝˋ
+篾 0 ㄇㄧㄝˋ
+蠛 0 ㄇㄧㄝˋ
+幭 0 ㄇㄧㄝˋ
+覕 0 ㄇㄧㄝˋ
+搣 0 ㄇㄧㄝˋ
+薎 0 ㄇㄧㄝˋ
+懱 0 ㄇㄧㄝˋ
+瀎 0 ㄇㄧㄝˋ
+礣 0 ㄇㄧㄝˋ
+鱴 0 ㄇㄧㄝˋ
+烕 0 ㄇㄧㄝˋ
+鴓 0 ㄇㄧㄝˋ
+櫗 0 ㄇㄧㄝˋ
+鑖 0 ㄇㄧㄝˋ
+眜 0 ㄇㄧㄝˋ
+唒 0 ㄇㄧㄡ
+謬 0 ㄇㄧㄡˋ
+繆 0 ㄇㄧㄡˋ
+摎 0 ㄇㄧㄡˋ
+眳 0 ㄇㄧㄥˇ
+姳 0 ㄇㄧㄥˇ
+慏 0 ㄇㄧㄥˇ
+皿 0 ㄇㄧㄥˇ
+茗 0 ㄇㄧㄥˇ
+酩 0 ㄇㄧㄥˇ
+瞑 0 ㄇㄧㄥˇ
+佲 0 ㄇㄧㄥˇ
+凕 0 ㄇㄧㄥˇ
+命 0 ㄇㄧㄥˋ
+暝 0 ㄇㄧㄥˋ
+詺 0 ㄇㄧㄥˋ
+明 0 ㄇㄧㄥˊ
+名 0 ㄇㄧㄥˊ
+鳴 0 ㄇㄧㄥˊ
+銘 0 ㄇㄧㄥˊ
+螟 0 ㄇㄧㄥˊ
+冥 0 ㄇㄧㄥˊ
+瞑 0 ㄇㄧㄥˊ
+暝 0 ㄇㄧㄥˊ
+茗 0 ㄇㄧㄥˊ
+酩 0 ㄇㄧㄥˊ
+溟 0 ㄇㄧㄥˊ
+蓂 0 ㄇㄧㄥˊ
+鄍 0 ㄇㄧㄥˊ
+洺 0 ㄇㄧㄥˊ
+榠 0 ㄇㄧㄥˊ
+嫇 0 ㄇㄧㄥˊ
+覭 0 ㄇㄧㄥˊ
+詺 0 ㄇㄧㄥˊ
+熐 0 ㄇㄧㄥˊ
+萌 0 ㄇㄧㄥˊ
+盟 0 ㄇㄧㄥˊ
+眳 0 ㄇㄧㄥˊ
+佲 0 ㄇㄧㄥˊ
+朙 0 ㄇㄧㄥˊ
+眀 0 ㄇㄧㄥˊ
+䫤 0 ㄇㄧㄥˊ
+猽 0 ㄇㄧㄥˊ
+免 0 ㄇㄧㄢˇ
+勉 0 ㄇㄧㄢˇ
+緬 0 ㄇㄧㄢˇ
+冕 0 ㄇㄧㄢˇ
+娩 0 ㄇㄧㄢˇ
+靦 0 ㄇㄧㄢˇ
+湎 0 ㄇㄧㄢˇ
+沔 0 ㄇㄧㄢˇ
+偭 0 ㄇㄧㄢˇ
+眄 0 ㄇㄧㄢˇ
+絻 0 ㄇㄧㄢˇ
+丏 0 ㄇㄧㄢˇ
+俛 0 ㄇㄧㄢˇ
+愐 0 ㄇㄧㄢˇ
+喕 0 ㄇㄧㄢˇ
+鮸 0 ㄇㄧㄢˇ
+浼 0 ㄇㄧㄢˇ
+脕 0 ㄇㄧㄢˇ
+媔 0 ㄇㄧㄢˇ
+葂 0 ㄇㄧㄢˇ
+汅 0 ㄇㄧㄢˇ
+凂 0 ㄇㄧㄢˇ
+㝃 0 ㄇㄧㄢˇ
+勔 0 ㄇㄧㄢˇ
+覥 0 ㄇㄧㄢˇ
+鰵 0 ㄇㄧㄢˇ
+厸 0 ㄇㄧㄢˇ
+莬 0 ㄇㄧㄢˇ
+㨠 0 ㄇㄧㄢˇ
+矊 0 ㄇㄧㄢˇ
+面 0 ㄇㄧㄢˋ
+麵 0 ㄇㄧㄢˋ
+瞑 0 ㄇㄧㄢˋ
+靣 0 ㄇㄧㄢˋ
+牑 0 ㄇㄧㄢˋ
+糆 0 ㄇㄧㄢˋ
+麫 0 ㄇㄧㄢˋ
+麪 0 ㄇㄧㄢˋ
+棉 0 ㄇㄧㄢˊ
+綿 0 ㄇㄧㄢˊ
+眠 0 ㄇㄧㄢˊ
+媔 0 ㄇㄧㄢˊ
+婂 0 ㄇㄧㄢˊ
+蝒 0 ㄇㄧㄢˊ
+櫋 0 ㄇㄧㄢˊ
+矊 0 ㄇㄧㄢˊ
+矏 0 ㄇㄧㄢˊ
+宀 0 ㄇㄧㄢˊ
+緜 0 ㄇㄧㄢˊ
+嬵 0 ㄇㄧㄢˊ
+檰 0 ㄇㄧㄢˊ
+芇 0 ㄇㄧㄢˊ
+臱 0 ㄇㄧㄢˊ
+米 0 ㄇㄧˇ
+靡 0 ㄇㄧˇ
+弭 0 ㄇㄧˇ
+敉 0 ㄇㄧˇ
+眯 0 ㄇㄧˇ
+銤 0 ㄇㄧˇ
+渳 0 ㄇㄧˇ
+葞 0 ㄇㄧˇ
+蔝 0 ㄇㄧˇ
+濔 0 ㄇㄧˇ
+灖 0 ㄇㄧˇ
+羋 0 ㄇㄧˇ
+彌 0 ㄇㄧˇ
+糜 0 ㄇㄧˇ
+麋 0 ㄇㄧˇ
+瀰 0 ㄇㄧˇ
+蝆 0 ㄇㄧˇ
+縻 0 ㄇㄧˇ
+獼 0 ㄇㄧˇ
+蘼 0 ㄇㄧˇ
+侎 0 ㄇㄧˇ
+弥 0 ㄇㄧˇ
+洣 0 ㄇㄧˇ
+眫 0 ㄇㄧˇ
+孊 0 ㄇㄧˇ
+猕 0 ㄇㄧˇ
+㝥 0 ㄇㄧˇ
+密 0 ㄇㄧˋ
+蜜 0 ㄇㄧˋ
+秘 0 ㄇㄧˋ
+祕 0 ㄇㄧˋ
+覓 0 ㄇㄧˋ
+泌 0 ㄇㄧˋ
+汨 0 ㄇㄧˋ
+謐 0 ㄇㄧˋ
+宓 0 ㄇㄧˋ
+冪 0 ㄇㄧˋ
+塓 0 ㄇㄧˋ
+幦 0 ㄇㄧˋ
+鼏 0 ㄇㄧˋ
+羃 0 ㄇㄧˋ
+幎 0 ㄇㄧˋ
+漞 0 ㄇㄧˋ
+糸 0 ㄇㄧˋ
+峚 0 ㄇㄧˋ
+榓 0 ㄇㄧˋ
+滵 0 ㄇㄧˋ
+蔤 0 ㄇㄧˋ
+蠠 0 ㄇㄧˋ
+嘧 0 ㄇㄧˋ
+日 0 ㄇㄧˋ
+謎 0 ㄇㄧˋ
+冖 0 ㄇㄧˋ
+囸 0 ㄇㄧˋ
+宻 0 ㄇㄧˋ
+淧 0 ㄇㄧˋ
+覔 0 ㄇㄧˋ
+幂 0 ㄇㄧˋ
+詸 0 ㄇㄧˋ
+樒 0 ㄇㄧˋ
+濗 0 ㄇㄧˋ
+櫁 0 ㄇㄧˋ
+藌 0 ㄇㄧˋ
+鑖 0 ㄇㄧˋ
+迷 0 ㄇㄧˊ
+彌 0 ㄇㄧˊ
+謎 0 ㄇㄧˊ
+瀰 0 ㄇㄧˊ
+靡 0 ㄇㄧˊ
+糜 0 ㄇㄧˊ
+麋 0 ㄇㄧˊ
+縻 0 ㄇㄧˊ
+獼 0 ㄇㄧˊ
+蘼 0 ㄇㄧˊ
+冞 0 ㄇㄧˊ
+麛 0 ㄇㄧˊ
+醚 0 ㄇㄧˊ
+醾 0 ㄇㄧˊ
+檷 0 ㄇㄧˊ
+蘪 0 ㄇㄧˊ
+攠 0 ㄇㄧˊ
+瓕 0 ㄇㄧˊ
+爢 0 ㄇㄧˊ
+麊 0 ㄇㄧˊ
+鸍 0 ㄇㄧˊ
+獮 0 ㄇㄧˊ
+禰 0 ㄇㄧˊ
+弥 0 ㄇㄧˊ
+怽 0 ㄇㄧˊ
+罙 0 ㄇㄧˊ
+祢 0 ㄇㄧˊ
+詸 0 ㄇㄧˊ
+擟 0 ㄇㄧˊ
+籋 0 ㄇㄧˊ
+戂 0 ㄇㄧˊ
+醿 0 ㄇㄧˊ
+釄 0 ㄇㄧˊ
+猕 0 ㄇㄧˊ
+蒾 0 ㄇㄧˊ
+镾 0 ㄇㄧˊ
+狝 0 ㄇㄧˊ
+喵 0 ㄇㄧㄠ
+秒 0 ㄇㄧㄠˇ
+渺 0 ㄇㄧㄠˇ
+藐 0 ㄇㄧㄠˇ
+邈 0 ㄇㄧㄠˇ
+緲 0 ㄇㄧㄠˇ
+杳 0 ㄇㄧㄠˇ
+眇 0 ㄇㄧㄠˇ
+淼 0 ㄇㄧㄠˇ
+杪 0 ㄇㄧㄠˇ
+篎 0 ㄇㄧㄠˇ
+沓 0 ㄇㄧㄠˇ
+仦 0 ㄇㄧㄠˇ
+仯 0 ㄇㄧㄠˇ
+劰 0 ㄇㄧㄠˇ
+妙 0 ㄇㄧㄠˋ
+廟 0 ㄇㄧㄠˋ
+繆 0 ㄇㄧㄠˋ
+玅 0 ㄇㄧㄠˋ
+謬 0 ㄇㄧㄠˋ
+庙 0 ㄇㄧㄠˋ
+庿 0 ㄇㄧㄠˋ
+苗 0 ㄇㄧㄠˊ
+描 0 ㄇㄧㄠˊ
+瞄 0 ㄇㄧㄠˊ
+鱙 0 ㄇㄧㄠˊ
+錨 0 ㄇㄧㄠˊ
+媌 0 ㄇㄧㄠˊ
+㑤 0 ㄇㄧㄠˊ
+㚹 0 ㄇㄧㄠˊ
+鶓 0 ㄇㄧㄠˊ
+敏 0 ㄇㄧㄣˇ
+憫 0 ㄇㄧㄣˇ
+閔 0 ㄇㄧㄣˇ
+閩 0 ㄇㄧㄣˇ
+抿 0 ㄇㄧㄣˇ
+泯 0 ㄇㄧㄣˇ
+皿 0 ㄇㄧㄣˇ
+湣 0 ㄇㄧㄣˇ
+愍 0 ㄇㄧㄣˇ
+黽 0 ㄇㄧㄣˇ
+澠 0 ㄇㄧㄣˇ
+笢 0 ㄇㄧㄣˇ
+敃 0 ㄇㄧㄣˇ
+刡 0 ㄇㄧㄣˇ
+僶 0 ㄇㄧㄣˇ
+簢 0 ㄇㄧㄣˇ
+敯 0 ㄇㄧㄣˇ
+潣 0 ㄇㄧㄣˇ
+怋 0 ㄇㄧㄣˇ
+暋 0 ㄇㄧㄣˇ
+黾 0 ㄇㄧㄣˇ
+勄 0 ㄇㄧㄣˇ
+慜 0 ㄇㄧㄣˇ
+冺 0 ㄇㄧㄣˇ
+㥸 0 ㄇㄧㄣˇ
+𧁋 0 ㄇㄧㄣˇ
+民 0 ㄇㄧㄣˊ
+岷 0 ㄇㄧㄣˊ
+玟 0 ㄇㄧㄣˊ
+緡 0 ㄇㄧㄣˊ
+痻 0 ㄇㄧㄣˊ
+苠 0 ㄇㄧㄣˊ
+忞 0 ㄇㄧㄣˊ
+旻 0 ㄇㄧㄣˊ
+鈱 0 ㄇㄧㄣˊ
+旼 0 ㄇㄧㄣˊ
+錉 0 ㄇㄧㄣˊ
+罠 0 ㄇㄧㄣˊ
+閺 0 ㄇㄧㄣˊ
+怋 0 ㄇㄧㄣˊ
+崏 0 ㄇㄧㄣˊ
+暋 0 ㄇㄧㄣˊ
+泯 0 ㄇㄧㄣˊ
+閔 0 ㄇㄧㄣˊ
+閩 0 ㄇㄧㄣˊ
+呡 0 ㄇㄧㄣˊ
+睯 0 ㄇㄧㄣˊ
+忟 0 ㄇㄧㄣˊ
+姄 0 ㄇㄧㄣˊ
+珉 0 ㄇㄧㄣˊ
+盿 0 ㄇㄧㄣˊ
+砇 0 ㄇㄧㄣˊ
+捪 0 ㄇㄧㄣˊ
+琘 0 ㄇㄧㄣˊ
+瑉 0 ㄇㄧㄣˊ
+碈 0 ㄇㄧㄣˊ
+緍 0 ㄇㄧㄣˊ
+䪸 0 ㄇㄧㄣˊ
+賯 0 ㄇㄧㄣˊ
+鍲 0 ㄇㄧㄣˊ
+冺 0 ㄇㄧㄣˊ
+ㄖ 0 ㄖ
+糅 0 ㄖㄡˇ
+鍕 0 ㄖㄡˇ
+粈 0 ㄖㄡˇ
+煣 0 ㄖㄡˇ
+韖 0 ㄖㄡˇ
+肉 0 ㄖㄡˋ
+月 0 ㄖㄡˋ
+宍 0 ㄖㄡˋ
+柔 0 ㄖㄡˊ
+揉 0 ㄖㄡˊ
+韖 0 ㄖㄡˊ
+蹂 0 ㄖㄡˊ
+輮 0 ㄖㄡˊ
+楺 0 ㄖㄡˊ
+禸 0 ㄖㄡˊ
+葇 0 ㄖㄡˊ
+鍒 0 ㄖㄡˊ
+鞣 0 ㄖㄡˊ
+鶔 0 ㄖㄡˊ
+媃 0 ㄖㄡˊ
+蝚 0 ㄖㄡˊ
+鰇 0 ㄖㄡˊ
+厹 0 ㄖㄡˊ
+煣 0 ㄖㄡˊ
+糅 0 ㄖㄡˊ
+㕤 0 ㄖㄡˊ
+叴 0 ㄖㄡˊ
+渘 0 ㄖㄡˊ
+瑈 0 ㄖㄡˊ
+腬 0 ㄖㄡˊ
+䐓 0 ㄖㄡˊ
+瓇 0 ㄖㄡˊ
+脜 0 ㄖㄡˊ
+扔 0 ㄖㄥ
+仍 0 ㄖㄥ
+扔 0 ㄖㄥˇ
+扔 0 ㄖㄥˋ
+芿 0 ㄖㄥˋ
+仍 0 ㄖㄥˊ
+礽 0 ㄖㄥˊ
+陾 0 ㄖㄥˊ
+扔 0 ㄖㄥˊ
+艿 0 ㄖㄥˊ
+㺱 0 ㄖㄥˊ
+辸 0 ㄖㄥˊ
+嚷 0 ㄖㄤ
+嚷 0 ㄖㄤˇ
+壤 0 ㄖㄤˇ
+攘 0 ㄖㄤˇ
+爙 0 ㄖㄤˇ
+穰 0 ㄖㄤˇ
+蠰 0 ㄖㄤˇ
+躟 0 ㄖㄤˇ
+讓 0 ㄖㄤˋ
+懹 0 ㄖㄤˋ
+誏 0 ㄖㄤˋ
+瀼 0 ㄖㄤˋ
+攘 0 ㄖㄤˊ
+禳 0 ㄖㄤˊ
+穰 0 ㄖㄤˊ
+勷 0 ㄖㄤˊ
+瀼 0 ㄖㄤˊ
+瓤 0 ㄖㄤˊ
+儴 0 ㄖㄤˊ
+獽 0 ㄖㄤˊ
+蘘 0 ㄖㄤˊ
+鬤 0 ㄖㄤˊ
+染 0 ㄖㄢˇ
+冉 0 ㄖㄢˇ
+髯 0 ㄖㄢˇ
+苒 0 ㄖㄢˇ
+珃 0 ㄖㄢˇ
+橪 0 ㄖㄢˇ
+呥 0 ㄖㄢˇ
+姌 0 ㄖㄢˇ
+嫨 0 ㄖㄢˇ
+聃 0 ㄖㄢˇ
+冄 0 ㄖㄢˇ
+耼 0 ㄖㄢˇ
+媣 0 ㄖㄢˇ
+蹨 0 ㄖㄢˇ
+然 0 ㄖㄢˊ
+燃 0 ㄖㄢˊ
+髯 0 ㄖㄢˊ
+蛅 0 ㄖㄢˊ
+蚺 0 ㄖㄢˊ
+袡 0 ㄖㄢˊ
+呥 0 ㄖㄢˊ
+舑 0 ㄖㄢˊ
+肰 0 ㄖㄢˊ
+蚦 0 ㄖㄢˊ
+衻 0 ㄖㄢˊ
+髥 0 ㄖㄢˊ
+嘫 0 ㄖㄢˊ
+䔳 0 ㄖㄢˊ
+繎 0 ㄖㄢˊ
+日 0 ㄖˋ
+衵 0 ㄖˋ
+馹 0 ㄖˋ
+鈤 0 ㄖˋ
+入 0 ㄖˋ
+囸 0 ㄖˋ
+釰 0 ㄖˋ
+冗 0 ㄖㄨㄥˇ
+茸 0 ㄖㄨㄥˇ
+氄 0 ㄖㄨㄥˇ
+傇 0 ㄖㄨㄥˇ
+軵 0 ㄖㄨㄥˇ
+宂 0 ㄖㄨㄥˇ
+坈 0 ㄖㄨㄥˇ
+搑 0 ㄖㄨㄥˇ
+縙 0 ㄖㄨㄥˇ
+𢫨 0 ㄖㄨㄥˇ
+縙 0 ㄖㄨㄥˋ
+容 0 ㄖㄨㄥˊ
+榮 0 ㄖㄨㄥˊ
+融 0 ㄖㄨㄥˊ
+溶 0 ㄖㄨㄥˊ
+絨 0 ㄖㄨㄥˊ
+熔 0 ㄖㄨㄥˊ
+戎 0 ㄖㄨㄥˊ
+蓉 0 ㄖㄨㄥˊ
+鎔 0 ㄖㄨㄥˊ
+茸 0 ㄖㄨㄥˊ
+榕 0 ㄖㄨㄥˊ
+羢 0 ㄖㄨㄥˊ
+嶸 0 ㄖㄨㄥˊ
+瑢 0 ㄖㄨㄥˊ
+肜 0 ㄖㄨㄥˊ
+毧 0 ㄖㄨㄥˊ
+狨 0 ㄖㄨㄥˊ
+瀜 0 ㄖㄨㄥˊ
+茙 0 ㄖㄨㄥˊ
+烿 0 ㄖㄨㄥˊ
+蠑 0 ㄖㄨㄥˊ
+爃 0 ㄖㄨㄥˊ
+媶 0 ㄖㄨㄥˊ
+榵 0 ㄖㄨㄥˊ
+褣 0 ㄖㄨㄥˊ
+駥 0 ㄖㄨㄥˊ
+髶 0 ㄖㄨㄥˊ
+鰫 0 ㄖㄨㄥˊ
+鷛 0 ㄖㄨㄥˊ
+頌 0 ㄖㄨㄥˊ
+娀 0 ㄖㄨㄥˊ
+傛 0 ㄖㄨㄥˊ
+軵 0 ㄖㄨㄥˊ
+嵱 0 ㄖㄨㄥˊ
+葺 0 ㄖㄨㄥˊ
+濴 0 ㄖㄨㄥˊ
+鑅 0 ㄖㄨㄥˊ
+荣 0 ㄖㄨㄥˊ
+峵 0 ㄖㄨㄥˊ
+䇯 0 ㄖㄨㄥˊ
+搑 0 ㄖㄨㄥˊ
+穁 0 ㄖㄨㄥˊ
+縙 0 ㄖㄨㄥˊ
+螎 0 ㄖㄨㄥˊ
+嬫 0 ㄖㄨㄥˊ
+濚 0 ㄖㄨㄥˊ
+曧 0 ㄖㄨㄥˊ
+鱅 0 ㄖㄨㄥˊ
+𪃾 0 ㄖㄨㄥˊ
+栄 0 ㄖㄨㄥˊ
+軟 0 ㄖㄨㄢˇ
+阮 0 ㄖㄨㄢˇ
+蠕 0 ㄖㄨㄢˇ
+耎 0 ㄖㄨㄢˇ
+蝡 0 ㄖㄨㄢˇ
+瓀 0 ㄖㄨㄢˇ
+緛 0 ㄖㄨㄢˇ
+礝 0 ㄖㄨㄢˇ
+朊 0 ㄖㄨㄢˇ
+卵 0 ㄖㄨㄢˇ
+需 0 ㄖㄨㄢˇ
+堧 0 ㄖㄨㄢˇ
+偄 0 ㄖㄨㄢˇ
+媆 0 ㄖㄨㄢˇ
+瑌 0 ㄖㄨㄢˇ
+腝 0 ㄖㄨㄢˇ
+輭 0 ㄖㄨㄢˇ
+㮕 0 ㄖㄨㄢˇ
+䓴 0 ㄖㄨㄢˇ
+碝 0 ㄖㄨㄢˇ
+堧 0 ㄖㄨㄢˊ
+壖 0 ㄖㄨㄢˊ
+撋 0 ㄖㄨㄢˊ
+乳 0 ㄖㄨˇ
+汝 0 ㄖㄨˇ
+辱 0 ㄖㄨˇ
+擩 0 ㄖㄨˇ
+女 0 ㄖㄨˇ
+侞 0 ㄖㄨˇ
+入 0 ㄖㄨˇ
+儒 0 ㄖㄨˇ
+肗 0 ㄖㄨˇ
+㨎 0 ㄖㄨˇ
+入 0 ㄖㄨˋ
+辱 0 ㄖㄨˋ
+褥 0 ㄖㄨˋ
+孺 0 ㄖㄨˋ
+茹 0 ㄖㄨˋ
+洳 0 ㄖㄨˋ
+縟 0 ㄖㄨˋ
+蓐 0 ㄖㄨˋ
+溽 0 ㄖㄨˋ
+鄏 0 ㄖㄨˋ
+媷 0 ㄖㄨˋ
+嗕 0 ㄖㄨˋ
+肉 0 ㄖㄨˋ
+耨 0 ㄖㄨˋ
+銣 0 ㄖㄨˋ
+擩 0 ㄖㄨˋ
+宍 0 ㄖㄨˋ
+傉 0 ㄖㄨˋ
+如 0 ㄖㄨˊ
+儒 0 ㄖㄨˊ
+孺 0 ㄖㄨˊ
+茹 0 ㄖㄨˊ
+蠕 0 ㄖㄨˊ
+嚅 0 ㄖㄨˊ
+濡 0 ㄖㄨˊ
+袽 0 ㄖㄨˊ
+襦 0 ㄖㄨˊ
+鴽 0 ㄖㄨˊ
+筎 0 ㄖㄨˊ
+臑 0 ㄖㄨˊ
+醹 0 ㄖㄨˊ
+挐 0 ㄖㄨˊ
+薷 0 ㄖㄨˊ
+銣 0 ㄖㄨˊ
+曘 0 ㄖㄨˊ
+燸 0 ㄖㄨˊ
+帤 0 ㄖㄨˊ
+蕠 0 ㄖㄨˊ
+需 0 ㄖㄨˊ
+懦 0 ㄖㄨˊ
+侞 0 ㄖㄨˊ
+洳 0 ㄖㄨˊ
+蒘 0 ㄖㄨˊ
+蝡 0 ㄖㄨˊ
+壖 0 ㄖㄨˊ
+嬬 0 ㄖㄨˊ
+擩 0 ㄖㄨˊ
+檽 0 ㄖㄨˊ
+瓀 0 ㄖㄨˊ
+繻 0 ㄖㄨˊ
+邚 0 ㄖㄨˊ
+桇 0 ㄖㄨˊ
+偄 0 ㄖㄨˊ
+愞 0 ㄖㄨˊ
+渪 0 ㄖㄨˊ
+瑌 0 ㄖㄨˊ
+顬 0 ㄖㄨˊ
+鱬 0 ㄖㄨˊ
+鴑 0 ㄖㄨˊ
+鑐 0 ㄖㄨˊ
+若 0 ㄖㄨㄛˋ
+弱 0 ㄖㄨㄛˋ
+箬 0 ㄖㄨㄛˋ
+偌 0 ㄖㄨㄛˋ
+爇 0 ㄖㄨㄛˋ
+鄀 0 ㄖㄨㄛˋ
+篛 0 ㄖㄨㄛˋ
+蒻 0 ㄖㄨㄛˋ
+楉 0 ㄖㄨㄛˋ
+鶸 0 ㄖㄨㄛˋ
+婼 0 ㄖㄨㄛˋ
+渃 0 ㄖㄨㄛˋ
+搦 0 ㄖㄨㄛˋ
+叒 0 ㄖㄨㄛˋ
+掿 0 ㄖㄨㄛˋ
+焫 0 ㄖㄨㄛˋ
+搻 0 ㄖㄨㄛˋ
+蕊 0 ㄖㄨㄟˇ
+橤 0 ㄖㄨㄟˇ
+繠 0 ㄖㄨㄟˇ
+惢 0 ㄖㄨㄟˇ
+桵 0 ㄖㄨㄟˇ
+蕋 0 ㄖㄨㄟˇ
+蘂 0 ㄖㄨㄟˇ
+蘃 0 ㄖㄨㄟˇ
+瑞 0 ㄖㄨㄟˋ
+銳 0 ㄖㄨㄟˋ
+芮 0 ㄖㄨㄟˋ
+睿 0 ㄖㄨㄟˋ
+蚋 0 ㄖㄨㄟˋ
+叡 0 ㄖㄨㄟˋ
+枘 0 ㄖㄨㄟˋ
+汭 0 ㄖㄨㄟˋ
+壑 0 ㄖㄨㄟˋ
+濬 0 ㄖㄨㄟˋ
+㕡 0 ㄖㄨㄟˋ
+蜹 0 ㄖㄨㄟˋ
+鋭 0 ㄖㄨㄟˋ
+𤀹 0 ㄖㄨㄟˋ
+㪫 0 ㄖㄨㄟˋ
+䄲 0 ㄖㄨㄟˋ
+𨧨 0 ㄖㄨㄟˋ
+壡 0 ㄖㄨㄟˋ
+蕤 0 ㄖㄨㄟˊ
+緌 0 ㄖㄨㄟˊ
+婑 0 ㄖㄨㄟˊ
+甤 0 ㄖㄨㄟˊ
+䬐 0 ㄖㄨㄟˊ
+犉 0 ㄖㄨㄣ
+潤 0 ㄖㄨㄣˋ
+閏 0 ㄖㄨㄣˋ
+橍 0 ㄖㄨㄣˋ
+撋 0 ㄖㄨㄣˋ
+犉 0 ㄖㄨㄣˊ
+惹 0 ㄖㄜˇ
+喏 0 ㄖㄜˇ
+若 0 ㄖㄜˇ
+叒 0 ㄖㄜˇ
+熱 0 ㄖㄜˋ
+渃 0 ㄖㄜˋ
+爇 0 ㄖㄜˋ
+焫 0 ㄖㄜˋ
+擾 0 ㄖㄠˇ
+嬈 0 ㄖㄠˇ
+撓 0 ㄖㄠˇ
+遶 0 ㄖㄠˇ
+繞 0 ㄖㄠˋ
+遶 0 ㄖㄠˋ
+隢 0 ㄖㄠˋ
+饒 0 ㄖㄠˊ
+蕘 0 ㄖㄠˊ
+嬈 0 ㄖㄠˊ
+橈 0 ㄖㄠˊ
+蟯 0 ㄖㄠˊ
+襓 0 ㄖㄠˊ
+撓 0 ㄖㄠˊ
+鐃 0 ㄖㄠˊ
+驍 0 ㄖㄠˊ
+忍 0 ㄖㄣˇ
+稔 0 ㄖㄣˇ
+荏 0 ㄖㄣˇ
+腍 0 ㄖㄣˇ
+棯 0 ㄖㄣˇ
+栠 0 ㄖㄣˇ
+荵 0 ㄖㄣˇ
+栣 0 ㄖㄣˇ
+秹 0 ㄖㄣˇ
+菍 0 ㄖㄣˇ
+䏰 0 ㄖㄣˇ
+任 0 ㄖㄣˋ
+認 0 ㄖㄣˋ
+刃 0 ㄖㄣˋ
+飪 0 ㄖㄣˋ
+賃 0 ㄖㄣˋ
+軔 0 ㄖㄣˋ
+衽 0 ㄖㄣˋ
+紉 0 ㄖㄣˋ
+妊 0 ㄖㄣˋ
+恁 0 ㄖㄣˋ
+仞 0 ㄖㄣˋ
+訒 0 ㄖㄣˋ
+韌 0 ㄖㄣˋ
+牣 0 ㄖㄣˋ
+鵀 0 ㄖㄣˋ
+屻 0 ㄖㄣˋ
+肕 0 ㄖㄣˋ
+軠 0 ㄖㄣˋ
+壬 0 ㄖㄣˋ
+紝 0 ㄖㄣˋ
+葚 0 ㄖㄣˋ
+銋 0 ㄖㄣˋ
+刄 0 ㄖㄣˋ
+忹 0 ㄖㄣˋ
+杒 0 ㄖㄣˋ
+姙 0 ㄖㄣˋ
+梕 0 ㄖㄣˋ
+絍 0 ㄖㄣˋ
+袵 0 ㄖㄣˋ
+鈓 0 ㄖㄣˋ
+靭 0 ㄖㄣˋ
+餁 0 ㄖㄣˋ
+人 0 ㄖㄣˊ
+任 0 ㄖㄣˊ
+仁 0 ㄖㄣˊ
+壬 0 ㄖㄣˊ
+紝 0 ㄖㄣˊ
+儿 0 ㄖㄣˊ
+芢 0 ㄖㄣˊ
+銋 0 ㄖㄣˊ
+妊 0 ㄖㄣˊ
+軠 0 ㄖㄣˊ
+鵀 0 ㄖㄣˊ
+朲 0 ㄖㄣˊ
+忎 0 ㄖㄣˊ
+姙 0 ㄖㄣˊ
+絍 0 ㄖㄣˊ
+鈓 0 ㄖㄣˊ
+忈 0 ㄖㄣˊ
+秂 0 ㄖㄣˊ
+魜 0 ㄖㄣˊ
+ㄏ 0 ㄏ
+齁 0 ㄏㄡ
+呴 0 ㄏㄡ
+吼 0 ㄏㄡˇ
+呍 0 ㄏㄡˇ
+犼 0 ㄏㄡˇ
+㸸 0 ㄏㄡˇ
+後 0 ㄏㄡˋ
+候 0 ㄏㄡˋ
+厚 0 ㄏㄡˋ
+后 0 ㄏㄡˋ
+逅 0 ㄏㄡˋ
+鱟 0 ㄏㄡˋ
+垕 0 ㄏㄡˋ
+堠 0 ㄏㄡˋ
+郈 0 ㄏㄡˋ
+鄇 0 ㄏㄡˋ
+缿 0 ㄏㄡˋ
+洉 0 ㄏㄡˋ
+姤 0 ㄏㄡˋ
+葔 0 ㄏㄡˋ
+銗 0 ㄏㄡˋ
+緱 0 ㄏㄡˋ
+翭 0 ㄏㄡˋ
+鯸 0 ㄏㄡˋ
+豞 0 ㄏㄡˋ
+睺 0 ㄏㄡˋ
+𢔏 0 ㄏㄡˋ
+鮜 0 ㄏㄡˋ
+猴 0 ㄏㄡˊ
+侯 0 ㄏㄡˊ
+喉 0 ㄏㄡˊ
+篌 0 ㄏㄡˊ
+鍭 0 ㄏㄡˊ
+餱 0 ㄏㄡˊ
+瘊 0 ㄏㄡˊ
+銗 0 ㄏㄡˊ
+翭 0 ㄏㄡˊ
+鯸 0 ㄏㄡˊ
+葔 0 ㄏㄡˊ
+堠 0 ㄏㄡˊ
+鄇 0 ㄏㄡˊ
+緱 0 ㄏㄡˊ
+翵 0 ㄏㄡˊ
+矦 0 ㄏㄡˊ
+睺 0 ㄏㄡˊ
+糇 0 ㄏㄡˊ
+㤧 0 ㄏㄡˊ
+骺 0 ㄏㄡˊ
+帿 0 ㄏㄡˊ
+候 0 ㄏㄡ˙
+亨 0 ㄏㄥ
+哼 0 ㄏㄥ
+脝 0 ㄏㄥ
+諻 0 ㄏㄥ
+悙 0 ㄏㄥ
+橫 0 ㄏㄥˋ
+啈 0 ㄏㄥˋ
+澋 0 ㄏㄥˋ
+絎 0 ㄏㄥˋ
+撔 0 ㄏㄥˋ
+横 0 ㄏㄥˋ
+橫 0 ㄏㄥˊ
+恆 0 ㄏㄥˊ
+衡 0 ㄏㄥˊ
+恒 0 ㄏㄥˊ
+珩 0 ㄏㄥˊ
+蘅 0 ㄏㄥˊ
+桁 0 ㄏㄥˊ
+鴴 0 ㄏㄥˊ
+姮 0 ㄏㄥˊ
+鑅 0 ㄏㄥˊ
+楻 0 ㄏㄥˊ
+誙 0 ㄏㄥˊ
+諻 0 ㄏㄥˊ
+揘 0 ㄏㄥˊ
+佷 0 ㄏㄥˊ
+亨 0 ㄏㄥˊ
+韹 0 ㄏㄥˊ
+堩 0 ㄏㄥˊ
+揯 0 ㄏㄥˊ
+彉 0 ㄏㄥˊ
+緪 0 ㄏㄥˊ
+絚 0 ㄏㄥˊ
+横 0 ㄏㄥˊ
+彍 0 ㄏㄥˊ
+慌 0 ㄏㄥ˙
+夯 0 ㄏㄤ
+酐 0 ㄏㄤˇ
+行 0 ㄏㄤˋ
+沆 0 ㄏㄤˋ
+桁 0 ㄏㄤˋ
+苀 0 ㄏㄤˋ
+行 0 ㄏㄤˊ
+航 0 ㄏㄤˊ
+杭 0 ㄏㄤˊ
+吭 0 ㄏㄤˊ
+頏 0 ㄏㄤˊ
+桁 0 ㄏㄤˊ
+迒 0 ㄏㄤˊ
+苀 0 ㄏㄤˊ
+肮 0 ㄏㄤˊ
+蚢 0 ㄏㄤˊ
+斻 0 ㄏㄤˊ
+貥 0 ㄏㄤˊ
+雽 0 ㄏㄤˊ
+魧 0 ㄏㄤˊ
+沆 0 ㄏㄤˊ
+胻 0 ㄏㄤˊ
+絎 0 ㄏㄤˊ
+筕 0 ㄏㄤˊ
+䘕 0 ㄏㄤˊ
+𨁈 0 ㄏㄤˊ
+酣 0 ㄏㄢ
+鼾 0 ㄏㄢ
+蚶 0 ㄏㄢ
+憨 0 ㄏㄢ
+頇 0 ㄏㄢ
+魽 0 ㄏㄢ
+唅 0 ㄏㄢ
+甝 0 ㄏㄢ
+谽 0 ㄏㄢ
+嫨 0 ㄏㄢ
+姏 0 ㄏㄢ
+酐 0 ㄏㄢ
+佄 0 ㄏㄢ
+馠 0 ㄏㄢ
+喊 0 ㄏㄢˇ
+罕 0 ㄏㄢˇ
+厂 0 ㄏㄢˇ
+蔊 0 ㄏㄢˇ
+豃 0 ㄏㄢˇ
+嚂 0 ㄏㄢˇ
+闞 0 ㄏㄢˇ
+鬫 0 ㄏㄢˇ
+欦 0 ㄏㄢˇ
+浫 0 ㄏㄢˇ
+㙳 0 ㄏㄢˇ
+㘚 0 ㄏㄢˇ
+厈 0 ㄏㄢˇ
+𣛴 0 ㄏㄢˇ
+和 0 ㄏㄢˋ
+漢 0 ㄏㄢˋ
+汗 0 ㄏㄢˋ
+旱 0 ㄏㄢˋ
+焊 0 ㄏㄢˋ
+憾 0 ㄏㄢˋ
+翰 0 ㄏㄢˋ
+撼 0 ㄏㄢˋ
+悍 0 ㄏㄢˋ
+頷 0 ㄏㄢˋ
+扞 0 ㄏㄢˋ
+瀚 0 ㄏㄢˋ
+閈 0 ㄏㄢˋ
+捍 0 ㄏㄢˋ
+暵 0 ㄏㄢˋ
+熯 0 ㄏㄢˋ
+晥 0 ㄏㄢˋ
+犴 0 ㄏㄢˋ
+睅 0 ㄏㄢˋ
+菡 0 ㄏㄢˋ
+豻 0 ㄏㄢˋ
+銲 0 ㄏㄢˋ
+釬 0 ㄏㄢˋ
+駻 0 ㄏㄢˋ
+哻 0 ㄏㄢˋ
+涆 0 ㄏㄢˋ
+淊 0 ㄏㄢˋ
+馯 0 ㄏㄢˋ
+蜭 0 ㄏㄢˋ
+頜 0 ㄏㄢˋ
+螒 0 ㄏㄢˋ
+顄 0 ㄏㄢˋ
+雗 0 ㄏㄢˋ
+攌 0 ㄏㄢˋ
+譀 0 ㄏㄢˋ
+鋎 0 ㄏㄢˋ
+鶾 0 ㄏㄢˋ
+含 0 ㄏㄢˋ
+感 0 ㄏㄢˋ
+琀 0 ㄏㄢˋ
+筸 0 ㄏㄢˋ
+嫨 0 ㄏㄢˋ
+咊 0 ㄏㄢˋ
+浛 0 ㄏㄢˋ
+猂 0 ㄏㄢˋ
+莟 0 ㄏㄢˋ
+惒 0 ㄏㄢˋ
+皔 0 ㄏㄢˋ
+傼 0 ㄏㄢˋ
+蛿 0 ㄏㄢˋ
+睻 0 ㄏㄢˋ
+澏 0 ㄏㄢˋ
+蘫 0 ㄏㄢˋ
+屽 0 ㄏㄢˋ
+㢨 0 ㄏㄢˋ
+娨 0 ㄏㄢˋ
+晘 0 ㄏㄢˋ
+貋 0 ㄏㄢˋ
+㺖 0 ㄏㄢˋ
+𤳉 0 ㄏㄢˋ
+𦜆 0 ㄏㄢˋ
+寒 0 ㄏㄢˊ
+含 0 ㄏㄢˊ
+函 0 ㄏㄢˊ
+涵 0 ㄏㄢˊ
+韓 0 ㄏㄢˊ
+邯 0 ㄏㄢˊ
+汗 0 ㄏㄢˊ
+邗 0 ㄏㄢˊ
+榦 0 ㄏㄢˊ
+琀 0 ㄏㄢˊ
+梒 0 ㄏㄢˊ
+鋡 0 ㄏㄢˊ
+焓 0 ㄏㄢˊ
+幹 0 ㄏㄢˊ
+箴 0 ㄏㄢˊ
+肣 0 ㄏㄢˊ
+虷 0 ㄏㄢˊ
+唅 0 ㄏㄢˊ
+菡 0 ㄏㄢˊ
+蜬 0 ㄏㄢˊ
+谽 0 ㄏㄢˊ
+顄 0 ㄏㄢˊ
+汵 0 ㄏㄢˊ
+凾 0 ㄏㄢˊ
+圅 0 ㄏㄢˊ
+娢 0 ㄏㄢˊ
+㖤 0 ㄏㄢˊ
+崡 0 ㄏㄢˊ
+晗 0 ㄏㄢˊ
+㮀 0 ㄏㄢˊ
+𢔈 0 ㄏㄢˊ
+哈 0 ㄏㄚ
+鉿 0 ㄏㄚ
+𨉣 0 ㄏㄚ
+哈 0 ㄏㄚˇ
+蛤 0 ㄏㄚˊ
+蝦 0 ㄏㄚˊ
+鰕 0 ㄏㄚˊ
+咳 0 ㄏㄞ
+嗨 0 ㄏㄞ
+咍 0 ㄏㄞ
+欬 0 ㄏㄞ
+海 0 ㄏㄞˇ
+醢 0 ㄏㄞˇ
+烸 0 ㄏㄞˇ
+嗨 0 ㄏㄞˇ
+醯 0 ㄏㄞˇ
+酼 0 ㄏㄞˇ
+害 0 ㄏㄞˋ
+亥 0 ㄏㄞˋ
+駭 0 ㄏㄞˋ
+嗨 0 ㄏㄞˋ
+氦 0 ㄏㄞˋ
+嗐 0 ㄏㄞˋ
+絯 0 ㄏㄞˋ
+餀 0 ㄏㄞˋ
+劾 0 ㄏㄞˋ
+咳 0 ㄏㄞˋ
+賅 0 ㄏㄞˋ
+痎 0 ㄏㄞˋ
+搳 0 ㄏㄞˋ
+犗 0 ㄏㄞˋ
+磍 0 ㄏㄞˋ
+縖 0 ㄏㄞˋ
+螛 0 ㄏㄞˋ
+鶷 0 ㄏㄞˋ
+饚 0 ㄏㄞˋ
+㧡 0 ㄏㄞˋ
+還 0 ㄏㄞˊ
+孩 0 ㄏㄞˊ
+骸 0 ㄏㄞˊ
+頦 0 ㄏㄞˊ
+咳 0 ㄏㄞˊ
+鞋 0 ㄏㄞˊ
+陔 0 ㄏㄞˊ
+豥 0 ㄏㄞˊ
+还 0 ㄏㄞˊ
+畡 0 ㄏㄞˊ
+鞵 0 ㄏㄞˊ
+忽 0 ㄏㄨ
+呼 0 ㄏㄨ
+乎 0 ㄏㄨ
+惚 0 ㄏㄨ
+滹 0 ㄏㄨ
+戲 0 ㄏㄨ
+猢 0 ㄏㄨ
+欻 0 ㄏㄨ
+膴 0 ㄏㄨ
+虖 0 ㄏㄨ
+吰 0 ㄏㄨ
+虍 0 ㄏㄨ
+幠 0 ㄏㄨ
+寣 0 ㄏㄨ
+昒 0 ㄏㄨ
+歑 0 ㄏㄨ
+烼 0 ㄏㄨ
+垀 0 ㄏㄨ
+曶 0 ㄏㄨ
+啒 0 ㄏㄨ
+峘 0 ㄏㄨ
+淴 0 ㄏㄨ
+謼 0 ㄏㄨ
+匢 0 ㄏㄨ
+淲 0 ㄏㄨ
+糊 0 ㄏㄨ
+芴 0 ㄏㄨ
+雽 0 ㄏㄨ
+罅 0 ㄏㄨ
+鏬 0 ㄏㄨ
+戏 0 ㄏㄨ
+泘 0 ㄏㄨ
+苸 0 ㄏㄨ
+唿 0 ㄏㄨ
+軤 0 ㄏㄨ
+嘑 0 ㄏㄨ
+雐 0 ㄏㄨ
+戯 0 ㄏㄨ
+戱 0 ㄏㄨ
+歘 0 ㄏㄨ
+恗 0 ㄏㄨ
+烀 0 ㄏㄨ
+匫 0 ㄏㄨ
+䓤 0 ㄏㄨ
+鍃 0 ㄏㄨ
+虎 0 ㄏㄨ
+轟 0 ㄏㄨㄥ
+哄 0 ㄏㄨㄥ
+烘 0 ㄏㄨㄥ
+薨 0 ㄏㄨㄥ
+訇 0 ㄏㄨㄥ
+吽 0 ㄏㄨㄥ
+揈 0 ㄏㄨㄥ
+渹 0 ㄏㄨㄥ
+哅 0 ㄏㄨㄥ
+輷 0 ㄏㄨㄥ
+谾 0 ㄏㄨㄥ
+鍧 0 ㄏㄨㄥ
+焢 0 ㄏㄨㄥ
+魟 0 ㄏㄨㄥ
+薧 0 ㄏㄨㄥ
+叿 0 ㄏㄨㄥ
+𧥺 0 ㄏㄨㄥ
+𩐠 0 ㄏㄨㄥ
+哄 0 ㄏㄨㄥˇ
+嗊 0 ㄏㄨㄥˇ
+晎 0 ㄏㄨㄥˇ
+鬨 0 ㄏㄨㄥˋ
+汞 0 ㄏㄨㄥˋ
+澒 0 ㄏㄨㄥˋ
+蕻 0 ㄏㄨㄥˋ
+鍙 0 ㄏㄨㄥˋ
+訌 0 ㄏㄨㄥˋ
+澋 0 ㄏㄨㄥˋ
+閧 0 ㄏㄨㄥˋ
+闂 0 ㄏㄨㄥˋ
+紅 0 ㄏㄨㄥˊ
+洪 0 ㄏㄨㄥˊ
+宏 0 ㄏㄨㄥˊ
+鴻 0 ㄏㄨㄥˊ
+虹 0 ㄏㄨㄥˊ
+弘 0 ㄏㄨㄥˊ
+泓 0 ㄏㄨㄥˊ
+訌 0 ㄏㄨㄥˊ
+鋐 0 ㄏㄨㄥˊ
+閎 0 ㄏㄨㄥˊ
+黌 0 ㄏㄨㄥˊ
+竑 0 ㄏㄨㄥˊ
+紘 0 ㄏㄨㄥˊ
+翃 0 ㄏㄨㄥˊ
+浤 0 ㄏㄨㄥˊ
+鞃 0 ㄏㄨㄥˊ
+灴 0 ㄏㄨㄥˊ
+葒 0 ㄏㄨㄥˊ
+耾 0 ㄏㄨㄥˊ
+仜 0 ㄏㄨㄥˊ
+汯 0 ㄏㄨㄥˊ
+竤 0 ㄏㄨㄥˊ
+鈜 0 ㄏㄨㄥˊ
+霟 0 ㄏㄨㄥˊ
+妅 0 ㄏㄨㄥˊ
+玒 0 ㄏㄨㄥˊ
+谹 0 ㄏㄨㄥˊ
+渱 0 ㄏㄨㄥˊ
+舼 0 ㄏㄨㄥˊ
+触 0 ㄏㄨㄥˊ
+谼 0 ㄏㄨㄥˊ
+篊 0 ㄏㄨㄥˊ
+彋 0 ㄏㄨㄥˊ
+瓨 0 ㄏㄨㄥˊ
+苰 0 ㄏㄨㄥˊ
+肱 0 ㄏㄨㄥˊ
+嶸 0 ㄏㄨㄥˊ
+吰 0 ㄏㄨㄥˊ
+羾 0 ㄏㄨㄥˊ
+魟 0 ㄏㄨㄥˊ
+霐 0 ㄏㄨㄥˊ
+鍙 0 ㄏㄨㄥˊ
+㢬 0 ㄏㄨㄥˊ
+宖 0 ㄏㄨㄥˊ
+垬 0 ㄏㄨㄥˊ
+娂 0 ㄏㄨㄥˊ
+峵 0 ㄏㄨㄥˊ
+紭 0 ㄏㄨㄥˊ
+粠 0 ㄏㄨㄥˊ
+嵤 0 ㄏㄨㄥˊ
+綋 0 ㄏㄨㄥˊ
+翝 0 ㄏㄨㄥˊ
+葓 0 ㄏㄨㄥˊ
+潂 0 ㄏㄨㄥˊ
+䉺 0 ㄏㄨㄥˊ
+硡 0 ㄏㄨㄥˊ
+𨌆 0 ㄏㄨㄥˊ
+荒 0 ㄏㄨㄤ
+慌 0 ㄏㄨㄤ
+肓 0 ㄏㄨㄤ
+衁 0 ㄏㄨㄤ
+巟 0 ㄏㄨㄤ
+嚝 0 ㄏㄨㄤ
+塃 0 ㄏㄨㄤ
+謊 0 ㄏㄨㄤˇ
+恍 0 ㄏㄨㄤˇ
+晃 0 ㄏㄨㄤˇ
+幌 0 ㄏㄨㄤˇ
+洸 0 ㄏㄨㄤˇ
+怳 0 ㄏㄨㄤˇ
+榥 0 ㄏㄨㄤˇ
+熀 0 ㄏㄨㄤˇ
+鎤 0 ㄏㄨㄤˇ
+滉 0 ㄏㄨㄤˇ
+皝 0 ㄏㄨㄤˇ
+晄 0 ㄏㄨㄤˇ
+奛 0 ㄏㄨㄤˇ
+詤 0 ㄏㄨㄤˇ
+皩 0 ㄏㄨㄤˇ
+宺 0 ㄏㄨㄤˇ
+晃 0 ㄏㄨㄤˋ
+軦 0 ㄏㄨㄤˋ
+幌 0 ㄏㄨㄤˋ
+榥 0 ㄏㄨㄤˋ
+熀 0 ㄏㄨㄤˋ
+鎤 0 ㄏㄨㄤˋ
+晄 0 ㄏㄨㄤˋ
+愰 0 ㄏㄨㄤˋ
+㨪 0 ㄏㄨㄤˋ
+櫎 0 ㄏㄨㄤˋ
+岲 0 ㄏㄨㄤˋ
+曂 0 ㄏㄨㄤˋ
+黃 0 ㄏㄨㄤˊ
+徨 0 ㄏㄨㄤˊ
+惶 0 ㄏㄨㄤˊ
+簧 0 ㄏㄨㄤˊ
+璜 0 ㄏㄨㄤˊ
+磺 0 ㄏㄨㄤˊ
+蝗 0 ㄏㄨㄤˊ
+煌 0 ㄏㄨㄤˊ
+皇 0 ㄏㄨㄤˊ
+凰 0 ㄏㄨㄤˊ
+湟 0 ㄏㄨㄤˊ
+遑 0 ㄏㄨㄤˊ
+隍 0 ㄏㄨㄤˊ
+潢 0 ㄏㄨㄤˊ
+篁 0 ㄏㄨㄤˊ
+喤 0 ㄏㄨㄤˊ
+艎 0 ㄏㄨㄤˊ
+鍠 0 ㄏㄨㄤˊ
+熿 0 ㄏㄨㄤˊ
+韹 0 ㄏㄨㄤˊ
+鰉 0 ㄏㄨㄤˊ
+堭 0 ㄏㄨㄤˊ
+蟥 0 ㄏㄨㄤˊ
+偟 0 ㄏㄨㄤˊ
+穔 0 ㄏㄨㄤˊ
+鷬 0 ㄏㄨㄤˊ
+媓 0 ㄏㄨㄤˊ
+騜 0 ㄏㄨㄤˊ
+崲 0 ㄏㄨㄤˊ
+葟 0 ㄏㄨㄤˊ
+餭 0 ㄏㄨㄤˊ
+撗 0 ㄏㄨㄤˊ
+獚 0 ㄏㄨㄤˊ
+趪 0 ㄏㄨㄤˊ
+揘 0 ㄏㄨㄤˊ
+楻 0 ㄏㄨㄤˊ
+彉 0 ㄏㄨㄤˊ
+諻 0 ㄏㄨㄤˊ
+黄 0 ㄏㄨㄤˊ
+瑝 0 ㄏㄨㄤˊ
+墴 0 ㄏㄨㄤˊ
+彍 0 ㄏㄨㄤˊ
+鐄 0 ㄏㄨㄤˊ
+鱑 0 ㄏㄨㄤˊ
+癀 0 ㄏㄨㄤˊ
+慌 0 ㄏㄨㄤ˙
+歡 0 ㄏㄨㄢ
+驩 0 ㄏㄨㄢ
+讙 0 ㄏㄨㄢ
+獾 0 ㄏㄨㄢ
+犿 0 ㄏㄨㄢ
+懽 0 ㄏㄨㄢ
+酄 0 ㄏㄨㄢ
+鴅 0 ㄏㄨㄢ
+豲 0 ㄏㄨㄢ
+嚾 0 ㄏㄨㄢ
+虇 0 ㄏㄨㄢ
+鱹 0 ㄏㄨㄢ
+欢 0 ㄏㄨㄢ
+覌 0 ㄏㄨㄢ
+歓 0 ㄏㄨㄢ
+㹕 0 ㄏㄨㄢ
+鵍 0 ㄏㄨㄢ
+貛 0 ㄏㄨㄢ
+緩 0 ㄏㄨㄢˇ
+皖 0 ㄏㄨㄢˇ
+澣 0 ㄏㄨㄢˇ
+睆 0 ㄏㄨㄢˇ
+輐 0 ㄏㄨㄢˇ
+諼 0 ㄏㄨㄢˇ
+鍰 0 ㄏㄨㄢˇ
+浣 0 ㄏㄨㄢˇ
+愋 0 ㄏㄨㄢˇ
+換 0 ㄏㄨㄢˋ
+喚 0 ㄏㄨㄢˋ
+宦 0 ㄏㄨㄢˋ
+患 0 ㄏㄨㄢˋ
+幻 0 ㄏㄨㄢˋ
+煥 0 ㄏㄨㄢˋ
+奐 0 ㄏㄨㄢˋ
+渙 0 ㄏㄨㄢˋ
+瘓 0 ㄏㄨㄢˋ
+豢 0 ㄏㄨㄢˋ
+梡 0 ㄏㄨㄢˋ
+逭 0 ㄏㄨㄢˋ
+擐 0 ㄏㄨㄢˋ
+漶 0 ㄏㄨㄢˋ
+垸 0 ㄏㄨㄢˋ
+轘 0 ㄏㄨㄢˋ
+瑍 0 ㄏㄨㄢˋ
+觨 0 ㄏㄨㄢˋ
+瞣 0 ㄏㄨㄢˋ
+肒 0 ㄏㄨㄢˋ
+圂 0 ㄏㄨㄢˋ
+鋎 0 ㄏㄨㄢˋ
+澣 0 ㄏㄨㄢˋ
+鯇 0 ㄏㄨㄢˋ
+攌 0 ㄏㄨㄢˋ
+繯 0 ㄏㄨㄢˋ
+梙 0 ㄏㄨㄢˋ
+喛 0 ㄏㄨㄢˋ
+愌 0 ㄏㄨㄢˋ
+藧 0 ㄏㄨㄢˋ
+鯶 0 ㄏㄨㄢˋ
+鰀 0 ㄏㄨㄢˋ
+烉 0 ㄏㄨㄢˋ
+槵 0 ㄏㄨㄢˋ
+𠈄 0 ㄏㄨㄢˋ
+𤃬 0 ㄏㄨㄢˋ
+還 0 ㄏㄨㄢˊ
+環 0 ㄏㄨㄢˊ
+桓 0 ㄏㄨㄢˊ
+圜 0 ㄏㄨㄢˊ
+繯 0 ㄏㄨㄢˊ
+鬟 0 ㄏㄨㄢˊ
+鍰 0 ㄏㄨㄢˊ
+鐶 0 ㄏㄨㄢˊ
+寰 0 ㄏㄨㄢˊ
+闤 0 ㄏㄨㄢˊ
+梡 0 ㄏㄨㄢˊ
+洹 0 ㄏㄨㄢˊ
+瓛 0 ㄏㄨㄢˊ
+貆 0 ㄏㄨㄢˊ
+澴 0 ㄏㄨㄢˊ
+荁 0 ㄏㄨㄢˊ
+萑 0 ㄏㄨㄢˊ
+肒 0 ㄏㄨㄢˊ
+捖 0 ㄏㄨㄢˊ
+羦 0 ㄏㄨㄢˊ
+懁 0 ㄏㄨㄢˊ
+豲 0 ㄏㄨㄢˊ
+嬛 0 ㄏㄨㄢˊ
+狟 0 ㄏㄨㄢˊ
+雈 0 ㄏㄨㄢˊ
+垣 0 ㄏㄨㄢˊ
+峘 0 ㄏㄨㄢˊ
+垸 0 ㄏㄨㄢˊ
+烜 0 ㄏㄨㄢˊ
+楥 0 ㄏㄨㄢˊ
+儇 0 ㄏㄨㄢˊ
+噮 0 ㄏㄨㄢˊ
+彋 0 ㄏㄨㄢˊ
+擐 0 ㄏㄨㄢˊ
+獧 0 ㄏㄨㄢˊ
+雚 0 ㄏㄨㄢˊ
+攌 0 ㄏㄨㄢˊ
+翾 0 ㄏㄨㄢˊ
+蠉 0 ㄏㄨㄢˊ
+鱞 0 ㄏㄨㄢˊ
+环 0 ㄏㄨㄢˊ
+还 0 ㄏㄨㄢˊ
+絙 0 ㄏㄨㄢˊ
+萈 0 ㄏㄨㄢˊ
+寏 0 ㄏㄨㄢˊ
+䦡 0 ㄏㄨㄢˊ
+糫 0 ㄏㄨㄢˊ
+𢕼 0 ㄏㄨㄢˊ
+虎 0 ㄏㄨˇ
+琥 0 ㄏㄨˇ
+滸 0 ㄏㄨˇ
+唬 0 ㄏㄨˇ
+許 0 ㄏㄨˇ
+汻 0 ㄏㄨˇ
+虍 0 ㄏㄨˇ
+虓 0 ㄏㄨˇ
+箎 0 ㄏㄨˇ
+覤 0 ㄏㄨˇ
+諕 0 ㄏㄨˇ
+篪 0 ㄏㄨˇ
+竾 0 ㄏㄨˇ
+筂 0 ㄏㄨˇ
+萀 0 ㄏㄨˇ
+虝 0 ㄏㄨˇ
+護 0 ㄏㄨˋ
+戶 0 ㄏㄨˋ
+互 0 ㄏㄨˋ
+滬 0 ㄏㄨˋ
+扈 0 ㄏㄨˋ
+瓠 0 ㄏㄨˋ
+怙 0 ㄏㄨˋ
+祜 0 ㄏㄨˋ
+笏 0 ㄏㄨˋ
+冱 0 ㄏㄨˋ
+戽 0 ㄏㄨˋ
+楛 0 ㄏㄨˋ
+沍 0 ㄏㄨˋ
+岵 0 ㄏㄨˋ
+鄠 0 ㄏㄨˋ
+頀 0 ㄏㄨˋ
+枑 0 ㄏㄨˋ
+槴 0 ㄏㄨˋ
+昈 0 ㄏㄨˋ
+嫭 0 ㄏㄨˋ
+婟 0 ㄏㄨˋ
+嫮 0 ㄏㄨˋ
+熩 0 ㄏㄨˋ
+豰 0 ㄏㄨˋ
+綔 0 ㄏㄨˋ
+謢 0 ㄏㄨˋ
+蔰 0 ㄏㄨˋ
+亙 0 ㄏㄨˋ
+斛 0 ㄏㄨˋ
+糊 0 ㄏㄨˋ
+穫 0 ㄏㄨˋ
+芐 0 ㄏㄨˋ
+嘝 0 ㄏㄨˋ
+寣 0 ㄏㄨˋ
+摦 0 ㄏㄨˋ
+熇 0 ㄏㄨˋ
+麧 0 ㄏㄨˋ
+槬 0 ㄏㄨˋ
+槲 0 ㄏㄨˋ
+魱 0 ㄏㄨˋ
+瓁 0 ㄏㄨˋ
+臒 0 ㄏㄨˋ
+韄 0 ㄏㄨˋ
+户 0 ㄏㄨˋ
+戸 0 ㄏㄨˋ
+亘 0 ㄏㄨˋ
+冴 0 ㄏㄨˋ
+沪 0 ㄏㄨˋ
+摢 0 ㄏㄨˋ
+嚛 0 ㄏㄨˋ
+燺 0 ㄏㄨˋ
+耯 0 ㄏㄨˋ
+鱯 0 ㄏㄨˋ
+帍 0 ㄏㄨˋ
+簄 0 ㄏㄨˋ
+胡 0 ㄏㄨˊ
+湖 0 ㄏㄨˊ
+壺 0 ㄏㄨˊ
+蝴 0 ㄏㄨˊ
+糊 0 ㄏㄨˊ
+狐 0 ㄏㄨˊ
+弧 0 ㄏㄨˊ
+葫 0 ㄏㄨˊ
+鬍 0 ㄏㄨˊ
+瑚 0 ㄏㄨˊ
+餬 0 ㄏㄨˊ
+斛 0 ㄏㄨˊ
+鵠 0 ㄏㄨˊ
+囫 0 ㄏㄨˊ
+縠 0 ㄏㄨˊ
+衚 0 ㄏㄨˊ
+觳 0 ㄏㄨˊ
+醐 0 ㄏㄨˊ
+猢 0 ㄏㄨˊ
+搰 0 ㄏㄨˊ
+鶘 0 ㄏㄨˊ
+槲 0 ㄏㄨˊ
+媩 0 ㄏㄨˊ
+抇 0 ㄏㄨˊ
+鰗 0 ㄏㄨˊ
+焀 0 ㄏㄨˊ
+魱 0 ㄏㄨˊ
+螜 0 ㄏㄨˊ
+瀫 0 ㄏㄨˊ
+楜 0 ㄏㄨˊ
+嘝 0 ㄏㄨˊ
+鶦 0 ㄏㄨˊ
+乎 0 ㄏㄨˊ
+和 0 ㄏㄨˊ
+核 0 ㄏㄨˊ
+泒 0 ㄏㄨˊ
+胍 0 ㄏㄨˊ
+壼 0 ㄏㄨˊ
+鈲 0 ㄏㄨˊ
+鶻 0 ㄏㄨˊ
+咊 0 ㄏㄨˊ
+瓳 0 ㄏㄨˊ
+壷 0 ㄏㄨˊ
+喖 0 ㄏㄨˊ
+惒 0 ㄏㄨˊ
+絗 0 ㄏㄨˊ
+蔛 0 ㄏㄨˊ
+頶 0 ㄏㄨˊ
+鍸 0 ㄏㄨˊ
+鱯 0 ㄏㄨˊ
+隺 0 ㄏㄨˊ
+𠴱 0 ㄏㄨˊ
+𤌍 0 ㄏㄨˊ
+箶 0 ㄏㄨˊ
+䁫 0 ㄏㄨˊ
+㗅 0 ㄏㄨˊ
+㿥 0 ㄏㄨˊ
+花 0 ㄏㄨㄚ
+華 0 ㄏㄨㄚ
+嘩 0 ㄏㄨㄚ
+鷨 0 ㄏㄨㄚ
+錵 0 ㄏㄨㄚ
+化 0 ㄏㄨㄚ
+荂 0 ㄏㄨㄚ
+蘤 0 ㄏㄨㄚ
+芲 0 ㄏㄨㄚ
+蕐 0 ㄏㄨㄚ
+話 0 ㄏㄨㄚˋ
+化 0 ㄏㄨㄚˋ
+畫 0 ㄏㄨㄚˋ
+劃 0 ㄏㄨㄚˋ
+樺 0 ㄏㄨㄚˋ
+華 0 ㄏㄨㄚˋ
+嫿 0 ㄏㄨㄚˋ
+摦 0 ㄏㄨㄚˋ
+崋 0 ㄏㄨㄚˋ
+嬅 0 ㄏㄨㄚˋ
+杹 0 ㄏㄨㄚˋ
+觟 0 ㄏㄨㄚˋ
+槬 0 ㄏㄨㄚˋ
+繣 0 ㄏㄨㄚˋ
+澅 0 ㄏㄨㄚˋ
+踝 0 ㄏㄨㄚˋ
+沎 0 ㄏㄨㄚˋ
+罫 0 ㄏㄨㄚˋ
+蘳 0 ㄏㄨㄚˋ
+驊 0 ㄏㄨㄚˋ
+画 0 ㄏㄨㄚˋ
+婳 0 ㄏㄨㄚˋ
+諣 0 ㄏㄨㄚˋ
+舙 0 ㄏㄨㄚˋ
+黊 0 ㄏㄨㄚˋ
+譮 0 ㄏㄨㄚˋ
+畵 0 ㄏㄨㄚˋ
+蕐 0 ㄏㄨㄚˋ
+華 0 ㄏㄨㄚˊ
+滑 0 ㄏㄨㄚˊ
+划 0 ㄏㄨㄚˊ
+猾 0 ㄏㄨㄚˊ
+譁 0 ㄏㄨㄚˊ
+嘩 0 ㄏㄨㄚˊ
+驊 0 ㄏㄨㄚˊ
+鏵 0 ㄏㄨㄚˊ
+豁 0 ㄏㄨㄚˊ
+劃 0 ㄏㄨㄚˊ
+崋 0 ㄏㄨㄚˊ
+釫 0 ㄏㄨㄚˊ
+螖 0 ㄏㄨㄚˊ
+曄 0 ㄏㄨㄚˊ
+姡 0 ㄏㄨㄚˊ
+尳 0 ㄏㄨㄚˊ
+搳 0 ㄏㄨㄚˊ
+嬅 0 ㄏㄨㄚˊ
+澕 0 ㄏㄨㄚˊ
+燁 0 ㄏㄨㄚˊ
+縎 0 ㄏㄨㄚˊ
+骹 0 ㄏㄨㄚˊ
+鷨 0 ㄏㄨㄚˊ
+㕲 0 ㄏㄨㄚˊ
+秳 0 ㄏㄨㄚˊ
+㠏 0 ㄏㄨㄚˊ
+㦊 0 ㄏㄨㄚˊ
+磆 0 ㄏㄨㄚˊ
+劐 0 ㄏㄨㄚˊ
+曅 0 ㄏㄨㄚˊ
+曗 0 ㄏㄨㄚˊ
+䅿 0 ㄏㄨㄚˊ
+㒯 0 ㄏㄨㄚˊ
+爗 0 ㄏㄨㄚˊ
+敌 0 ㄏㄨㄚˊ
+蕐 0 ㄏㄨㄚˊ
+䱻 0 ㄏㄨㄚˊ
+壞 0 ㄏㄨㄞˋ
+坏 0 ㄏㄨㄞˋ
+諙 0 ㄏㄨㄞˋ
+孬 0 ㄏㄨㄞˋ
+咶 0 ㄏㄨㄞˋ
+蘾 0 ㄏㄨㄞˋ
+褱 0 ㄏㄨㄞˋ
+瀤 0 ㄏㄨㄞˋ
+壊 0 ㄏㄨㄞˋ
+懷 0 ㄏㄨㄞˊ
+淮 0 ㄏㄨㄞˊ
+徊 0 ㄏㄨㄞˊ
+槐 0 ㄏㄨㄞˊ
+踝 0 ㄏㄨㄞˊ
+佪 0 ㄏㄨㄞˊ
+怀 0 ㄏㄨㄞˊ
+褢 0 ㄏㄨㄞˊ
+褱 0 ㄏㄨㄞˊ
+櫰 0 ㄏㄨㄞˊ
+瀤 0 ㄏㄨㄞˊ
+獲 0 ㄏㄨㄞˊ
+倠 0 ㄏㄨㄞˊ
+蘹 0 ㄏㄨㄞˊ
+获 0 ㄏㄨㄞˊ
+懐 0 ㄏㄨㄞˊ
+耲 0 ㄏㄨㄞˊ
+㜳 0 ㄏㄨㄞˊ
+豁 0 ㄏㄨㄛ
+火 0 ㄏㄨㄛˇ
+伙 0 ㄏㄨㄛˇ
+夥 0 ㄏㄨㄛˇ
+鈥 0 ㄏㄨㄛˇ
+吙 0 ㄏㄨㄛˇ
+炚 0 ㄏㄨㄛˇ
+邩 0 ㄏㄨㄛˇ
+灬 0 ㄏㄨㄛˇ
+炛 0 ㄏㄨㄛˇ
+或 0 ㄏㄨㄛˋ
+穫 0 ㄏㄨㄛˋ
+獲 0 ㄏㄨㄛˋ
+和 0 ㄏㄨㄛˋ
+惑 0 ㄏㄨㄛˋ
+禍 0 ㄏㄨㄛˋ
+霍 0 ㄏㄨㄛˋ
+貨 0 ㄏㄨㄛˋ
+豁 0 ㄏㄨㄛˋ
+壑 0 ㄏㄨㄛˋ
+蠖 0 ㄏㄨㄛˋ
+嚄 0 ㄏㄨㄛˋ
+藿 0 ㄏㄨㄛˋ
+鑊 0 ㄏㄨㄛˋ
+矱 0 ㄏㄨㄛˋ
+檴 0 ㄏㄨㄛˋ
+濩 0 ㄏㄨㄛˋ
+砉 0 ㄏㄨㄛˋ
+雘 0 ㄏㄨㄛˋ
+擭 0 ㄏㄨㄛˋ
+湱 0 ㄏㄨㄛˋ
+騞 0 ㄏㄨㄛˋ
+謋 0 ㄏㄨㄛˋ
+捇 0 ㄏㄨㄛˋ
+沎 0 ㄏㄨㄛˋ
+眓 0 ㄏㄨㄛˋ
+掝 0 ㄏㄨㄛˋ
+嗀 0 ㄏㄨㄛˋ
+嗀 0 ㄏㄨㄛˋ
+瓁 0 ㄏㄨㄛˋ
+臒 0 ㄏㄨㄛˋ
+攉 0 ㄏㄨㄛˋ
+瀖 0 ㄏㄨㄛˋ
+曤 0 ㄏㄨㄛˋ
+矐 0 ㄏㄨㄛˋ
+靃 0 ㄏㄨㄛˋ
+笏 0 ㄏㄨㄛˋ
+窢 0 ㄏㄨㄛˋ
+聝 0 ㄏㄨㄛˋ
+彉 0 ㄏㄨㄛˋ
+濊 0 ㄏㄨㄛˋ
+馘 0 ㄏㄨㄛˋ
+霩 0 ㄏㄨㄛˋ
+臛 0 ㄏㄨㄛˋ
+礭 0 ㄏㄨㄛˋ
+咊 0 ㄏㄨㄛˋ
+㕷 0 ㄏㄨㄛˋ
+咟 0 ㄏㄨㄛˋ
+俰 0 ㄏㄨㄛˋ
+剨 0 ㄏㄨㄛˋ
+获 0 ㄏㄨㄛˋ
+惒 0 ㄏㄨㄛˋ
+旤 0 ㄏㄨㄛˋ
+㕡 0 ㄏㄨㄛˋ
+劐 0 ㄏㄨㄛˋ
+彍 0 ㄏㄨㄛˋ
+礊 0 ㄏㄨㄛˋ
+矆 0 ㄏㄨㄛˋ
+耯 0 ㄏㄨㄛˋ
+癨 0 ㄏㄨㄛˋ
+彠 0 ㄏㄨㄛˋ
+閄 0 ㄏㄨㄛˋ
+蒦 0 ㄏㄨㄛˋ
+㗲 0 ㄏㄨㄛˋ
+奯 0 ㄏㄨㄛˋ
+艧 0 ㄏㄨㄛˋ
+嚿 0 ㄏㄨㄛˋ
+鸌 0 ㄏㄨㄛˋ
+𦑌 0 ㄏㄨㄛˋ
+活 0 ㄏㄨㄛˊ
+佸 0 ㄏㄨㄛˊ
+鈥 0 ㄏㄨㄛˊ
+萿 0 ㄏㄨㄛˊ
+秮 0 ㄏㄨㄛˊ
+和 0 ㄏㄨㄛ˙
+午 0 ㄏㄨㄛ˙
+咊 0 ㄏㄨㄛ˙
+惒 0 ㄏㄨㄛ˙
+灰 0 ㄏㄨㄟ
+揮 0 ㄏㄨㄟ
+輝 0 ㄏㄨㄟ
+恢 0 ㄏㄨㄟ
+詼 0 ㄏㄨㄟ
+暉 0 ㄏㄨㄟ
+麾 0 ㄏㄨㄟ
+徽 0 ㄏㄨㄟ
+墮 0 ㄏㄨㄟ
+褌 0 ㄏㄨㄟ
+撝 0 ㄏㄨㄟ
+隳 0 ㄏㄨㄟ
+挼 0 ㄏㄨㄟ
+煇 0 ㄏㄨㄟ
+翬 0 ㄏㄨㄟ
+豗 0 ㄏㄨㄟ
+褘 0 ㄏㄨㄟ
+洃 0 ㄏㄨㄟ
+隓 0 ㄏㄨㄟ
+顪 0 ㄏㄨㄟ
+鰴 0 ㄏㄨㄟ
+拻 0 ㄏㄨㄟ
+噅 0 ㄏㄨㄟ
+禈 0 ㄏㄨㄟ
+虺 0 ㄏㄨㄟ
+盔 0 ㄏㄨㄟ
+戲 0 ㄏㄨㄟ
+黴 0 ㄏㄨㄟ
+倠 0 ㄏㄨㄟ
+楎 0 ㄏㄨㄟ
+諢 0 ㄏㄨㄟ
+鍕 0 ㄏㄨㄟ
+戏 0 ㄏㄨㄟ
+灳 0 ㄏㄨㄟ
+咴 0 ㄏㄨㄟ
+烣 0 ㄏㄨㄟ
+婎 0 ㄏㄨㄟ
+媈 0 ㄏㄨㄟ
+㡓 0 ㄏㄨㄟ
+裩 0 ㄏㄨㄟ
+戯 0 ㄏㄨㄟ
+䘗 0 ㄏㄨㄟ
+戱 0 ㄏㄨㄟ
+瀈 0 ㄏㄨㄟ
+㿗 0 ㄏㄨㄟ
+㷇 0 ㄏㄨㄟ
+幑 0 ㄏㄨㄟ
+睳 0 ㄏㄨㄟ
+𦑩 0 ㄏㄨㄟ
+噕 0 ㄏㄨㄟ
+會 0 ㄏㄨㄟˇ
+悔 0 ㄏㄨㄟˇ
+誨 0 ㄏㄨㄟˇ
+毀 0 ㄏㄨㄟˇ
+燬 0 ㄏㄨㄟˇ
+賄 0 ㄏㄨㄟˇ
+虺 0 ㄏㄨㄟˇ
+虫 0 ㄏㄨㄟˇ
+烠 0 ㄏㄨㄟˇ
+毇 0 ㄏㄨㄟˇ
+檓 0 ㄏㄨㄟˇ
+譭 0 ㄏㄨㄟˇ
+珛 0 ㄏㄨㄟˇ
+烸 0 ㄏㄨㄟˇ
+会 0 ㄏㄨㄟˇ
+毁 0 ㄏㄨㄟˇ
+泋 0 ㄏㄨㄟˇ
+會 0 ㄏㄨㄟˋ
+惠 0 ㄏㄨㄟˋ
+匯 0 ㄏㄨㄟˋ
+繪 0 ㄏㄨㄟˋ
+慧 0 ㄏㄨㄟˋ
+彙 0 ㄏㄨㄟˋ
+穢 0 ㄏㄨㄟˋ
+誨 0 ㄏㄨㄟˋ
+賄 0 ㄏㄨㄟˋ
+晦 0 ㄏㄨㄟˋ
+彗 0 ㄏㄨㄟˋ
+諱 0 ㄏㄨㄟˋ
+潰 0 ㄏㄨㄟˋ
+卉 0 ㄏㄨㄟˋ
+蕙 0 ㄏㄨㄟˋ
+濊 0 ㄏㄨㄟˋ
+燴 0 ㄏㄨㄟˋ
+喙 0 ㄏㄨㄟˋ
+恚 0 ㄏㄨㄟˋ
+薈 0 ㄏㄨㄟˋ
+沬 0 ㄏㄨㄟˋ
+翽 0 ㄏㄨㄟˋ
+闠 0 ㄏㄨㄟˋ
+嘒 0 ㄏㄨㄟˋ
+槥 0 ㄏㄨㄟˋ
+篲 0 ㄏㄨㄟˋ
+繢 0 ㄏㄨㄟˋ
+繐 0 ㄏㄨㄟˋ
+蟪 0 ㄏㄨㄟˋ
+璯 0 ㄏㄨㄟˋ
+嬇 0 ㄏㄨㄟˋ
+憓 0 ㄏㄨㄟˋ
+潓 0 ㄏㄨㄟˋ
+瞺 0 ㄏㄨㄟˋ
+譓 0 ㄏㄨㄟˋ
+譿 0 ㄏㄨㄟˋ
+鏸 0 ㄏㄨㄟˋ
+橞 0 ㄏㄨㄟˋ
+廆 0 ㄏㄨㄟˋ
+詴 0 ㄏㄨㄟˋ
+圚 0 ㄏㄨㄟˋ
+蔧 0 ㄏㄨㄟˋ
+獩 0 ㄏㄨㄟˋ
+餯 0 ㄏㄨㄟˋ
+鐬 0 ㄏㄨㄟˋ
+饖 0 ㄏㄨㄟˋ
+芔 0 ㄏㄨㄟˋ
+禬 0 ㄏㄨㄟˋ
+膾 0 ㄏㄨㄟˋ
+彖 0 ㄏㄨㄟˋ
+烠 0 ㄏㄨㄟˋ
+瘣 0 ㄏㄨㄟˋ
+噦 0 ㄏㄨㄟˋ
+噲 0 ㄏㄨㄟˋ
+廥 0 ㄏㄨㄟˋ
+澮 0 ㄏㄨㄟˋ
+獪 0 ㄏㄨㄟˋ
+螝 0 ㄏㄨㄟˋ
+鄶 0 ㄏㄨㄟˋ
+薉 0 ㄏㄨㄟˋ
+繣 0 ㄏㄨㄟˋ
+鏏 0 ㄏㄨㄟˋ
+顪 0 ㄏㄨㄟˋ
+鱠 0 ㄏㄨㄟˋ
+会 0 ㄏㄨㄟˋ
+恵 0 ㄏㄨㄟˋ
+湏 0 ㄏㄨㄟˋ
+絵 0 ㄏㄨㄟˋ
+彚 0 ㄏㄨㄟˋ
+滙 0 ㄏㄨㄟˋ
+詯 0 ㄏㄨㄟˋ
+僡 0 ㄏㄨㄟˋ
+暳 0 ㄏㄨㄟˋ
+䧥 0 ㄏㄨㄟˋ
+膭 0 ㄏㄨㄟˋ
+嚖 0 ㄏㄨㄟˋ
+懳 0 ㄏㄨㄟˋ
+櫘 0 ㄏㄨㄟˋ
+儶 0 ㄏㄨㄟˋ
+譮 0 ㄏㄨㄟˋ
+靧 0 ㄏㄨㄟˋ
+𠱥 0 ㄏㄨㄟˋ
+𡜦 0 ㄏㄨㄟˋ
+寭 0 ㄏㄨㄟˋ
+殨 0 ㄏㄨㄟˋ
+䙡 0 ㄏㄨㄟˋ
+䎚 0 ㄏㄨㄟˋ
+鞼 0 ㄏㄨㄟˋ
+㥣 0 ㄏㄨㄟˋ
+𢕺 0 ㄏㄨㄟˋ
+𦒄 0 ㄏㄨㄟˋ
+回 0 ㄏㄨㄟˊ
+迴 0 ㄏㄨㄟˊ
+蛔 0 ㄏㄨㄟˊ
+茴 0 ㄏㄨㄟˊ
+蚘 0 ㄏㄨㄟˊ
+洄 0 ㄏㄨㄟˊ
+痐 0 ㄏㄨㄟˊ
+恛 0 ㄏㄨㄟˊ
+藱 0 ㄏㄨㄟˊ
+徊 0 ㄏㄨㄟˊ
+佪 0 ㄏㄨㄟˊ
+烠 0 ㄏㄨㄟˊ
+囘 0 ㄏㄨㄟˊ
+冋 0 ㄏㄨㄟˊ
+囬 0 ㄏㄨㄟˊ
+㢠 0 ㄏㄨㄟˊ
+廻 0 ㄏㄨㄟˊ
+廽 0 ㄏㄨㄟˊ
+逥 0 ㄏㄨㄟˊ
+蛕 0 ㄏㄨㄟˊ
+蜖 0 ㄏㄨㄟˊ
+鮰 0 ㄏㄨㄟˊ
+婚 0 ㄏㄨㄣ
+昏 0 ㄏㄨㄣ
+葷 0 ㄏㄨㄣ
+閽 0 ㄏㄨㄣ
+惛 0 ㄏㄨㄣ
+睯 0 ㄏㄨㄣ
+殙 0 ㄏㄨㄣ
+棔 0 ㄏㄨㄣ
+涽 0 ㄏㄨㄣ
+敯 0 ㄏㄨㄣ
+睧 0 ㄏㄨㄣ
+諙 0 ㄏㄨㄣ
+昬 0 ㄏㄨㄣ
+惽 0 ㄏㄨㄣ
+混 0 ㄏㄨㄣˇ
+睔 0 ㄏㄨㄣˇ
+掍 0 ㄏㄨㄣˇ
+混 0 ㄏㄨㄣˋ
+渾 0 ㄏㄨㄣˋ
+溷 0 ㄏㄨㄣˋ
+諢 0 ㄏㄨㄣˋ
+圂 0 ㄏㄨㄣˋ
+慁 0 ㄏㄨㄣˋ
+倱 0 ㄏㄨㄣˋ
+梡 0 ㄏㄨㄣˋ
+觨 0 ㄏㄨㄣˋ
+緷 0 ㄏㄨㄣˋ
+俒 0 ㄏㄨㄣˋ
+焝 0 ㄏㄨㄣˋ
+魂 0 ㄏㄨㄣˊ
+渾 0 ㄏㄨㄣˊ
+餛 0 ㄏㄨㄣˊ
+混 0 ㄏㄨㄣˊ
+琿 0 ㄏㄨㄣˊ
+楎 0 ㄏㄨㄣˊ
+餫 0 ㄏㄨㄣˊ
+棞 0 ㄏㄨㄣˊ
+顐 0 ㄏㄨㄣˊ
+鼲 0 ㄏㄨㄣˊ
+繉 0 ㄏㄨㄣˊ
+轋 0 ㄏㄨㄣˊ
+忶 0 ㄏㄨㄣˊ
+俒 0 ㄏㄨㄣˊ
+堚 0 ㄏㄨㄣˊ
+䮝 0 ㄏㄨㄣˊ
+喝 0 ㄏㄜ
+呵 0 ㄏㄜ
+訶 0 ㄏㄜ
+嗬 0 ㄏㄜ
+峆 0 ㄏㄜ
+堨 0 ㄏㄜ
+嵑 0 ㄏㄜ
+毼 0 ㄏㄜ
+鍻 0 ㄏㄜ
+騔 0 ㄏㄜ
+抲 0 ㄏㄜ
+㰰 0 ㄏㄜ
+賀 0 ㄏㄜˋ
+和 0 ㄏㄜˋ
+鶴 0 ㄏㄜˋ
+喝 0 ㄏㄜˋ
+荷 0 ㄏㄜˋ
+嚇 0 ㄏㄜˋ
+赫 0 ㄏㄜˋ
+郝 0 ㄏㄜˋ
+暍 0 ㄏㄜˋ
+嗃 0 ㄏㄜˋ
+熇 0 ㄏㄜˋ
+猲 0 ㄏㄜˋ
+翯 0 ㄏㄜˋ
+佫 0 ㄏㄜˋ
+煂 0 ㄏㄜˋ
+愒 0 ㄏㄜˋ
+黑 0 ㄏㄜˋ
+豁 0 ㄏㄜˋ
+吓 0 ㄏㄜˋ
+咊 0 ㄏㄜˋ
+垎 0 ㄏㄜˋ
+焃 0 ㄏㄜˋ
+袔 0 ㄏㄜˋ
+黒 0 ㄏㄜˋ
+惒 0 ㄏㄜˋ
+碋 0 ㄏㄜˋ
+㵑 0 ㄏㄜˋ
+燺 0 ㄏㄜˋ
+爀 0 ㄏㄜˋ
+蠚 0 ㄏㄜˋ
+鸖 0 ㄏㄜˋ
+隺 0 ㄏㄜˋ
+癋 0 ㄏㄜˋ
+何 0 ㄏㄜˊ
+合 0 ㄏㄜˊ
+和 0 ㄏㄜˊ
+河 0 ㄏㄜˊ
+荷 0 ㄏㄜˊ
+核 0 ㄏㄜˊ
+盒 0 ㄏㄜˊ
+禾 0 ㄏㄜˊ
+褐 0 ㄏㄜˊ
+劾 0 ㄏㄜˊ
+闔 0 ㄏㄜˊ
+閤 0 ㄏㄜˊ
+曷 0 ㄏㄜˊ
+龢 0 ㄏㄜˊ
+涸 0 ㄏㄜˊ
+盍 0 ㄏㄜˊ
+覈 0 ㄏㄜˊ
+蓋 0 ㄏㄜˊ
+貉 0 ㄏㄜˊ
+閡 0 ㄏㄜˊ
+紇 0 ㄏㄜˊ
+滆 0 ㄏㄜˊ
+翮 0 ㄏㄜˊ
+蝎 0 ㄏㄜˊ
+嗑 0 ㄏㄜˊ
+齕 0 ㄏㄜˊ
+郃 0 ㄏㄜˊ
+餲 0 ㄏㄜˊ
+鶡 0 ㄏㄜˊ
+鉌 0 ㄏㄜˊ
+魺 0 ㄏㄜˊ
+鞨 0 ㄏㄜˊ
+菏 0 ㄏㄜˊ
+姀 0 ㄏㄜˊ
+毼 0 ㄏㄜˊ
+熆 0 ㄏㄜˊ
+蒚 0 ㄏㄜˊ
+篕 0 ㄏㄜˊ
+螛 0 ㄏㄜˊ
+礉 0 ㄏㄜˊ
+盉 0 ㄏㄜˊ
+廅 0 ㄏㄜˊ
+楁 0 ㄏㄜˊ
+澕 0 ㄏㄜˊ
+趷 0 ㄏㄜˊ
+匣 0 ㄏㄜˊ
+苛 0 ㄏㄜˊ
+害 0 ㄏㄜˊ
+蚵 0 ㄏㄜˊ
+渴 0 ㄏㄜˊ
+翕 0 ㄏㄜˊ
+赫 0 ㄏㄜˊ
+佮 0 ㄏㄜˊ
+峇 0 ㄏㄜˊ
+峆 0 ㄏㄜˊ
+敆 0 ㄏㄜˊ
+渮 0 ㄏㄜˊ
+袷 0 ㄏㄜˊ
+酠 0 ㄏㄜˊ
+圔 0 ㄏㄜˊ
+滒 0 ㄏㄜˊ
+鞂 0 ㄏㄜˊ
+樖 0 ㄏㄜˊ
+鞈 0 ㄏㄜˊ
+韐 0 ㄏㄜˊ
+鮯 0 ㄏㄜˊ
+鶷 0 ㄏㄜˊ
+齃 0 ㄏㄜˊ
+乢 0 ㄏㄜˊ
+咊 0 ㄏㄜˊ
+柇 0 ㄏㄜˊ
+狢 0 ㄏㄜˊ
+盇 0 ㄏㄜˊ
+釛 0 ㄏㄜˊ
+啝 0 ㄏㄜˊ
+㭱 0 ㄏㄜˊ
+渇 0 ㄏㄜˊ
+盖 0 ㄏㄜˊ
+惒 0 ㄏㄜˊ
+翖 0 ㄏㄜˊ
+萂 0 ㄏㄜˊ
+訸 0 ㄏㄜˊ
+葢 0 ㄏㄜˊ
+詥 0 ㄏㄜˊ
+貈 0 ㄏㄜˊ
+爀 0 ㄏㄜˊ
+鶮 0 ㄏㄜˊ
+哬 0 ㄏㄜˊ
+耠 0 ㄏㄜˊ
+䞦 0 ㄏㄜˊ
+蒿 0 ㄏㄠ
+嚆 0 ㄏㄠ
+薅 0 ㄏㄠ
+好 0 ㄏㄠˇ
+郝 0 ㄏㄠˇ
+㚼 0 ㄏㄠˇ
+㝀 0 ㄏㄠˇ
+號 0 ㄏㄠˋ
+耗 0 ㄏㄠˋ
+浩 0 ㄏㄠˋ
+皓 0 ㄏㄠˋ
+鎬 0 ㄏㄠˋ
+涸 0 ㄏㄠˋ
+昊 0 ㄏㄠˋ
+好 0 ㄏㄠˋ
+灝 0 ㄏㄠˋ
+澔 0 ㄏㄠˋ
+皜 0 ㄏㄠˋ
+顥 0 ㄏㄠˋ
+鄗 0 ㄏㄠˋ
+秏 0 ㄏㄠˋ
+淏 0 ㄏㄠˋ
+滈 0 ㄏㄠˋ
+皞 0 ㄏㄠˋ
+哠 0 ㄏㄠˋ
+悎 0 ㄏㄠˋ
+鰝 0 ㄏㄠˋ
+昦 0 ㄏㄠˋ
+薃 0 ㄏㄠˋ
+饕 0 ㄏㄠˋ
+狊 0 ㄏㄠˋ
+藃 0 ㄏㄠˋ
+号 0 ㄏㄠˋ
+㚪 0 ㄏㄠˋ
+㝀 0 ㄏㄠˋ
+侴 0 ㄏㄠˋ
+恏 0 ㄏㄠˋ
+晧 0 ㄏㄠˋ
+暤 0 ㄏㄠˋ
+飸 0 ㄏㄠˋ
+暭 0 ㄏㄠˋ
+曍 0 ㄏㄠˋ
+皡 0 ㄏㄠˋ
+皥 0 ㄏㄠˋ
+瀥 0 ㄏㄠˋ
+峼 0 ㄏㄠˋ
+傐 0 ㄏㄠˋ
+聕 0 ㄏㄠˋ
+㵆 0 ㄏㄠˋ
+號 0 ㄏㄠˊ
+毫 0 ㄏㄠˊ
+豪 0 ㄏㄠˊ
+壕 0 ㄏㄠˊ
+濠 0 ㄏㄠˊ
+蠔 0 ㄏㄠˊ
+貉 0 ㄏㄠˊ
+嚎 0 ㄏㄠˊ
+鶴 0 ㄏㄠˊ
+蚵 0 ㄏㄠˊ
+嗥 0 ㄏㄠˊ
+籇 0 ㄏㄠˊ
+諕 0 ㄏㄠˊ
+勂 0 ㄏㄠˊ
+譹 0 ㄏㄠˊ
+麾 0 ㄏㄠˊ
+呺 0 ㄏㄠˊ
+蚝 0 ㄏㄠˊ
+檺 0 ㄏㄠˊ
+号 0 ㄏㄠˊ
+狢 0 ㄏㄠˊ
+椃 0 ㄏㄠˊ
+獆 0 ㄏㄠˊ
+貈 0 ㄏㄠˊ
+噑 0 ㄏㄠˊ
+獔 0 ㄏㄠˊ
+嘷 0 ㄏㄠˊ
+獋 0 ㄏㄠˊ
+儫 0 ㄏㄠˊ
+㩝 0 ㄏㄠˊ
+鸖 0 ㄏㄠˊ
+黑 0 ㄏㄟ
+嘿 0 ㄏㄟ
+潶 0 ㄏㄟ
+黒 0 ㄏㄟ
+㱄 0 ㄏㄟ
+黑 0 ㄏㄟˇ
+黒 0 ㄏㄟˇ
+很 0 ㄏㄣˇ
+狠 0 ㄏㄣˇ
+佷 0 ㄏㄣˇ
+拫 0 ㄏㄣˇ
+硍 0 ㄏㄣˇ
+蛝 0 ㄏㄣˇ
+豤 0 ㄏㄣˇ
+鞎 0 ㄏㄣˇ
+詪 0 ㄏㄣˇ
+恨 0 ㄏㄣˋ
+拫 0 ㄏㄣˋ
+痕 0 ㄏㄣˊ
+拫 0 ㄏㄣˊ
+鞎 0 ㄏㄣˊ
+含 0 ㄏㄣˊ
+噙 0 ㄏㄣˊ
+ㄎ 0 ㄎ
+摳 0 ㄎㄡ
+彄 0 ㄎㄡ
+芤 0 ㄎㄡ
+袧 0 ㄎㄡ
+鏂 0 ㄎㄡ
+剾 0 ㄎㄡ
+眗 0 ㄎㄡ
+䁱 0 ㄎㄡ
+口 0 ㄎㄡˇ
+劶 0 ㄎㄡˇ
+㸸 0 ㄎㄡˇ
+扣 0 ㄎㄡˋ
+寇 0 ㄎㄡˋ
+叩 0 ㄎㄡˋ
+蔻 0 ㄎㄡˋ
+釦 0 ㄎㄡˋ
+鷇 0 ㄎㄡˋ
+筘 0 ㄎㄡˋ
+佝 0 ㄎㄡˋ
+怐 0 ㄎㄡˋ
+滱 0 ㄎㄡˋ
+瞉 0 ㄎㄡˋ
+簆 0 ㄎㄡˋ
+抇 0 ㄎㄡˋ
+傴 0 ㄎㄡˋ
+敂 0 ㄎㄡˋ
+冦 0 ㄎㄡˋ
+宼 0 ㄎㄡˋ
+伛 0 ㄎㄡˋ
+窛 0 ㄎㄡˋ
+蔲 0 ㄎㄡˋ
+坑 0 ㄎㄥ
+硜 0 ㄎㄥ
+鏗 0 ㄎㄥ
+牼 0 ㄎㄥ
+吭 0 ㄎㄥ
+阬 0 ㄎㄥ
+硻 0 ㄎㄥ
+銵 0 ㄎㄥ
+娙 0 ㄎㄥ
+挳 0 ㄎㄥ
+鍞 0 ㄎㄥ
+傾 0 ㄎㄥ
+囥 0 ㄎㄥ
+邟 0 ㄎㄥ
+笐 0 ㄎㄥ
+慳 0 ㄎㄥ
+誙 0 ㄎㄥ
+妔 0 ㄎㄥ
+砊 0 ㄎㄥ
+揁 0 ㄎㄥ
+摼 0 ㄎㄥ
+䃘 0 ㄎㄥ
+劥 0 ㄎㄥ
+殸 0 ㄎㄥ
+挳 0 ㄎㄥˇ
+肯 0 ㄎㄥˇ
+肎 0 ㄎㄥˇ
+康 0 ㄎㄤ
+慷 0 ㄎㄤ
+糠 0 ㄎㄤ
+鏮 0 ㄎㄤ
+漮 0 ㄎㄤ
+嫝 0 ㄎㄤ
+鱇 0 ㄎㄤ
+忼 0 ㄎㄤ
+粇 0 ㄎㄤ
+嵻 0 ㄎㄤ
+穅 0 ㄎㄤ
+躿 0 ㄎㄤ
+㝩 0 ㄎㄤ
+䆲 0 ㄎㄤ
+慷 0 ㄎㄤˇ
+骯 0 ㄎㄤˇ
+忼 0 ㄎㄤˇ
+亢 0 ㄎㄤˋ
+抗 0 ㄎㄤˋ
+炕 0 ㄎㄤˋ
+伉 0 ㄎㄤˋ
+匟 0 ㄎㄤˋ
+囥 0 ㄎㄤˋ
+犺 0 ㄎㄤˋ
+閌 0 ㄎㄤˋ
+邟 0 ㄎㄤˋ
+鈧 0 ㄎㄤˋ
+吭 0 ㄎㄤˋ
+沆 0 ㄎㄤˋ
+阬 0 ㄎㄤˋ
+斻 0 ㄎㄤˋ
+肮 0 ㄎㄤˋ
+苀 0 ㄎㄤˋ
+迒 0 ㄎㄤˋ
+笐 0 ㄎㄤˋ
+蚢 0 ㄎㄤˋ
+貥 0 ㄎㄤˋ
+魧 0 ㄎㄤˋ
+砊 0 ㄎㄤˋ
+扛 0 ㄎㄤˊ
+刊 0 ㄎㄢ
+堪 0 ㄎㄢ
+勘 0 ㄎㄢ
+戡 0 ㄎㄢ
+看 0 ㄎㄢ
+龕 0 ㄎㄢ
+嵁 0 ㄎㄢ
+嵌 0 ㄎㄢ
+歁 0 ㄎㄢ
+墈 0 ㄎㄢ
+磡 0 ㄎㄢ
+刋 0 ㄎㄢ
+栞 0 ㄎㄢ
+盫 0 ㄎㄢ
+砍 0 ㄎㄢˇ
+侃 0 ㄎㄢˇ
+坎 0 ㄎㄢˇ
+崁 0 ㄎㄢˇ
+嵌 0 ㄎㄢˇ
+莰 0 ㄎㄢˇ
+檻 0 ㄎㄢˇ
+欿 0 ㄎㄢˇ
+轗 0 ㄎㄢˇ
+歁 0 ㄎㄢˇ
+歞 0 ㄎㄢˇ
+埳 0 ㄎㄢˇ
+凵 0 ㄎㄢˇ
+顑 0 ㄎㄢˇ
+堿 0 ㄎㄢˇ
+竷 0 ㄎㄢˇ
+闞 0 ㄎㄢˇ
+偘 0 ㄎㄢˇ
+塪 0 ㄎㄢˇ
+㙳 0 ㄎㄢˇ
+惂 0 ㄎㄢˇ
+輡 0 ㄎㄢˇ
+看 0 ㄎㄢˋ
+瞰 0 ㄎㄢˋ
+勘 0 ㄎㄢˋ
+闞 0 ㄎㄢˋ
+矙 0 ㄎㄢˋ
+磡 0 ㄎㄢˋ
+衎 0 ㄎㄢˋ
+墈 0 ㄎㄢˋ
+碪 0 ㄎㄢˋ
+譀 0 ㄎㄢˋ
+咖 0 ㄎㄚ
+喀 0 ㄎㄚ
+哈 0 ㄎㄚ
+咔 0 ㄎㄚ
+鉲 0 ㄎㄚ
+刮 0 ㄎㄚ
+卡 0 ㄎㄚˇ
+咳 0 ㄎㄚˇ
+佧 0 ㄎㄚˇ
+咔 0 ㄎㄚˇ
+鉲 0 ㄎㄚˇ
+拤 0 ㄎㄚˇ
+咯 0 ㄎㄚˇ
+喀 0 ㄎㄚˋ
+髂 0 ㄎㄚˋ
+開 0 ㄎㄞ
+揩 0 ㄎㄞ
+痎 0 ㄎㄞ
+侅 0 ㄎㄞ
+奒 0 ㄎㄞ
+凱 0 ㄎㄞˇ
+慨 0 ㄎㄞˇ
+楷 0 ㄎㄞˇ
+愷 0 ㄎㄞˇ
+剴 0 ㄎㄞˇ
+豈 0 ㄎㄞˇ
+鎧 0 ㄎㄞˇ
+塏 0 ㄎㄞˇ
+闓 0 ㄎㄞˇ
+鍇 0 ㄎㄞˇ
+颽 0 ㄎㄞˇ
+暟 0 ㄎㄞˇ
+輆 0 ㄎㄞˇ
+覬 0 ㄎㄞˇ
+喈 0 ㄎㄞˇ
+湝 0 ㄎㄞˇ
+瑎 0 ㄎㄞˇ
+磑 0 ㄎㄞˇ
+蝔 0 ㄎㄞˇ
+顗 0 ㄎㄞˇ
+鶛 0 ㄎㄞˇ
+嵦 0 ㄎㄞˇ
+䁗 0 ㄎㄞˇ
+蒈 0 ㄎㄞˇ
+慨 0 ㄎㄞˋ
+愾 0 ㄎㄞˋ
+愒 0 ㄎㄞˋ
+咳 0 ㄎㄞˋ
+欬 0 ㄎㄞˋ
+烗 0 ㄎㄞˋ
+勓 0 ㄎㄞˋ
+壒 0 ㄎㄞˋ
+概 0 ㄎㄞˋ
+濭 0 ㄎㄞˋ
+忾 0 ㄎㄞˋ
+炌 0 ㄎㄞˋ
+幆 0 ㄎㄞˋ
+嘅 0 ㄎㄞˋ
+槪 0 ㄎㄞˋ
+槩 0 ㄎㄞˋ
+哭 0 ㄎㄨ
+枯 0 ㄎㄨ
+窟 0 ㄎㄨ
+骷 0 ㄎㄨ
+跍 0 ㄎㄨ
+挎 0 ㄎㄨ
+桍 0 ㄎㄨ
+刳 0 ㄎㄨ
+顝 0 ㄎㄨ
+胐 0 ㄎㄨ
+橭 0 ㄎㄨ
+窋 0 ㄎㄨ
+堀 0 ㄎㄨ
+箍 0 ㄎㄨ
+郀 0 ㄎㄨ
+笟 0 ㄎㄨ
+軲 0 ㄎㄨ
+圐 0 ㄎㄨ
+鮬 0 ㄎㄨ
+崫 0 ㄎㄨ
+圣 0 ㄎㄨ
+空 0 ㄎㄨㄥ
+崆 0 ㄎㄨㄥ
+倥 0 ㄎㄨㄥ
+箜 0 ㄎㄨㄥ
+悾 0 ㄎㄨㄥ
+硿 0 ㄎㄨㄥ
+涳 0 ㄎㄨㄥ
+錓 0 ㄎㄨㄥ
+焢 0 ㄎㄨㄥ
+谾 0 ㄎㄨㄥ
+曌 0 ㄎㄨㄥ
+鞚 0 ㄎㄨㄥ
+㚚 0 ㄎㄨㄥ
+埪 0 ㄎㄨㄥ
+鵼 0 ㄎㄨㄥ
+恐 0 ㄎㄨㄥˇ
+孔 0 ㄎㄨㄥˇ
+倥 0 ㄎㄨㄥˇ
+吼 0 ㄎㄨㄥˇ
+悾 0 ㄎㄨㄥˇ
+空 0 ㄎㄨㄥˋ
+控 0 ㄎㄨㄥˋ
+鞚 0 ㄎㄨㄥˋ
+羫 0 ㄎㄨㄥˋ
+匡 0 ㄎㄨㄤ
+框 0 ㄎㄨㄤ
+筐 0 ㄎㄨㄤ
+誆 0 ㄎㄨㄤ
+劻 0 ㄎㄨㄤ
+恇 0 ㄎㄨㄤ
+洭 0 ㄎㄨㄤ
+眶 0 ㄎㄨㄤ
+哐 0 ㄎㄨㄤ
+邼 0 ㄎㄨㄤ
+㑌 0 ㄎㄨㄤ
+匩 0 ㄎㄨㄤ
+䒰 0 ㄎㄨㄤ
+硄 0 ㄎㄨㄤ
+軭 0 ㄎㄨㄤ
+俇 0 ㄎㄨㄤˇ
+儣 0 ㄎㄨㄤˇ
+懬 0 ㄎㄨㄤˇ
+況 0 ㄎㄨㄤˋ
+礦 0 ㄎㄨㄤˋ
+曠 0 ㄎㄨㄤˋ
+框 0 ㄎㄨㄤˋ
+眶 0 ㄎㄨㄤˋ
+鄺 0 ㄎㄨㄤˋ
+貺 0 ㄎㄨㄤˋ
+壙 0 ㄎㄨㄤˋ
+纊 0 ㄎㄨㄤˋ
+絖 0 ㄎㄨㄤˋ
+懭 0 ㄎㄨㄤˋ
+爌 0 ㄎㄨㄤˋ
+彉 0 ㄎㄨㄤˋ
+怳 0 ㄎㄨㄤˋ
+紖 0 ㄎㄨㄤˋ
+軦 0 ㄎㄨㄤˋ
+矌 0 ㄎㄨㄤˋ
+况 0 ㄎㄨㄤˋ
+眖 0 ㄎㄨㄤˋ
+鋛 0 ㄎㄨㄤˋ
+兤 0 ㄎㄨㄤˋ
+鑛 0 ㄎㄨㄤˋ
+黋 0 ㄎㄨㄤˋ
+狂 0 ㄎㄨㄤˊ
+誑 0 ㄎㄨㄤˊ
+鵟 0 ㄎㄨㄤˊ
+狅 0 ㄎㄨㄤˊ
+俇 0 ㄎㄨㄤˊ
+仼 0 ㄎㄨㄤˊ
+抂 0 ㄎㄨㄤˊ
+軖 0 ㄎㄨㄤˊ
+寬 0 ㄎㄨㄢ
+髖 0 ㄎㄨㄢ
+臗 0 ㄎㄨㄢ
+寛 0 ㄎㄨㄢ
+款 0 ㄎㄨㄢˇ
+窾 0 ㄎㄨㄢˇ
+梡 0 ㄎㄨㄢˇ
+欵 0 ㄎㄨㄢˇ
+歀 0 ㄎㄨㄢˇ
+窽 0 ㄎㄨㄢˇ
+苦 0 ㄎㄨˇ
+楛 0 ㄎㄨˇ
+瘔 0 ㄎㄨˇ
+庫 0 ㄎㄨˋ
+褲 0 ㄎㄨˋ
+酷 0 ㄎㄨˋ
+嚳 0 ㄎㄨˋ
+矻 0 ㄎㄨˋ
+瘔 0 ㄎㄨˋ
+趶 0 ㄎㄨˋ
+厙 0 ㄎㄨˋ
+硞 0 ㄎㄨˋ
+俈 0 ㄎㄨˋ
+秙 0 ㄎㄨˋ
+絝 0 ㄎㄨˋ
+袴 0 ㄎㄨˋ
+焅 0 ㄎㄨˋ
+誇 0 ㄎㄨㄚ
+夸 0 ㄎㄨㄚ
+姱 0 ㄎㄨㄚ
+荂 0 ㄎㄨㄚ
+晇 0 ㄎㄨㄚ
+侉 0 ㄎㄨㄚ
+舿 0 ㄎㄨㄚ
+咼 0 ㄎㄨㄚ
+挎 0 ㄎㄨㄚ
+桍 0 ㄎㄨㄚ
+綔 0 ㄎㄨㄚ
+銙 0 ㄎㄨㄚ
+咵 0 ㄎㄨㄚ
+叧 0 ㄎㄨㄚ
+恗 0 ㄎㄨㄚ
+垮 0 ㄎㄨㄚˇ
+侉 0 ㄎㄨㄚˇ
+銙 0 ㄎㄨㄚˇ
+刳 0 ㄎㄨㄚˇ
+挎 0 ㄎㄨㄚˇ
+桍 0 ㄎㄨㄚˇ
+跨 0 ㄎㄨㄚˋ
+胯 0 ㄎㄨㄚˋ
+骻 0 ㄎㄨㄚˋ
+垮 0 ㄎㄨㄚˋ
+姱 0 ㄎㄨㄚˋ
+晇 0 ㄎㄨㄚˋ
+銙 0 ㄎㄨㄚˋ
+㐄 0 ㄎㄨㄚˋ
+挎 0 ㄎㄨㄚˋ
+咼 0 ㄎㄨㄞ
+喎 0 ㄎㄨㄞ
+擓 0 ㄎㄨㄞ
+叧 0 ㄎㄨㄞ
+蒯 0 ㄎㄨㄞˇ
+舀 0 ㄎㄨㄞˇ
+快 0 ㄎㄨㄞˋ
+塊 0 ㄎㄨㄞˋ
+會 0 ㄎㄨㄞˋ
+筷 0 ㄎㄨㄞˋ
+檜 0 ㄎㄨㄞˋ
+劊 0 ㄎㄨㄞˋ
+鄶 0 ㄎㄨㄞˋ
+澮 0 ㄎㄨㄞˋ
+膾 0 ㄎㄨㄞˋ
+噲 0 ㄎㄨㄞˋ
+獪 0 ㄎㄨㄞˋ
+儈 0 ㄎㄨㄞˋ
+鱠 0 ㄎㄨㄞˋ
+駃 0 ㄎㄨㄞˋ
+鬠 0 ㄎㄨㄞˋ
+欳 0 ㄎㄨㄞˋ
+炔 0 ㄎㄨㄞˋ
+蒯 0 ㄎㄨㄞˋ
+瘣 0 ㄎㄨㄞˋ
+廥 0 ㄎㄨㄞˋ
+璯 0 ㄎㄨㄞˋ
+癐 0 ㄎㄨㄞˋ
+瞺 0 ㄎㄨㄞˋ
+旝 0 ㄎㄨㄞˋ
+会 0 ㄎㄨㄞˋ
+块 0 ㄎㄨㄞˋ
+巜 0 ㄎㄨㄞˋ
+凷 0 ㄎㄨㄞˋ
+擃 0 ㄎㄨㄛˇ
+括 0 ㄎㄨㄛˋ
+擴 0 ㄎㄨㄛˋ
+闊 0 ㄎㄨㄛˋ
+廓 0 ㄎㄨㄛˋ
+鞹 0 ㄎㄨㄛˋ
+漷 0 ㄎㄨㄛˋ
+蛞 0 ㄎㄨㄛˋ
+姡 0 ㄎㄨㄛˋ
+霩 0 ㄎㄨㄛˋ
+籗 0 ㄎㄨㄛˋ
+适 0 ㄎㄨㄛˋ
+萿 0 ㄎㄨㄛˋ
+鬠 0 ㄎㄨㄛˋ
+拡 0 ㄎㄨㄛˋ
+挄 0 ㄎㄨㄛˋ
+頢 0 ㄎㄨㄛˋ
+濶 0 ㄎㄨㄛˋ
+鞟 0 ㄎㄨㄛˋ
+虧 0 ㄎㄨㄟ
+窺 0 ㄎㄨㄟ
+盔 0 ㄎㄨㄟ
+闚 0 ㄎㄨㄟ
+刲 0 ㄎㄨㄟ
+悝 0 ㄎㄨㄟ
+鍷 0 ㄎㄨㄟ
+茥 0 ㄎㄨㄟ
+藈 0 ㄎㄨㄟ
+噅 0 ㄎㄨㄟ
+巋 0 ㄎㄨㄟ
+蘬 0 ㄎㄨㄟ
+楏 0 ㄎㄨㄟ
+聧 0 ㄎㄨㄟ
+蝰 0 ㄎㄨㄟ
+傀 0 ㄎㄨㄟˇ
+跬 0 ㄎㄨㄟˇ
+頍 0 ㄎㄨㄟˇ
+煃 0 ㄎㄨㄟˇ
+蹞 0 ㄎㄨㄟˇ
+峞 0 ㄎㄨㄟˇ
+揆 0 ㄎㄨㄟˇ
+磈 0 ㄎㄨㄟˇ
+尯 0 ㄎㄨㄟˇ
+猤 0 ㄎㄨㄟˇ
+愧 0 ㄎㄨㄟˋ
+潰 0 ㄎㄨㄟˋ
+匱 0 ㄎㄨㄟˋ
+饋 0 ㄎㄨㄟˋ
+餽 0 ㄎㄨㄟˋ
+喟 0 ㄎㄨㄟˋ
+簣 0 ㄎㄨㄟˋ
+媿 0 ㄎㄨㄟˋ
+聵 0 ㄎㄨㄟˋ
+憒 0 ㄎㄨㄟˋ
+簀 0 ㄎㄨㄟˋ
+蕢 0 ㄎㄨㄟˋ
+瞶 0 ㄎㄨㄟˋ
+槶 0 ㄎㄨㄟˋ
+樻 0 ㄎㄨㄟˋ
+鐀 0 ㄎㄨㄟˋ
+嘳 0 ㄎㄨㄟˋ
+撌 0 ㄎㄨㄟˋ
+騩 0 ㄎㄨㄟˋ
+硊 0 ㄎㄨㄟˋ
+蔮 0 ㄎㄨㄟˋ
+歸 0 ㄎㄨㄟˋ
+腃 0 ㄎㄨㄟˋ
+归 0 ㄎㄨㄟˋ
+帰 0 ㄎㄨㄟˋ
+胿 0 ㄎㄨㄟˋ
+謉 0 ㄎㄨㄟˋ
+籄 0 ㄎㄨㄟˋ
+鑎 0 ㄎㄨㄟˋ
+殨 0 ㄎㄨㄟˋ
+聭 0 ㄎㄨㄟˋ
+䙡 0 ㄎㄨㄟˋ
+䰎 0 ㄎㄨㄟˋ
+糩 0 ㄎㄨㄟˋ
+魁 0 ㄎㄨㄟˊ
+睽 0 ㄎㄨㄟˊ
+奎 0 ㄎㄨㄟˊ
+揆 0 ㄎㄨㄟˊ
+葵 0 ㄎㄨㄟˊ
+逵 0 ㄎㄨㄟˊ
+戣 0 ㄎㄨㄟˊ
+夔 0 ㄎㄨㄟˊ
+騤 0 ㄎㄨㄟˊ
+暌 0 ㄎㄨㄟˊ
+鄈 0 ㄎㄨㄟˊ
+頯 0 ㄎㄨㄟˊ
+聧 0 ㄎㄨㄟˊ
+楏 0 ㄎㄨㄟˊ
+櫆 0 ㄎㄨㄟˊ
+湀 0 ㄎㄨㄟˊ
+馗 0 ㄎㄨㄟˊ
+楑 0 ㄎㄨㄟˊ
+犪 0 ㄎㄨㄟˊ
+躨 0 ㄎㄨㄟˊ
+眭 0 ㄎㄨㄟˊ
+鍷 0 ㄎㄨㄟˊ
+晆 0 ㄎㄨㄟˊ
+鍨 0 ㄎㄨㄟˊ
+虁 0 ㄎㄨㄟˊ
+昆 0 ㄎㄨㄣ
+崑 0 ㄎㄨㄣ
+坤 0 ㄎㄨㄣ
+琨 0 ㄎㄨㄣ
+錕 0 ㄎㄨㄣ
+焜 0 ㄎㄨㄣ
+褌 0 ㄎㄨㄣ
+晜 0 ㄎㄨㄣ
+鯤 0 ㄎㄨㄣ
+菎 0 ㄎㄨㄣ
+騉 0 ㄎㄨㄣ
+髡 0 ㄎㄨㄣ
+惃 0 ㄎㄨㄣ
+猑 0 ㄎㄨㄣ
+混 0 ㄎㄨㄣ
+倱 0 ㄎㄨㄣ
+緄 0 ㄎㄨㄣ
+堃 0 ㄎㄨㄣ
+崐 0 ㄎㄨㄣ
+㡓 0 ㄎㄨㄣ
+髠 0 ㄎㄨㄣ
+蜫 0 ㄎㄨㄣ
+裩 0 ㄎㄨㄣ
+髨 0 ㄎㄨㄣ
+瑻 0 ㄎㄨㄣ
+醌 0 ㄎㄨㄣ
+罤 0 ㄎㄨㄣ
+捆 0 ㄎㄨㄣˇ
+綑 0 ㄎㄨㄣˇ
+悃 0 ㄎㄨㄣˇ
+梱 0 ㄎㄨㄣˇ
+閫 0 ㄎㄨㄣˇ
+壼 0 ㄎㄨㄣˇ
+稛 0 ㄎㄨㄣˇ
+硱 0 ㄎㄨㄣˇ
+裍 0 ㄎㄨㄣˇ
+齫 0 ㄎㄨㄣˇ
+棞 0 ㄎㄨㄣˇ
+祵 0 ㄎㄨㄣˇ
+稇 0 ㄎㄨㄣˇ
+閸 0 ㄎㄨㄣˇ
+困 0 ㄎㄨㄣˋ
+睏 0 ㄎㄨㄣˋ
+涃 0 ㄎㄨㄣˋ
+梱 0 ㄎㄨㄣˋ
+悃 0 ㄎㄨㄣˋ
+硱 0 ㄎㄨㄣˋ
+碅 0 ㄎㄨㄣˋ
+裍 0 ㄎㄨㄣˋ
+㫻 0 ㄎㄨㄣˋ
+科 0 ㄎㄜ
+柯 0 ㄎㄜ
+刻 0 ㄎㄜ
+棵 0 ㄎㄜ
+顆 0 ㄎㄜ
+苛 0 ㄎㄜ
+瞌 0 ㄎㄜ
+磕 0 ㄎㄜ
+蚵 0 ㄎㄜ
+蝌 0 ㄎㄜ
+軻 0 ㄎㄜ
+稞 0 ㄎㄜ
+窠 0 ㄎㄜ
+珂 0 ㄎㄜ
+砢 0 ㄎㄜ
+簻 0 ㄎㄜ
+薖 0 ㄎㄜ
+峇 0 ㄎㄜ
+鈳 0 ㄎㄜ
+樖 0 ㄎㄜ
+犐 0 ㄎㄜ
+嵙 0 ㄎㄜ
+嗑 0 ㄎㄜ
+溘 0 ㄎㄜ
+髁 0 ㄎㄜ
+嵑 0 ㄎㄜ
+酠 0 ㄎㄜ
+搕 0 ㄎㄜ
+頦 0 ㄎㄜ
+魺 0 ㄎㄜ
+濭 0 ㄎㄜ
+胢 0 ㄎㄜ
+萪 0 ㄎㄜ
+礚 0 ㄎㄜ
+窼 0 ㄎㄜ
+可 0 ㄎㄜˇ
+渴 0 ㄎㄜˇ
+哿 0 ㄎㄜˇ
+坷 0 ㄎㄜˇ
+岢 0 ㄎㄜˇ
+堁 0 ㄎㄜˇ
+敤 0 ㄎㄜˇ
+嶱 0 ㄎㄜˇ
+閜 0 ㄎㄜˇ
+顆 0 ㄎㄜˇ
+酠 0 ㄎㄜˇ
+㞹 0 ㄎㄜˇ
+炣 0 ㄎㄜˇ
+渇 0 ㄎㄜˇ
+客 0 ㄎㄜˋ
+課 0 ㄎㄜˋ
+刻 0 ㄎㄜˋ
+克 0 ㄎㄜˋ
+剋 0 ㄎㄜˋ
+喀 0 ㄎㄜˋ
+溘 0 ㄎㄜˋ
+恪 0 ㄎㄜˋ
+嗑 0 ㄎㄜˋ
+可 0 ㄎㄜˋ
+榼 0 ㄎㄜˋ
+緙 0 ㄎㄜˋ
+髁 0 ㄎㄜˋ
+氪 0 ㄎㄜˋ
+騍 0 ㄎㄜˋ
+搕 0 ㄎㄜˋ
+厒 0 ㄎㄜˋ
+勀 0 ㄎㄜˋ
+蚵 0 ㄎㄜˋ
+佫 0 ㄎㄜˋ
+殑 0 ㄎㄜˋ
+愘 0 ㄎㄜˋ
+楁 0 ㄎㄜˋ
+錁 0 ㄎㄜˋ
+髂 0 ㄎㄜˋ
+勊 0 ㄎㄜˋ
+娔 0 ㄎㄜˋ
+尅 0 ㄎㄜˋ
+愙 0 ㄎㄜˋ
+碦 0 ㄎㄜˋ
+礊 0 ㄎㄜˋ
+醘 0 ㄎㄜˋ
+䶗 0 ㄎㄜˋ
+衉 0 ㄎㄜˋ
+咳 0 ㄎㄜˊ
+殼 0 ㄎㄜˊ
+欬 0 ㄎㄜˊ
+頦 0 ㄎㄜˊ
+壳 0 ㄎㄜˊ
+殻 0 ㄎㄜˊ
+揢 0 ㄎㄜˊ
+尻 0 ㄎㄠ
+訄 0 ㄎㄠ
+嵪 0 ㄎㄠ
+髛 0 ㄎㄠ
+考 0 ㄎㄠˇ
+烤 0 ㄎㄠˇ
+拷 0 ㄎㄠˇ
+栲 0 ㄎㄠˇ
+攷 0 ㄎㄠˇ
+薧 0 ㄎㄠˇ
+洘 0 ㄎㄠˇ
+熇 0 ㄎㄠˇ
+燺 0 ㄎㄠˇ
+丂 0 ㄎㄠˇ
+靠 0 ㄎㄠˋ
+銬 0 ㄎㄠˋ
+犒 0 ㄎㄠˋ
+鯌 0 ㄎㄠˋ
+焅 0 ㄎㄠˋ
+鮳 0 ㄎㄠˋ
+肯 0 ㄎㄣˇ
+啃 0 ㄎㄣˇ
+墾 0 ㄎㄣˇ
+懇 0 ㄎㄣˇ
+齦 0 ㄎㄣˇ
+豤 0 ㄎㄣˇ
+錹 0 ㄎㄣˇ
+掯 0 ㄎㄣˇ
+硍 0 ㄎㄣˇ
+肎 0 ㄎㄣˇ
+恳 0 ㄎㄣˇ
+貇 0 ㄎㄣˇ
+掯 0 ㄎㄣˋ
+硍 0 ㄎㄣˋ
+裉 0 ㄎㄣˋ
+啃 0 ㄎㄣˋ
+褃 0 ㄎㄣˋ
+ㄍ 0 ㄍ
+句 0 ㄍㄡ
+溝 0 ㄍㄡ
+勾 0 ㄍㄡ
+鉤 0 ㄍㄡ
+枸 0 ㄍㄡ
+泃 0 ㄍㄡ
+篝 0 ㄍㄡ
+緱 0 ㄍㄡ
+构 0 ㄍㄡ
+芶 0 ㄍㄡ
+耩 0 ㄍㄡ
+佝 0 ㄍㄡ
+區 0 ㄍㄡ
+搆 0 ㄍㄡ
+袧 0 ㄍㄡ
+斠 0 ㄍㄡ
+簼 0 ㄍㄡ
+韝 0 ㄍㄡ
+齁 0 ㄍㄡ
+区 0 ㄍㄡ
+沟 0 ㄍㄡ
+鈎 0 ㄍㄡ
+鞲 0 ㄍㄡ
+褠 0 ㄍㄡ
+䵶 0 ㄍㄡ
+狗 0 ㄍㄡˇ
+岣 0 ㄍㄡˇ
+枸 0 ㄍㄡˇ
+笱 0 ㄍㄡˇ
+耇 0 ㄍㄡˇ
+茩 0 ㄍㄡˇ
+蚼 0 ㄍㄡˇ
+怐 0 ㄍㄡˇ
+耈 0 ㄍㄡˇ
+豿 0 ㄍㄡˇ
+䔛 0 ㄍㄡˇ
+耉 0 ㄍㄡˇ
+苟 0 ㄍㄡˇ
+茍 0 ㄍㄡˇ
+夠 0 ㄍㄡˋ
+購 0 ㄍㄡˋ
+垢 0 ㄍㄡˋ
+構 0 ㄍㄡˋ
+媾 0 ㄍㄡˋ
+彀 0 ㄍㄡˋ
+搆 0 ㄍㄡˋ
+詬 0 ㄍㄡˋ
+遘 0 ㄍㄡˋ
+覯 0 ㄍㄡˋ
+冓 0 ㄍㄡˋ
+姤 0 ㄍㄡˋ
+雊 0 ㄍㄡˋ
+傋 0 ㄍㄡˋ
+瞉 0 ㄍㄡˋ
+簼 0 ㄍㄡˋ
+唦 0 ㄍㄡˋ
+勾 0 ㄍㄡˋ
+句 0 ㄍㄡˋ
+逅 0 ㄍㄡˋ
+构 0 ㄍㄡˋ
+鷇 0 ㄍㄡˋ
+坸 0 ㄍㄡˋ
+玽 0 ㄍㄡˋ
+够 0 ㄍㄡˋ
+訽 0 ㄍㄡˋ
+撀 0 ㄍㄡˋ
+鞲 0 ㄍㄡˋ
+煹 0 ㄍㄡˋ
+更 0 ㄍㄥ
+耕 0 ㄍㄥ
+庚 0 ㄍㄥ
+粳 0 ㄍㄥ
+羹 0 ㄍㄥ
+賡 0 ㄍㄥ
+浭 0 ㄍㄥ
+緪 0 ㄍㄥ
+鶊 0 ㄍㄥ
+菮 0 ㄍㄥ
+揯 0 ㄍㄥ
+挭 0 ㄍㄥ
+刯 0 ㄍㄥ
+畊 0 ㄍㄥ
+秔 0 ㄍㄥ
+稉 0 ㄍㄥ
+絚 0 ㄍㄥ
+羮 0 ㄍㄥ
+𨁈 0 ㄍㄥ
+梗 0 ㄍㄥˇ
+耿 0 ㄍㄥˇ
+哽 0 ㄍㄥˇ
+綆 0 ㄍㄥˇ
+鯁 0 ㄍㄥˇ
+埂 0 ㄍㄥˇ
+骾 0 ㄍㄥˇ
+郠 0 ㄍㄥˇ
+挭 0 ㄍㄥˇ
+炚 0 ㄍㄥˇ
+褧 0 ㄍㄥˇ
+峺 0 ㄍㄥˇ
+莄 0 ㄍㄥˇ
+炛 0 ㄍㄥˇ
+㹴 0 ㄍㄥˇ
+更 0 ㄍㄥˋ
+亙 0 ㄍㄥˋ
+堩 0 ㄍㄥˋ
+埂 0 ㄍㄥˋ
+挭 0 ㄍㄥˋ
+浭 0 ㄍㄥˋ
+綆 0 ㄍㄥˋ
+亘 0 ㄍㄥˋ
+䱭 0 ㄍㄥˋ
+剛 0 ㄍㄤ
+鋼 0 ㄍㄤ
+缸 0 ㄍㄤ
+崗 0 ㄍㄤ
+綱 0 ㄍㄤ
+岡 0 ㄍㄤ
+肛 0 ㄍㄤ
+扛 0 ㄍㄤ
+杠 0 ㄍㄤ
+罡 0 ㄍㄤ
+疘 0 ㄍㄤ
+釭 0 ㄍㄤ
+堽 0 ㄍㄤ
+碙 0 ㄍㄤ
+棡 0 ㄍㄤ
+笐 0 ㄍㄤ
+堈 0 ㄍㄤ
+犅 0 ㄍㄤ
+亢 0 ㄍㄤ
+缶 0 ㄍㄤ
+韁 0 ㄍㄤ
+仜 0 ㄍㄤ
+妅 0 ㄍㄤ
+灴 0 ㄍㄤ
+玒 0 ㄍㄤ
+瓨 0 ㄍㄤ
+矼 0 ㄍㄤ
+豇 0 ㄍㄤ
+魟 0 ㄍㄤ
+玜 0 ㄍㄤ
+娂 0 ㄍㄤ
+掆 0 ㄍㄤ
+缻 0 ㄍㄤ
+罁 0 ㄍㄤ
+鎠 0 ㄍㄤ
+繮 0 ㄍㄤ
+港 0 ㄍㄤˇ
+崗 0 ㄍㄤˇ
+岡 0 ㄍㄤˇ
+奋 0 ㄍㄤˇ
+㽘 0 ㄍㄤˇ
+槓 0 ㄍㄤˋ
+杠 0 ㄍㄤˋ
+虹 0 ㄍㄤˋ
+摃 0 ㄍㄤˋ
+戇 0 ㄍㄤˋ
+焵 0 ㄍㄤˋ
+戅 0 ㄍㄤˋ
+乾 0 ㄍㄢ
+甘 0 ㄍㄢ
+干 0 ㄍㄢ
+竿 0 ㄍㄢ
+肝 0 ㄍㄢ
+尷 0 ㄍㄢ
+柑 0 ㄍㄢ
+坩 0 ㄍㄢ
+泔 0 ㄍㄢ
+咁 0 ㄍㄢ
+疳 0 ㄍㄢ
+玕 0 ㄍㄢ
+杆 0 ㄍㄢ
+矸 0 ㄍㄢ
+虷 0 ㄍㄢ
+筸 0 ㄍㄢ
+蜬 0 ㄍㄢ
+鳱 0 ㄍㄢ
+嵅 0 ㄍㄢ
+訐 0 ㄍㄢ
+蚶 0 ㄍㄢ
+酣 0 ㄍㄢ
+扞 0 ㄍㄢ
+犴 0 ㄍㄢ
+旰 0 ㄍㄢ
+姏 0 ㄍㄢ
+拑 0 ㄍㄢ
+皯 0 ㄍㄢ
+盰 0 ㄍㄢ
+玵 0 ㄍㄢ
+哻 0 ㄍㄢ
+涆 0 ㄍㄢ
+酐 0 ㄍㄢ
+紺 0 ㄍㄢ
+釬 0 ㄍㄢ
+閈 0 ㄍㄢ
+詌 0 ㄍㄢ
+靬 0 ㄍㄢ
+頇 0 ㄍㄢ
+甝 0 ㄍㄢ
+雸 0 ㄍㄢ
+馯 0 ㄍㄢ
+骭 0 ㄍㄢ
+漧 0 ㄍㄢ
+魽 0 ㄍㄢ
+忓 0 ㄍㄢ
+佄 0 ㄍㄢ
+乹 0 ㄍㄢ
+苷 0 ㄍㄢ
+粓 0 ㄍㄢ
+亁 0 ㄍㄢ
+尶 0 ㄍㄢ
+魐 0 ㄍㄢ
+攼 0 ㄍㄢ
+芉 0 ㄍㄢ
+迀 0 ㄍㄢ
+凲 0 ㄍㄢ
+敢 0 ㄍㄢˇ
+感 0 ㄍㄢˇ
+趕 0 ㄍㄢˇ
+桿 0 ㄍㄢˇ
+橄 0 ㄍㄢˇ
+稈 0 ㄍㄢˇ
+澉 0 ㄍㄢˇ
+皯 0 ㄍㄢˇ
+盰 0 ㄍㄢˇ
+赶 0 ㄍㄢˇ
+瞰 0 ㄍㄢˇ
+矸 0 ㄍㄢˇ
+噉 0 ㄍㄢˇ
+撖 0 ㄍㄢˇ
+憨 0 ㄍㄢˇ
+簳 0 ㄍㄢˇ
+譀 0 ㄍㄢˇ
+豃 0 ㄍㄢˇ
+轗 0 ㄍㄢˇ
+矙 0 ㄍㄢˇ
+仠 0 ㄍㄢˇ
+秆 0 ㄍㄢˇ
+擀 0 ㄍㄢˇ
+饏 0 ㄍㄢˇ
+鱤 0 ㄍㄢˇ
+幹 0 ㄍㄢˋ
+贛 0 ㄍㄢˋ
+凎 0 ㄍㄢˋ
+淦 0 ㄍㄢˋ
+紺 0 ㄍㄢˋ
+旰 0 ㄍㄢˋ
+骭 0 ㄍㄢˋ
+詌 0 ㄍㄢˋ
+榦 0 ㄍㄢˋ
+灨 0 ㄍㄢˋ
+涻 0 ㄍㄢˋ
+嵅 0 ㄍㄢˋ
+盰 0 ㄍㄢˋ
+矸 0 ㄍㄢˋ
+涆 0 ㄍㄢˋ
+惍 0 ㄍㄢˋ
+菳 0 ㄍㄢˋ
+澣 0 ㄍㄢˋ
+螒 0 ㄍㄢˋ
+雗 0 ㄍㄢˋ
+鶾 0 ㄍㄢˋ
+汵 0 ㄍㄢˋ
+衦 0 ㄍㄢˋ
+倝 0 ㄍㄢˋ
+檊 0 ㄍㄢˋ
+贑 0 ㄍㄢˋ
+嘎 0 ㄍㄚ
+旮 0 ㄍㄚ
+軋 0 ㄍㄚ
+戛 0 ㄍㄚ
+戞 0 ㄍㄚ
+玍 0 ㄍㄚˇ
+尬 0 ㄍㄚˋ
+魀 0 ㄍㄚˋ
+軋 0 ㄍㄚˊ
+噶 0 ㄍㄚˊ
+釓 0 ㄍㄚˊ
+嘎 0 ㄍㄚˊ
+錷 0 ㄍㄚˊ
+價 0 ㄍㄚ˙
+価 0 ㄍㄚ˙
+該 0 ㄍㄞ
+垓 0 ㄍㄞ
+陔 0 ㄍㄞ
+賅 0 ㄍㄞ
+荄 0 ㄍㄞ
+侅 0 ㄍㄞ
+峐 0 ㄍㄞ
+胲 0 ㄍㄞ
+祴 0 ㄍㄞ
+絯 0 ㄍㄞ
+豥 0 ㄍㄞ
+賌 0 ㄍㄞ
+隑 0 ㄍㄞ
+欬 0 ㄍㄞ
+烗 0 ㄍㄞ
+喈 0 ㄍㄞ
+湝 0 ㄍㄞ
+瑎 0 ㄍㄞ
+輆 0 ㄍㄞ
+蝔 0 ㄍㄞ
+鶛 0 ㄍㄞ
+炌 0 ㄍㄞ
+姟 0 ㄍㄞ
+郂 0 ㄍㄞ
+晐 0 ㄍㄞ
+畡 0 ㄍㄞ
+改 0 ㄍㄞˇ
+妀 0 ㄍㄞˇ
+絠 0 ㄍㄞˇ
+忋 0 ㄍㄞˇ
+概 0 ㄍㄞˋ
+蓋 0 ㄍㄞˋ
+丐 0 ㄍㄞˋ
+鈣 0 ㄍㄞˋ
+溉 0 ㄍㄞˋ
+戤 0 ㄍㄞˋ
+摡 0 ㄍㄞˋ
+瓂 0 ㄍㄞˋ
+芥 0 ㄍㄞˋ
+盍 0 ㄍㄞˋ
+闔 0 ㄍㄞˋ
+丏 0 ㄍㄞˋ
+杚 0 ㄍㄞˋ
+廅 0 ㄍㄞˋ
+熆 0 ㄍㄞˋ
+篕 0 ㄍㄞˋ
+鑉 0 ㄍㄞˋ
+乢 0 ㄍㄞˋ
+匄 0 ㄍㄞˋ
+盇 0 ㄍㄞˋ
+盖 0 ㄍㄞˋ
+葢 0 ㄍㄞˋ
+漑 0 ㄍㄞˋ
+槪 0 ㄍㄞˋ
+槩 0 ㄍㄞˋ
+姑 0 ㄍㄨ
+孤 0 ㄍㄨ
+辜 0 ㄍㄨ
+咕 0 ㄍㄨ
+沽 0 ㄍㄨ
+估 0 ㄍㄨ
+菇 0 ㄍㄨ
+菰 0 ㄍㄨ
+呱 0 ㄍㄨ
+蛄 0 ㄍㄨ
+痼 0 ㄍㄨ
+箍 0 ㄍㄨ
+鴣 0 ㄍㄨ
+觚 0 ㄍㄨ
+酤 0 ㄍㄨ
+泒 0 ㄍㄨ
+罛 0 ㄍㄨ
+箛 0 ㄍㄨ
+鈷 0 ㄍㄨ
+鮕 0 ㄍㄨ
+夃 0 ㄍㄨ
+柧 0 ㄍㄨ
+鈲 0 ㄍㄨ
+軱 0 ㄍㄨ
+家 0 ㄍㄨ
+嫴 0 ㄍㄨ
+橭 0 ㄍㄨ
+枯 0 ㄍㄨ
+骨 0 ㄍㄨ
+轂 0 ㄍㄨ
+怙 0 ㄍㄨ
+胍 0 ㄍㄨ
+蛌 0 ㄍㄨ
+跍 0 ㄍㄨ
+哌 0 ㄍㄨ
+苽 0 ㄍㄨ
+唂 0 ㄍㄨ
+笟 0 ㄍㄨ
+軲 0 ㄍㄨ
+嗗 0 ㄍㄨ
+磆 0 ㄍㄨ
+工 0 ㄍㄨㄥ
+公 0 ㄍㄨㄥ
+功 0 ㄍㄨㄥ
+供 0 ㄍㄨㄥ
+攻 0 ㄍㄨㄥ
+宮 0 ㄍㄨㄥ
+恭 0 ㄍㄨㄥ
+躬 0 ㄍㄨㄥ
+弓 0 ㄍㄨㄥ
+蚣 0 ㄍㄨㄥ
+紅 0 ㄍㄨㄥ
+龔 0 ㄍㄨㄥ
+肱 0 ㄍㄨㄥ
+觥 0 ㄍㄨㄥ
+疘 0 ㄍㄨㄥ
+釭 0 ㄍㄨㄥ
+篢 0 ㄍㄨㄥ
+塨 0 ㄍㄨㄥ
+愩 0 ㄍㄨㄥ
+匑 0 ㄍㄨㄥ
+共 0 ㄍㄨㄥ
+幊 0 ㄍㄨㄥ
+仜 0 ㄍㄨㄥ
+妅 0 ㄍㄨㄥ
+玒 0 ㄍㄨㄥ
+昮 0 ㄍㄨㄥ
+羾 0 ㄍㄨㄥ
+舼 0 ㄍㄨㄥ
+蛬 0 ㄍㄨㄥ
+鈆 0 ㄍㄨㄥ
+輁 0 ㄍㄨㄥ
+杛 0 ㄍㄨㄥ
+侊 0 ㄍㄨㄥ
+玜 0 ㄍㄨㄥ
+糿 0 ㄍㄨㄥ
+糼 0 ㄍㄨㄥ
+咣 0 ㄍㄨㄥ
+娂 0 ㄍㄨㄥ
+宫 0 ㄍㄨㄥ
+躳 0 ㄍㄨㄥ
+匔 0 ㄍㄨㄥ
+髸 0 ㄍㄨㄥ
+觵 0 ㄍㄨㄥ
+碽 0 ㄍㄨㄥ
+䳍 0 ㄍㄨㄥ
+龏 0 ㄍㄨㄥ
+鞏 0 ㄍㄨㄥˇ
+拱 0 ㄍㄨㄥˇ
+汞 0 ㄍㄨㄥˇ
+共 0 ㄍㄨㄥˇ
+珙 0 ㄍㄨㄥˇ
+礦 0 ㄍㄨㄥˇ
+栱 0 ㄍㄨㄥˇ
+廾 0 ㄍㄨㄥˇ
+拲 0 ㄍㄨㄥˇ
+蛬 0 ㄍㄨㄥˇ
+穬 0 ㄍㄨㄥˇ
+龔 0 ㄍㄨㄥˇ
+銾 0 ㄍㄨㄥˇ
+鋛 0 ㄍㄨㄥˇ
+鑛 0 ㄍㄨㄥˇ
+孒 0 ㄍㄨㄥˇ
+巩 0 ㄍㄨㄥˇ
+㧬 0 ㄍㄨㄥˇ
+共 0 ㄍㄨㄥˋ
+供 0 ㄍㄨㄥˋ
+貢 0 ㄍㄨㄥˋ
+羾 0 ㄍㄨㄥˋ
+摃 0 ㄍㄨㄥˋ
+贛 0 ㄍㄨㄥˋ
+烡 0 ㄍㄨㄥˋ
+珙 0 ㄍㄨㄥˋ
+舼 0 ㄍㄨㄥˋ
+嗊 0 ㄍㄨㄥˋ
+幊 0 ㄍㄨㄥˋ
+愩 0 ㄍㄨㄥˋ
+輁 0 ㄍㄨㄥˋ
+輂 0 ㄍㄨㄥˋ
+觨 0 ㄍㄨㄥˋ
+篢 0 ㄍㄨㄥˋ
+光 0 ㄍㄨㄤ
+胱 0 ㄍㄨㄤ
+洸 0 ㄍㄨㄤ
+桄 0 ㄍㄨㄤ
+珖 0 ㄍㄨㄤ
+炚 0 ㄍㄨㄤ
+茪 0 ㄍㄨㄤ
+銧 0 ㄍㄨㄤ
+垙 0 ㄍㄨㄤ
+烡 0 ㄍㄨㄤ
+絖 0 ㄍㄨㄤ
+灮 0 ㄍㄨㄤ
+侊 0 ㄍㄨㄤ
+咣 0 ㄍㄨㄤ
+姯 0 ㄍㄨㄤ
+輄 0 ㄍㄨㄤ
+僙 0 ㄍㄨㄤ
+黆 0 ㄍㄨㄤ
+炗 0 ㄍㄨㄤ
+炛 0 ㄍㄨㄤ
+硄 0 ㄍㄨㄤ
+廣 0 ㄍㄨㄤˇ
+獷 0 ㄍㄨㄤˇ
+迋 0 ㄍㄨㄤˇ
+臩 0 ㄍㄨㄤˇ
+嚝 0 ㄍㄨㄤˇ
+懭 0 ㄍㄨㄤˇ
+瀇 0 ㄍㄨㄤˇ
+鄺 0 ㄍㄨㄤˇ
+爌 0 ㄍㄨㄤˇ
+穬 0 ㄍㄨㄤˇ
+纊 0 ㄍㄨㄤˇ
+広 0 ㄍㄨㄤˇ
+兤 0 ㄍㄨㄤˇ
+黋 0 ㄍㄨㄤˇ
+逛 0 ㄍㄨㄤˋ
+桄 0 ㄍㄨㄤˋ
+臩 0 ㄍㄨㄤˋ
+臦 0 ㄍㄨㄤˋ
+矌 0 ㄍㄨㄤˋ
+櫎 0 ㄍㄨㄤˋ
+官 0 ㄍㄨㄢ
+關 0 ㄍㄨㄢ
+觀 0 ㄍㄨㄢ
+冠 0 ㄍㄨㄢ
+棺 0 ㄍㄨㄢ
+矜 0 ㄍㄨㄢ
+鰥 0 ㄍㄨㄢ
+綸 0 ㄍㄨㄢ
+倌 0 ㄍㄨㄢ
+莞 0 ㄍㄨㄢ
+瘝 0 ㄍㄨㄢ
+毌 0 ㄍㄨㄢ
+鱞 0 ㄍㄨㄢ
+婠 0 ㄍㄨㄢ
+悺 0 ㄍㄨㄢ
+涫 0 ㄍㄨㄢ
+逭 0 ㄍㄨㄢ
+痯 0 ㄍㄨㄢ
+錧 0 ㄍㄨㄢ
+矝 0 ㄍㄨㄢ
+萖 0 ㄍㄨㄢ
+窤 0 ㄍㄨㄢ
+蒄 0 ㄍㄨㄢ
+関 0 ㄍㄨㄢ
+癏 0 ㄍㄨㄢ
+観 0 ㄍㄨㄢ
+闗 0 ㄍㄨㄢ
+輨 0 ㄍㄨㄢ
+管 0 ㄍㄨㄢˇ
+館 0 ㄍㄨㄢˇ
+莞 0 ㄍㄨㄢˇ
+琯 0 ㄍㄨㄢˇ
+筦 0 ㄍㄨㄢˇ
+脘 0 ㄍㄨㄢˇ
+痯 0 ㄍㄨㄢˇ
+錧 0 ㄍㄨㄢˇ
+菅 0 ㄍㄨㄢˇ
+斡 0 ㄍㄨㄢˇ
+綰 0 ㄍㄨㄢˇ
+朊 0 ㄍㄨㄢˇ
+嵈 0 ㄍㄨㄢˇ
+萖 0 ㄍㄨㄢˇ
+舘 0 ㄍㄨㄢˇ
+輨 0 ㄍㄨㄢˇ
+慣 0 ㄍㄨㄢˋ
+貫 0 ㄍㄨㄢˋ
+灌 0 ㄍㄨㄢˋ
+罐 0 ㄍㄨㄢˋ
+摜 0 ㄍㄨㄢˋ
+盥 0 ㄍㄨㄢˋ
+鸛 0 ㄍㄨㄢˋ
+冠 0 ㄍㄨㄢˋ
+觀 0 ㄍㄨㄢˋ
+丱 0 ㄍㄨㄢˋ
+爟 0 ㄍㄨㄢˋ
+瓘 0 ㄍㄨㄢˋ
+祼 0 ㄍㄨㄢˋ
+矔 0 ㄍㄨㄢˋ
+鑵 0 ㄍㄨㄢˋ
+涫 0 ㄍㄨㄢˋ
+悺 0 ㄍㄨㄢˋ
+悹 0 ㄍㄨㄢˋ
+雚 0 ㄍㄨㄢˋ
+鱹 0 ㄍㄨㄢˋ
+毌 0 ㄍㄨㄢˋ
+懽 0 ㄍㄨㄢˋ
+卝 0 ㄍㄨㄢˋ
+泴 0 ㄍㄨㄢˋ
+㮡 0 ㄍㄨㄢˋ
+樌 0 ㄍㄨㄢˋ
+罆 0 ㄍㄨㄢˋ
+観 0 ㄍㄨㄢˋ
+鏆 0 ㄍㄨㄢˋ
+潅 0 ㄍㄨㄢˋ
+遦 0 ㄍㄨㄢˋ
+股 0 ㄍㄨˇ
+古 0 ㄍㄨˇ
+鼓 0 ㄍㄨˇ
+骨 0 ㄍㄨˇ
+谷 0 ㄍㄨˇ
+穀 0 ㄍㄨˇ
+賈 0 ㄍㄨˇ
+凸 0 ㄍㄨˇ
+蠱 0 ㄍㄨˇ
+汩 0 ㄍㄨˇ
+牯 0 ㄍㄨˇ
+滑 0 ㄍㄨˇ
+罟 0 ㄍㄨˇ
+嘏 0 ㄍㄨˇ
+詁 0 ㄍㄨˇ
+轂 0 ㄍㄨˇ
+鵠 0 ㄍㄨˇ
+瞽 0 ㄍㄨˇ
+臌 0 ㄍㄨˇ
+盬 0 ㄍㄨˇ
+羖 0 ㄍㄨˇ
+蛌 0 ㄍㄨˇ
+扢 0 ㄍㄨˇ
+鈷 0 ㄍㄨˇ
+杚 0 ㄍㄨˇ
+淈 0 ㄍㄨˇ
+狜 0 ㄍㄨˇ
+唃 0 ㄍㄨˇ
+尳 0 ㄍㄨˇ
+榖 0 ㄍㄨˇ
+蓇 0 ㄍㄨˇ
+濲 0 ㄍㄨˇ
+瀔 0 ㄍㄨˇ
+愲 0 ㄍㄨˇ
+縎 0 ㄍㄨˇ
+薣 0 ㄍㄨˇ
+估 0 ㄍㄨˇ
+骰 0 ㄍㄨˇ
+抇 0 ㄍㄨˇ
+岵 0 ㄍㄨˇ
+祜 0 ㄍㄨˇ
+焀 0 ㄍㄨˇ
+跍 0 ㄍㄨˇ
+榾 0 ㄍㄨˇ
+谽 0 ㄍㄨˇ
+縠 0 ㄍㄨˇ
+螖 0 ㄍㄨˇ
+鮕 0 ㄍㄨˇ
+瀫 0 ㄍㄨˇ
+顝 0 ㄍㄨˇ
+鶻 0 ㄍㄨˇ
+鼜 0 ㄍㄨˇ
+淿 0 ㄍㄨˇ
+鼔 0 ㄍㄨˇ
+皷 0 ㄍㄨˇ
+糓 0 ㄍㄨˇ
+餶 0 ㄍㄨˇ
+蛊 0 ㄍㄨˇ
+䶜 0 ㄍㄨˇ
+故 0 ㄍㄨˋ
+固 0 ㄍㄨˋ
+顧 0 ㄍㄨˋ
+雇 0 ㄍㄨˋ
+僱 0 ㄍㄨˋ
+錮 0 ㄍㄨˋ
+告 0 ㄍㄨˋ
+估 0 ㄍㄨˋ
+痼 0 ㄍㄨˋ
+梏 0 ㄍㄨˋ
+榾 0 ㄍㄨˋ
+牿 0 ㄍㄨˋ
+堌 0 ㄍㄨˋ
+崮 0 ㄍㄨˋ
+凅 0 ㄍㄨˋ
+棝 0 ㄍㄨˋ
+稒 0 ㄍㄨˋ
+涸 0 ㄍㄨˋ
+婟 0 ㄍㄨˋ
+吿 0 ㄍㄨˋ
+崓 0 ㄍㄨˋ
+鳸 0 ㄍㄨˋ
+怘 0 ㄍㄨˋ
+祻 0 ㄍㄨˋ
+鯝 0 ㄍㄨˋ
+骨 0 ㄍㄨˊ
+豰 0 ㄍㄨˊ
+瓜 0 ㄍㄨㄚ
+括 0 ㄍㄨㄚ
+刮 0 ㄍㄨㄚ
+蝸 0 ㄍㄨㄚ
+颳 0 ㄍㄨㄚ
+呱 0 ㄍㄨㄚ
+聒 0 ㄍㄨㄚ
+鴰 0 ㄍㄨㄚ
+栝 0 ㄍㄨㄚ
+适 0 ㄍㄨㄚ
+騧 0 ㄍㄨㄚ
+胍 0 ㄍㄨㄚ
+腡 0 ㄍㄨㄚ
+筈 0 ㄍㄨㄚ
+葀 0 ㄍㄨㄚ
+劀 0 ㄍㄨㄚ
+瘑 0 ㄍㄨㄚ
+緺 0 ㄍㄨㄚ
+懖 0 ㄍㄨㄚ
+趏 0 ㄍㄨㄚ
+膼 0 ㄍㄨㄚ
+佸 0 ㄍㄨㄚ
+泒 0 ㄍㄨㄚ
+咶 0 ㄍㄨㄚ
+蛌 0 ㄍㄨㄚ
+萿 0 ㄍㄨㄚ
+鈲 0 ㄍㄨㄚ
+髺 0 ㄍㄨㄚ
+匃 0 ㄍㄨㄚ
+哌 0 ㄍㄨㄚ
+䒷 0 ㄍㄨㄚ
+桰 0 ㄍㄨㄚ
+歄 0 ㄍㄨㄚ
+諣 0 ㄍㄨㄚ
+踻 0 ㄍㄨㄚ
+銽 0 ㄍㄨㄚ
+寡 0 ㄍㄨㄚˇ
+剮 0 ㄍㄨㄚˇ
+䈑 0 ㄍㄨㄚˇ
+冎 0 ㄍㄨㄚˇ
+掛 0 ㄍㄨㄚˋ
+卦 0 ㄍㄨㄚˋ
+褂 0 ㄍㄨㄚˋ
+罫 0 ㄍㄨㄚˋ
+罣 0 ㄍㄨㄚˋ
+絓 0 ㄍㄨㄚˋ
+詿 0 ㄍㄨㄚˋ
+挂 0 ㄍㄨㄚˋ
+髺 0 ㄍㄨㄚˋ
+袿 0 ㄍㄨㄚˋ
+坬 0 ㄍㄨㄚˋ
+乖 0 ㄍㄨㄞ
+拐 0 ㄍㄨㄞˇ
+柺 0 ㄍㄨㄞˇ
+枴 0 ㄍㄨㄞˇ
+箉 0 ㄍㄨㄞˇ
+怪 0 ㄍㄨㄞˋ
+旝 0 ㄍㄨㄞˋ
+夬 0 ㄍㄨㄞˋ
+廥 0 ㄍㄨㄞˋ
+癐 0 ㄍㄨㄞˋ
+壞 0 ㄍㄨㄞˋ
+圣 0 ㄍㄨㄞˋ
+恠 0 ㄍㄨㄞˋ
+壊 0 ㄍㄨㄞˋ
+叏 0 ㄍㄨㄞˋ
+郭 0 ㄍㄨㄛ
+鍋 0 ㄍㄨㄛ
+蟈 0 ㄍㄨㄛ
+堝 0 ㄍㄨㄛ
+嘓 0 ㄍㄨㄛ
+崞 0 ㄍㄨㄛ
+埻 0 ㄍㄨㄛ
+墎 0 ㄍㄨㄛ
+濄 0 ㄍㄨㄛ
+渦 0 ㄍㄨㄛ
+過 0 ㄍㄨㄛ
+蝸 0 ㄍㄨㄛ
+撾 0 ㄍㄨㄛ
+咼 0 ㄍㄨㄛ
+剮 0 ㄍㄨㄛ
+漷 0 ㄍㄨㄛ
+瘑 0 ㄍㄨㄛ
+緺 0 ㄍㄨㄛ
+鞷 0 ㄍㄨㄛ
+檛 0 ㄍㄨㄛ
+懖 0 ㄍㄨㄛ
+霩 0 ㄍㄨㄛ
+过 0 ㄍㄨㄛ
+鈛 0 ㄍㄨㄛ
+鞟 0 ㄍㄨㄛ
+櫎 0 ㄍㄨㄛ
+叧 0 ㄍㄨㄛ
+冎 0 ㄍㄨㄛ
+㗻 0 ㄍㄨㄛ
+果 0 ㄍㄨㄛˇ
+裹 0 ㄍㄨㄛˇ
+槨 0 ㄍㄨㄛˇ
+蜾 0 ㄍㄨㄛˇ
+輠 0 ㄍㄨㄛˇ
+粿 0 ㄍㄨㄛˇ
+猓 0 ㄍㄨㄛˇ
+淉 0 ㄍㄨㄛˇ
+惈 0 ㄍㄨㄛˇ
+鐹 0 ㄍㄨㄛˇ
+錁 0 ㄍㄨㄛˇ
+杲 0 ㄍㄨㄛˇ
+踝 0 ㄍㄨㄛˇ
+堁 0 ㄍㄨㄛˇ
+婐 0 ㄍㄨㄛˇ
+捰 0 ㄍㄨㄛˇ
+敤 0 ㄍㄨㄛˇ
+椁 0 ㄍㄨㄛˇ
+菓 0 ㄍㄨㄛˇ
+楇 0 ㄍㄨㄛˇ
+綶 0 ㄍㄨㄛˇ
+過 0 ㄍㄨㄛˋ
+瘑 0 ㄍㄨㄛˋ
+薖 0 ㄍㄨㄛˋ
+鐹 0 ㄍㄨㄛˋ
+过 0 ㄍㄨㄛˋ
+國 0 ㄍㄨㄛˊ
+幗 0 ㄍㄨㄛˊ
+虢 0 ㄍㄨㄛˊ
+馘 0 ㄍㄨㄛˊ
+摑 0 ㄍㄨㄛˊ
+聝 0 ㄍㄨㄛˊ
+膕 0 ㄍㄨㄛˊ
+漍 0 ㄍㄨㄛˊ
+慖 0 ㄍㄨㄛˊ
+簂 0 ㄍㄨㄛˊ
+蟈 0 ㄍㄨㄛˊ
+嘓 0 ㄍㄨㄛˊ
+槶 0 ㄍㄨㄛˊ
+蔮 0 ㄍㄨㄛˊ
+囯 0 ㄍㄨㄛˊ
+国 0 ㄍㄨㄛˊ
+囻 0 ㄍㄨㄛˊ
+囶 0 ㄍㄨㄛˊ
+圀 0 ㄍㄨㄛˊ
+讗 0 ㄍㄨㄛˊ
+䆐 0 ㄍㄨㄛˊ
+腘 0 ㄍㄨㄛˊ
+過 0 ㄍㄨㄛ˙
+过 0 ㄍㄨㄛ˙
+歸 0 ㄍㄨㄟ
+規 0 ㄍㄨㄟ
+龜 0 ㄍㄨㄟ
+瑰 0 ㄍㄨㄟ
+閨 0 ㄍㄨㄟ
+圭 0 ㄍㄨㄟ
+珪 0 ㄍㄨㄟ
+皈 0 ㄍㄨㄟ
+傀 0 ㄍㄨㄟ
+媯 0 ㄍㄨㄟ
+槻 0 ㄍㄨㄟ
+鮭 0 ㄍㄨㄟ
+槼 0 ㄍㄨㄟ
+邽 0 ㄍㄨㄟ
+窐 0 ㄍㄨㄟ
+溈 0 ㄍㄨㄟ
+嫢 0 ㄍㄨㄟ
+摫 0 ㄍㄨㄟ
+洼 0 ㄍㄨㄟ
+烓 0 ㄍㄨㄟ
+茥 0 ㄍㄨㄟ
+硅 0 ㄍㄨㄟ
+筀 0 ㄍㄨㄟ
+楏 0 ㄍㄨㄟ
+煃 0 ㄍㄨㄟ
+觟 0 ㄍㄨㄟ
+銈 0 ㄍㄨㄟ
+瞡 0 ㄍㄨㄟ
+鍷 0 ㄍㄨㄟ
+蘣 0 ㄍㄨㄟ
+蘳 0 ㄍㄨㄟ
+蘬 0 ㄍㄨㄟ
+归 0 ㄍㄨㄟ
+帰 0 ㄍㄨㄟ
+胿 0 ㄍㄨㄟ
+亀 0 ㄍㄨㄟ
+槣 0 ㄍㄨㄟ
+蓕 0 ㄍㄨㄟ
+嬀 0 ㄍㄨㄟ
+潙 0 ㄍㄨㄟ
+炔 0 ㄍㄨㄟ
+璝 0 ㄍㄨㄟ
+膭 0 ㄍㄨㄟ
+瓌 0 ㄍㄨㄟ
+郌 0 ㄍㄨㄟ
+鬹 0 ㄍㄨㄟ
+䲅 0 ㄍㄨㄟ
+鬼 0 ㄍㄨㄟˇ
+軌 0 ㄍㄨㄟˇ
+詭 0 ㄍㄨㄟˇ
+癸 0 ㄍㄨㄟˇ
+匭 0 ㄍㄨㄟˇ
+晷 0 ㄍㄨㄟˇ
+宄 0 ㄍㄨㄟˇ
+簋 0 ㄍㄨㄟˇ
+佹 0 ㄍㄨㄟˇ
+垝 0 ㄍㄨㄟˇ
+氿 0 ㄍㄨㄟˇ
+姽 0 ㄍㄨㄟˇ
+蟡 0 ㄍㄨㄟˇ
+庪 0 ㄍㄨㄟˇ
+祪 0 ㄍㄨㄟˇ
+蛫 0 ㄍㄨㄟˇ
+觤 0 ㄍㄨㄟˇ
+厬 0 ㄍㄨㄟˇ
+葵 0 ㄍㄨㄟˇ
+睽 0 ㄍㄨㄟˇ
+闋 0 ㄍㄨㄟˇ
+庋 0 ㄍㄨㄟˇ
+湀 0 ㄍㄨㄟˇ
+廆 0 ㄍㄨㄟˇ
+溾 0 ㄍㄨㄟˇ
+粿 0 ㄍㄨㄟˇ
+螝 0 ㄍㄨㄟˇ
+藈 0 ㄍㄨㄟˇ
+藱 0 ㄍㄨㄟˇ
+騩 0 ㄍㄨㄟˇ
+恑 0 ㄍㄨㄟˇ
+攱 0 ㄍㄨㄟˇ
+謉 0 ㄍㄨㄟˇ
+孂 0 ㄍㄨㄟˇ
+陒 0 ㄍㄨㄟˇ
+䤥 0 ㄍㄨㄟˇ
+䤆 0 ㄍㄨㄟˇ
+貴 0 ㄍㄨㄟˋ
+桂 0 ㄍㄨㄟˋ
+櫃 0 ㄍㄨㄟˋ
+跪 0 ㄍㄨㄟˋ
+劌 0 ㄍㄨㄟˋ
+溎 0 ㄍㄨㄟˋ
+鱖 0 ㄍㄨㄟˋ
+昋 0 ㄍㄨㄟˋ
+炔 0 ㄍㄨㄟˋ
+筀 0 ㄍㄨㄟˋ
+柜 0 ㄍㄨㄟˋ
+嶡 0 ㄍㄨㄟˋ
+襘 0 ㄍㄨㄟˋ
+暩 0 ㄍㄨㄟˋ
+會 0 ㄍㄨㄟˋ
+匱 0 ㄍㄨㄟˋ
+瑰 0 ㄍㄨㄟˋ
+劊 0 ㄍㄨㄟˋ
+檜 0 ㄍㄨㄟˋ
+炅 0 ㄍㄨㄟˋ
+嘳 0 ㄍㄨㄟˋ
+圚 0 ㄍㄨㄟˋ
+撌 0 ㄍㄨㄟˋ
+槶 0 ㄍㄨㄟˋ
+蔮 0 ㄍㄨㄟˋ
+瞡 0 ㄍㄨㄟˋ
+瞶 0 ㄍㄨㄟˋ
+禬 0 ㄍㄨㄟˋ
+鐀 0 ㄍㄨㄟˋ
+闠 0 ㄍㄨㄟˋ
+会 0 ㄍㄨㄟˋ
+刏 0 ㄍㄨㄟˋ
+璝 0 ㄍㄨㄟˋ
+瓌 0 ㄍㄨㄟˋ
+鑎 0 ㄍㄨㄟˋ
+鱥 0 ㄍㄨㄟˋ
+㙺 0 ㄍㄨㄟˋ
+鞼 0 ㄍㄨㄟˋ
+攰 0 ㄍㄨㄟˋ
+滾 0 ㄍㄨㄣˇ
+袞 0 ㄍㄨㄣˇ
+鯀 0 ㄍㄨㄣˇ
+緄 0 ㄍㄨㄣˇ
+輥 0 ㄍㄨㄣˇ
+掍 0 ㄍㄨㄣˇ
+蔉 0 ㄍㄨㄣˇ
+混 0 ㄍㄨㄣˇ
+渾 0 ㄍㄨㄣˇ
+袬 0 ㄍㄨㄣˇ
+緷 0 ㄍㄨㄣˇ
+丨 0 ㄍㄨㄣˇ
+衮 0 ㄍㄨㄣˇ
+滚 0 ㄍㄨㄣˇ
+蓘 0 ㄍㄨㄣˇ
+鮌 0 ㄍㄨㄣˇ
+䙛 0 ㄍㄨㄣˇ
+棍 0 ㄍㄨㄣˋ
+璭 0 ㄍㄨㄣˋ
+掍 0 ㄍㄨㄣˋ
+睔 0 ㄍㄨㄣˋ
+睴 0 ㄍㄨㄣˋ
+謴 0 ㄍㄨㄣˋ
+哥 0 ㄍㄜ
+歌 0 ㄍㄜ
+割 0 ㄍㄜ
+鴿 0 ㄍㄜ
+擱 0 ㄍㄜ
+胳 0 ㄍㄜ
+戈 0 ㄍㄜ
+肐 0 ㄍㄜ
+疙 0 ㄍㄜ
+渮 0 ㄍㄜ
+牁 0 ㄍㄜ
+菏 0 ㄍㄜ
+滒 0 ㄍㄜ
+麧 0 ㄍㄜ
+咯 0 ㄍㄜ
+紇 0 ㄍㄜ
+隔 0 ㄍㄜ
+閣 0 ㄍㄜ
+蠽 0 ㄍㄜ
+戓 0 ㄍㄜ
+戨 0 ㄍㄜ
+鴚 0 ㄍㄜ
+謌 0 ㄍㄜ
+牫 0 ㄍㄜ
+牱 0 ㄍㄜ
+鎶 0 ㄍㄜ
+葛 0 ㄍㄜˇ
+哿 0 ㄍㄜˇ
+舸 0 ㄍㄜˇ
+擖 0 ㄍㄜˇ
+魺 0 ㄍㄜˇ
+騔 0 ㄍㄜˇ
+笴 0 ㄍㄜˇ
+合 0 ㄍㄜˇ
+蓋 0 ㄍㄜˇ
+褐 0 ㄍㄜˇ
+峆 0 ㄍㄜˇ
+嶱 0 ㄍㄜˇ
+鍻 0 ㄍㄜˇ
+齃 0 ㄍㄜˇ
+乢 0 ㄍㄜˇ
+盖 0 ㄍㄜˇ
+葢 0 ㄍㄜˇ
+個 0 ㄍㄜˋ
+各 0 ㄍㄜˋ
+鉻 0 ㄍㄜˋ
+虼 0 ㄍㄜˋ
+箇 0 ㄍㄜˋ
+詻 0 ㄍㄜˋ
+佫 0 ㄍㄜˋ
+硌 0 ㄍㄜˋ
+个 0 ㄍㄜˋ
+亇 0 ㄍㄜˋ
+狢 0 ㄍㄜˋ
+貈 0 ㄍㄜˋ
+格 0 ㄍㄜˊ
+革 0 ㄍㄜˊ
+隔 0 ㄍㄜˊ
+閣 0 ㄍㄜˊ
+葛 0 ㄍㄜˊ
+骼 0 ㄍㄜˊ
+蛤 0 ㄍㄜˊ
+咯 0 ㄍㄜˊ
+膈 0 ㄍㄜˊ
+轕 0 ㄍㄜˊ
+嗝 0 ㄍㄜˊ
+搿 0 ㄍㄜˊ
+郃 0 ㄍㄜˊ
+韐 0 ㄍㄜˊ
+塥 0 ㄍㄜˊ
+觡 0 ㄍㄜˊ
+鬲 0 ㄍㄜˊ
+閤 0 ㄍㄜˊ
+挌 0 ㄍㄜˊ
+佮 0 ㄍㄜˊ
+輵 0 ㄍㄜˊ
+鮯 0 ㄍㄜˊ
+敆 0 ㄍㄜˊ
+茖 0 ㄍㄜˊ
+愅 0 ㄍㄜˊ
+獦 0 ㄍㄜˊ
+鎘 0 ㄍㄜˊ
+齃 0 ㄍㄜˊ
+各 0 ㄍㄜˊ
+緙 0 ㄍㄜˊ
+頜 0 ㄍㄜˊ
+噶 0 ㄍㄜˊ
+翮 0 ㄍㄜˊ
+佫 0 ㄍㄜˊ
+搹 0 ㄍㄜˊ
+滆 0 ㄍㄜˊ
+煂 0 ㄍㄜˊ
+蒚 0 ㄍㄜˊ
+鞈 0 ㄍㄜˊ
+鬳 0 ㄍㄜˊ
+鶷 0 ㄍㄜˊ
+呄 0 ㄍㄜˊ
+敋 0 ㄍㄜˊ
+詥 0 ㄍㄜˊ
+槅 0 ㄍㄜˊ
+諽 0 ㄍㄜˊ
+臈 0 ㄍㄜˊ
+鞟 0 ㄍㄜˊ
+鬴 0 ㄍㄜˊ
+韚 0 ㄍㄜˊ
+匌 0 ㄍㄜˊ
+㭘 0 ㄍㄜˊ
+臵 0 ㄍㄜˊ
+蛒 0 ㄍㄜˊ
+裓 0 ㄍㄜˊ
+鰪 0 ㄍㄜˊ
+個 0 ㄍㄜ˙
+箇 0 ㄍㄜ˙
+个 0 ㄍㄜ˙
+亇 0 ㄍㄜ˙
+高 0 ㄍㄠ
+糕 0 ㄍㄠ
+膏 0 ㄍㄠ
+篙 0 ㄍㄠ
+羔 0 ㄍㄠ
+皋 0 ㄍㄠ
+櫜 0 ㄍㄠ
+睪 0 ㄍㄠ
+鼛 0 ㄍㄠ
+槔 0 ㄍㄠ
+睾 0 ㄍㄠ
+滜 0 ㄍㄠ
+韟 0 ㄍㄠ
+咎 0 ㄍㄠ
+臬 0 ㄍㄠ
+嗥 0 ㄍㄠ
+蒿 0 ㄍㄠ
+嗃 0 ㄍㄠ
+塙 0 ㄍㄠ
+暠 0 ㄍㄠ
+皞 0 ㄍㄠ
+碻 0 ㄍㄠ
+禚 0 ㄍㄠ
+翯 0 ㄍㄠ
+髜 0 ㄍㄠ
+髇 0 ㄍㄠ
+鰝 0 ㄍㄠ
+鷎 0 ㄍㄠ
+桕 0 ㄍㄠ
+皐 0 ㄍㄠ
+臯 0 ㄍㄠ
+獆 0 ㄍㄠ
+噑 0 ㄍㄠ
+暤 0 ㄍㄠ
+獔 0 ㄍㄠ
+嘷 0 ㄍㄠ
+墧 0 ㄍㄠ
+暭 0 ㄍㄠ
+槹 0 ㄍㄠ
+獋 0 ㄍㄠ
+曍 0 ㄍㄠ
+橰 0 ㄍㄠ
+皡 0 ㄍㄠ
+皥 0 ㄍㄠ
+餻 0 ㄍㄠ
+髙 0 ㄍㄠ
+㟸 0 ㄍㄠ
+鷱 0 ㄍㄠ
+稿 0 ㄍㄠˇ
+攪 0 ㄍㄠˇ
+搞 0 ㄍㄠˇ
+槁 0 ㄍㄠˇ
+縞 0 ㄍㄠˇ
+杲 0 ㄍㄠˇ
+暠 0 ㄍㄠˇ
+檺 0 ㄍㄠˇ
+筶 0 ㄍㄠˇ
+皋 0 ㄍㄠˇ
+睪 0 ㄍㄠˇ
+鄗 0 ㄍㄠˇ
+閣 0 ㄍㄠˇ
+鎬 0 ㄍㄠˇ
+嗃 0 ㄍㄠˇ
+塙 0 ㄍㄠˇ
+滈 0 ㄍㄠˇ
+睾 0 ㄍㄠˇ
+皜 0 ㄍㄠˇ
+碻 0 ㄍㄠˇ
+嚆 0 ㄍㄠˇ
+謞 0 ㄍㄠˇ
+髇 0 ㄍㄠˇ
+鰝 0 ㄍㄠˇ
+夰 0 ㄍㄠˇ
+皐 0 ㄍㄠˇ
+臯 0 ㄍㄠˇ
+菒 0 ㄍㄠˇ
+槀 0 ㄍㄠˇ
+墧 0 ㄍㄠˇ
+撹 0 ㄍㄠˇ
+稾 0 ㄍㄠˇ
+藁 0 ㄍㄠˇ
+瀥 0 ㄍㄠˇ
+藳 0 ㄍㄠˇ
+稁 0 ㄍㄠˇ
+告 0 ㄍㄠˋ
+誥 0 ㄍㄠˋ
+郜 0 ㄍㄠˋ
+鋯 0 ㄍㄠˋ
+祰 0 ㄍㄠˋ
+煰 0 ㄍㄠˋ
+窖 0 ㄍㄠˋ
+膏 0 ㄍㄠˋ
+鵠 0 ㄍㄠˋ
+勂 0 ㄍㄠˋ
+哠 0 ㄍㄠˋ
+悎 0 ㄍㄠˋ
+捁 0 ㄍㄠˋ
+梏 0 ㄍㄠˋ
+牿 0 ㄍㄠˋ
+硞 0 ㄍㄠˋ
+筶 0 ㄍㄠˋ
+吿 0 ㄍㄠˋ
+叝 0 ㄍㄠˋ
+祮 0 ㄍㄠˋ
+禞 0 ㄍㄠˋ
+給 0 ㄍㄟˇ
+跟 0 ㄍㄣ
+根 0 ㄍㄣ
+蛝 0 ㄍㄣ
+艮 0 ㄍㄣˇ
+亙 0 ㄍㄣˋ
+艮 0 ㄍㄣˋ
+茛 0 ㄍㄣˋ
+閬 0 ㄍㄣˋ
+亘 0 ㄍㄣˋ
+珢 0 ㄍㄣˋ
+哏 0 ㄍㄣˊ
+ㄑ 0 ㄑ
+胠 0 ㄑ
+啐 0 ㄑ˙
+區 0 ㄑㄩ
+屈 0 ㄑㄩ
+驅 0 ㄑㄩ
+趨 0 ㄑㄩ
+軀 0 ㄑㄩ
+嶇 0 ㄑㄩ
+曲 0 ㄑㄩ
+蛆 0 ㄑㄩ
+瞿 0 ㄑㄩ
+袪 0 ㄑㄩ
+敺 0 ㄑㄩ
+蛐 0 ㄑㄩ
+佉 0 ㄑㄩ
+砠 0 ㄑㄩ
+胠 0 ㄑㄩ
+岨 0 ㄑㄩ
+祛 0 ㄑㄩ
+呿 0 ㄑㄩ
+凵 0 ㄑㄩ
+抾 0 ㄑㄩ
+阹 0 ㄑㄩ
+镼 0 ㄑㄩ
+魼 0 ㄑㄩ
+鶌 0 ㄑㄩ
+鱋 0 ㄑㄩ
+紶 0 ㄑㄩ
+髷 0 ㄑㄩ
+屆 0 ㄑㄩ
+疽 0 ㄑㄩ
+崛 0 ㄑㄩ
+樞 0 ㄑㄩ
+毆 0 ㄑㄩ
+麴 0 ㄑㄩ
+沏 0 ㄑㄩ
+浀 0 ㄑㄩ
+啒 0 ㄑㄩ
+淈 0 ㄑㄩ
+詘 0 ㄑㄩ
+趄 0 ㄑㄩ
+摳 0 ㄑㄩ
+貙 0 ㄑㄩ
+区 0 ㄑㄩ
+伹 0 ㄑㄩ
+届 0 ㄑㄩ
+岴 0 ㄑㄩ
+枢 0 ㄑㄩ
+殴 0 ㄑㄩ
+唿 0 ㄑㄩ
+躯 0 ㄑㄩ
+筁 0 ㄑㄩ
+趋 0 ㄑㄩ
+憈 0 ㄑㄩ
+誳 0 ㄑㄩ
+駈 0 ㄑㄩ
+麯 0 ㄑㄩ
+鰸 0 ㄑㄩ
+䖦 0 ㄑㄩ
+駆 0 ㄑㄩ
+𨧱 0 ㄑㄩ
+𡲬 0 ㄑㄩ
+去 0 ㄑㄩ˙
+缺 0 ㄑㄩㄝ
+闕 0 ㄑㄩㄝ
+蒛 0 ㄑㄩㄝ
+炔 0 ㄑㄩㄝ
+卻 0 ㄑㄩㄝˋ
+確 0 ㄑㄩㄝˋ
+鵲 0 ㄑㄩㄝˋ
+雀 0 ㄑㄩㄝˋ
+怯 0 ㄑㄩㄝˋ
+闕 0 ㄑㄩㄝˋ
+榷 0 ㄑㄩㄝˋ
+搉 0 ㄑㄩㄝˋ
+恪 0 ㄑㄩㄝˋ
+殼 0 ㄑㄩㄝˋ
+闋 0 ㄑㄩㄝˋ
+愨 0 ㄑㄩㄝˋ
+騥 0 ㄑㄩㄝˋ
+埆 0 ㄑㄩㄝˋ
+确 0 ㄑㄩㄝˋ
+碏 0 ㄑㄩㄝˋ
+碻 0 ㄑㄩㄝˋ
+礐 0 ㄑㄩㄝˋ
+硞 0 ㄑㄩㄝˋ
+皵 0 ㄑㄩㄝˋ
+毃 0 ㄑㄩㄝˋ
+礭 0 ㄑㄩㄝˋ
+佉 0 ㄑㄩㄝˋ
+抾 0 ㄑㄩㄝˋ
+阹 0 ㄑㄩㄝˋ
+胠 0 ㄑㄩㄝˋ
+砳 0 ㄑㄩㄝˋ
+祛 0 ㄑㄩㄝˋ
+郤 0 ㄑㄩㄝˋ
+紶 0 ㄑㄩㄝˋ
+袪 0 ㄑㄩㄝˋ
+谻 0 ㄑㄩㄝˋ
+傕 0 ㄑㄩㄝˋ
+塙 0 ㄑㄩㄝˋ
+鉣 0 ㄑㄩㄝˋ
+魼 0 ㄑㄩㄝˋ
+礜 0 ㄑㄩㄝˋ
+却 0 ㄑㄩㄝˋ
+壳 0 ㄑㄩㄝˋ
+郄 0 ㄑㄩㄝˋ
+殻 0 ㄑㄩㄝˋ
+愙 0 ㄑㄩㄝˋ
+墧 0 ㄑㄩㄝˋ
+慤 0 ㄑㄩㄝˋ
+燩 0 ㄑㄩㄝˋ
+灍 0 ㄑㄩㄝˋ
+隺 0 ㄑㄩㄝˋ
+魥 0 ㄑㄩㄝˋ
+㲉 0 ㄑㄩㄝˋ
+瘸 0 ㄑㄩㄝˊ
+芎 0 ㄑㄩㄥ
+穹 0 ㄑㄩㄥ
+銎 0 ㄑㄩㄥ
+桏 0 ㄑㄩㄥ
+宆 0 ㄑㄩㄥ
+焪 0 ㄑㄩㄥ
+熍 0 ㄑㄩㄥ
+褧 0 ㄑㄩㄥˇ
+顈 0 ㄑㄩㄥˇ
+窮 0 ㄑㄩㄥˊ
+瓊 0 ㄑㄩㄥˊ
+芎 0 ㄑㄩㄥˊ
+穹 0 ㄑㄩㄥˊ
+跫 0 ㄑㄩㄥˊ
+蛩 0 ㄑㄩㄥˊ
+惸 0 ㄑㄩㄥˊ
+邛 0 ㄑㄩㄥˊ
+璚 0 ㄑㄩㄥˊ
+藭 0 ㄑㄩㄥˊ
+瞏 0 ㄑㄩㄥˊ
+煢 0 ㄑㄩㄥˊ
+筇 0 ㄑㄩㄥˊ
+輁 0 ㄑㄩㄥˊ
+藑 0 ㄑㄩㄥˊ
+桏 0 ㄑㄩㄥˊ
+赹 0 ㄑㄩㄥˊ
+笻 0 ㄑㄩㄥˊ
+橩 0 ㄑㄩㄥˊ
+蒆 0 ㄑㄩㄥˊ
+觼 0 ㄑㄩㄥˊ
+舼 0 ㄑㄩㄥˊ
+敻 0 ㄑㄩㄥˊ
+嬛 0 ㄑㄩㄥˊ
+矎 0 ㄑㄩㄥˊ
+讂 0 ㄑㄩㄥˊ
+卭 0 ㄑㄩㄥˊ
+宆 0 ㄑㄩㄥˊ
+棾 0 ㄑㄩㄥˊ
+焭 0 ㄑㄩㄥˊ
+琼 0 ㄑㄩㄥˊ
+䤝 0 ㄑㄩㄥˊ
+睘 0 ㄑㄩㄥˊ
+儝 0 ㄑㄩㄥˊ
+竆 0 ㄑㄩㄥˊ
+圈 0 ㄑㄩㄢ
+悛 0 ㄑㄩㄢ
+棬 0 ㄑㄩㄢ
+弮 0 ㄑㄩㄢ
+絟 0 ㄑㄩㄢ
+惓 0 ㄑㄩㄢ
+峜 0 ㄑㄩㄢ
+圏 0 ㄑㄩㄢ
+箞 0 ㄑㄩㄢ
+犬 0 ㄑㄩㄢˇ
+綣 0 ㄑㄩㄢˇ
+甽 0 ㄑㄩㄢˇ
+畎 0 ㄑㄩㄢˇ
+琄 0 ㄑㄩㄢˇ
+虇 0 ㄑㄩㄢˇ
+汱 0 ㄑㄩㄢˇ
+圈 0 ㄑㄩㄢˇ
+烇 0 ㄑㄩㄢˇ
+裷 0 ㄑㄩㄢˇ
+呟 0 ㄑㄩㄢˇ
+犭 0 ㄑㄩㄢˇ
+勸 0 ㄑㄩㄢˋ
+券 0 ㄑㄩㄢˋ
+牶 0 ㄑㄩㄢˋ
+烇 0 ㄑㄩㄢˋ
+絭 0 ㄑㄩㄢˋ
+圈 0 ㄑㄩㄢˋ
+劝 0 ㄑㄩㄢˋ
+勌 0 ㄑㄩㄢˋ
+圏 0 ㄑㄩㄢˋ
+勧 0 ㄑㄩㄢˋ
+箞 0 ㄑㄩㄢˋ
+全 0 ㄑㄩㄢˊ
+權 0 ㄑㄩㄢˊ
+泉 0 ㄑㄩㄢˊ
+詮 0 ㄑㄩㄢˊ
+拳 0 ㄑㄩㄢˊ
+銓 0 ㄑㄩㄢˊ
+痊 0 ㄑㄩㄢˊ
+顴 0 ㄑㄩㄢˊ
+蜷 0 ㄑㄩㄢˊ
+筌 0 ㄑㄩㄢˊ
+卷 0 ㄑㄩㄢˊ
+荃 0 ㄑㄩㄢˊ
+鬈 0 ㄑㄩㄢˊ
+牷 0 ㄑㄩㄢˊ
+輇 0 ㄑㄩㄢˊ
+佺 0 ㄑㄩㄢˊ
+犬 0 ㄑㄩㄢˊ
+踡 0 ㄑㄩㄢˊ
+醛 0 ㄑㄩㄢˊ
+恮 0 ㄑㄩㄢˊ
+婘 0 ㄑㄩㄢˊ
+犈 0 ㄑㄩㄢˊ
+觠 0 ㄑㄩㄢˊ
+駩 0 ㄑㄩㄢˊ
+巏 0 ㄑㄩㄢˊ
+齤 0 ㄑㄩㄢˊ
+蠸 0 ㄑㄩㄢˊ
+姾 0 ㄑㄩㄢˊ
+瑔 0 ㄑㄩㄢˊ
+跧 0 ㄑㄩㄢˊ
+縓 0 ㄑㄩㄢˊ
+灥 0 ㄑㄩㄢˊ
+豢 0 ㄑㄩㄢˊ
+烇 0 ㄑㄩㄢˊ
+牶 0 ㄑㄩㄢˊ
+惓 0 ㄑㄩㄢˊ
+絟 0 ㄑㄩㄢˊ
+蟤 0 ㄑㄩㄢˊ
+鐉 0 ㄑㄩㄢˊ
+虇 0 ㄑㄩㄢˊ
+㒰 0 ㄑㄩㄢˊ
+巻 0 ㄑㄩㄢˊ
+洤 0 ㄑㄩㄢˊ
+硂 0 ㄑㄩㄢˊ
+湶 0 ㄑㄩㄢˊ
+搼 0 ㄑㄩㄢˊ
+葲 0 ㄑㄩㄢˊ
+権 0 ㄑㄩㄢˊ
+騡 0 ㄑㄩㄢˊ
+孉 0 ㄑㄩㄢˊ
+鰁 0 ㄑㄩㄢˊ
+取 0 ㄑㄩˇ
+曲 0 ㄑㄩˇ
+娶 0 ㄑㄩˇ
+齲 0 ㄑㄩˇ
+浀 0 ㄑㄩˇ
+紶 0 ㄑㄩˇ
+娵 0 ㄑㄩˇ
+跔 0 ㄑㄩˇ
+竬 0 ㄑㄩˇ
+㾀 0 ㄑㄩˇ
+詓 0 ㄑㄩˇ
+去 0 ㄑㄩˋ
+趣 0 ㄑㄩˋ
+娶 0 ㄑㄩˋ
+漆 0 ㄑㄩˋ
+覷 0 ㄑㄩˋ
+闃 0 ㄑㄩˋ
+湨 0 ㄑㄩˋ
+麮 0 ㄑㄩˋ
+刞 0 ㄑㄩˋ
+鼁 0 ㄑㄩˋ
+且 0 ㄑㄩˋ
+佉 0 ㄑㄩˋ
+呿 0 ㄑㄩˋ
+抾 0 ㄑㄩˋ
+阹 0 ㄑㄩˋ
+胠 0 ㄑㄩˋ
+祛 0 ㄑㄩˋ
+紶 0 ㄑㄩˋ
+袪 0 ㄑㄩˋ
+鉣 0 ㄑㄩˋ
+魼 0 ㄑㄩˋ
+厷 0 ㄑㄩˋ
+厺 0 ㄑㄩˋ
+覰 0 ㄑㄩˋ
+覻 0 ㄑㄩˋ
+閴 0 ㄑㄩˋ
+黢 0 ㄑㄩˋ
+渠 0 ㄑㄩˊ
+劬 0 ㄑㄩˊ
+麴 0 ㄑㄩˊ
+衢 0 ㄑㄩˊ
+蟝 0 ㄑㄩˊ
+瞿 0 ㄑㄩˊ
+籧 0 ㄑㄩˊ
+璩 0 ㄑㄩˊ
+氍 0 ㄑㄩˊ
+蘧 0 ㄑㄩˊ
+磲 0 ㄑㄩˊ
+蕖 0 ㄑㄩˊ
+朐 0 ㄑㄩˊ
+軥 0 ㄑㄩˊ
+鴝 0 ㄑㄩˊ
+翑 0 ㄑㄩˊ
+葋 0 ㄑㄩˊ
+豦 0 ㄑㄩˊ
+懅 0 ㄑㄩˊ
+螶 0 ㄑㄩˊ
+鼩 0 ㄑㄩˊ
+匷 0 ㄑㄩˊ
+灈 0 ㄑㄩˊ
+欋 0 ㄑㄩˊ
+臞 0 ㄑㄩˊ
+蠷 0 ㄑㄩˊ
+躣 0 ㄑㄩˊ
+胊 0 ㄑㄩˊ
+斪 0 ㄑㄩˊ
+淭 0 ㄑㄩˊ
+菃 0 ㄑㄩˊ
+翵 0 ㄑㄩˊ
+蛐 0 ㄑㄩˊ
+絇 0 ㄑㄩˊ
+蚼 0 ㄑㄩˊ
+跔 0 ㄑㄩˊ
+璖 0 ㄑㄩˊ
+麯 0 ㄑㄩˊ
+忂 0 ㄑㄩˊ
+戵 0 ㄑㄩˊ
+癯 0 ㄑㄩˊ
+鑺 0 ㄑㄩˊ
+鸜 0 ㄑㄩˊ
+逡 0 ㄑㄩㄣ
+踆 0 ㄑㄩㄣ
+峮 0 ㄑㄩㄣ
+碅 0 ㄑㄩㄣ
+蜠 0 ㄑㄩㄣ
+輑 0 ㄑㄩㄣ
+群 0 ㄑㄩㄣˊ
+裙 0 ㄑㄩㄣˊ
+宭 0 ㄑㄩㄣˊ
+峮 0 ㄑㄩㄣˊ
+麇 0 ㄑㄩㄣˊ
+帬 0 ㄑㄩㄣˊ
+羣 0 ㄑㄩㄣˊ
+裠 0 ㄑㄩㄣˊ
+麕 0 ㄑㄩㄣˊ
+麏 0 ㄑㄩㄣˊ
+七 0 ㄑㄧ
+妻 0 ㄑㄧ
+欺 0 ㄑㄧ
+戚 0 ㄑㄧ
+漆 0 ㄑㄧ
+棲 0 ㄑㄧ
+悽 0 ㄑㄧ
+淒 0 ㄑㄧ
+柒 0 ㄑㄧ
+萋 0 ㄑㄧ
+慼 0 ㄑㄧ
+溪 0 ㄑㄧ
+沏 0 ㄑㄧ
+諆 0 ㄑㄧ
+郪 0 ㄑㄧ
+娸 0 ㄑㄧ
+鸂 0 ㄑㄧ
+嘁 0 ㄑㄧ
+悊 0 ㄑㄧ
+榿 0 ㄑㄧ
+磎 0 ㄑㄧ
+倛 0 ㄑㄧ
+咠 0 ㄑㄧ
+栖 0 ㄑㄧ
+谿 0 ㄑㄧ
+凄 0 ㄑㄧ
+唭 0 ㄑㄧ
+徛 0 ㄑㄧ
+桼 0 ㄑㄧ
+僛 0 ㄑㄧ
+緀 0 ㄑㄧ
+磩 0 ㄑㄧ
+霋 0 ㄑㄧ
+魌 0 ㄑㄧ
+鶈 0 ㄑㄧ
+攲 0 ㄑㄧ
+崎 0 ㄑㄧ
+期 0 ㄑㄧ
+緝 0 ㄑㄧ
+抾 0 ㄑㄧ
+傶 0 ㄑㄧ
+豯 0 ㄑㄧ
+鼜 0 ㄑㄧ
+捿 0 ㄑㄧ
+朞 0 ㄑㄧ
+嵠 0 ㄑㄧ
+慽 0 ㄑㄧ
+豀 0 ㄑㄧ
+紪 0 ㄑㄧ
+䗩 0 ㄑㄧ
+敧 0 ㄑㄧ
+切 0 ㄑㄧㄝ
+聺 0 ㄑㄧㄝ
+且 0 ㄑㄧㄝˇ
+怚 0 ㄑㄧㄝˇ
+切 0 ㄑㄧㄝˋ
+竊 0 ㄑㄧㄝˋ
+妾 0 ㄑㄧㄝˋ
+怯 0 ㄑㄧㄝˋ
+愜 0 ㄑㄧㄝˋ
+挈 0 ㄑㄧㄝˋ
+篋 0 ㄑㄧㄝˋ
+鍥 0 ㄑㄧㄝˋ
+契 0 ㄑㄧㄝˋ
+朅 0 ㄑㄧㄝˋ
+踥 0 ㄑㄧㄝˋ
+鯜 0 ㄑㄧㄝˋ
+蛪 0 ㄑㄧㄝˋ
+緀 0 ㄑㄧㄝˋ
+藒 0 ㄑㄧㄝˋ
+洯 0 ㄑㄧㄝˋ
+砌 0 ㄑㄧㄝˋ
+灱 0 ㄑㄧㄝˋ
+沏 0 ㄑㄧㄝˋ
+唼 0 ㄑㄧㄝˋ
+菨 0 ㄑㄧㄝˋ
+趄 0 ㄑㄧㄝˋ
+媐 0 ㄑㄧㄝˋ
+慊 0 ㄑㄧㄝˋ
+緁 0 ㄑㄧㄝˋ
+灲 0 ㄑㄧㄝˋ
+矵 0 ㄑㄧㄝˋ
+匧 0 ㄑㄧㄝˋ
+窃 0 ㄑㄧㄝˋ
+帹 0 ㄑㄧㄝˋ
+㤲 0 ㄑㄧㄝˋ
+淁 0 ㄑㄧㄝˋ
+笡 0 ㄑㄧㄝˋ
+磜 0 ㄑㄧㄝˋ
+悏 0 ㄑㄧㄝˋ
+㾀 0 ㄑㄧㄝˋ
+㰰 0 ㄑㄧㄝˋ
+穕 0 ㄑㄧㄝˋ
+䟙 0 ㄑㄧㄝˋ
+茄 0 ㄑㄧㄝˊ
+伽 0 ㄑㄧㄝˊ
+癿 0 ㄑㄧㄝˊ
+秋 0 ㄑㄧㄡ
+邱 0 ㄑㄧㄡ
+丘 0 ㄑㄧㄡ
+蚯 0 ㄑㄧㄡ
+鞦 0 ㄑㄧㄡ
+鰍 0 ㄑㄧㄡ
+鶖 0 ㄑㄧㄡ
+楸 0 ㄑㄧㄡ
+坵 0 ㄑㄧㄡ
+萩 0 ㄑㄧㄡ
+偢 0 ㄑㄧㄡ
+緧 0 ㄑㄧㄡ
+媝 0 ㄑㄧㄡ
+蓲 0 ㄑㄧㄡ
+趥 0 ㄑㄧㄡ
+龜 0 ㄑㄧㄡ
+恘 0 ㄑㄧㄡ
+蝵 0 ㄑㄧㄡ
+蟗 0 ㄑㄧㄡ
+蠤 0 ㄑㄧㄡ
+啾 0 ㄑㄧㄡ
+愀 0 ㄑㄧㄡ
+揪 0 ㄑㄧㄡ
+鍬 0 ㄑㄧㄡ
+揫 0 ㄑㄧㄡ
+煍 0 ㄑㄧㄡ
+瞅 0 ㄑㄧㄡ
+踿 0 ㄑㄧㄡ
+丠 0 ㄑㄧㄡ
+㚱 0 ㄑㄧㄡ
+㳋 0 ㄑㄧㄡ
+亀 0 ㄑㄧㄡ
+噍 0 ㄑㄧㄡ
+篍 0 ㄑㄧㄡ
+鍫 0 ㄑㄧㄡ
+矁 0 ㄑㄧㄡ
+龝 0 ㄑㄧㄡ
+鞧 0 ㄑㄧㄡ
+鱃 0 ㄑㄧㄡ
+㐀 0 ㄑㄧㄡ
+䟬 0 ㄑㄧㄡˋ
+糗 0 ㄑㄧㄡˇ
+螑 0 ㄑㄧㄡˇ
+搝 0 ㄑㄧㄡˇ
+求 0 ㄑㄧㄡˊ
+球 0 ㄑㄧㄡˊ
+囚 0 ㄑㄧㄡˊ
+仇 0 ㄑㄧㄡˊ
+酋 0 ㄑㄧㄡˊ
+裘 0 ㄑㄧㄡˊ
+遒 0 ㄑㄧㄡˊ
+毬 0 ㄑㄧㄡˊ
+泅 0 ㄑㄧㄡˊ
+鰽 0 ㄑㄧㄡˊ
+逑 0 ㄑㄧㄡˊ
+俅 0 ㄑㄧㄡˊ
+厹 0 ㄑㄧㄡˊ
+璆 0 ㄑㄧㄡˊ
+絿 0 ㄑㄧㄡˊ
+艽 0 ㄑㄧㄡˊ
+虯 0 ㄑㄧㄡˊ
+蝤 0 ㄑㄧㄡˊ
+觩 0 ㄑㄧㄡˊ
+賕 0 ㄑㄧㄡˊ
+盚 0 ㄑㄧㄡˊ
+銶 0 ㄑㄧㄡˊ
+頄 0 ㄑㄧㄡˊ
+鼽 0 ㄑㄧㄡˊ
+訄 0 ㄑㄧㄡˊ
+犰 0 ㄑㄧㄡˊ
+朹 0 ㄑㄧㄡˊ
+梂 0 ㄑㄧㄡˊ
+釚 0 ㄑㄧㄡˊ
+煪 0 ㄑㄧㄡˊ
+苬 0 ㄑㄧㄡˊ
+紌 0 ㄑㄧㄡˊ
+脙 0 ㄑㄧㄡˊ
+莍 0 ㄑㄧㄡˊ
+崷 0 ㄑㄧㄡˊ
+僋 0 ㄑㄧㄡˊ
+蛷 0 ㄑㄧㄡˊ
+鮂 0 ㄑㄧㄡˊ
+鯄 0 ㄑㄧㄡˊ
+殏 0 ㄑㄧㄡˊ
+猷 0 ㄑㄧㄡˊ
+觓 0 ㄑㄧㄡˊ
+唒 0 ㄑㄧㄡˊ
+捄 0 ㄑㄧㄡˊ
+偤 0 ㄑㄧㄡˊ
+揂 0 ㄑㄧㄡˊ
+趥 0 ㄑㄧㄡˊ
+輶 0 ㄑㄧㄡˊ
+㕤 0 ㄑㄧㄡˊ
+叴 0 ㄑㄧㄡˊ
+扏 0 ㄑㄧㄡˊ
+汓 0 ㄑㄧㄡˊ
+肍 0 ㄑㄧㄡˊ
+虬 0 ㄑㄧㄡˊ
+訅 0 ㄑㄧㄡˊ
+浗 0 ㄑㄧㄡˊ
+逎 0 ㄑㄧㄡˊ
+渞 0 ㄑㄧㄡˊ
+湭 0 ㄑㄧㄡˊ
+皳 0 ㄑㄧㄡˊ
+鰌 0 ㄑㄧㄡˊ
+玐 0 ㄑㄧㄡˊ
+䊵 0 ㄑㄧㄡˊ
+㞗 0 ㄑㄧㄡˊ
+輏 0 ㄑㄧㄡˊ
+醔 0 ㄑㄧㄡˊ
+清 0 ㄑㄧㄥ
+青 0 ㄑㄧㄥ
+輕 0 ㄑㄧㄥ
+傾 0 ㄑㄧㄥ
+卿 0 ㄑㄧㄥ
+氫 0 ㄑㄧㄥ
+蜻 0 ㄑㄧㄥ
+頃 0 ㄑㄧㄥ
+鯖 0 ㄑㄧㄥ
+圊 0 ㄑㄧㄥ
+氰 0 ㄑㄧㄥ
+狅 0 ㄑㄧㄥ
+郬 0 ㄑㄧㄥ
+菁 0 ㄑㄧㄥ
+請 0 ㄑㄧㄥ
+凊 0 ㄑㄧㄥ
+埥 0 ㄑㄧㄥ
+崝 0 ㄑㄧㄥ
+掅 0 ㄑㄧㄥ
+烴 0 ㄑㄧㄥ
+棈 0 ㄑㄧㄥ
+碃 0 ㄑㄧㄥ
+羥 0 ㄑㄧㄥ
+箐 0 ㄑㄧㄥ
+綪 0 ㄑㄧㄥ
+漀 0 ㄑㄧㄥ
+輤 0 ㄑㄧㄥ
+錆 0 ㄑㄧㄥ
+蹞 0 ㄑㄧㄥ
+鶄 0 ㄑㄧㄥ
+鼱 0 ㄑㄧㄥ
+鑋 0 ㄑㄧㄥ
+靑 0 ㄑㄧㄥ
+婙 0 ㄑㄧㄥ
+寈 0 ㄑㄧㄥ
+淸 0 ㄑㄧㄥ
+軽 0 ㄑㄧㄥ
+䨝 0 ㄑㄧㄥ
+請 0 ㄑㄧㄥˇ
+頃 0 ㄑㄧㄥˇ
+廎 0 ㄑㄧㄥˇ
+傾 0 ㄑㄧㄥˇ
+掅 0 ㄑㄧㄥˇ
+綪 0 ㄑㄧㄥˇ
+輤 0 ㄑㄧㄥˇ
+錆 0 ㄑㄧㄥˇ
+苘 0 ㄑㄧㄥˇ
+㷫 0 ㄑㄧㄥˇ
+檾 0 ㄑㄧㄥˇ
+慶 0 ㄑㄧㄥˋ
+罄 0 ㄑㄧㄥˋ
+親 0 ㄑㄧㄥˋ
+凊 0 ㄑㄧㄥˋ
+綮 0 ㄑㄧㄥˋ
+謦 0 ㄑㄧㄥˋ
+磬 0 ㄑㄧㄥˋ
+漀 0 ㄑㄧㄥˋ
+汫 0 ㄑㄧㄥˋ
+鑋 0 ㄑㄧㄥˋ
+靘 0 ㄑㄧㄥˋ
+掅 0 ㄑㄧㄥˋ
+碃 0 ㄑㄧㄥˋ
+罊 0 ㄑㄧㄥˋ
+請 0 ㄑㄧㄥˋ
+蟿 0 ㄑㄧㄥˋ
+羻 0 ㄑㄧㄥˋ
+亲 0 ㄑㄧㄥˋ
+媇 0 ㄑㄧㄥˋ
+濪 0 ㄑㄧㄥˋ
+殸 0 ㄑㄧㄥˋ
+情 0 ㄑㄧㄥˊ
+晴 0 ㄑㄧㄥˊ
+擎 0 ㄑㄧㄥˊ
+傾 0 ㄑㄧㄥˊ
+檠 0 ㄑㄧㄥˊ
+勍 0 ㄑㄧㄥˊ
+殑 0 ㄑㄧㄥˊ
+樈 0 ㄑㄧㄥˊ
+殌 0 ㄑㄧㄥˊ
+請 0 ㄑㄧㄥˊ
+鯨 0 ㄑㄧㄥˊ
+狅 0 ㄑㄧㄥˊ
+葝 0 ㄑㄧㄥˊ
+擏 0 ㄑㄧㄥˊ
+黥 0 ㄑㄧㄥˊ
+啨 0 ㄑㄧㄥˊ
+暒 0 ㄑㄧㄥˊ
+㯳 0 ㄑㄧㄥˊ
+夝 0 ㄑㄧㄥˊ
+甠 0 ㄑㄧㄥˊ
+槍 0 ㄑㄧㄤ
+腔 0 ㄑㄧㄤ
+鎗 0 ㄑㄧㄤ
+羌 0 ㄑㄧㄤ
+嗆 0 ㄑㄧㄤ
+搶 0 ㄑㄧㄤ
+鏘 0 ㄑㄧㄤ
+鏹 0 ㄑㄧㄤ
+蜣 0 ㄑㄧㄤ
+蹌 0 ㄑㄧㄤ
+斨 0 ㄑㄧㄤ
+瑲 0 ㄑㄧㄤ
+椌 0 ㄑㄧㄤ
+蹡 0 ㄑㄧㄤ
+錆 0 ㄑㄧㄤ
+矼 0 ㄑㄧㄤ
+嶈 0 ㄑㄧㄤ
+將 0 ㄑㄧㄤ
+牄 0 ㄑㄧㄤ
+謒 0 ㄑㄧㄤ
+唴 0 ㄑㄧㄤ
+戧 0 ㄑㄧㄤ
+錓 0 ㄑㄧㄤ
+将 0 ㄑㄧㄤ
+羗 0 ㄑㄧㄤ
+啌 0 ㄑㄧㄤ
+猐 0 ㄑㄧㄤ
+溬 0 ㄑㄧㄤ
+摤 0 ㄑㄧㄤ
+篬 0 ㄑㄧㄤ
+羫 0 ㄑㄧㄤ
+強 0 ㄑㄧㄤˇ
+搶 0 ㄑㄧㄤˇ
+襁 0 ㄑㄧㄤˇ
+磢 0 ㄑㄧㄤˇ
+傸 0 ㄑㄧㄤˇ
+墏 0 ㄑㄧㄤˇ
+繈 0 ㄑㄧㄤˇ
+彊 0 ㄑㄧㄤˇ
+鏹 0 ㄑㄧㄤˇ
+强 0 ㄑㄧㄤˇ
+摤 0 ㄑㄧㄤˇ
+繦 0 ㄑㄧㄤˇ
+勥 0 ㄑㄧㄤˇ
+羥 0 ㄑㄧㄤˇ
+嗆 0 ㄑㄧㄤˋ
+羻 0 ㄑㄧㄤˋ
+唴 0 ㄑㄧㄤˋ
+熗 0 ㄑㄧㄤˋ
+蹌 0 ㄑㄧㄤˋ
+戧 0 ㄑㄧㄤˋ
+蹡 0 ㄑㄧㄤˋ
+摪 0 ㄑㄧㄤˋ
+強 0 ㄑㄧㄤˊ
+牆 0 ㄑㄧㄤˊ
+薔 0 ㄑㄧㄤˊ
+戕 0 ㄑㄧㄤˊ
+墻 0 ㄑㄧㄤˊ
+嬙 0 ㄑㄧㄤˊ
+檣 0 ㄑㄧㄤˊ
+爿 0 ㄑㄧㄤˊ
+漒 0 ㄑㄧㄤˊ
+蘠 0 ㄑㄧㄤˊ
+廧 0 ㄑㄧㄤˊ
+彊 0 ㄑㄧㄤˊ
+繈 0 ㄑㄧㄤˊ
+嵹 0 ㄑㄧㄤˊ
+膙 0 ㄑㄧㄤˊ
+糨 0 ㄑㄧㄤˊ
+襁 0 ㄑㄧㄤˊ
+謽 0 ㄑㄧㄤˊ
+强 0 ㄑㄧㄤˊ
+蔃 0 ㄑㄧㄤˊ
+糡 0 ㄑㄧㄤˊ
+繦 0 ㄑㄧㄤˊ
+艢 0 ㄑㄧㄤˊ
+千 0 ㄑㄧㄢ
+鉛 0 ㄑㄧㄢ
+遷 0 ㄑㄧㄢ
+簽 0 ㄑㄧㄢ
+牽 0 ㄑㄧㄢ
+謙 0 ㄑㄧㄢ
+籤 0 ㄑㄧㄢ
+嵌 0 ㄑㄧㄢ
+仟 0 ㄑㄧㄢ
+阡 0 ㄑㄧㄢ
+韆 0 ㄑㄧㄢ
+騫 0 ㄑㄧㄢ
+愆 0 ㄑㄧㄢ
+僉 0 ㄑㄧㄢ
+慳 0 ㄑㄧㄢ
+搴 0 ㄑㄧㄢ
+褰 0 ㄑㄧㄢ
+粁 0 ㄑㄧㄢ
+岍 0 ㄑㄧㄢ
+汧 0 ㄑㄧㄢ
+縴 0 ㄑㄧㄢ
+芊 0 ㄑㄧㄢ
+掔 0 ㄑㄧㄢ
+扦 0 ㄑㄧㄢ
+檶 0 ㄑㄧㄢ
+鐱 0 ㄑㄧㄢ
+婜 0 ㄑㄧㄢ
+羥 0 ㄑㄧㄢ
+攐 0 ㄑㄧㄢ
+攓 0 ㄑㄧㄢ
+顩 0 ㄑㄧㄢ
+奷 0 ㄑㄧㄢ
+忏 0 ㄑㄧㄢ
+顅 0 ㄑㄧㄢ
+麉 0 ㄑㄧㄢ
+櫏 0 ㄑㄧㄢ
+虔 0 ㄑㄧㄢ
+縑 0 ㄑㄧㄢ
+殲 0 ㄑㄧㄢ
+纖 0 ㄑㄧㄢ
+讖 0 ㄑㄧㄢ
+寋 0 ㄑㄧㄢ
+鈆 0 ㄑㄧㄢ
+雃 0 ㄑㄧㄢ
+僊 0 ㄑㄧㄢ
+嗛 0 ㄑㄧㄢ
+舝 0 ㄑㄧㄢ
+鋟 0 ㄑㄧㄢ
+褼 0 ㄑㄧㄢ
+謇 0 ㄑㄧㄢ
+韱 0 ㄑㄧㄢ
+藆 0 ㄑㄧㄢ
+孅 0 ㄑㄧㄢ
+瀸 0 ㄑㄧㄢ
+櫼 0 ㄑㄧㄢ
+鶼 0 ㄑㄧㄢ
+鶱 0 ㄑㄧㄢ
+躚 0 ㄑㄧㄢ
+襳 0 ㄑㄧㄢ
+虃 0 ㄑㄧㄢ
+鑯 0 ㄑㄧㄢ
+圱 0 ㄑㄧㄢ
+圲 0 ㄑㄧㄢ
+汘 0 ㄑㄧㄢ
+杄 0 ㄑㄧㄢ
+迁 0 ㄑㄧㄢ
+茾 0 ㄑㄧㄢ
+拪 0 ㄑㄧㄢ
+䊹 0 ㄑㄧㄢ
+摼 0 ㄑㄧㄢ
+撁 0 ㄑㄧㄢ
+熑 0 ㄑㄧㄢ
+艌 0 ㄑㄧㄢ
+厱 0 ㄑㄧㄢ
+諐 0 ㄑㄧㄢ
+韯 0 ㄑㄧㄢ
+燫 0 ㄑㄧㄢ
+瀐 0 ㄑㄧㄢ
+覵 0 ㄑㄧㄢ
+鵮 0 ㄑㄧㄢ
+攑 0 ㄑㄧㄢ
+籖 0 ㄑㄧㄢ
+纎 0 ㄑㄧㄢ
+臤 0 ㄑㄧㄢ
+蚈 0 ㄑㄧㄢ
+孯 0 ㄑㄧㄢ
+蹮 0 ㄑㄧㄢ
+鬜 0 ㄑㄧㄢ
+谸 0 ㄑㄧㄢ
+遣 0 ㄑㄧㄢˇ
+淺 0 ㄑㄧㄢˇ
+譴 0 ㄑㄧㄢˇ
+繾 0 ㄑㄧㄢˇ
+槏 0 ㄑㄧㄢˇ
+撖 0 ㄑㄧㄢˇ
+忏 0 ㄑㄧㄢˇ
+蜸 0 ㄑㄧㄢˇ
+嵌 0 ㄑㄧㄢˇ
+潛 0 ㄑㄧㄢˇ
+嗛 0 ㄑㄧㄢˇ
+隒 0 ㄑㄧㄢˇ
+諓 0 ㄑㄧㄢˇ
+輚 0 ㄑㄧㄢˇ
+醆 0 ㄑㄧㄢˇ
+鼸 0 ㄑㄧㄢˇ
+欦 0 ㄑㄧㄢˇ
+浅 0 ㄑㄧㄢˇ
+膁 0 ㄑㄧㄢˇ
+潜 0 ㄑㄧㄢˇ
+濳 0 ㄑㄧㄢˇ
+㹂 0 ㄑㄧㄢˇ
+嵰 0 ㄑㄧㄢˇ
+欠 0 ㄑㄧㄢˋ
+歉 0 ㄑㄧㄢˋ
+倩 0 ㄑㄧㄢˋ
+慊 0 ㄑㄧㄢˋ
+茜 0 ㄑㄧㄢˋ
+塹 0 ㄑㄧㄢˋ
+芡 0 ㄑㄧㄢˋ
+傔 0 ㄑㄧㄢˋ
+嗛 0 ㄑㄧㄢˋ
+槧 0 ㄑㄧㄢˋ
+縴 0 ㄑㄧㄢˋ
+篟 0 ㄑㄧㄢˋ
+綪 0 ㄑㄧㄢˋ
+棈 0 ㄑㄧㄢˋ
+蒨 0 ㄑㄧㄢˋ
+輤 0 ㄑㄧㄢˋ
+嵌 0 ㄑㄧㄢˋ
+謙 0 ㄑㄧㄢˋ
+忺 0 ㄑㄧㄢˋ
+咁 0 ㄑㄧㄢˋ
+杴 0 ㄑㄧㄢˋ
+欥 0 ㄑㄧㄢˋ
+俔 0 ㄑㄧㄢˋ
+婧 0 ㄑㄧㄢˋ
+箐 0 ㄑㄧㄢˋ
+靚 0 ㄑㄧㄢˋ
+悓 0 ㄑㄧㄢˋ
+婙 0 ㄑㄧㄢˋ
+皘 0 ㄑㄧㄢˋ
+艌 0 ㄑㄧㄢˋ
+蔳 0 ㄑㄧㄢˋ
+壍 0 ㄑㄧㄢˋ
+嬱 0 ㄑㄧㄢˋ
+肷 0 ㄑㄧㄢˋ
+㟻 0 ㄑㄧㄢˋ
+儙 0 ㄑㄧㄢˋ
+前 0 ㄑㄧㄢˊ
+錢 0 ㄑㄧㄢˊ
+乾 0 ㄑㄧㄢˊ
+潛 0 ㄑㄧㄢˊ
+黔 0 ㄑㄧㄢˊ
+鉗 0 ㄑㄧㄢˊ
+虔 0 ㄑㄧㄢˊ
+箝 0 ㄑㄧㄢˊ
+鈐 0 ㄑㄧㄢˊ
+掮 0 ㄑㄧㄢˊ
+媊 0 ㄑㄧㄢˊ
+揵 0 ㄑㄧㄢˊ
+燂 0 ㄑㄧㄢˊ
+拑 0 ㄑㄧㄢˊ
+灊 0 ㄑㄧㄢˊ
+黚 0 ㄑㄧㄢˊ
+忴 0 ㄑㄧㄢˊ
+扲 0 ㄑㄧㄢˊ
+岒 0 ㄑㄧㄢˊ
+漧 0 ㄑㄧㄢˊ
+葥 0 ㄑㄧㄢˊ
+鳹 0 ㄑㄧㄢˊ
+騚 0 ㄑㄧㄢˊ
+鰬 0 ㄑㄧㄢˊ
+仱 0 ㄑㄧㄢˊ
+姏 0 ㄑㄧㄢˊ
+蚙 0 ㄑㄧㄢˊ
+軡 0 ㄑㄧㄢˊ
+榩 0 ㄑㄧㄢˊ
+柑 0 ㄑㄧㄢˊ
+湔 0 ㄑㄧㄢˊ
+僭 0 ㄑㄧㄢˊ
+赶 0 ㄑㄧㄢˊ
+揃 0 ㄑㄧㄢˊ
+雂 0 ㄑㄧㄢˊ
+瑐 0 ㄑㄧㄢˊ
+墘 0 ㄑㄧㄢˊ
+嶜 0 ㄑㄧㄢˊ
+糋 0 ㄑㄧㄢˊ
+羬 0 ㄑㄧㄢˊ
+熸 0 ㄑㄧㄢˊ
+鬋 0 ㄑㄧㄢˊ
+乹 0 ㄑㄧㄢˊ
+歬 0 ㄑㄧㄢˊ
+偂 0 ㄑㄧㄢˊ
+亁 0 ㄑㄧㄢˊ
+碊 0 ㄑㄧㄢˊ
+銭 0 ㄑㄧㄢˊ
+撍 0 ㄑㄧㄢˊ
+潜 0 ㄑㄧㄢˊ
+橬 0 ㄑㄧㄢˊ
+濳 0 ㄑㄧㄢˊ
+鵭 0 ㄑㄧㄢˊ
+䐶 0 ㄑㄧㄢˊ
+䕭 0 ㄑㄧㄢˊ
+起 0 ㄑㄧˇ
+啟 0 ㄑㄧˇ
+豈 0 ㄑㄧˇ
+乞 0 ㄑㄧˇ
+綺 0 ㄑㄧˇ
+杞 0 ㄑㄧˇ
+稽 0 ㄑㄧˇ
+綮 0 ㄑㄧˇ
+屺 0 ㄑㄧˇ
+棨 0 ㄑㄧˇ
+敧 0 ㄑㄧˇ
+芑 0 ㄑㄧˇ
+婍 0 ㄑㄧˇ
+邔 0 ㄑㄧˇ
+芞 0 ㄑㄧˇ
+呇 0 ㄑㄧˇ
+企 0 ㄑㄧˇ
+覬 0 ㄑㄧˇ
+刉 0 ㄑㄧˇ
+忔 0 ㄑㄧˇ
+犵 0 ㄑㄧˇ
+盵 0 ㄑㄧˇ
+釳 0 ㄑㄧˇ
+隑 0 ㄑㄧˇ
+暟 0 ㄑㄧˇ
+榿 0 ㄑㄧˇ
+麧 0 ㄑㄧˇ
+颽 0 ㄑㄧˇ
+启 0 ㄑㄧˇ
+玘 0 ㄑㄧˇ
+盀 0 ㄑㄧˇ
+唘 0 ㄑㄧˇ
+啔 0 ㄑㄧˇ
+啓 0 ㄑㄧˇ
+䄎 0 ㄑㄧˇ
+裿 0 ㄑㄧˇ
+諬 0 ㄑㄧˇ
+晵 0 ㄑㄧˇ
+袳 0 ㄑㄧˇ
+闙 0 ㄑㄧˇ
+企 0 ㄑㄧˋ
+氣 0 ㄑㄧˋ
+器 0 ㄑㄧˋ
+汽 0 ㄑㄧˋ
+棄 0 ㄑㄧˋ
+契 0 ㄑㄧˋ
+砌 0 ㄑㄧˋ
+泣 0 ㄑㄧˋ
+迄 0 ㄑㄧˋ
+訖 0 ㄑㄧˋ
+汔 0 ㄑㄧˋ
+憩 0 ㄑㄧˋ
+緝 0 ㄑㄧˋ
+亟 0 ㄑㄧˋ
+葺 0 ㄑㄧˋ
+磧 0 ㄑㄧˋ
+栔 0 ㄑㄧˋ
+愒 0 ㄑㄧˋ
+妻 0 ㄑㄧˋ
+蟿 0 ㄑㄧˋ
+鏚 0 ㄑㄧˋ
+盵 0 ㄑㄧˋ
+蚑 0 ㄑㄧˋ
+忔 0 ㄑㄧˋ
+湆 0 ㄑㄧˋ
+气 0 ㄑㄧˋ
+諿 0 ㄑㄧˋ
+湇 0 ㄑㄧˋ
+甈 0 ㄑㄧˋ
+鼜 0 ㄑㄧˋ
+乞 0 ㄑㄧˋ
+屹 0 ㄑㄧˋ
+紇 0 ㄑㄧˋ
+戚 0 ㄑㄧˋ
+揭 0 ㄑㄧˋ
+隙 0 ㄑㄧˋ
+囂 0 ㄑㄧˋ
+仡 0 ㄑㄧˋ
+犵 0 ㄑㄧˋ
+阣 0 ㄑㄧˋ
+沏 0 ㄑㄧˋ
+芞 0 ㄑㄧˋ
+咠 0 ㄑㄧˋ
+籺 0 ㄑㄧˋ
+恝 0 ㄑㄧˋ
+趷 0 ㄑㄧˋ
+偰 0 ㄑㄧˋ
+唭 0 ㄑㄧˋ
+跂 0 ㄑㄧˋ
+釳 0 ㄑㄧˋ
+揳 0 ㄑㄧˋ
+湒 0 ㄑㄧˋ
+蛪 0 ㄑㄧˋ
+滊 0 ㄑㄧˋ
+熂 0 ㄑㄧˋ
+瘈 0 ㄑㄧˋ
+禊 0 ㄑㄧˋ
+褉 0 ㄑㄧˋ
+鎎 0 ㄑㄧˋ
+餼 0 ㄑㄧˋ
+齕 0 ㄑㄧˋ
+㐹 0 ㄑㄧˋ
+呚 0 ㄑㄧˋ
+弃 0 ㄑㄧˋ
+矵 0 ㄑㄧˋ
+炁 0 ㄑㄧˋ
+洓 0 ㄑㄧˋ
+欫 0 ㄑㄧˋ
+掲 0 ㄑㄧˋ
+焏 0 ㄑㄧˋ
+硆 0 ㄑㄧˋ
+摖 0 ㄑㄧˋ
+隟 0 ㄑㄧˋ
+噐 0 ㄑㄧˋ
+憇 0 ㄑㄧˋ
+磜 0 ㄑㄧˋ
+礘 0 ㄑㄧˋ
+嚻 0 ㄑㄧˋ
+呮 0 ㄑㄧˋ
+㞓 0 ㄑㄧˋ
+敌 0 ㄑㄧˋ
+䞘 0 ㄑㄧˋ
+暣 0 ㄑㄧˋ
+夡 0 ㄑㄧˋ
+其 0 ㄑㄧˊ
+期 0 ㄑㄧˊ
+齊 0 ㄑㄧˊ
+奇 0 ㄑㄧˊ
+旗 0 ㄑㄧˊ
+騎 0 ㄑㄧˊ
+祈 0 ㄑㄧˊ
+棋 0 ㄑㄧˊ
+祺 0 ㄑㄧˊ
+碁 0 ㄑㄧˊ
+祁 0 ㄑㄧˊ
+崎 0 ㄑㄧˊ
+琦 0 ㄑㄧˊ
+岐 0 ㄑㄧˊ
+歧 0 ㄑㄧˊ
+琪 0 ㄑㄧˊ
+麒 0 ㄑㄧˊ
+鰭 0 ㄑㄧˊ
+畦 0 ㄑㄧˊ
+臍 0 ㄑㄧˊ
+祇 0 ㄑㄧˊ
+耆 0 ㄑㄧˊ
+淇 0 ㄑㄧˊ
+跂 0 ㄑㄧˊ
+枝 0 ㄑㄧˊ
+綦 0 ㄑㄧˊ
+騏 0 ㄑㄧˊ
+衹 0 ㄑㄧˊ
+蘄 0 ㄑㄧˊ
+圻 0 ㄑㄧˊ
+錡 0 ㄑㄧˊ
+旂 0 ㄑㄧˊ
+萁 0 ㄑㄧˊ
+蜞 0 ㄑㄧˊ
+埼 0 ㄑㄧˊ
+蠐 0 ㄑㄧˊ
+頎 0 ㄑㄧˊ
+懠 0 ㄑㄧˊ
+艩 0 ㄑㄧˊ
+蚔 0 ㄑㄧˊ
+軝 0 ㄑㄧˊ
+藄 0 ㄑㄧˊ
+鄿 0 ㄑㄧˊ
+鯕 0 ㄑㄧˊ
+鬐 0 ㄑㄧˊ
+蚑 0 ㄑㄧˊ
+錤 0 ㄑㄧˊ
+掑 0 ㄑㄧˊ
+岓 0 ㄑㄧˊ
+碕 0 ㄑㄧˊ
+翗 0 ㄑㄧˊ
+釮 0 ㄑㄧˊ
+亓 0 ㄑㄧˊ
+蚚 0 ㄑㄧˊ
+稘 0 ㄑㄧˊ
+鬿 0 ㄑㄧˊ
+踑 0 ㄑㄧˊ
+鮨 0 ㄑㄧˊ
+鶀 0 ㄑㄧˊ
+鵸 0 ㄑㄧˊ
+玂 0 ㄑㄧˊ
+麡 0 ㄑㄧˊ
+濝 0 ㄑㄧˊ
+示 0 ㄑㄧˊ
+俟 0 ㄑㄧˊ
+畸 0 ㄑㄧˊ
+畿 0 ㄑㄧˊ
+儕 0 ㄑㄧˊ
+薺 0 ㄑㄧˊ
+霽 0 ㄑㄧˊ
+忯 0 ㄑㄧˊ
+肵 0 ㄑㄧˊ
+倛 0 ㄑㄧˊ
+剞 0 ㄑㄧˊ
+唭 0 ㄑㄧˊ
+娸 0 ㄑㄧˊ
+婍 0 ㄑㄧˊ
+徛 0 ㄑㄧˊ
+惎 0 ㄑㄧˊ
+攲 0 ㄑㄧˊ
+敧 0 ㄑㄧˊ
+搘 0 ㄑㄧˊ
+榰 0 ㄑㄧˊ
+鬾 0 ㄑㄧˊ
+觭 0 ㄑㄧˊ
+諆 0 ㄑㄧˊ
+諅 0 ㄑㄧˊ
+踦 0 ㄑㄧˊ
+櫅 0 ㄑㄧˊ
+璾 0 ㄑㄧˊ
+齌 0 ㄑㄧˊ
+懻 0 ㄑㄧˊ
+鑇 0 ㄑㄧˊ
+齮 0 ㄑㄧˊ
+齐 0 ㄑㄧˊ
+亝 0 ㄑㄧˊ
+斉 0 ㄑㄧˊ
+芪 0 ㄑㄧˊ
+竒 0 ㄑㄧˊ
+帺 0 ㄑㄧˊ
+㥍 0 ㄑㄧˊ
+朞 0 ㄑㄧˊ
+棊 0 ㄑㄧˊ
+竢 0 ㄑㄧˊ
+粸 0 ㄑㄧˊ
+綨 0 ㄑㄧˊ
+蜝 0 ㄑㄧˊ
+褀 0 ㄑㄧˊ
+璂 0 ㄑㄧˊ
+禥 0 ㄑㄧˊ
+櫀 0 ㄑㄧˊ
+檱 0 ㄑㄧˊ
+弜 0 ㄑㄧˊ
+剘 0 ㄑㄧˊ
+斊 0 ㄑㄧˊ
+萕 0 ㄑㄧˊ
+愭 0 ㄑㄧˊ
+㓾 0 ㄑㄧˊ
+綥 0 ㄑㄧˊ
+䳢 0 ㄑㄧˊ
+猉 0 ㄑㄧˊ
+掐 0 ㄑㄧㄚ
+葜 0 ㄑㄧㄚ
+㤉 0 ㄑㄧㄚ
+卡 0 ㄑㄧㄚˇ
+酠 0 ㄑㄧㄚˇ
+跒 0 ㄑㄧㄚˇ
+恰 0 ㄑㄧㄚˋ
+洽 0 ㄑㄧㄚˋ
+帢 0 ㄑㄧㄚˋ
+愘 0 ㄑㄧㄚˋ
+殎 0 ㄑㄧㄚˋ
+冾 0 ㄑㄧㄚˋ
+垥 0 ㄑㄧㄚˋ
+烚 0 ㄑㄧㄚˋ
+珨 0 ㄑㄧㄚˋ
+楬 0 ㄑㄧㄚˋ
+跲 0 ㄑㄧㄚˋ
+圶 0 ㄑㄧㄚˋ
+胢 0 ㄑㄧㄚˋ
+㓤 0 ㄑㄧㄚˋ
+敲 0 ㄑㄧㄠ
+鍬 0 ㄑㄧㄠ
+橇 0 ㄑㄧㄠ
+撬 0 ㄑㄧㄠ
+蹺 0 ㄑㄧㄠ
+磽 0 ㄑㄧㄠ
+蹻 0 ㄑㄧㄠ
+墝 0 ㄑㄧㄠ
+幧 0 ㄑㄧㄠ
+繑 0 ㄑㄧㄠ
+髜 0 ㄑㄧㄠ
+鐰 0 ㄑㄧㄠ
+鏒 0 ㄑㄧㄠ
+塙 0 ㄑㄧㄠ
+鄡 0 ㄑㄧㄠ
+墽 0 ㄑㄧㄠ
+骹 0 ㄑㄧㄠ
+庨 0 ㄑㄧㄠ
+郻 0 ㄑㄧㄠ
+頝 0 ㄑㄧㄠ
+俏 0 ㄑㄧㄠ
+悄 0 ㄑㄧㄠ
+雀 0 ㄑㄧㄠ
+鄗 0 ㄑㄧㄠ
+誚 0 ㄑㄧㄠ
+毃 0 ㄑㄧㄠ
+敺 0 ㄑㄧㄠ
+趬 0 ㄑㄧㄠ
+鄥 0 ㄑㄧㄠ
+鍫 0 ㄑㄧㄠ
+嵪 0 ㄑㄧㄠ
+巧 0 ㄑㄧㄠˇ
+悄 0 ㄑㄧㄠˇ
+愀 0 ㄑㄧㄠˇ
+鵲 0 ㄑㄧㄠˇ
+雀 0 ㄑㄧㄠˇ
+燋 0 ㄑㄧㄠˇ
+頝 0 ㄑㄧㄠˇ
+釥 0 ㄑㄧㄠˇ
+翹 0 ㄑㄧㄠˋ
+竅 0 ㄑㄧㄠˋ
+俏 0 ㄑㄧㄠˋ
+峭 0 ㄑㄧㄠˋ
+鞘 0 ㄑㄧㄠˋ
+誚 0 ㄑㄧㄠˋ
+撬 0 ㄑㄧㄠˋ
+蹺 0 ㄑㄧㄠˋ
+殼 0 ㄑㄧㄠˋ
+帩 0 ㄑㄧㄠˋ
+撽 0 ㄑㄧㄠˋ
+躈 0 ㄑㄧㄠˋ
+譙 0 ㄑㄧㄠˋ
+獟 0 ㄑㄧㄠˋ
+礉 0 ㄑㄧㄠˋ
+壳 0 ㄑㄧㄠˋ
+殻 0 ㄑㄧㄠˋ
+䇌 0 ㄑㄧㄠˋ
+髚 0 ㄑㄧㄠˋ
+韒 0 ㄑㄧㄠˋ
+鞩 0 ㄑㄧㄠˋ
+㚁 0 ㄑㄧㄠˋ
+陗 0 ㄑㄧㄠˋ
+僺 0 ㄑㄧㄠˋ
+橋 0 ㄑㄧㄠˊ
+瞧 0 ㄑㄧㄠˊ
+僑 0 ㄑㄧㄠˊ
+喬 0 ㄑㄧㄠˊ
+樵 0 ㄑㄧㄠˊ
+翹 0 ㄑㄧㄠˊ
+憔 0 ㄑㄧㄠˊ
+蕎 0 ㄑㄧㄠˊ
+礄 0 ㄑㄧㄠˊ
+譙 0 ㄑㄧㄠˊ
+簥 0 ㄑㄧㄠˊ
+趫 0 ㄑㄧㄠˊ
+燆 0 ㄑㄧㄠˊ
+劁 0 ㄑㄧㄠˊ
+嘺 0 ㄑㄧㄠˊ
+憍 0 ㄑㄧㄠˊ
+嫶 0 ㄑㄧㄠˊ
+敿 0 ㄑㄧㄠˊ
+招 0 ㄑㄧㄠˊ
+蕉 0 ㄑㄧㄠˊ
+荍 0 ㄑㄧㄠˊ
+嶕 0 ㄑㄧㄠˊ
+嶠 0 ㄑㄧㄠˊ
+撟 0 ㄑㄧㄠˊ
+潐 0 ㄑㄧㄠˊ
+獢 0 ㄑㄧㄠˊ
+犞 0 ㄑㄧㄠˊ
+磽 0 ㄑㄧㄠˊ
+穚 0 ㄑㄧㄠˊ
+繑 0 ㄑㄧㄠˊ
+蟜 0 ㄑㄧㄠˊ
+譑 0 ㄑㄧㄠˊ
+趭 0 ㄑㄧㄠˊ
+毊 0 ㄑㄧㄠˊ
+鱎 0 ㄑㄧㄠˊ
+乔 0 ㄑㄧㄠˊ
+嶣 0 ㄑㄧㄠˊ
+癄 0 ㄑㄧㄠˊ
+䎗 0 ㄑㄧㄠˊ
+藮 0 ㄑㄧㄠˊ
+鐈 0 ㄑㄧㄠˊ
+顦 0 ㄑㄧㄠˊ
+槗 0 ㄑㄧㄠˊ
+㝯 0 ㄑㄧㄠˊ
+䀉 0 ㄑㄧㄠˊ
+親 0 ㄑㄧㄣ
+侵 0 ㄑㄧㄣ
+欽 0 ㄑㄧㄣ
+衾 0 ㄑㄧㄣ
+駸 0 ㄑㄧㄣ
+嶔 0 ㄑㄧㄣ
+綅 0 ㄑㄧㄣ
+瀙 0 ㄑㄧㄣ
+鋟 0 ㄑㄧㄣ
+撳 0 ㄑㄧㄣ
+唚 0 ㄑㄧㄣ
+梫 0 ㄑㄧㄣ
+寑 0 ㄑㄧㄣ
+菳 0 ㄑㄧㄣ
+廞 0 ㄑㄧㄣ
+顉 0 ㄑㄧㄣ
+儭 0 ㄑㄧㄣ
+亲 0 ㄑㄧㄣ
+媇 0 ㄑㄧㄣ
+搇 0 ㄑㄧㄣ
+誛 0 ㄑㄧㄣ
+澵 0 ㄑㄧㄣ
+儬 0 ㄑㄧㄣ
+鮼 0 ㄑㄧㄣ
+寴 0 ㄑㄧㄣ
+寢 0 ㄑㄧㄣˇ
+昑 0 ㄑㄧㄣˇ
+寑 0 ㄑㄧㄣˇ
+曋 0 ㄑㄧㄣˇ
+螼 0 ㄑㄧㄣˇ
+坅 0 ㄑㄧㄣˇ
+顉 0 ㄑㄧㄣˇ
+侵 0 ㄑㄧㄣˇ
+鋟 0 ㄑㄧㄣˇ
+赾 0 ㄑㄧㄣˇ
+寝 0 ㄑㄧㄣˇ
+沁 0 ㄑㄧㄣˋ
+撳 0 ㄑㄧㄣˋ
+唚 0 ㄑㄧㄣˋ
+菣 0 ㄑㄧㄣˋ
+嚫 0 ㄑㄧㄣˋ
+吣 0 ㄑㄧㄣˋ
+吢 0 ㄑㄧㄣˋ
+㤈 0 ㄑㄧㄣˋ
+抋 0 ㄑㄧㄣˋ
+搇 0 ㄑㄧㄣˋ
+臤 0 ㄑㄧㄣˋ
+勤 0 ㄑㄧㄣˊ
+琴 0 ㄑㄧㄣˊ
+秦 0 ㄑㄧㄣˊ
+禽 0 ㄑㄧㄣˊ
+擒 0 ㄑㄧㄣˊ
+芹 0 ㄑㄧㄣˊ
+檎 0 ㄑㄧㄣˊ
+覃 0 ㄑㄧㄣˊ
+噙 0 ㄑㄧㄣˊ
+懃 0 ㄑㄧㄣˊ
+芩 0 ㄑㄧㄣˊ
+螓 0 ㄑㄧㄣˊ
+鈙 0 ㄑㄧㄣˊ
+嫀 0 ㄑㄧㄣˊ
+斳 0 ㄑㄧㄣˊ
+耹 0 ㄑㄧㄣˊ
+靲 0 ㄑㄧㄣˊ
+澿 0 ㄑㄧㄣˊ
+庈 0 ㄑㄧㄣˊ
+肣 0 ㄑㄧㄣˊ
+蚙 0 ㄑㄧㄣˊ
+軡 0 ㄑㄧㄣˊ
+雂 0 ㄑㄧㄣˊ
+鈐 0 ㄑㄧㄣˊ
+黔 0 ㄑㄧㄣˊ
+覲 0 ㄑㄧㄣˊ
+衾 0 ㄑㄧㄣˊ
+慬 0 ㄑㄧㄣˊ
+瑧 0 ㄑㄧㄣˊ
+蓁 0 ㄑㄧㄣˊ
+嶜 0 ㄑㄧㄣˊ
+縥 0 ㄑㄧㄣˊ
+轃 0 ㄑㄧㄣˊ
+珡 0 ㄑㄧㄣˊ
+捦 0 ㄑㄧㄣˊ
+䓅 0 ㄑㄧㄣˊ
+琹 0 ㄑㄧㄣˊ
+菦 0 ㄑㄧㄣˊ
+嗪 0 ㄑㄧㄣˊ
+懄 0 ㄑㄧㄣˊ
+㩒 0 ㄑㄧㄣˊ
+䥅 0 ㄑㄧㄣˊ
+蠄 0 ㄑㄧㄣˊ
+失 0 ㄕ
+施 0 ㄕ
+師 0 ㄕ
+詩 0 ㄕ
+溼 0 ㄕ
+濕 0 ㄕ
+獅 0 ㄕ
+屍 0 ㄕ
+ㄕ 0 ㄕ
+蝨 0 ㄕ
+虱 0 ㄕ
+尸 0 ㄕ
+迉 0 ㄕ
+蓍 0 ㄕ
+葹 0 ㄕ
+鳲 0 ㄕ
+邿 0 ㄕ
+湤 0 ㄕ
+絁 0 ㄕ
+鰤 0 ㄕ
+溮 0 ㄕ
+鶳 0 ㄕ
+箷 0 ㄕ
+褷 0 ㄕ
+襹 0 ㄕ
+螄 0 ㄕ
+拾 0 ㄕ
+隰 0 ㄕ
+韅 0 ㄕ
+釃 0 ㄕ
+鸍 0 ㄕ
+师 0 ㄕ
+釶 0 ㄕ
+瑡 0 ㄕ
+蒒 0 ㄕ
+鳾 0 ㄕ
+鍦 0 ㄕ
+魳 0 ㄕ
+鯴 0 ㄕ
+收 0 ㄕㄡ
+荍 0 ㄕㄡ
+収 0 ㄕㄡ
+手 0 ㄕㄡˇ
+首 0 ㄕㄡˇ
+守 0 ㄕㄡˇ
+掱 0 ㄕㄡˇ
+艏 0 ㄕㄡˇ
+狩 0 ㄕㄡˇ
+垨 0 ㄕㄡˇ
+扌 0 ㄕㄡˇ
+受 0 ㄕㄡˋ
+售 0 ㄕㄡˋ
+壽 0 ㄕㄡˋ
+獸 0 ㄕㄡˋ
+授 0 ㄕㄡˋ
+瘦 0 ㄕㄡˋ
+狩 0 ㄕㄡˋ
+綬 0 ㄕㄡˋ
+守 0 ㄕㄡˋ
+燾 0 ㄕㄡˋ
+譸 0 ㄕㄡˋ
+寿 0 ㄕㄡˋ
+垨 0 ㄕㄡˋ
+涭 0 ㄕㄡˋ
+膄 0 ㄕㄡˋ
+璹 0 ㄕㄡˋ
+嘼 0 ㄕㄡˋ
+䛵 0 ㄕㄡˋ
+嚋 0 ㄕㄡˋ
+鏉 0 ㄕㄡˋ
+熟 0 ㄕㄡˊ
+生 0 ㄕㄥ
+聲 0 ㄕㄥ
+勝 0 ㄕㄥ
+升 0 ㄕㄥ
+牲 0 ㄕㄥ
+昇 0 ㄕㄥ
+甥 0 ㄕㄥ
+笙 0 ㄕㄥ
+陞 0 ㄕㄥ
+泩 0 ㄕㄥ
+鉎 0 ㄕㄥ
+鼪 0 ㄕㄥ
+呏 0 ㄕㄥ
+狌 0 ㄕㄥ
+湦 0 ㄕㄥ
+焺 0 ㄕㄥ
+鵿 0 ㄕㄥ
+胜 0 ㄕㄥ
+貹 0 ㄕㄥ
+髜 0 ㄕㄥ
+声 0 ㄕㄥ
+阩 0 ㄕㄥ
+珄 0 ㄕㄥ
+苼 0 ㄕㄥ
+陹 0 ㄕㄥ
+鍟 0 ㄕㄥ
+斘 0 ㄕㄥ
+殸 0 ㄕㄥ
+殅 0 ㄕㄥ
+省 0 ㄕㄥˇ
+眚 0 ㄕㄥˇ
+冼 0 ㄕㄥˇ
+箵 0 ㄕㄥˇ
+偗 0 ㄕㄥˇ
+勝 0 ㄕㄥˋ
+盛 0 ㄕㄥˋ
+聖 0 ㄕㄥˋ
+剩 0 ㄕㄥˋ
+嵊 0 ㄕㄥˋ
+乘 0 ㄕㄥˋ
+賸 0 ㄕㄥˋ
+圣 0 ㄕㄥˋ
+貹 0 ㄕㄥˋ
+晟 0 ㄕㄥˋ
+檉 0 ㄕㄥˋ
+蟶 0 ㄕㄥˋ
+乗 0 ㄕㄥˋ
+晠 0 ㄕㄥˋ
+剰 0 ㄕㄥˋ
+椉 0 ㄕㄥˋ
+琞 0 ㄕㄥˋ
+墭 0 ㄕㄥˋ
+膡 0 ㄕㄥˋ
+蕂 0 ㄕㄥˋ
+垩 0 ㄕㄥˋ
+榺 0 ㄕㄥˋ
+繩 0 ㄕㄥˊ
+澠 0 ㄕㄥˊ
+憴 0 ㄕㄥˊ
+譝 0 ㄕㄥˊ
+鱦 0 ㄕㄥˊ
+溗 0 ㄕㄥˊ
+縄 0 ㄕㄥˊ
+商 0 ㄕㄤ
+傷 0 ㄕㄤ
+殤 0 ㄕㄤ
+觴 0 ㄕㄤ
+湯 0 ㄕㄤ
+漡 0 ㄕㄤ
+蔏 0 ㄕㄤ
+螪 0 ㄕㄤ
+謪 0 ㄕㄤ
+鬺 0 ㄕㄤ
+裳 0 ㄕㄤ
+愓 0 ㄕㄤ
+熵 0 ㄕㄤ
+薚 0 ㄕㄤ
+墒 0 ㄕㄤ
+慯 0 ㄕㄤ
+滳 0 ㄕㄤ
+賞 0 ㄕㄤˇ
+晌 0 ㄕㄤˇ
+上 0 ㄕㄤˇ
+償 0 ㄕㄤˇ
+丄 0 ㄕㄤˇ
+上 0 ㄕㄤˋ
+尚 0 ㄕㄤˋ
+爙 0 ㄕㄤˋ
+姠 0 ㄕㄤˋ
+仩 0 ㄕㄤˋ
+蠰 0 ㄕㄤˋ
+丄 0 ㄕㄤˋ
+尙 0 ㄕㄤˋ
+裳 0 ㄕㄤ˙
+山 0 ㄕㄢ
+扇 0 ㄕㄢ
+衫 0 ㄕㄢ
+杉 0 ㄕㄢ
+刪 0 ㄕㄢ
+珊 0 ㄕㄢ
+羶 0 ㄕㄢ
+舢 0 ㄕㄢ
+煽 0 ㄕㄢ
+潸 0 ㄕㄢ
+跚 0 ㄕㄢ
+姍 0 ㄕㄢ
+芟 0 ㄕㄢ
+苫 0 ㄕㄢ
+搧 0 ㄕㄢ
+縿 0 ㄕㄢ
+穇 0 ㄕㄢ
+挻 0 ㄕㄢ
+烻 0 ㄕㄢ
+狦 0 ㄕㄢ
+笘 0 ㄕㄢ
+剼 0 ㄕㄢ
+摻 0 ㄕㄢ
+奾 0 ㄕㄢ
+屾 0 ㄕㄢ
+氙 0 ㄕㄢ
+埏 0 ㄕㄢ
+膻 0 ㄕㄢ
+襂 0 ㄕㄢ
+邓 0 ㄕㄢ
+邖 0 ㄕㄢ
+删 0 ㄕㄢ
+姗 0 ㄕㄢ
+掺 0 ㄕㄢ
+嘇 0 ㄕㄢ
+撡 0 ㄕㄢ
+檆 0 ㄕㄢ
+羴 0 ㄕㄢ
+鯅 0 ㄕㄢ
+㰑 0 ㄕㄢ
+䀐 0 ㄕㄢ
+傓 0 ㄕㄢ
+澘 0 ㄕㄢ
+閃 0 ㄕㄢˇ
+陝 0 ㄕㄢˇ
+睒 0 ㄕㄢˇ
+晱 0 ㄕㄢˇ
+覢 0 ㄕㄢˇ
+摻 0 ㄕㄢˇ
+陜 0 ㄕㄢˇ
+掺 0 ㄕㄢˇ
+撡 0 ㄕㄢˇ
+䀹 0 ㄕㄢˇ
+㜣 0 ㄕㄢˇ
+善 0 ㄕㄢˋ
+扇 0 ㄕㄢˋ
+汕 0 ㄕㄢˋ
+擅 0 ㄕㄢˋ
+膳 0 ㄕㄢˋ
+繕 0 ㄕㄢˋ
+鄯 0 ㄕㄢˋ
+煽 0 ㄕㄢˋ
+訕 0 ㄕㄢˋ
+單 0 ㄕㄢˋ
+贍 0 ㄕㄢˋ
+疝 0 ㄕㄢˋ
+鱔 0 ㄕㄢˋ
+騸 0 ㄕㄢˋ
+禪 0 ㄕㄢˋ
+墠 0 ㄕㄢˋ
+嬗 0 ㄕㄢˋ
+掞 0 ㄕㄢˋ
+摲 0 ㄕㄢˋ
+謆 0 ㄕㄢˋ
+墡 0 ㄕㄢˋ
+釤 0 ㄕㄢˋ
+蟺 0 ㄕㄢˋ
+赸 0 ㄕㄢˋ
+儃 0 ㄕㄢˋ
+柵 0 ㄕㄢˋ
+奾 0 ㄕㄢˋ
+抎 0 ㄕㄢˋ
+氙 0 ㄕㄢˋ
+剡 0 ㄕㄢˋ
+搧 0 ㄕㄢˋ
+煔 0 ㄕㄢˋ
+嫸 0 ㄕㄢˋ
+撣 0 ㄕㄢˋ
+樿 0 ㄕㄢˋ
+橏 0 ㄕㄢˋ
+灗 0 ㄕㄢˋ
+鱣 0 ㄕㄢˋ
+单 0 ㄕㄢˋ
+単 0 ㄕㄢˋ
+栅 0 ㄕㄢˋ
+炶 0 ㄕㄢˋ
+銏 0 ㄕㄢˋ
+僐 0 ㄕㄢˋ
+熌 0 ㄕㄢˋ
+嶦 0 ㄕㄢˋ
+䱇 0 ㄕㄢˋ
+磰 0 ㄕㄢˋ
+蟮 0 ㄕㄢˋ
+譱 0 ㄕㄢˋ
+饍 0 ㄕㄢˋ
+鱓 0 ㄕㄢˋ
+㣌 0 ㄕㄢˋ
+傓 0 ㄕㄢˋ
+使 0 ㄕˇ
+始 0 ㄕˇ
+史 0 ㄕˇ
+駛 0 ㄕˇ
+矢 0 ㄕˇ
+屎 0 ㄕˇ
+豕 0 ㄕˇ
+弛 0 ㄕˇ
+乨 0 ㄕˇ
+纚 0 ㄕˇ
+笶 0 ㄕˇ
+兘 0 ㄕˇ
+鉂 0 ㄕˇ
+市 0 ㄕˋ
+是 0 ㄕˋ
+事 0 ㄕˋ
+世 0 ㄕˋ
+士 0 ㄕˋ
+勢 0 ㄕˋ
+識 0 ㄕˋ
+室 0 ㄕˋ
+示 0 ㄕˋ
+試 0 ㄕˋ
+視 0 ㄕˋ
+式 0 ㄕˋ
+氏 0 ㄕˋ
+適 0 ㄕˋ
+釋 0 ㄕˋ
+飾 0 ㄕˋ
+侍 0 ㄕˋ
+誓 0 ㄕˋ
+逝 0 ㄕˋ
+嗜 0 ㄕˋ
+恃 0 ㄕˋ
+仕 0 ㄕˋ
+柿 0 ㄕˋ
+使 0 ㄕˋ
+螫 0 ㄕˋ
+弒 0 ㄕˋ
+噬 0 ㄕˋ
+拭 0 ㄕˋ
+豉 0 ㄕˋ
+媞 0 ㄕˋ
+筮 0 ㄕˋ
+舐 0 ㄕˋ
+軾 0 ㄕˋ
+諡 0 ㄕˋ
+貰 0 ㄕˋ
+芔 0 ㄕˋ
+奭 0 ㄕˋ
+戺 0 ㄕˋ
+澨 0 ㄕˋ
+諟 0 ㄕˋ
+襫 0 ㄕˋ
+鈰 0 ㄕˋ
+揓 0 ㄕˋ
+鉽 0 ㄕˋ
+唑 0 ㄕˋ
+翨 0 ㄕˋ
+銴 0 ㄕˋ
+謚 0 ㄕˋ
+遾 0 ㄕˋ
+簭 0 ㄕˋ
+齛 0 ㄕˋ
+跩 0 ㄕˋ
+烒 0 ㄕˋ
+崼 0 ㄕˋ
+徥 0 ㄕˋ
+詍 0 ㄕˋ
+戠 0 ㄕˋ
+褆 0 ㄕˋ
+始 0 ㄕˋ
+紲 0 ㄕˋ
+忕 0 ㄕˋ
+伳 0 ㄕˋ
+茌 0 ㄕˋ
+迣 0 ㄕˋ
+倳 0 ㄕˋ
+剚 0 ㄕˋ
+栻 0 ㄕˋ
+疶 0 ㄕˋ
+埶 0 ㄕˋ
+畤 0 ㄕˋ
+跇 0 ㄕˋ
+睼 0 ㄕˋ
+僿 0 ㄕˋ
+醍 0 ㄕˋ
+擿 0 ㄕˋ
+乨 0 ㄕˋ
+卋 0 ㄕˋ
+忲 0 ㄕˋ
+势 0 ㄕˋ
+呩 0 ㄕˋ
+柹 0 ㄕˋ
+冟 0 ㄕˋ
+昰 0 ㄕˋ
+眎 0 ㄕˋ
+眡 0 ㄕˋ
+絉 0 ㄕˋ
+弑 0 ㄕˋ
+舓 0 ㄕˋ
+緤 0 ㄕˋ
+䤭 0 ㄕˋ
+餙 0 ㄕˋ
+嬕 0 ㄕˋ
+餝 0 ㄕˋ
+丗 0 ㄕˋ
+叓 0 ㄕˋ
+𨑬 0 ㄕˋ
+兘 0 ㄕˋ
+眂 0 ㄕˋ
+啇 0 ㄕˋ
+睗 0 ㄕˋ
+十 0 ㄕˊ
+什 0 ㄕˊ
+石 0 ㄕˊ
+時 0 ㄕˊ
+實 0 ㄕˊ
+食 0 ㄕˊ
+拾 0 ㄕˊ
+蝕 0 ㄕˊ
+碩 0 ㄕˊ
+射 0 ㄕˊ
+提 0 ㄕˊ
+蒔 0 ㄕˊ
+湜 0 ㄕˊ
+鰣 0 ㄕˊ
+塒 0 ㄕˊ
+祏 0 ㄕˊ
+鼫 0 ㄕˊ
+鉐 0 ㄕˊ
+榯 0 ㄕˊ
+湁 0 ㄕˊ
+溡 0 ㄕˊ
+鼭 0 ㄕˊ
+寔 0 ㄕˊ
+籵 0 ㄕˊ
+姼 0 ㄕˊ
+时 0 ㄕˊ
+实 0 ㄕˊ
+実 0 ㄕˊ
+炻 0 ㄕˊ
+遈 0 ㄕˊ
+旹 0 ㄕˊ
+宲 0 ㄕˊ
+匙 0 ㄕ˙
+實 0 ㄕ˙
+殺 0 ㄕㄚ
+沙 0 ㄕㄚ
+紗 0 ㄕㄚ
+砂 0 ㄕㄚ
+莎 0 ㄕㄚ
+剎 0 ㄕㄚ
+煞 0 ㄕㄚ
+鯊 0 ㄕㄚ
+裟 0 ㄕㄚ
+杉 0 ㄕㄚ
+痧 0 ㄕㄚ
+鎩 0 ㄕㄚ
+魦 0 ㄕㄚ
+樧 0 ㄕㄚ
+猀 0 ㄕㄚ
+帴 0 ㄕㄚ
+摋 0 ㄕㄚ
+蔱 0 ㄕㄚ
+硰 0 ㄕㄚ
+唦 0 ㄕㄚ
+挲 0 ㄕㄚ
+桫 0 ㄕㄚ
+逤 0 ㄕㄚ
+閷 0 ㄕㄚ
+繺 0 ㄕㄚ
+挱 0 ㄕㄚ
+粆 0 ㄕㄚ
+桬 0 ㄕㄚ
+榝 0 ㄕㄚ
+檆 0 ㄕㄚ
+鯋 0 ㄕㄚ
+髿 0 ㄕㄚ
+傻 0 ㄕㄚˇ
+繌 0 ㄕㄚˇ
+儍 0 ㄕㄚˇ
+緵 0 ㄕㄚˇ
+訯 0 ㄕㄚˇ
+煞 0 ㄕㄚˋ
+霎 0 ㄕㄚˋ
+廈 0 ㄕㄚˋ
+嗄 0 ㄕㄚˋ
+歃 0 ㄕㄚˋ
+箑 0 ㄕㄚˋ
+翣 0 ㄕㄚˋ
+萐 0 ㄕㄚˋ
+喢 0 ㄕㄚˋ
+唼 0 ㄕㄚˋ
+啑 0 ㄕㄚˋ
+翜 0 ㄕㄚˋ
+樧 0 ㄕㄚˋ
+刹 0 ㄕㄚˋ
+帹 0 ㄕㄚˋ
+厦 0 ㄕㄚˋ
+榝 0 ㄕㄚˋ
+閯 0 ㄕㄚˋ
+啥 0 ㄕㄚˊ
+篩 0 ㄕㄞ
+㴓 0 ㄕㄞ
+骰 0 ㄕㄞˇ
+繺 0 ㄕㄞˇ
+色 0 ㄕㄞˇ
+曬 0 ㄕㄞˋ
+晒 0 ㄕㄞˋ
+閷 0 ㄕㄞˋ
+殺 0 ㄕㄞˋ
+鎩 0 ㄕㄞˋ
+書 0 ㄕㄨ
+輸 0 ㄕㄨ
+殊 0 ㄕㄨ
+舒 0 ㄕㄨ
+梳 0 ㄕㄨ
+疏 0 ㄕㄨ
+蔬 0 ㄕㄨ
+樞 0 ㄕㄨ
+紓 0 ㄕㄨ
+抒 0 ㄕㄨ
+攄 0 ㄕㄨ
+姝 0 ㄕㄨ
+樗 0 ㄕㄨ
+摴 0 ㄕㄨ
+殳 0 ㄕㄨ
+杸 0 ㄕㄨ
+陎 0 ㄕㄨ
+綀 0 ㄕㄨ
+橾 0 ㄕㄨ
+祋 0 ㄕㄨ
+軗 0 ㄕㄨ
+鵨 0 ㄕㄨ
+藲 0 ㄕㄨ
+疋 0 ㄕㄨ
+叔 0 ㄕㄨ
+俞 0 ㄕㄨ
+荼 0 ㄕㄨ
+洙 0 ㄕㄨ
+悆 0 ㄕㄨ
+毹 0 ㄕㄨ
+忬 0 ㄕㄨ
+枢 0 ㄕㄨ
+俆 0 ㄕㄨ
+兪 0 ㄕㄨ
+疎 0 ㄕㄨ
+毺 0 ㄕㄨ
+踈 0 ㄕㄨ
+雙 0 ㄕㄨㄤ
+霜 0 ㄕㄨㄤ
+孀 0 ㄕㄨㄤ
+艭 0 ㄕㄨㄤ
+驦 0 ㄕㄨㄤ
+鷞 0 ㄕㄨㄤ
+孇 0 ㄕㄨㄤ
+礵 0 ㄕㄨㄤ
+瀧 0 ㄕㄨㄤ
+双 0 ㄕㄨㄤ
+滝 0 ㄕㄨㄤ
+騻 0 ㄕㄨㄤ
+欆 0 ㄕㄨㄤ
+鸘 0 ㄕㄨㄤ
+䉶 0 ㄕㄨㄤ
+䝄 0 ㄕㄨㄤ
+爽 0 ㄕㄨㄤˇ
+塽 0 ㄕㄨㄤˇ
+樉 0 ㄕㄨㄤˇ
+漺 0 ㄕㄨㄤˇ
+慡 0 ㄕㄨㄤˇ
+縔 0 ㄕㄨㄤˇ
+傸 0 ㄕㄨㄤˇ
+磢 0 ㄕㄨㄤˇ
+鷞 0 ㄕㄨㄤˇ
+逺 0 ㄕㄨㄤˇ
+鸘 0 ㄕㄨㄤˇ
+灀 0 ㄕㄨㄤˋ
+雙 0 ㄕㄨㄤˋ
+双 0 ㄕㄨㄤˋ
+栓 0 ㄕㄨㄢ
+閂 0 ㄕㄨㄢ
+拴 0 ㄕㄨㄢ
+涮 0 ㄕㄨㄢˋ
+諼 0 ㄕㄨㄢˋ
+踹 0 ㄕㄨㄢˋ
+數 0 ㄕㄨˇ
+鼠 0 ㄕㄨˇ
+屬 0 ㄕㄨˇ
+暑 0 ㄕㄨˇ
+署 0 ㄕㄨˇ
+薯 0 ㄕㄨˇ
+蜀 0 ㄕㄨˇ
+黍 0 ㄕㄨˇ
+癙 0 ㄕㄨˇ
+潻 0 ㄕㄨˇ
+藷 0 ㄕㄨˇ
+钃 0 ㄕㄨˇ
+婌 0 ㄕㄨˇ
+襩 0 ㄕㄨˇ
+糬 0 ㄕㄨˇ
+曙 0 ㄕㄨˇ
+襡 0 ㄕㄨˇ
+孎 0 ㄕㄨˇ
+灟 0 ㄕㄨˇ
+鸀 0 ㄕㄨˇ
+蠾 0 ㄕㄨˇ
+属 0 ㄕㄨˇ
+数 0 ㄕㄨˇ
+暏 0 ㄕㄨˇ
+㻿 0 ㄕㄨˇ
+薥 0 ㄕㄨˇ
+術 0 ㄕㄨˋ
+數 0 ㄕㄨˋ
+樹 0 ㄕㄨˋ
+束 0 ㄕㄨˋ
+述 0 ㄕㄨˋ
+署 0 ㄕㄨˋ
+豎 0 ㄕㄨˋ
+疏 0 ㄕㄨˋ
+恕 0 ㄕㄨˋ
+庶 0 ㄕㄨˋ
+曙 0 ㄕㄨˋ
+墅 0 ㄕㄨˋ
+漱 0 ㄕㄨˋ
+倏 0 ㄕㄨˋ
+戍 0 ㄕㄨˋ
+澍 0 ㄕㄨˋ
+翛 0 ㄕㄨˋ
+沭 0 ㄕㄨˋ
+裋 0 ㄕㄨˋ
+鉥 0 ㄕㄨˋ
+尌 0 ㄕㄨˋ
+儵 0 ㄕㄨˋ
+鏣 0 ㄕㄨˋ
+鶐 0 ㄕㄨˋ
+嗽 0 ㄕㄨˋ
+摭 0 ㄕㄨˋ
+鯈 0 ㄕㄨˋ
+焂 0 ㄕㄨˋ
+訹 0 ㄕㄨˋ
+鈙 0 ㄕㄨˋ
+腧 0 ㄕㄨˋ
+嫬 0 ㄕㄨˋ
+籔 0 ㄕㄨˋ
+侸 0 ㄕㄨˋ
+倐 0 ㄕㄨˋ
+捒 0 ㄕㄨˋ
+荗 0 ㄕㄨˋ
+庻 0 ㄕㄨˋ
+疎 0 ㄕㄨˋ
+数 0 ㄕㄨˋ
+暏 0 ㄕㄨˋ
+㴻 0 ㄕㄨˋ
+竪 0 ㄕㄨˋ
+潄 0 ㄕㄨˋ
+踈 0 ㄕㄨˋ
+瘶 0 ㄕㄨˋ
+錰 0 ㄕㄨˋ
+濖 0 ㄕㄨˋ
+䉀 0 ㄕㄨˋ
+蒁 0 ㄕㄨˋ
+叔 0 ㄕㄨˊ
+熟 0 ㄕㄨˊ
+淑 0 ㄕㄨˊ
+塾 0 ㄕㄨˊ
+贖 0 ㄕㄨˊ
+孰 0 ㄕㄨˊ
+菽 0 ㄕㄨˊ
+秫 0 ㄕㄨˊ
+襡 0 ㄕㄨˊ
+埱 0 ㄕㄨˊ
+焂 0 ㄕㄨˊ
+跾 0 ㄕㄨˊ
+鸀 0 ㄕㄨˊ
+虪 0 ㄕㄨˊ
+朱 0 ㄕㄨˊ
+椒 0 ㄕㄨˊ
+婌 0 ㄕㄨˊ
+鮛 0 ㄕㄨˊ
+掓 0 ㄕㄨˊ
+蒣 0 ㄕㄨˊ
+璹 0 ㄕㄨˊ
+尗 0 ㄕㄨˊ
+叔 0 ㄕㄨ˙
+刷 0 ㄕㄨㄚ
+唰 0 ㄕㄨㄚ
+鮛 0 ㄕㄨㄚ
+涮 0 ㄕㄨㄚ
+耍 0 ㄕㄨㄚˇ
+刷 0 ㄕㄨㄚˋ
+誜 0 ㄕㄨㄚˋ
+摔 0 ㄕㄨㄞ
+衰 0 ㄕㄨㄞ
+縗 0 ㄕㄨㄞ
+孈 0 ㄕㄨㄞ
+榱 0 ㄕㄨㄞ
+甩 0 ㄕㄨㄞˇ
+率 0 ㄕㄨㄞˋ
+帥 0 ㄕㄨㄞˋ
+蟀 0 ㄕㄨㄞˋ
+咰 0 ㄕㄨㄞˋ
+繂 0 ㄕㄨㄞˋ
+卛 0 ㄕㄨㄞˋ
+說 0 ㄕㄨㄛ
+説 0 ㄕㄨㄛ
+哾 0 ㄕㄨㄛ
+朔 0 ㄕㄨㄛˋ
+碩 0 ㄕㄨㄛˋ
+爍 0 ㄕㄨㄛˋ
+數 0 ㄕㄨㄛˋ
+鑠 0 ㄕㄨㄛˋ
+嗍 0 ㄕㄨㄛˋ
+率 0 ㄕㄨㄛˋ
+蟀 0 ㄕㄨㄛˋ
+帥 0 ㄕㄨㄛˋ
+搠 0 ㄕㄨㄛˋ
+妁 0 ㄕㄨㄛˋ
+槊 0 ㄕㄨㄛˋ
+箾 0 ㄕㄨㄛˋ
+蒴 0 ㄕㄨㄛˋ
+勺 0 ㄕㄨㄛˋ
+欶 0 ㄕㄨㄛˋ
+揱 0 ㄕㄨㄛˋ
+獡 0 ㄕㄨㄛˋ
+鎙 0 ㄕㄨㄛˋ
+芍 0 ㄕㄨㄛˋ
+矟 0 ㄕㄨㄛˋ
+数 0 ㄕㄨㄛˋ
+卛 0 ㄕㄨㄛˋ
+水 0 ㄕㄨㄟˇ
+說 0 ㄕㄨㄟˋ
+睡 0 ㄕㄨㄟˋ
+稅 0 ㄕㄨㄟˋ
+蛻 0 ㄕㄨㄟˋ
+帨 0 ㄕㄨㄟˋ
+涗 0 ㄕㄨㄟˋ
+裞 0 ㄕㄨㄟˋ
+挩 0 ㄕㄨㄟˋ
+娷 0 ㄕㄨㄟˋ
+捝 0 ㄕㄨㄟˋ
+涚 0 ㄕㄨㄟˋ
+祱 0 ㄕㄨㄟˋ
+税 0 ㄕㄨㄟˋ
+蜕 0 ㄕㄨㄟˋ
+説 0 ㄕㄨㄟˋ
+誰 0 ㄕㄨㄟˊ
+脽 0 ㄕㄨㄟˊ
+盾 0 ㄕㄨㄣˇ
+楯 0 ㄕㄨㄣˇ
+吮 0 ㄕㄨㄣˇ
+揗 0 ㄕㄨㄣˇ
+賰 0 ㄕㄨㄣˇ
+順 0 ㄕㄨㄣˋ
+舜 0 ㄕㄨㄣˋ
+瞬 0 ㄕㄨㄣˋ
+蕣 0 ㄕㄨㄣˋ
+鬊 0 ㄕㄨㄣˋ
+瞚 0 ㄕㄨㄣˋ
+馴 0 ㄕㄨㄣˋ
+橓 0 ㄕㄨㄣˋ
+瞤 0 ㄕㄨㄣˋ
+奢 0 ㄕㄜ
+賒 0 ㄕㄜ
+奓 0 ㄕㄜ
+檨 0 ㄕㄜ
+譇 0 ㄕㄜ
+畬 0 ㄕㄜ
+撦 0 ㄕㄜ
+偖 0 ㄕㄜ
+畭 0 ㄕㄜ
+賖 0 ㄕㄜ
+畲 0 ㄕㄜ
+捨 0 ㄕㄜˇ
+舍 0 ㄕㄜˇ
+舎 0 ㄕㄜˇ
+䬷 0 ㄕㄜˇ
+社 0 ㄕㄜˋ
+設 0 ㄕㄜˋ
+射 0 ㄕㄜˋ
+涉 0 ㄕㄜˋ
+舍 0 ㄕㄜˋ
+攝 0 ㄕㄜˋ
+赦 0 ㄕㄜˋ
+歙 0 ㄕㄜˋ
+麝 0 ㄕㄜˋ
+厙 0 ㄕㄜˋ
+猞 0 ㄕㄜˋ
+灄 0 ㄕㄜˋ
+蔎 0 ㄕㄜˋ
+韘 0 ㄕㄜˋ
+騇 0 ㄕㄜˋ
+拾 0 ㄕㄜˋ
+葉 0 ㄕㄜˋ
+捑 0 ㄕㄜˋ
+蠂 0 ㄕㄜˋ
+色 0 ㄕㄜˋ
+庫 0 ㄕㄜˋ
+聶 0 ㄕㄜˋ
+懾 0 ㄕㄜˋ
+躡 0 ㄕㄜˋ
+涻 0 ㄕㄜˋ
+舎 0 ㄕㄜˋ
+渉 0 ㄕㄜˋ
+䜓 0 ㄕㄜˋ
+欇 0 ㄕㄜˋ
+弽 0 ㄕㄜˋ
+蹑 0 ㄕㄜˋ
+蛇 0 ㄕㄜˊ
+舌 0 ㄕㄜˊ
+甚 0 ㄕㄜˊ
+佘 0 ㄕㄜˊ
+什 0 ㄕㄜˊ
+揲 0 ㄕㄜˊ
+鉈 0 ㄕㄜˊ
+折 0 ㄕㄜˊ
+咶 0 ㄕㄜˊ
+輋 0 ㄕㄜˊ
+闍 0 ㄕㄜˊ
+譇 0 ㄕㄜˊ
+虵 0 ㄕㄜˊ
+釶 0 ㄕㄜˊ
+鍦 0 ㄕㄜˊ
+蛥 0 ㄕㄜˊ
+鉇 0 ㄕㄜˊ
+燒 0 ㄕㄠ
+稍 0 ㄕㄠ
+梢 0 ㄕㄠ
+艄 0 ㄕㄠ
+捎 0 ㄕㄠ
+弰 0 ㄕㄠ
+蛸 0 ㄕㄠ
+莦 0 ㄕㄠ
+筲 0 ㄕㄠ
+旓 0 ㄕㄠ
+髾 0 ㄕㄠ
+輎 0 ㄕㄠ
+鮹 0 ㄕㄠ
+蕱 0 ㄕㄠ
+杪 0 ㄕㄠ
+娋 0 ㄕㄠ
+颵 0 ㄕㄠ
+少 0 ㄕㄠˇ
+尐 0 ㄕㄠˇ
+少 0 ㄕㄠˋ
+紹 0 ㄕㄠˋ
+哨 0 ㄕㄠˋ
+邵 0 ㄕㄠˋ
+召 0 ㄕㄠˋ
+卲 0 ㄕㄠˋ
+劭 0 ㄕㄠˋ
+袑 0 ㄕㄠˋ
+睄 0 ㄕㄠˋ
+潲 0 ㄕㄠˋ
+捎 0 ㄕㄠˋ
+稍 0 ㄕㄠˋ
+娋 0 ㄕㄠˋ
+綤 0 ㄕㄠˋ
+杓 0 ㄕㄠˊ
+韶 0 ㄕㄠˊ
+芍 0 ㄕㄠˊ
+勺 0 ㄕㄠˊ
+玿 0 ㄕㄠˊ
+圴 0 ㄕㄠˊ
+牊 0 ㄕㄠˊ
+招 0 ㄕㄠˊ
+枃 0 ㄕㄠˊ
+柖 0 ㄕㄠˊ
+誰 0 ㄕㄟˊ
+身 0 ㄕㄣ
+深 0 ㄕㄣ
+伸 0 ㄕㄣ
+申 0 ㄕㄣ
+紳 0 ㄕㄣ
+呻 0 ㄕㄣ
+信 0 ㄕㄣ
+參 0 ㄕㄣ
+蔘 0 ㄕㄣ
+娠 0 ㄕㄣ
+莘 0 ㄕㄣ
+甡 0 ㄕㄣ
+侁 0 ㄕㄣ
+籸 0 ㄕㄣ
+葠 0 ㄕㄣ
+詵 0 ㄕㄣ
+駪 0 ㄕㄣ
+燊 0 ㄕㄣ
+砷 0 ㄕㄣ
+柛 0 ㄕㄣ
+氠 0 ㄕㄣ
+屾 0 ㄕㄣ
+珅 0 ㄕㄣ
+胂 0 ㄕㄣ
+阠 0 ㄕㄣ
+妽 0 ㄕㄣ
+峷 0 ㄕㄣ
+眒 0 ㄕㄣ
+琛 0 ㄕㄣ
+兟 0 ㄕㄣ
+棽 0 ㄕㄣ
+幓 0 ㄕㄣ
+銵 0 ㄕㄣ
+篸 0 ㄕㄣ
+鯓 0 ㄕㄣ
+㕥 0 ㄕㄣ
+扟 0 ㄕㄣ
+叁 0 ㄕㄣ
+参 0 ㄕㄣ
+籶 0 ㄕㄣ
+訫 0 ㄕㄣ
+叅 0 ㄕㄣ
+鉮 0 ㄕㄣ
+曑 0 ㄕㄣ
+敒 0 ㄕㄣ
+訷 0 ㄕㄣ
+瘮 0 ㄕㄣ
+鵢 0 ㄕㄣ
+裑 0 ㄕㄣ
+甧 0 ㄕㄣ
+沈 0 ㄕㄣˇ
+審 0 ㄕㄣˇ
+嬸 0 ㄕㄣˇ
+瀋 0 ㄕㄣˇ
+諗 0 ㄕㄣˇ
+讅 0 ㄕㄣˇ
+矧 0 ㄕㄣˇ
+哂 0 ㄕㄣˇ
+寀 0 ㄕㄣˇ
+瞫 0 ㄕㄣˇ
+邥 0 ㄕㄣˇ
+覾 0 ㄕㄣˇ
+沉 0 ㄕㄣˇ
+淰 0 ㄕㄣˇ
+曋 0 ㄕㄣˇ
+吲 0 ㄕㄣˇ
+弞 0 ㄕㄣˇ
+宷 0 ㄕㄣˇ
+訠 0 ㄕㄣˇ
+魫 0 ㄕㄣˇ
+鯅 0 ㄕㄣˇ
+矤 0 ㄕㄣˇ
+頣 0 ㄕㄣˇ
+慎 0 ㄕㄣˋ
+腎 0 ㄕㄣˋ
+滲 0 ㄕㄣˋ
+甚 0 ㄕㄣˋ
+蜃 0 ㄕㄣˋ
+沁 0 ㄕㄣˋ
+葚 0 ㄕㄣˋ
+椹 0 ㄕㄣˋ
+脤 0 ㄕㄣˋ
+抻 0 ㄕㄣˋ
+侺 0 ㄕㄣˋ
+鋠 0 ㄕㄣˋ
+諶 0 ㄕㄣˋ
+偡 0 ㄕㄣˋ
+堔 0 ㄕㄣˋ
+煁 0 ㄕㄣˋ
+踸 0 ㄕㄣˋ
+鍖 0 ㄕㄣˋ
+昚 0 ㄕㄣˋ
+涁 0 ㄕㄣˋ
+眘 0 ㄕㄣˋ
+渗 0 ㄕㄣˋ
+趻 0 ㄕㄣˋ
+愼 0 ㄕㄣˋ
+神 0 ㄕㄣˊ
+甚 0 ㄕㄣˊ
+什 0 ㄕㄣˊ
+嬸 0 ㄕㄣ˙
+疵 0 ㄘ
+庛 0 ㄘ
+雌 0 ㄘ
+ㄘ 0 ㄘ
+差 0 ㄘ
+趀 0 ㄘ
+骴 0 ㄘ
+恣 0 ㄘ
+呲 0 ㄘ
+跐 0 ㄘ
+鈭 0 ㄘ
+蠀 0 ㄘ
+髊 0 ㄘ
+湊 0 ㄘㄡˋ
+輳 0 ㄘㄡˋ
+腠 0 ㄘㄡˋ
+楱 0 ㄘㄡˋ
+凑 0 ㄘㄡˋ
+噌 0 ㄘㄥ
+噌 0 ㄘㄥˇ
+蹭 0 ㄘㄥˋ
+曾 0 ㄘㄥˊ
+層 0 ㄘㄥˊ
+嶒 0 ㄘㄥˊ
+鄫 0 ㄘㄥˊ
+碀 0 ㄘㄥˊ
+驓 0 ㄘㄥˊ
+竲 0 ㄘㄥˊ
+蒼 0 ㄘㄤ
+倉 0 ㄘㄤ
+滄 0 ㄘㄤ
+艙 0 ㄘㄤ
+傖 0 ㄘㄤ
+鶬 0 ㄘㄤ
+凔 0 ㄘㄤ
+嵢 0 ㄘㄤ
+愴 0 ㄘㄤ
+瑲 0 ㄘㄤ
+謒 0 ㄘㄤ
+蹌 0 ㄘㄤ
+仺 0 ㄘㄤ
+篬 0 ㄘㄤ
+駔 0 ㄘㄤˇ
+䅮 0 ㄘㄤˋ
+賶 0 ㄘㄤˋ
+藏 0 ㄘㄤˊ
+鑶 0 ㄘㄤˊ
+蔵 0 ㄘㄤˊ
+匨 0 ㄘㄤˊ
+參 0 ㄘㄢ
+餐 0 ㄘㄢ
+驂 0 ㄘㄢ
+縿 0 ㄘㄢ
+墋 0 ㄘㄢ
+毿 0 ㄘㄢ
+磣 0 ㄘㄢ
+襂 0 ㄘㄢ
+贂 0 ㄘㄢ
+鏒 0 ㄘㄢ
+鬖 0 ㄘㄢ
+叁 0 ㄘㄢ
+参 0 ㄘㄢ
+飡 0 ㄘㄢ
+叅 0 ㄘㄢ
+湌 0 ㄘㄢ
+傪 0 ㄘㄢ
+曑 0 ㄘㄢ
+䱗 0 ㄘㄢ
+慘 0 ㄘㄢˇ
+憯 0 ㄘㄢˇ
+朁 0 ㄘㄢˇ
+噆 0 ㄘㄢˇ
+黲 0 ㄘㄢˇ
+惨 0 ㄘㄢˇ
+燦 0 ㄘㄢˋ
+孱 0 ㄘㄢˋ
+璨 0 ㄘㄢˋ
+粲 0 ㄘㄢˋ
+澯 0 ㄘㄢˋ
+摻 0 ㄘㄢˋ
+澶 0 ㄘㄢˋ
+掺 0 ㄘㄢˋ
+嘇 0 ㄘㄢˋ
+撡 0 ㄘㄢˋ
+薒 0 ㄘㄢˋ
+謲 0 ㄘㄢˋ
+殘 0 ㄘㄢˊ
+蠶 0 ㄘㄢˊ
+慚 0 ㄘㄢˊ
+嬠 0 ㄘㄢˊ
+帴 0 ㄘㄢˊ
+蛬 0 ㄘㄢˊ
+魙 0 ㄘㄢˊ
+残 0 ㄘㄢˊ
+蝅 0 ㄘㄢˊ
+慙 0 ㄘㄢˊ
+嬱 0 ㄘㄢˊ
+㨻 0 ㄘㄢˊ
+蠺 0 ㄘㄢˊ
+此 0 ㄘˇ
+佌 0 ㄘˇ
+泚 0 ㄘˇ
+玼 0 ㄘˇ
+跐 0 ㄘˇ
+皉 0 ㄘˇ
+次 0 ㄘˋ
+刺 0 ㄘˋ
+賜 0 ㄘˋ
+廁 0 ㄘˋ
+伺 0 ㄘˋ
+佽 0 ㄘˋ
+蛓 0 ㄘˋ
+莿 0 ㄘˋ
+朿 0 ㄘˋ
+栨 0 ㄘˋ
+蚝 0 ㄘˋ
+絘 0 ㄘˋ
+庛 0 ㄘˋ
+厠 0 ㄘˋ
+螆 0 ㄘˋ
+詞 0 ㄘˊ
+辭 0 ㄘˊ
+慈 0 ㄘˊ
+磁 0 ㄘˊ
+瓷 0 ㄘˊ
+雌 0 ㄘˊ
+祠 0 ㄘˊ
+疵 0 ㄘˊ
+茨 0 ㄘˊ
+粢 0 ㄘˊ
+餈 0 ㄘˊ
+柌 0 ㄘˊ
+嬨 0 ㄘˊ
+濨 0 ㄘˊ
+呲 0 ㄘˊ
+飺 0 ㄘˊ
+薋 0 ㄘˊ
+茲 0 ㄘˊ
+茈 0 ㄘˊ
+鈶 0 ㄘˊ
+鶿 0 ㄘˊ
+珁 0 ㄘˊ
+䛐 0 ㄘˊ
+辝 0 ㄘˊ
+辞 0 ㄘˊ
+甆 0 ㄘˊ
+糍 0 ㄘˊ
+辤 0 ㄘˊ
+礠 0 ㄘˊ
+鴜 0 ㄘˊ
+鷀 0 ㄘˊ
+擦 0 ㄘㄚ
+搽 0 ㄘㄚ
+嚓 0 ㄘㄚ
+䃰 0 ㄘㄚ
+礤 0 ㄘㄚˇ
+囃 0 ㄘㄚˋ
+攃 0 ㄘㄚˋ
+遪 0 ㄘㄚˋ
+猜 0 ㄘㄞ
+採 0 ㄘㄞˇ
+彩 0 ㄘㄞˇ
+采 0 ㄘㄞˇ
+睬 0 ㄘㄞˇ
+踩 0 ㄘㄞˇ
+綵 0 ㄘㄞˇ
+跴 0 ㄘㄞˇ
+寀 0 ㄘㄞˇ
+棌 0 ㄘㄞˇ
+婇 0 ㄘㄞˇ
+釆 0 ㄘㄞˇ
+啋 0 ㄘㄞˇ
+跐 0 ㄘㄞˇ
+倸 0 ㄘㄞˇ
+蔡 0 ㄘㄞˋ
+菜 0 ㄘㄞˋ
+埰 0 ㄘㄞˋ
+采 0 ㄘㄞˋ
+縩 0 ㄘㄞˋ
+寀 0 ㄘㄞˋ
+才 0 ㄘㄞˊ
+財 0 ㄘㄞˊ
+材 0 ㄘㄞˊ
+裁 0 ㄘㄞˊ
+纔 0 ㄘㄞˊ
+釮 0 ㄘㄞˊ
+溨 0 ㄘㄞˊ
+粗 0 ㄘㄨ
+麤 0 ㄘㄨ
+觕 0 ㄘㄨ
+麆 0 ㄘㄨ
+麁 0 ㄘㄨ
+麄 0 ㄘㄨ
+匆 0 ㄘㄨㄥ
+聰 0 ㄘㄨㄥ
+從 0 ㄘㄨㄥ
+囪 0 ㄘㄨㄥ
+璁 0 ㄘㄨㄥ
+瑽 0 ㄘㄨㄥ
+樅 0 ㄘㄨㄥ
+驄 0 ㄘㄨㄥ
+蓯 0 ㄘㄨㄥ
+鏦 0 ㄘㄨㄥ
+熜 0 ㄘㄨㄥ
+棇 0 ㄘㄨㄥ
+暰 0 ㄘㄨㄥ
+蔥 0 ㄘㄨㄥ
+瞛 0 ㄘㄨㄥ
+蟌 0 ㄘㄨㄥ
+鍐 0 ㄘㄨㄥ
+叢 0 ㄘㄨㄥ
+囟 0 ㄘㄨㄥ
+濍 0 ㄘㄨㄥ
+从 0 ㄘㄨㄥ
+匇 0 ㄘㄨㄥ
+囱 0 ㄘㄨㄥ
+忩 0 ㄘㄨㄥ
+怱 0 ㄘㄨㄥ
+従 0 ㄘㄨㄥ
+悤 0 ㄘㄨㄥ
+楤 0 ㄘㄨㄥ
+葱 0 ㄘㄨㄥ
+漗 0 ㄘㄨㄥ
+聡 0 ㄘㄨㄥ
+樬 0 ㄘㄨㄥ
+緫 0 ㄘㄨㄥ
+聪 0 ㄘㄨㄥ
+聦 0 ㄘㄨㄥ
+樷 0 ㄘㄨㄥ
+繱 0 ㄘㄨㄥ
+鏓 0 ㄘㄨㄥ
+顖 0 ㄘㄨㄥ
+騘 0 ㄘㄨㄥ
+枞 0 ㄘㄨㄥ
+苁 0 ㄘㄨㄥ
+篵 0 ㄘㄨㄥ
+鍯 0 ㄘㄨㄥ
+衳 0 ㄘㄨㄥˇ
+幒 0 ㄘㄨㄥˇ
+欉 0 ㄘㄨㄥˋ
+藂 0 ㄘㄨㄥˋ
+謥 0 ㄘㄨㄥˋ
+從 0 ㄘㄨㄥˊ
+叢 0 ㄘㄨㄥˊ
+淙 0 ㄘㄨㄥˊ
+琮 0 ㄘㄨㄥˊ
+悰 0 ㄘㄨㄥˊ
+潀 0 ㄘㄨㄥˊ
+漎 0 ㄘㄨㄥˊ
+賨 0 ㄘㄨㄥˊ
+錝 0 ㄘㄨㄥˊ
+婃 0 ㄘㄨㄥˊ
+孮 0 ㄘㄨㄥˊ
+徖 0 ㄘㄨㄥˊ
+慒 0 ㄘㄨㄥˊ
+摐 0 ㄘㄨㄥˊ
+蓯 0 ㄘㄨㄥˊ
+藂 0 ㄘㄨㄥˊ
+欉 0 ㄘㄨㄥˊ
+从 0 ㄘㄨㄥˊ
+従 0 ㄘㄨㄥˊ
+碂 0 ㄘㄨㄥˊ
+誴 0 ㄘㄨㄥˊ
+賩 0 ㄘㄨㄥˊ
+樷 0 ㄘㄨㄥˊ
+灇 0 ㄘㄨㄥˊ
+爜 0 ㄘㄨㄥˊ
+苁 0 ㄘㄨㄥˊ
+潨 0 ㄘㄨㄥˊ
+攛 0 ㄘㄨㄢ
+躥 0 ㄘㄨㄢ
+鋑 0 ㄘㄨㄢ
+汆 0 ㄘㄨㄢ
+鑹 0 ㄘㄨㄢ
+竄 0 ㄘㄨㄢˋ
+篡 0 ㄘㄨㄢˋ
+爨 0 ㄘㄨㄢˋ
+篹 0 ㄘㄨㄢˋ
+纂 0 ㄘㄨㄢˋ
+攥 0 ㄘㄨㄢˋ
+熶 0 ㄘㄨㄢˋ
+簒 0 ㄘㄨㄢˋ
+殩 0 ㄘㄨㄢˋ
+攢 0 ㄘㄨㄢˊ
+巑 0 ㄘㄨㄢˊ
+劗 0 ㄘㄨㄢˊ
+欑 0 ㄘㄨㄢˊ
+攅 0 ㄘㄨㄢˊ
+櫕 0 ㄘㄨㄢˊ
+穳 0 ㄘㄨㄢˊ
+促 0 ㄘㄨˋ
+醋 0 ㄘㄨˋ
+簇 0 ㄘㄨˋ
+蹴 0 ㄘㄨˋ
+蔟 0 ㄘㄨˋ
+蹙 0 ㄘㄨˋ
+猝 0 ㄘㄨˋ
+卒 0 ㄘㄨˋ
+錯 0 ㄘㄨˋ
+趣 0 ㄘㄨˋ
+趨 0 ㄘㄨˋ
+鏃 0 ㄘㄨˋ
+瘯 0 ㄘㄨˋ
+踧 0 ㄘㄨˋ
+槭 0 ㄘㄨˋ
+梀 0 ㄘㄨˋ
+噈 0 ㄘㄨˋ
+殧 0 ㄘㄨˋ
+鼀 0 ㄘㄨˋ
+厝 0 ㄘㄨˋ
+戚 0 ㄘㄨˋ
+數 0 ㄘㄨˋ
+岨 0 ㄘㄨˋ
+唶 0 ㄘㄨˋ
+酢 0 ㄘㄨˋ
+碏 0 ㄘㄨˋ
+踀 0 ㄘㄨˋ
+憱 0 ㄘㄨˋ
+顣 0 ㄘㄨˋ
+卆 0 ㄘㄨˋ
+趋 0 ㄘㄨˋ
+数 0 ㄘㄨˋ
+誎 0 ㄘㄨˋ
+趗 0 ㄘㄨˋ
+縬 0 ㄘㄨˋ
+蹵 0 ㄘㄨˋ
+齚 0 ㄘㄨˋ
+鉃 0 ㄘㄨˋ
+殂 0 ㄘㄨˊ
+徂 0 ㄘㄨˊ
+鼀 0 ㄘㄨˊ
+搓 0 ㄘㄨㄛ
+撮 0 ㄘㄨㄛ
+磋 0 ㄘㄨㄛ
+蹉 0 ㄘㄨㄛ
+蒫 0 ㄘㄨㄛ
+遳 0 ㄘㄨㄛ
+髊 0 ㄘㄨㄛ
+差 0 ㄘㄨㄛ
+莏 0 ㄘㄨㄛ
+傞 0 ㄘㄨㄛ
+瑳 0 ㄘㄨㄛ
+醝 0 ㄘㄨㄛ
+齹 0 ㄘㄨㄛ
+瑳 0 ㄘㄨㄛˇ
+脞 0 ㄘㄨㄛˇ
+縒 0 ㄘㄨㄛˇ
+硰 0 ㄘㄨㄛˇ
+錯 0 ㄘㄨㄛˋ
+措 0 ㄘㄨㄛˋ
+挫 0 ㄘㄨㄛˋ
+銼 0 ㄘㄨㄛˋ
+撮 0 ㄘㄨㄛˋ
+剉 0 ㄘㄨㄛˋ
+厝 0 ㄘㄨㄛˋ
+莝 0 ㄘㄨㄛˋ
+侳 0 ㄘㄨㄛˋ
+剒 0 ㄘㄨㄛˋ
+蓌 0 ㄘㄨㄛˋ
+昔 0 ㄘㄨㄛˋ
+蕞 0 ㄘㄨㄛˋ
+庴 0 ㄘㄨㄛˋ
+棤 0 ㄘㄨㄛˋ
+碏 0 ㄘㄨㄛˋ
+縒 0 ㄘㄨㄛˋ
+莡 0 ㄘㄨㄛˋ
+逪 0 ㄘㄨㄛˋ
+襊 0 ㄘㄨㄛˋ
+瘥 0 ㄘㄨㄛˊ
+矬 0 ㄘㄨㄛˊ
+鹺 0 ㄘㄨㄛˊ
+痤 0 ㄘㄨㄛˊ
+醝 0 ㄘㄨㄛˊ
+嵯 0 ㄘㄨㄛˊ
+蔖 0 ㄘㄨㄛˊ
+蒫 0 ㄘㄨㄛˊ
+虘 0 ㄘㄨㄛˊ
+睉 0 ㄘㄨㄛˊ
+嵖 0 ㄘㄨㄛˊ
+嵳 0 ㄘㄨㄛˊ
+摧 0 ㄘㄨㄟ
+催 0 ㄘㄨㄟ
+崔 0 ㄘㄨㄟ
+嗺 0 ㄘㄨㄟ
+墔 0 ㄘㄨㄟ
+磪 0 ㄘㄨㄟ
+榱 0 ㄘㄨㄟ
+衰 0 ㄘㄨㄟ
+凗 0 ㄘㄨㄟ
+膗 0 ㄘㄨㄟ
+縗 0 ㄘㄨㄟ
+獕 0 ㄘㄨㄟ
+槯 0 ㄘㄨㄟ
+璀 0 ㄘㄨㄟˇ
+趡 0 ㄘㄨㄟˇ
+漼 0 ㄘㄨㄟˇ
+洒 0 ㄘㄨㄟˇ
+踓 0 ㄘㄨㄟˇ
+鏙 0 ㄘㄨㄟˇ
+熣 0 ㄘㄨㄟˇ
+皠 0 ㄘㄨㄟˇ
+翠 0 ㄘㄨㄟˋ
+脆 0 ㄘㄨㄟˋ
+粹 0 ㄘㄨㄟˋ
+悴 0 ㄘㄨㄟˋ
+瘁 0 ㄘㄨㄟˋ
+萃 0 ㄘㄨㄟˋ
+啐 0 ㄘㄨㄟˋ
+淬 0 ㄘㄨㄟˋ
+倅 0 ㄘㄨㄟˋ
+毳 0 ㄘㄨㄟˋ
+焠 0 ㄘㄨㄟˋ
+竁 0 ㄘㄨㄟˋ
+膬 0 ㄘㄨㄟˋ
+綷 0 ㄘㄨㄟˋ
+膵 0 ㄘㄨㄟˋ
+脺 0 ㄘㄨㄟˋ
+濢 0 ㄘㄨㄟˋ
+碎 0 ㄘㄨㄟˋ
+椊 0 ㄘㄨㄟˋ
+嶉 0 ㄘㄨㄟˋ
+噿 0 ㄘㄨㄟˋ
+璻 0 ㄘㄨㄟˋ
+伜 0 ㄘㄨㄟˋ
+忰 0 ㄘㄨㄟˋ
+砕 0 ㄘㄨㄟˋ
+粋 0 ㄘㄨㄟˋ
+翆 0 ㄘㄨㄟˋ
+脃 0 ㄘㄨㄟˋ
+琗 0 ㄘㄨㄟˋ
+顇 0 ㄘㄨㄟˋ
+臎 0 ㄘㄨㄟˋ
+襊 0 ㄘㄨㄟˋ
+韢 0 ㄘㄨㄟˋ
+紣 0 ㄘㄨㄟˋ
+啛 0 ㄘㄨㄟˋ
+凗 0 ㄘㄨㄟˊ
+慛 0 ㄘㄨㄟˊ
+村 0 ㄘㄨㄣ
+皴 0 ㄘㄨㄣ
+踆 0 ㄘㄨㄣ
+邨 0 ㄘㄨㄣ
+澊 0 ㄘㄨㄣ
+竴 0 ㄘㄨㄣ
+忖 0 ㄘㄨㄣˇ
+刌 0 ㄘㄨㄣˇ
+寸 0 ㄘㄨㄣˋ
+吋 0 ㄘㄨㄣˋ
+籿 0 ㄘㄨㄣˋ
+存 0 ㄘㄨㄣˊ
+袸 0 ㄘㄨㄣˊ
+蹲 0 ㄘㄨㄣˊ
+拵 0 ㄘㄨㄣˊ
+洊 0 ㄘㄨㄣˊ
+栫 0 ㄘㄨㄣˊ
+珔 0 ㄘㄨㄣˊ
+冊 0 ㄘㄜˋ
+策 0 ㄘㄜˋ
+測 0 ㄘㄜˋ
+側 0 ㄘㄜˋ
+廁 0 ㄘㄜˋ
+惻 0 ㄘㄜˋ
+筴 0 ㄘㄜˋ
+畟 0 ㄘㄜˋ
+茦 0 ㄘㄜˋ
+粣 0 ㄘㄜˋ
+拺 0 ㄘㄜˋ
+矠 0 ㄘㄜˋ
+憡 0 ㄘㄜˋ
+蓛 0 ㄘㄜˋ
+簎 0 ㄘㄜˋ
+鍘 0 ㄘㄜˋ
+册 0 ㄘㄜˋ
+厠 0 ㄘㄜˋ
+萗 0 ㄘㄜˋ
+筞 0 ㄘㄜˋ
+墄 0 ㄘㄜˋ
+嫧 0 ㄘㄜˋ
+箣 0 ㄘㄜˋ
+㩞 0 ㄘㄜˋ
+敇 0 ㄘㄜˋ
+笧 0 ㄘㄜˋ
+操 0 ㄘㄠ
+糙 0 ㄘㄠ
+鄵 0 ㄘㄠ
+喿 0 ㄘㄠ
+劋 0 ㄘㄠ
+幧 0 ㄘㄠ
+矂 0 ㄘㄠ
+鐰 0 ㄘㄠ
+撡 0 ㄘㄠ
+草 0 ㄘㄠˇ
+懆 0 ㄘㄠˇ
+騲 0 ㄘㄠˇ
+艸 0 ㄘㄠˇ
+慅 0 ㄘㄠˇ
+愺 0 ㄘㄠˇ
+艹 0 ㄘㄠˇ
+糙 0 ㄘㄠˋ
+操 0 ㄘㄠˋ
+肏 0 ㄘㄠˋ
+襙 0 ㄘㄠˋ
+造 0 ㄘㄠˋ
+慥 0 ㄘㄠˋ
+鄵 0 ㄘㄠˋ
+艁 0 ㄘㄠˋ
+曹 0 ㄘㄠˊ
+槽 0 ㄘㄠˊ
+嘈 0 ㄘㄠˊ
+漕 0 ㄘㄠˊ
+螬 0 ㄘㄠˊ
+艚 0 ㄘㄠˊ
+嶆 0 ㄘㄠˊ
+鰽 0 ㄘㄠˊ
+蓸 0 ㄘㄠˊ
+褿 0 ㄘㄠˊ
+鏪 0 ㄘㄠˊ
+參 0 ㄘㄣ
+嵾 0 ㄘㄣ
+梫 0 ㄘㄣ
+叁 0 ㄘㄣ
+参 0 ㄘㄣ
+叅 0 ㄘㄣ
+曑 0 ㄘㄣ
+岑 0 ㄘㄣˊ
+涔 0 ㄘㄣˊ
+梣 0 ㄘㄣˊ
+笒 0 ㄘㄣˊ
+埁 0 ㄘㄣˊ
+侺 0 ㄘㄣˊ
+汵 0 ㄘㄣˊ
+筨 0 ㄘㄣˊ
+喔 0 ㄛ
+ㄛ 0 ㄛ
+呵 0 ㄛ
+啊 0 ㄛ
+嚄 0 ㄛˇ
+哦 0 ㄛˊ
+屋 0 ㄨ
+烏 0 ㄨ
+污 0 ㄨ
+汙 0 ㄨ
+圬 0 ㄨ
+誣 0 ㄨ
+嗚 0 ㄨ
+巫 0 ㄨ
+鎢 0 ㄨ
+鄔 0 ㄨ
+洿 0 ㄨ
+歍 0 ㄨ
+ㄨ 0 ㄨ
+惡 0 ㄨ
+於 0 ㄨ
+杇 0 ㄨ
+陓 0 ㄨ
+剭 0 ㄨ
+窏 0 ㄨ
+腛 0 ㄨ
+鴮 0 ㄨ
+螐 0 ㄨ
+喔 0 ㄨ
+匢 0 ㄨ
+釫 0 ㄨ
+覡 0 ㄨ
+汚 0 ㄨ
+扵 0 ㄨ
+悪 0 ㄨ
+媉 0 ㄨ
+誈 0 ㄨ
+隖 0 ㄨ
+僫 0 ㄨ
+弙 0 ㄨ
+匫 0 ㄨ
+箼 0 ㄨ
+鼿 0 ㄨ
+䵦 0 ㄨ
+䖚 0 ㄨ
+鰞 0 ㄨ
+䶍 0 ㄨ
+翁 0 ㄨㄥ
+嗡 0 ㄨㄥ
+螉 0 ㄨㄥ
+鶲 0 ㄨㄥ
+霐 0 ㄨㄥ
+蓊 0 ㄨㄥ
+鎓 0 ㄨㄥ
+䩺 0 ㄨㄥ
+䱵 0 ㄨㄥ
+蓊 0 ㄨㄥˇ
+滃 0 ㄨㄥˇ
+暡 0 ㄨㄥˇ
+浻 0 ㄨㄥˇ
+瞈 0 ㄨㄥˇ
+聬 0 ㄨㄥˇ
+塕 0 ㄨㄥˇ
+奣 0 ㄨㄥˇ
+䐥 0 ㄨㄥˇ
+嵡 0 ㄨㄥˇ
+甕 0 ㄨㄥˋ
+瓮 0 ㄨㄥˋ
+齆 0 ㄨㄥˋ
+罋 0 ㄨㄥˋ
+汪 0 ㄨㄤ
+尪 0 ㄨㄤ
+尢 0 ㄨㄤ
+尫 0 ㄨㄤ
+尣 0 ㄨㄤ
+尩 0 ㄨㄤ
+往 0 ㄨㄤˇ
+網 0 ㄨㄤˇ
+枉 0 ㄨㄤˇ
+罔 0 ㄨㄤˇ
+惘 0 ㄨㄤˇ
+魍 0 ㄨㄤˇ
+輞 0 ㄨㄤˇ
+瀇 0 ㄨㄤˇ
+网 0 ㄨㄤˇ
+暀 0 ㄨㄤˇ
+菵 0 ㄨㄤˇ
+臦 0 ㄨㄤˇ
+俇 0 ㄨㄤˇ
+仼 0 ㄨㄤˇ
+徃 0 ㄨㄤˇ
+棢 0 ㄨㄤˇ
+誷 0 ㄨㄤˇ
+冈 0 ㄨㄤˇ
+罒 0 ㄨㄤˇ
+䒽 0 ㄨㄤˇ
+蛧 0 ㄨㄤˇ
+迬 0 ㄨㄤˇ
+忘 0 ㄨㄤˋ
+妄 0 ㄨㄤˋ
+望 0 ㄨㄤˋ
+旺 0 ㄨㄤˋ
+王 0 ㄨㄤˋ
+朢 0 ㄨㄤˋ
+迋 0 ㄨㄤˋ
+莣 0 ㄨㄤˋ
+䤑 0 ㄨㄤˋ
+王 0 ㄨㄤˊ
+亡 0 ㄨㄤˊ
+忘 0 ㄨㄤˊ
+莣 0 ㄨㄤˊ
+亾 0 ㄨㄤˊ
+兦 0 ㄨㄤˊ
+蚟 0 ㄨㄤˊ
+彺 0 ㄨㄤˊ
+灣 0 ㄨㄢ
+彎 0 ㄨㄢ
+豌 0 ㄨㄢ
+剜 0 ㄨㄢ
+莞 0 ㄨㄢ
+蜿 0 ㄨㄢ
+刓 0 ㄨㄢ
+潫 0 ㄨㄢ
+眢 0 ㄨㄢ
+婠 0 ㄨㄢ
+弯 0 ㄨㄢ
+帵 0 ㄨㄢ
+湾 0 ㄨㄢ
+萖 0 ㄨㄢ
+晚 0 ㄨㄢˇ
+碗 0 ㄨㄢˇ
+挽 0 ㄨㄢˇ
+宛 0 ㄨㄢˇ
+婉 0 ㄨㄢˇ
+娩 0 ㄨㄢˇ
+皖 0 ㄨㄢˇ
+輓 0 ㄨㄢˇ
+莞 0 ㄨㄢˇ
+浣 0 ㄨㄢˇ
+蜿 0 ㄨㄢˇ
+畹 0 ㄨㄢˇ
+菀 0 ㄨㄢˇ
+琬 0 ㄨㄢˇ
+鞔 0 ㄨㄢˇ
+綰 0 ㄨㄢˇ
+晼 0 ㄨㄢˇ
+綩 0 ㄨㄢˇ
+倇 0 ㄨㄢˇ
+脕 0 ㄨㄢˇ
+睕 0 ㄨㄢˇ
+鋄 0 ㄨㄢˇ
+睌 0 ㄨㄢˇ
+葂 0 ㄨㄢˇ
+剜 0 ㄨㄢˇ
+梡 0 ㄨㄢˇ
+腕 0 ㄨㄢˇ
+豌 0 ㄨㄢˇ
+妴 0 ㄨㄢˇ
+捖 0 ㄨㄢˇ
+婠 0 ㄨㄢˇ
+捥 0 ㄨㄢˇ
+晥 0 ㄨㄢˇ
+涴 0 ㄨㄢˇ
+脘 0 ㄨㄢˇ
+羦 0 ㄨㄢˇ
+踠 0 ㄨㄢˇ
+鋎 0 ㄨㄢˇ
+鋺 0 ㄨㄢˇ
+鵷 0 ㄨㄢˇ
+唍 0 ㄨㄢˇ
+㝃 0 ㄨㄢˇ
+盌 0 ㄨㄢˇ
+埦 0 ㄨㄢˇ
+梚 0 ㄨㄢˇ
+晩 0 ㄨㄢˇ
+椀 0 ㄨㄢˇ
+萖 0 ㄨㄢˇ
+鋔 0 ㄨㄢˇ
+䥑 0 ㄨㄢˇ
+鯶 0 ㄨㄢˇ
+鰀 0 ㄨㄢˇ
+箢 0 ㄨㄢˇ
+䘼 0 ㄨㄢˇ
+䛷 0 ㄨㄢˇ
+鎫 0 ㄨㄢˇ
+錽 0 ㄨㄢˇ
+鮸 0 ㄨㄢˇ
+萬 0 ㄨㄢˋ
+玩 0 ㄨㄢˋ
+腕 0 ㄨㄢˋ
+惋 0 ㄨㄢˋ
+卍 0 ㄨㄢˋ
+翫 0 ㄨㄢˋ
+忨 0 ㄨㄢˋ
+仴 0 ㄨㄢˋ
+綄 0 ㄨㄢˋ
+万 0 ㄨㄢˋ
+蟃 0 ㄨㄢˋ
+捥 0 ㄨㄢˋ
+踠 0 ㄨㄢˋ
+曼 0 ㄨㄢˋ
+蔓 0 ㄨㄢˋ
+躉 0 ㄨㄢˋ
+杬 0 ㄨㄢˋ
+獌 0 ㄨㄢˋ
+輐 0 ㄨㄢˋ
+薍 0 ㄨㄢˋ
+卐 0 ㄨㄢˋ
+貦 0 ㄨㄢˋ
+䕕 0 ㄨㄢˋ
+贃 0 ㄨㄢˋ
+贎 0 ㄨㄢˋ
+完 0 ㄨㄢˊ
+玩 0 ㄨㄢˊ
+頑 0 ㄨㄢˊ
+丸 0 ㄨㄢˊ
+汍 0 ㄨㄢˊ
+紈 0 ㄨㄢˊ
+芄 0 ㄨㄢˊ
+烷 0 ㄨㄢˊ
+婠 0 ㄨㄢˊ
+岏 0 ㄨㄢˊ
+抏 0 ㄨㄢˊ
+梡 0 ㄨㄢˊ
+刓 0 ㄨㄢˊ
+妧 0 ㄨㄢˊ
+肒 0 ㄨㄢˊ
+垸 0 ㄨㄢˊ
+捖 0 ㄨㄢˊ
+睆 0 ㄨㄢˊ
+筦 0 ㄨㄢˊ
+羦 0 ㄨㄢˊ
+鋎 0 ㄨㄢˊ
+貦 0 ㄨㄢˊ
+鯶 0 ㄨㄢˊ
+鰀 0 ㄨㄢˊ
+五 0 ㄨˇ
+午 0 ㄨˇ
+武 0 ㄨˇ
+舞 0 ㄨˇ
+侮 0 ㄨˇ
+伍 0 ㄨˇ
+鵡 0 ㄨˇ
+憮 0 ㄨˇ
+嫵 0 ㄨˇ
+潕 0 ㄨˇ
+廡 0 ㄨˇ
+仵 0 ㄨˇ
+忤 0 ㄨˇ
+嘸 0 ㄨˇ
+碔 0 ㄨˇ
+甒 0 ㄨˇ
+摀 0 ㄨˇ
+啎 0 ㄨˇ
+捂 0 ㄨˇ
+嵨 0 ㄨˇ
+玝 0 ㄨˇ
+倵 0 ㄨˇ
+橆 0 ㄨˇ
+躌 0 ㄨˇ
+撫 0 ㄨˇ
+汻 0 ㄨˇ
+迕 0 ㄨˇ
+埡 0 ㄨˇ
+牾 0 ㄨˇ
+幠 0 ㄨˇ
+膴 0 ㄨˇ
+旿 0 ㄨˇ
+娬 0 ㄨˇ
+捬 0 ㄨˇ
+珷 0 ㄨˇ
+遌 0 ㄨˇ
+瑦 0 ㄨˇ
+儛 0 ㄨˇ
+抚 0 ㄨˇ
+㵲 0 ㄨˇ
+㐅 0 ㄨˇ
+勿 0 ㄨˋ
+物 0 ㄨˋ
+務 0 ㄨˋ
+惡 0 ㄨˋ
+誤 0 ㄨˋ
+悟 0 ㄨˋ
+晤 0 ㄨˋ
+霧 0 ㄨˋ
+戊 0 ㄨˋ
+鎢 0 ㄨˋ
+塢 0 ㄨˋ
+兀 0 ㄨˋ
+兀 0 ㄨˋ
+騖 0 ㄨˋ
+寤 0 ㄨˋ
+軏 0 ㄨˋ
+杌 0 ㄨˋ
+婺 0 ㄨˋ
+鶩 0 ㄨˋ
+沕 0 ㄨˋ
+迕 0 ㄨˋ
+遻 0 ㄨˋ
+鋈 0 ㄨˋ
+屼 0 ㄨˋ
+扤 0 ㄨˋ
+煟 0 ㄨˋ
+卼 0 ㄨˋ
+焐 0 ㄨˋ
+靰 0 ㄨˋ
+阢 0 ㄨˋ
+粅 0 ㄨˋ
+矹 0 ㄨˋ
+芴 0 ㄨˋ
+埡 0 ㄨˋ
+逜 0 ㄨˋ
+痦 0 ㄨˋ
+齀 0 ㄨˋ
+蘁 0 ㄨˋ
+岉 0 ㄨˋ
+噁 0 ㄨˋ
+蓩 0 ㄨˋ
+毋 0 ㄨˋ
+汙 0 ㄨˋ
+污 0 ㄨˋ
+沃 0 ㄨˋ
+捂 0 ㄨˋ
+梧 0 ㄨˋ
+匢 0 ㄨˋ
+昒 0 ㄨˋ
+曶 0 ㄨˋ
+矻 0 ㄨˋ
+俉 0 ㄨˋ
+眓 0 ㄨˋ
+啎 0 ㄨˋ
+寣 0 ㄨˋ
+殟 0 ㄨˋ
+鋘 0 ㄨˋ
+汚 0 ㄨˋ
+敄 0 ㄨˋ
+悮 0 ㄨˋ
+悞 0 ㄨˋ
+悪 0 ㄨˋ
+嵍 0 ㄨˋ
+奦 0 ㄨˋ
+榅 0 ㄨˋ
+溩 0 ㄨˋ
+遌 0 ㄨˋ
+隖 0 ㄨˋ
+僫 0 ㄨˋ
+榲 0 ㄨˋ
+熃 0 ㄨˋ
+銐 0 ㄨˋ
+霚 0 ㄨˋ
+忢 0 ㄨˋ
+匫 0 ㄨˋ
+窹 0 ㄨˋ
+䜑 0 ㄨˋ
+無 0 ㄨˊ
+吳 0 ㄨˊ
+吾 0 ㄨˊ
+梧 0 ㄨˊ
+巫 0 ㄨˊ
+蕪 0 ㄨˊ
+唔 0 ㄨˊ
+蜈 0 ㄨˊ
+誣 0 ㄨˊ
+毋 0 ㄨˊ
+亡 0 ㄨˊ
+膴 0 ㄨˊ
+鼯 0 ㄨˊ
+郚 0 ㄨˊ
+鋘 0 ㄨˊ
+鋙 0 ㄨˊ
+峿 0 ㄨˊ
+浯 0 ㄨˊ
+珸 0 ㄨˊ
+俉 0 ㄨˊ
+鯃 0 ㄨˊ
+莁 0 ㄨˊ
+鷡 0 ㄨˊ
+洖 0 ㄨˊ
+瞴 0 ㄨˊ
+圄 0 ㄨˊ
+齬 0 ㄨˊ
+曶 0 ㄨˊ
+亾 0 ㄨˊ
+兦 0 ㄨˊ
+无 0 ㄨˊ
+吴 0 ㄨˊ
+呉 0 ㄨˊ
+芜 0 ㄨˊ
+娪 0 ㄨˊ
+茣 0 ㄨˊ
+銐 0 ㄨˊ
+墲 0 ㄨˊ
+鵐 0 ㄨˊ
+璑 0 ㄨˊ
+禑 0 ㄨˊ
+蟱 0 ㄨˊ
+哇 0 ㄨㄚ
+蛙 0 ㄨㄚ
+挖 0 ㄨㄚ
+窪 0 ㄨㄚ
+呱 0 ㄨㄚ
+媧 0 ㄨㄚ
+洼 0 ㄨㄚ
+穵 0 ㄨㄚ
+溛 0 ㄨㄚ
+窊 0 ㄨㄚ
+窐 0 ㄨㄚ
+漥 0 ㄨㄚ
+凹 0 ㄨㄚ
+汙 0 ㄨㄚ
+畦 0 ㄨㄚ
+汚 0 ㄨㄚ
+哌 0 ㄨㄚ
+畖 0 ㄨㄚ
+嗗 0 ㄨㄚ
+搲 0 ㄨㄚ
+䵷 0 ㄨㄚ
+鼃 0 ㄨㄚ
+攨 0 ㄨㄚ
+徍 0 ㄨㄚ
+劸 0 ㄨㄚ
+瓦 0 ㄨㄚˇ
+佤 0 ㄨㄚˇ
+瓨 0 ㄨㄚˇ
+瓻 0 ㄨㄚˇ
+齀 0 ㄨㄚˇ
+咓 0 ㄨㄚˇ
+邷 0 ㄨㄚˇ
+攨 0 ㄨㄚˇ
+襪 0 ㄨㄚˋ
+嗢 0 ㄨㄚˋ
+膃 0 ㄨㄚˋ
+凹 0 ㄨㄚˋ
+瓦 0 ㄨㄚˋ
+殟 0 ㄨㄚˋ
+聉 0 ㄨㄚˋ
+袜 0 ㄨㄚˋ
+腽 0 ㄨㄚˋ
+韈 0 ㄨㄚˋ
+韤 0 ㄨㄚˋ
+娃 0 ㄨㄚˊ
+挖 0 ㄨㄚˊ
+哇 0 ㄨㄚ˙
+歪 0 ㄨㄞ
+竵 0 ㄨㄞ
+舀 0 ㄨㄞˇ
+歪 0 ㄨㄞˇ
+外 0 ㄨㄞˋ
+窩 0 ㄨㄛ
+倭 0 ㄨㄛ
+渦 0 ㄨㄛ
+萵 0 ㄨㄛ
+猧 0 ㄨㄛ
+踒 0 ㄨㄛ
+媧 0 ㄨㄛ
+蝸 0 ㄨㄛ
+齷 0 ㄨㄛ
+覣 0 ㄨㄛ
+唩 0 ㄨㄛ
+涹 0 ㄨㄛ
+我 0 ㄨㄛˇ
+婐 0 ㄨㄛˇ
+捰 0 ㄨㄛˇ
+婑 0 ㄨㄛˇ
+握 0 ㄨㄛˋ
+臥 0 ㄨㄛˋ
+沃 0 ㄨㄛˋ
+渥 0 ㄨㄛˋ
+斡 0 ㄨㄛˋ
+齷 0 ㄨㄛˋ
+幄 0 ㄨㄛˋ
+涴 0 ㄨㄛˋ
+偓 0 ㄨㄛˋ
+濣 0 ㄨㄛˋ
+焥 0 ㄨㄛˋ
+喔 0 ㄨㄛˋ
+腛 0 ㄨㄛˋ
+鋈 0 ㄨㄛˋ
+雘 0 ㄨㄛˋ
+矱 0 ㄨㄛˋ
+蠖 0 ㄨㄛˋ
+肟 0 ㄨㄛˋ
+枂 0 ㄨㄛˋ
+卧 0 ㄨㄛˋ
+捾 0 ㄨㄛˋ
+楃 0 ㄨㄛˋ
+嬒 0 ㄨㄛˋ
+威 0 ㄨㄟ
+崴 0 ㄨㄟ
+偎 0 ㄨㄟ
+煨 0 ㄨㄟ
+葳 0 ㄨㄟ
+隈 0 ㄨㄟ
+萎 0 ㄨㄟ
+委 0 ㄨㄟ
+逶 0 ㄨㄟ
+烓 0 ㄨㄟ
+椳 0 ㄨㄟ
+渨 0 ㄨㄟ
+碨 0 ㄨㄟ
+愄 0 ㄨㄟ
+揋 0 ㄨㄟ
+葨 0 ㄨㄟ
+隇 0 ㄨㄟ
+溾 0 ㄨㄟ
+詴 0 ㄨㄟ
+蝛 0 ㄨㄟ
+覣 0 ㄨㄟ
+燰 0 ㄨㄟ
+危 0 ㄨㄟ
+倭 0 ㄨㄟ
+微 0 ㄨㄟ
+薇 0 ㄨㄟ
+喡 0 ㄨㄟ
+溦 0 ㄨㄟ
+蜲 0 ㄨㄟ
+踒 0 ㄨㄟ
+喴 0 ㄨㄟ
+媙 0 ㄨㄟ
+鰄 0 ㄨㄟ
+㙎 0 ㄨㄟ
+嵔 0 ㄨㄟ
+楲 0 ㄨㄟ
+鰃 0 ㄨㄟ
+委 0 ㄨㄟˇ
+尾 0 ㄨㄟˇ
+偉 0 ㄨㄟˇ
+緯 0 ㄨㄟˇ
+萎 0 ㄨㄟˇ
+諉 0 ㄨㄟˇ
+葦 0 ㄨㄟˇ
+痿 0 ㄨㄟˇ
+猥 0 ㄨㄟˇ
+煒 0 ㄨㄟˇ
+亹 0 ㄨㄟˇ
+隗 0 ㄨㄟˇ
+娓 0 ㄨㄟˇ
+韙 0 ㄨㄟˇ
+寪 0 ㄨㄟˇ
+洧 0 ㄨㄟˇ
+瑋 0 ㄨㄟˇ
+薳 0 ㄨㄟˇ
+蘤 0 ㄨㄟˇ
+韡 0 ㄨㄟˇ
+鮪 0 ㄨㄟˇ
+磈 0 ㄨㄟˇ
+蒍 0 ㄨㄟˇ
+頠 0 ㄨㄟˇ
+暐 0 ㄨㄟˇ
+痏 0 ㄨㄟˇ
+骫 0 ㄨㄟˇ
+椲 0 ㄨㄟˇ
+浘 0 ㄨㄟˇ
+艉 0 ㄨㄟˇ
+芛 0 ㄨㄟˇ
+鍡 0 ㄨㄟˇ
+峗 0 ㄨㄟˇ
+壝 0 ㄨㄟˇ
+喡 0 ㄨㄟˇ
+徫 0 ㄨㄟˇ
+腲 0 ㄨㄟˇ
+蜲 0 ㄨㄟˇ
+儰 0 ㄨㄟˇ
+蓶 0 ㄨㄟˇ
+崣 0 ㄨㄟˇ
+硊 0 ㄨㄟˇ
+踓 0 ㄨㄟˇ
+斖 0 ㄨㄟˇ
+韋 0 ㄨㄟˇ
+偽 0 ㄨㄟˇ
+唯 0 ㄨㄟˇ
+逶 0 ㄨㄟˇ
+違 0 ㄨㄟˇ
+諱 0 ㄨㄟˇ
+婑 0 ㄨㄟˇ
+郼 0 ㄨㄟˇ
+緌 0 ㄨㄟˇ
+覣 0 ㄨㄟˇ
+梶 0 ㄨㄟˇ
+荱 0 ㄨㄟˇ
+愇 0 ㄨㄟˇ
+骩 0 ㄨㄟˇ
+僞 0 ㄨㄟˇ
+㬙 0 ㄨㄟˇ
+蔿 0 ㄨㄟˇ
+膸 0 ㄨㄟˇ
+颹 0 ㄨㄟˇ
+厃 0 ㄨㄟˇ
+骪 0 ㄨㄟˇ
+韑 0 ㄨㄟˇ
+為 0 ㄨㄟˋ
+位 0 ㄨㄟˋ
+未 0 ㄨㄟˋ
+魏 0 ㄨㄟˋ
+衛 0 ㄨㄟˋ
+味 0 ㄨㄟˋ
+偽 0 ㄨㄟˋ
+謂 0 ㄨㄟˋ
+胃 0 ㄨㄟˋ
+喂 0 ㄨㄟˋ
+慰 0 ㄨㄟˋ
+餵 0 ㄨㄟˋ
+尉 0 ㄨㄟˋ
+渭 0 ㄨㄟˋ
+畏 0 ㄨㄟˋ
+蔚 0 ㄨㄟˋ
+蘶 0 ㄨㄟˋ
+蝟 0 ㄨㄟˋ
+犩 0 ㄨㄟˋ
+遺 0 ㄨㄟˋ
+霨 0 ㄨㄟˋ
+磑 0 ㄨㄟˋ
+罻 0 ㄨㄟˋ
+褽 0 ㄨㄟˋ
+薉 0 ㄨㄟˋ
+媦 0 ㄨㄟˋ
+蜼 0 ㄨㄟˋ
+藯 0 ㄨㄟˋ
+鏏 0 ㄨㄟˋ
+菋 0 ㄨㄟˋ
+犚 0 ㄨㄟˋ
+餧 0 ㄨㄟˋ
+贀 0 ㄨㄟˋ
+讆 0 ㄨㄟˋ
+躗 0 ㄨㄟˋ
+穌 0 ㄨㄟˋ
+鮇 0 ㄨㄟˋ
+徻 0 ㄨㄟˋ
+偎 0 ㄨㄟˋ
+穢 0 ㄨㄟˋ
+噅 0 ㄨㄟˋ
+媯 0 ㄨㄟˋ
+撝 0 ㄨㄟˋ
+溈 0 ㄨㄟˋ
+煟 0 ㄨㄟˋ
+蔧 0 ㄨㄟˋ
+蟡 0 ㄨㄟˋ
+濊 0 ㄨㄟˋ
+薈 0 ㄨㄟˋ
+鍡 0 ㄨㄟˋ
+瓗 0 ㄨㄟˋ
+㷉 0 ㄨㄟˋ
+爲 0 ㄨㄟˋ
+猬 0 ㄨㄟˋ
+僞 0 ㄨㄟˋ
+嬀 0 ㄨㄟˋ
+潙 0 ㄨㄟˋ
+熭 0 ㄨㄟˋ
+緭 0 ㄨㄟˋ
+嬒 0 ㄨㄟˋ
+懀 0 ㄨㄟˋ
+衞 0 ㄨㄟˋ
+錗 0 ㄨㄟˋ
+螱 0 ㄨㄟˋ
+轊 0 ㄨㄟˋ
+㼇 0 ㄨㄟˋ
+䲁 0 ㄨㄟˋ
+軎 0 ㄨㄟˋ
+苿 0 ㄨㄟˋ
+叞 0 ㄨㄟˋ
+為 0 ㄨㄟˊ
+圍 0 ㄨㄟˊ
+微 0 ㄨㄟˊ
+危 0 ㄨㄟˊ
+唯 0 ㄨㄟˊ
+維 0 ㄨㄟˊ
+惟 0 ㄨㄟˊ
+違 0 ㄨㄟˊ
+韋 0 ㄨㄟˊ
+薇 0 ㄨㄟˊ
+巍 0 ㄨㄟˊ
+桅 0 ㄨㄟˊ
+闈 0 ㄨㄟˊ
+濰 0 ㄨㄟˊ
+帷 0 ㄨㄟˊ
+嵬 0 ㄨㄟˊ
+幃 0 ㄨㄟˊ
+囗 0 ㄨㄟˊ
+湋 0 ㄨㄟˊ
+溦 0 ㄨㄟˊ
+鄬 0 ㄨㄟˊ
+鍏 0 ㄨㄟˊ
+鮠 0 ㄨㄟˊ
+潿 0 ㄨㄟˊ
+洈 0 ㄨㄟˊ
+覹 0 ㄨㄟˊ
+醀 0 ㄨㄟˊ
+霺 0 ㄨㄟˊ
+瀢 0 ㄨㄟˊ
+濻 0 ㄨㄟˊ
+癓 0 ㄨㄟˊ
+欈 0 ㄨㄟˊ
+圩 0 ㄨㄟˊ
+葦 0 ㄨㄟˊ
+魏 0 ㄨㄟˊ
+佹 0 ㄨㄟˊ
+垝 0 ㄨㄟˊ
+姽 0 ㄨㄟˊ
+峗 0 ㄨㄟˊ
+峞 0 ㄨㄟˊ
+祪 0 ㄨㄟˊ
+噅 0 ㄨㄟˊ
+媯 0 ㄨㄟˊ
+撝 0 ㄨㄟˊ
+溈 0 ㄨㄟˊ
+蛫 0 ㄨㄟˊ
+觤 0 ㄨㄟˊ
+磑 0 ㄨㄟˊ
+蓶 0 ㄨㄟˊ
+蟡 0 ㄨㄟˊ
+犩 0 ㄨㄟˊ
+媁 0 ㄨㄟˊ
+爲 0 ㄨㄟˊ
+琟 0 ㄨㄟˊ
+嬀 0 ㄨㄟˊ
+潙 0 ㄨㄟˊ
+矀 0 ㄨㄟˊ
+䉠 0 ㄨㄟˊ
+陒 0 ㄨㄟˊ
+㵟 0 ㄨㄟˊ
+溫 0 ㄨㄣ
+瘟 0 ㄨㄣ
+轀 0 ㄨㄣ
+塭 0 ㄨㄣ
+馧 0 ㄨㄣ
+瞃 0 ㄨㄣ
+豱 0 ㄨㄣ
+殟 0 ㄨㄣ
+媼 0 ㄨㄣ
+嗢 0 ㄨㄣ
+膃 0 ㄨㄣ
+褞 0 ㄨㄣ
+昷 0 ㄨㄣ
+媪 0 ㄨㄣ
+温 0 ㄨㄣ
+腽 0 ㄨㄣ
+瑥 0 ㄨㄣ
+輼 0 ㄨㄣ
+鰛 0 ㄨㄣ
+鰮 0 ㄨㄣ
+穩 0 ㄨㄣˇ
+吻 0 ㄨㄣˇ
+刎 0 ㄨㄣˇ
+呡 0 ㄨㄣˇ
+桽 0 ㄨㄣˇ
+昒 0 ㄨㄣˇ
+曶 0 ㄨㄣˇ
+勽 0 ㄨㄣˇ
+伆 0 ㄨㄣˇ
+肳 0 ㄨㄣˇ
+脗 0 ㄨㄣˇ
+䦟 0 ㄨㄣˇ
+穏 0 ㄨㄣˇ
+問 0 ㄨㄣˋ
+聞 0 ㄨㄣˋ
+紊 0 ㄨㄣˋ
+文 0 ㄨㄣˋ
+汶 0 ㄨㄣˋ
+抆 0 ㄨㄣˋ
+免 0 ㄨㄣˋ
+搵 0 ㄨㄣˋ
+璺 0 ㄨㄣˋ
+妏 0 ㄨㄣˋ
+醞 0 ㄨㄣˋ
+蘊 0 ㄨㄣˋ
+脕 0 ㄨㄣˋ
+絻 0 ㄨㄣˋ
+鼤 0 ㄨㄣˋ
+顐 0 ㄨㄣˋ
+彣 0 ㄨㄣˋ
+渂 0 ㄨㄣˋ
+揾 0 ㄨㄣˋ
+醖 0 ㄨㄣˋ
+藴 0 ㄨㄣˋ
+文 0 ㄨㄣˊ
+聞 0 ㄨㄣˊ
+紋 0 ㄨㄣˊ
+蚊 0 ㄨㄣˊ
+玟 0 ㄨㄣˊ
+雯 0 ㄨㄣˊ
+閿 0 ㄨㄣˊ
+炆 0 ㄨㄣˊ
+芠 0 ㄨㄣˊ
+琝 0 ㄨㄣˊ
+閺 0 ㄨㄣˊ
+闅 0 ㄨㄣˊ
+鼤 0 ㄨㄣˊ
+駇 0 ㄨㄣˊ
+魰 0 ㄨㄣˊ
+鳼 0 ㄨㄣˊ
+抆 0 ㄨㄣˊ
+汶 0 ㄨㄣˊ
+畋 0 ㄨㄣˊ
+妏 0 ㄨㄣˊ
+顐 0 ㄨㄣˊ
+彣 0 ㄨㄣˊ
+珉 0 ㄨㄣˊ
+砇 0 ㄨㄣˊ
+蚉 0 ㄨㄣˊ
+渂 0 ㄨㄣˊ
+珳 0 ㄨㄣˊ
+琘 0 ㄨㄣˊ
+瑉 0 ㄨㄣˊ
+碈 0 ㄨㄣˊ
+馼 0 ㄨㄣˊ
+鴍 0 ㄨㄣˊ
+螡 0 ㄨㄣˊ
+鴖 0 ㄨㄣˊ
+蟁 0 ㄨㄣˊ
+瘒 0 ㄨㄣˊ
+阿 0 ㄜ
+婀 0 ㄜ
+痾 0 ㄜ
+ㄜ 0 ㄜ
+屙 0 ㄜ
+峉 0 ㄜ
+錒 0 ㄜ
+歞 0 ㄜ
+妿 0 ㄜ
+妸 0 ㄜ
+疴 0 ㄜ
+娿 0 ㄜ
+噁 0 ㄜˇ
+我 0 ㄜˇ
+婀 0 ㄜˇ
+惡 0 ㄜˇ
+婐 0 ㄜˇ
+猗 0 ㄜˇ
+閜 0 ㄜˇ
+硪 0 ㄜˇ
+悪 0 ㄜˇ
+頋 0 ㄜˇ
+僫 0 ㄜˇ
+騀 0 ㄜˇ
+惡 0 ㄜˋ
+餓 0 ㄜˋ
+俄 0 ㄜˋ
+鄂 0 ㄜˋ
+厄 0 ㄜˋ
+遏 0 ㄜˋ
+鍔 0 ㄜˋ
+扼 0 ㄜˋ
+鱷 0 ㄜˋ
+顎 0 ㄜˋ
+呃 0 ㄜˋ
+愕 0 ㄜˋ
+噩 0 ㄜˋ
+軛 0 ㄜˋ
+阨 0 ㄜˋ
+鶚 0 ㄜˋ
+堊 0 ㄜˋ
+諤 0 ㄜˋ
+萼 0 ㄜˋ
+咢 0 ㄜˋ
+啞 0 ㄜˋ
+崿 0 ㄜˋ
+搤 0 ㄜˋ
+詻 0 ㄜˋ
+閼 0 ㄜˋ
+頞 0 ㄜˋ
+堨 0 ㄜˋ
+齶 0 ㄜˋ
+枙 0 ㄜˋ
+堮 0 ㄜˋ
+岋 0 ㄜˋ
+鑩 0 ㄜˋ
+櫮 0 ㄜˋ
+砐 0 ㄜˋ
+砨 0 ㄜˋ
+蚅 0 ㄜˋ
+豟 0 ㄜˋ
+軶 0 ㄜˋ
+圔 0 ㄜˋ
+搹 0 ㄜˋ
+蝁 0 ㄜˋ
+嶭 0 ㄜˋ
+餩 0 ㄜˋ
+蘁 0 ㄜˋ
+歹 0 ㄜˋ
+隘 0 ㄜˋ
+額 0 ㄜˋ
+仴 0 ㄜˋ
+姶 0 ㄜˋ
+唈 0 ㄜˋ
+嫮 0 ㄜˋ
+遻 0 ㄜˋ
+齃 0 ㄜˋ
+戹 0 ㄜˋ
+歺 0 ㄜˋ
+咹 0 ㄜˋ
+偔 0 ㄜˋ
+悪 0 ㄜˋ
+㗁 0 ㄜˋ
+湂 0 ㄜˋ
+㮙 0 ㄜˋ
+琧 0 ㄜˋ
+瘂 0 ㄜˋ
+腭 0 ㄜˋ
+僫 0 ㄜˋ
+磀 0 ㄜˋ
+頟 0 ㄜˋ
+擜 0 ㄜˋ
+蕚 0 ㄜˋ
+鰐 0 ㄜˋ
+讍 0 ㄜˋ
+𣎴 0 ㄜˋ
+𠱥 0 ㄜˋ
+屵 0 ㄜˋ
+呝 0 ㄜˋ
+苊 0 ㄜˋ
+阸 0 ㄜˋ
+唖 0 ㄜˋ
+卾 0 ㄜˋ
+㷈 0 ㄜˋ
+覨 0 ㄜˋ
+囐 0 ㄜˋ
+額 0 ㄜˊ
+訛 0 ㄜˊ
+鵝 0 ㄜˊ
+娥 0 ㄜˊ
+哦 0 ㄜˊ
+蛾 0 ㄜˊ
+峨 0 ㄜˊ
+莪 0 ㄜˊ
+俄 0 ㄜˊ
+囮 0 ㄜˊ
+吪 0 ㄜˊ
+硪 0 ㄜˊ
+蚵 0 ㄜˊ
+鋨 0 ㄜˊ
+迗 0 ㄜˊ
+珴 0 ㄜˊ
+涐 0 ㄜˊ
+皒 0 ㄜˊ
+睋 0 ㄜˊ
+魤 0 ㄜˊ
+枙 0 ㄜˊ
+峉 0 ㄜˊ
+匎 0 ㄜˊ
+峩 0 ㄜˊ
+鈋 0 ㄜˊ
+誐 0 ㄜˊ
+頟 0 ㄜˊ
+騀 0 ㄜˊ
+鵞 0 ㄜˊ
+譌 0 ㄜˊ
+䄉 0 ㄜˊ
+㘥 0 ㄜˊ
+鰪 0 ㄜˊ
+凹 0 ㄠ
+ㄠ 0 ㄠ
+坳 0 ㄠ
+柪 0 ㄠ
+熬 0 ㄠ
+爊 0 ㄠ
+㘭 0 ㄠ
+軪 0 ㄠ
+㕭 0 ㄠ
+垇 0 ㄠ
+襖 0 ㄠˇ
+媼 0 ㄠˇ
+芺 0 ㄠˇ
+镺 0 ㄠˇ
+夭 0 ㄠˇ
+拗 0 ㄠˇ
+郩 0 ㄠˇ
+抝 0 ㄠˇ
+袄 0 ㄠˇ
+媪 0 ㄠˇ
+鴁 0 ㄠˇ
+狕 0 ㄠˇ
+傲 0 ㄠˋ
+澳 0 ㄠˋ
+奧 0 ㄠˋ
+懊 0 ㄠˋ
+墺 0 ㄠˋ
+奡 0 ㄠˋ
+扷 0 ㄠˋ
+擙 0 ㄠˋ
+拗 0 ㄠˋ
+詏 0 ㄠˋ
+嶴 0 ㄠˋ
+敖 0 ㄠˋ
+燠 0 ㄠˋ
+坳 0 ㄠˋ
+柪 0 ㄠˋ
+镺 0 ㄠˋ
+隩 0 ㄠˋ
+謷 0 ㄠˋ
+鏊 0 ㄠˋ
+驁 0 ㄠˋ
+㑃 0 ㄠˋ
+抝 0 ㄠˋ
+嫯 0 ㄠˋ
+㜜 0 ㄠˋ
+慠 0 ㄠˋ
+謸 0 ㄠˋ
+圫 0 ㄠˋ
+奥 0 ㄠˋ
+熬 0 ㄠˊ
+敖 0 ㄠˊ
+遨 0 ㄠˊ
+翱 0 ㄠˊ
+嗷 0 ㄠˊ
+螯 0 ㄠˊ
+鰲 0 ㄠˊ
+鼇 0 ㄠˊ
+鏖 0 ㄠˊ
+驁 0 ㄠˊ
+廒 0 ㄠˊ
+獒 0 ㄠˊ
+璈 0 ㄠˊ
+聱 0 ㄠˊ
+鏊 0 ㄠˊ
+滶 0 ㄠˊ
+磝 0 ㄠˊ
+隞 0 ㄠˊ
+摮 0 ㄠˊ
+蔜 0 ㄠˊ
+簢 0 ㄠˊ
+謷 0 ㄠˊ
+爊 0 ㄠˊ
+厫 0 ㄠˊ
+嗸 0 ㄠˊ
+煾 0 ㄠˊ
+獓 0 ㄠˊ
+翶 0 ㄠˊ
+翺 0 ㄠˊ
+嶅 0 ㄠˊ
+鷔 0 ㄠˊ
+淤 0 ㄩ
+迂 0 ㄩ
+瘀 0 ㄩ
+紆 0 ㄩ
+ㄩ 0 ㄩ
+毹 0 ㄩ
+箊 0 ㄩ
+扜 0 ㄩ
+穻 0 ㄩ
+盓 0 ㄩ
+汙 0 ㄩ
+污 0 ㄩ
+胠 0 ㄩ
+陓 0 ㄩ
+唹 0 ㄩ
+汚 0 ㄩ
+虶 0 ㄩ
+迃 0 ㄩ
+約 0 ㄩㄝ
+曰 0 ㄩㄝ
+噦 0 ㄩㄝ
+箹 0 ㄩㄝ
+焥 0 ㄩㄝ
+月 0 ㄩㄝˋ
+越 0 ㄩㄝˋ
+樂 0 ㄩㄝˋ
+悅 0 ㄩㄝˋ
+閱 0 ㄩㄝˋ
+粵 0 ㄩㄝˋ
+躍 0 ㄩㄝˋ
+岳 0 ㄩㄝˋ
+嶽 0 ㄩㄝˋ
+耀 0 ㄩㄝˋ
+鑰 0 ㄩㄝˋ
+曜 0 ㄩㄝˋ
+藥 0 ㄩㄝˋ
+鉞 0 ㄩㄝˋ
+說 0 ㄩㄝˋ
+囝 0 ㄩㄝˋ
+刖 0 ㄩㄝˋ
+瀹 0 ㄩㄝˋ
+籥 0 ㄩㄝˋ
+樾 0 ㄩㄝˋ
+爚 0 ㄩㄝˋ
+礿 0 ㄩㄝˋ
+禴 0 ㄩㄝˋ
+趯 0 ㄩㄝˋ
+軏 0 ㄩㄝˋ
+鸑 0 ㄩㄝˋ
+龠 0 ㄩㄝˋ
+狘 0 ㄩㄝˋ
+玥 0 ㄩㄝˋ
+戉 0 ㄩㄝˋ
+泧 0 ㄩㄝˋ
+鈅 0 ㄩㄝˋ
+抈 0 ㄩㄝˋ
+蚎 0 ㄩㄝˋ
+蘥 0 ㄩㄝˋ
+鸙 0 ㄩㄝˋ
+兌 0 ㄩㄝˋ
+眓 0 ㄩㄝˋ
+葯 0 ㄩㄝˋ
+魆 0 ㄩㄝˋ
+燿 0 ㄩㄝˋ
+龤 0 ㄩㄝˋ
+兊 0 ㄩㄝˋ
+兑 0 ㄩㄝˋ
+岄 0 ㄩㄝˋ
+悦 0 ㄩㄝˋ
+蚏 0 ㄩㄝˋ
+捳 0 ㄩㄝˋ
+跀 0 ㄩㄝˋ
+粤 0 ㄩㄝˋ
+楽 0 ㄩㄝˋ
+説 0 ㄩㄝˋ
+熭 0 ㄩㄝˋ
+閲 0 ㄩㄝˋ
+嬳 0 ㄩㄝˋ
+薬 0 ㄩㄝˋ
+㜰 0 ㄩㄝˋ
+爠 0 ㄩㄝˋ
+恱 0 ㄩㄝˋ
+哾 0 ㄩㄝˋ
+籰 0 ㄩㄝˋ
+篗 0 ㄩㄝˋ
+籆 0 ㄩㄝˋ
+跃 0 ㄩㄝˋ
+傭 0 ㄩㄥ
+庸 0 ㄩㄥ
+雍 0 ㄩㄥ
+擁 0 ㄩㄥ
+壅 0 ㄩㄥ
+癰 0 ㄩㄥ
+臃 0 ㄩㄥ
+墉 0 ㄩㄥ
+鏞 0 ㄩㄥ
+慵 0 ㄩㄥ
+饔 0 ㄩㄥ
+邕 0 ㄩㄥ
+廱 0 ㄩㄥ
+雝 0 ㄩㄥ
+嗈 0 ㄩㄥ
+灉 0 ㄩㄥ
+鄘 0 ㄩㄥ
+噰 0 ㄩㄥ
+澭 0 ㄩㄥ
+蕹 0 ㄩㄥ
+滽 0 ㄩㄥ
+郺 0 ㄩㄥ
+㴩 0 ㄩㄥ
+牅 0 ㄩㄥ
+㿈 0 ㄩㄥ
+癕 0 ㄩㄥ
+永 0 ㄩㄥˇ
+泳 0 ㄩㄥˇ
+詠 0 ㄩㄥˇ
+勇 0 ㄩㄥˇ
+擁 0 ㄩㄥˇ
+踴 0 ㄩㄥˇ
+湧 0 ㄩㄥˇ
+蛹 0 ㄩㄥˇ
+甬 0 ㄩㄥˇ
+壅 0 ㄩㄥˇ
+恿 0 ㄩㄥˇ
+臃 0 ㄩㄥˇ
+俑 0 ㄩㄥˇ
+踊 0 ㄩㄥˇ
+埇 0 ㄩㄥˇ
+塎 0 ㄩㄥˇ
+禜 0 ㄩㄥˇ
+涌 0 ㄩㄥˇ
+悀 0 ㄩㄥˇ
+銢 0 ㄩㄥˇ
+臾 0 ㄩㄥˇ
+咏 0 ㄩㄥˇ
+惥 0 ㄩㄥˇ
+愑 0 ㄩㄥˇ
+彮 0 ㄩㄥˇ
+慂 0 ㄩㄥˇ
+鯒 0 ㄩㄥˇ
+勈 0 ㄩㄥˇ
+柡 0 ㄩㄥˇ
+硧 0 ㄩㄥˇ
+愹 0 ㄩㄥˇ
+用 0 ㄩㄥˋ
+佣 0 ㄩㄥˋ
+醟 0 ㄩㄥˋ
+傭 0 ㄩㄥˋ
+禜 0 ㄩㄥˋ
+苚 0 ㄩㄥˋ
+傭 0 ㄩㄥˊ
+喁 0 ㄩㄥˊ
+顒 0 ㄩㄥˊ
+傛 0 ㄩㄥˊ
+槦 0 ㄩㄥˊ
+嫆 0 ㄩㄥˊ
+嵱 0 ㄩㄥˊ
+嫞 0 ㄩㄥˊ
+庸 0 ㄩㄥˊ
+慵 0 ㄩㄥˊ
+鄘 0 ㄩㄥˊ
+墉 0 ㄩㄥˊ
+滽 0 ㄩㄥˊ
+鏞 0 ㄩㄥˊ
+鷛 0 ㄩㄥˊ
+搈 0 ㄩㄥˊ
+鱅 0 ㄩㄥˊ
+㣑 0 ㄩㄥˊ
+牅 0 ㄩㄥˊ
+冤 0 ㄩㄢ
+淵 0 ㄩㄢ
+鴛 0 ㄩㄢ
+鳶 0 ㄩㄢ
+宛 0 ㄩㄢ
+眢 0 ㄩㄢ
+蜎 0 ㄩㄢ
+鵷 0 ㄩㄢ
+肙 0 ㄩㄢ
+鋺 0 ㄩㄢ
+惌 0 ㄩㄢ
+棩 0 ㄩㄢ
+蒬 0 ㄩㄢ
+裷 0 ㄩㄢ
+鼘 0 ㄩㄢ
+葾 0 ㄩㄢ
+蜵 0 ㄩㄢ
+裫 0 ㄩㄢ
+駌 0 ㄩㄢ
+嬽 0 ㄩㄢ
+灁 0 ㄩㄢ
+怨 0 ㄩㄢ
+妴 0 ㄩㄢ
+奫 0 ㄩㄢ
+潫 0 ㄩㄢ
+囦 0 ㄩㄢ
+剈 0 ㄩㄢ
+寃 0 ㄩㄢ
+渆 0 ㄩㄢ
+渊 0 ㄩㄢ
+渁 0 ㄩㄢ
+鼝 0 ㄩㄢ
+㾓 0 ㄩㄢ
+䡝 0 ㄩㄢ
+遠 0 ㄩㄢˇ
+妴 0 ㄩㄢˇ
+鋺 0 ㄩㄢˇ
+薳 0 ㄩㄢˇ
+盶 0 ㄩㄢˇ
+齳 0 ㄩㄢˇ
+齫 0 ㄩㄢˇ
+院 0 ㄩㄢˋ
+願 0 ㄩㄢˋ
+怨 0 ㄩㄢˋ
+苑 0 ㄩㄢˋ
+遠 0 ㄩㄢˋ
+媛 0 ㄩㄢˋ
+瑗 0 ㄩㄢˋ
+愿 0 ㄩㄢˋ
+掾 0 ㄩㄢˋ
+褑 0 ㄩㄢˋ
+夗 0 ㄩㄢˋ
+謜 0 ㄩㄢˋ
+禐 0 ㄩㄢˋ
+噮 0 ㄩㄢˋ
+原 0 ㄩㄢˋ
+緣 0 ㄩㄢˋ
+妴 0 ㄩㄢˋ
+菀 0 ㄩㄢˋ
+夘 0 ㄩㄢˋ
+衏 0 ㄩㄢˋ
+縁 0 ㄩㄢˋ
+褤 0 ㄩㄢˋ
+厡 0 ㄩㄢˋ
+傆 0 ㄩㄢˋ
+原 0 ㄩㄢˊ
+元 0 ㄩㄢˊ
+員 0 ㄩㄢˊ
+園 0 ㄩㄢˊ
+圓 0 ㄩㄢˊ
+緣 0 ㄩㄢˊ
+源 0 ㄩㄢˊ
+援 0 ㄩㄢˊ
+媛 0 ㄩㄢˊ
+袁 0 ㄩㄢˊ
+猿 0 ㄩㄢˊ
+垣 0 ㄩㄢˊ
+沅 0 ㄩㄢˊ
+轅 0 ㄩㄢˊ
+爰 0 ㄩㄢˊ
+圜 0 ㄩㄢˊ
+黿 0 ㄩㄢˊ
+嫄 0 ㄩㄢˊ
+櫞 0 ㄩㄢˊ
+芫 0 ㄩㄢˊ
+湲 0 ㄩㄢˊ
+騵 0 ㄩㄢˊ
+笎 0 ㄩㄢˊ
+羱 0 ㄩㄢˊ
+蝯 0 ㄩㄢˊ
+邧 0 ㄩㄢˊ
+蝝 0 ㄩㄢˊ
+妧 0 ㄩㄢˊ
+萲 0 ㄩㄢˊ
+螈 0 ㄩㄢˊ
+蚖 0 ㄩㄢˊ
+杬 0 ㄩㄢˊ
+榞 0 ㄩㄢˊ
+溒 0 ㄩㄢˊ
+媴 0 ㄩㄢˊ
+猭 0 ㄩㄢˊ
+獂 0 ㄩㄢˊ
+榬 0 ㄩㄢˊ
+蒝 0 ㄩㄢˊ
+鎱 0 ㄩㄢˊ
+邍 0 ㄩㄢˊ
+鶢 0 ㄩㄢˊ
+京 0 ㄩㄢˊ
+洹 0 ㄩㄢˊ
+苑 0 ㄩㄢˊ
+晅 0 ㄩㄢˊ
+喙 0 ㄩㄢˊ
+隕 0 ㄩㄢˊ
+姮 0 ㄩㄢˊ
+峘 0 ㄩㄢˊ
+狟 0 ㄩㄢˊ
+掾 0 ㄩㄢˊ
+椽 0 ㄩㄢˊ
+瑗 0 ㄩㄢˊ
+貆 0 ㄩㄢˊ
+禒 0 ㄩㄢˊ
+禐 0 ㄩㄢˊ
+瞏 0 ㄩㄢˊ
+縓 0 ㄩㄢˊ
+謜 0 ㄩㄢˊ
+豲 0 ㄩㄢˊ
+円 0 ㄩㄢˊ
+园 0 ㄩㄢˊ
+亰 0 ㄩㄢˊ
+貟 0 ㄩㄢˊ
+圎 0 ㄩㄢˊ
+猨 0 ㄩㄢˊ
+塬 0 ㄩㄢˊ
+睘 0 ㄩㄢˊ
+磒 0 ㄩㄢˊ
+縁 0 ㄩㄢˊ
+䲮 0 ㄩㄢˊ
+薗 0 ㄩㄢˊ
+鶰 0 ㄩㄢˊ
+厡 0 ㄩㄢˊ
+㟲 0 ㄩㄢˊ
+暅 0 ㄩㄢˊ
+魭 0 ㄩㄢˊ
+與 0 ㄩˇ
+語 0 ㄩˇ
+雨 0 ㄩˇ
+予 0 ㄩˇ
+羽 0 ㄩˇ
+嶼 0 ㄩˇ
+宇 0 ㄩˇ
+禹 0 ㄩˇ
+庾 0 ㄩˇ
+齬 0 ㄩˇ
+噢 0 ㄩˇ
+圄 0 ㄩˇ
+圉 0 ㄩˇ
+窳 0 ㄩˇ
+傴 0 ㄩˇ
+俁 0 ㄩˇ
+敔 0 ㄩˇ
+噳 0 ㄩˇ
+楀 0 ㄩˇ
+瑀 0 ㄩˇ
+与 0 ㄩˇ
+萭 0 ㄩˇ
+貐 0 ㄩˇ
+偊 0 ㄩˇ
+祤 0 ㄩˇ
+斞 0 ㄩˇ
+鄅 0 ㄩˇ
+寙 0 ㄩˇ
+篽 0 ㄩˇ
+蘌 0 ㄩˇ
+斔 0 ㄩˇ
+螤 0 ㄩˇ
+齲 0 ㄩˇ
+珝 0 ㄩˇ
+欳 0 ㄩˇ
+堣 0 ㄩˇ
+翗 0 ㄩˇ
+瘐 0 ㄩˇ
+趐 0 ㄩˇ
+嫮 0 ㄩˇ
+蝺 0 ㄩˇ
+頨 0 ㄩˇ
+踽 0 ㄩˇ
+翵 0 ㄩˇ
+璵 0 ㄩˇ
+藇 0 ㄩˇ
+麌 0 ㄩˇ
+鱮 0 ㄩˇ
+俣 0 ㄩˇ
+㝢 0 ㄩˇ
+萮 0 ㄩˇ
+魣 0 ㄩˇ
+懙 0 ㄩˇ
+伛 0 ㄩˇ
+匬 0 ㄩˇ
+㦛 0 ㄩˇ
+育 0 ㄩˋ
+遇 0 ㄩˋ
+預 0 ㄩˋ
+玉 0 ㄩˋ
+欲 0 ㄩˋ
+域 0 ㄩˋ
+喻 0 ㄩˋ
+愈 0 ㄩˋ
+譽 0 ㄩˋ
+獄 0 ㄩˋ
+慾 0 ㄩˋ
+浴 0 ㄩˋ
+裕 0 ㄩˋ
+煜 0 ㄩˋ
+寓 0 ㄩˋ
+禦 0 ㄩˋ
+與 0 ㄩˋ
+鈺 0 ㄩˋ
+豫 0 ㄩˋ
+御 0 ㄩˋ
+鬱 0 ㄩˋ
+籲 0 ㄩˋ
+諭 0 ㄩˋ
+癒 0 ㄩˋ
+郁 0 ㄩˋ
+馭 0 ㄩˋ
+昱 0 ㄩˋ
+毓 0 ㄩˋ
+芋 0 ㄩˋ
+尉 0 ㄩˋ
+熨 0 ㄩˋ
+俞 0 ㄩˋ
+峪 0 ㄩˋ
+聿 0 ㄩˋ
+嫗 0 ㄩˋ
+彧 0 ㄩˋ
+飫 0 ㄩˋ
+鬻 0 ㄩˋ
+谷 0 ㄩˋ
+鷸 0 ㄩˋ
+燠 0 ㄩˋ
+蜮 0 ㄩˋ
+堉 0 ㄩˋ
+語 0 ㄩˋ
+瘉 0 ㄩˋ
+棫 0 ㄩˋ
+澦 0 ㄩˋ
+矞 0 ㄩˋ
+禺 0 ㄩˋ
+罭 0 ㄩˋ
+蕷 0 ㄩˋ
+遹 0 ㄩˋ
+閾 0 ㄩˋ
+隩 0 ㄩˋ
+鵒 0 ㄩˋ
+棜 0 ㄩˋ
+淢 0 ㄩˋ
+燏 0 ㄩˋ
+獝 0 ㄩˋ
+繘 0 ㄩˋ
+魊 0 ㄩˋ
+薁 0 ㄩˋ
+驈 0 ㄩˋ
+悆 0 ㄩˋ
+鴥 0 ㄩˋ
+鋊 0 ㄩˋ
+淯 0 ㄩˋ
+黦 0 ㄩˋ
+栯 0 ㄩˋ
+砡 0 ㄩˋ
+礜 0 ㄩˋ
+欥 0 ㄩˋ
+軉 0 ㄩˋ
+輍 0 ㄩˋ
+悇 0 ㄩˋ
+稢 0 ㄩˋ
+蒮 0 ㄩˋ
+噊 0 ㄩˋ
+鳿 0 ㄩˋ
+醧 0 ㄩˋ
+饇 0 ㄩˋ
+爩 0 ㄩˋ
+灪 0 ㄩˋ
+戫 0 ㄩˋ
+袬 0 ㄩˋ
+緎 0 ㄩˋ
+蓹 0 ㄩˋ
+錥 0 ㄩˋ
+王 0 ㄩˋ
+卸 0 ㄩˋ
+拗 0 ㄩˋ
+玨 0 ㄩˋ
+盂 0 ㄩˋ
+雨 0 ㄩˋ
+苑 0 ㄩˋ
+娛 0 ㄩˋ
+雩 0 ㄩˋ
+愉 0 ㄩˋ
+粥 0 ㄩˋ
+奧 0 ㄩˋ
+逾 0 ㄩˋ
+蔚 0 ㄩˋ
+澳 0 ㄩˋ
+与 0 ㄩˋ
+汩 0 ㄩˋ
+掝 0 ㄩˋ
+焀 0 ㄩˋ
+郩 0 ㄩˋ
+菀 0 ㄩˋ
+綌 0 ㄩˋ
+嫮 0 ㄩˋ
+鄠 0 ㄩˋ
+踰 0 ㄩˋ
+閼 0 ㄩˋ
+儥 0 ㄩˋ
+礐 0 ㄩˋ
+鬵 0 ㄩˋ
+蘛 0 ㄩˋ
+鱊 0 ㄩˋ
+鸒 0 ㄩˋ
+抝 0 ㄩˋ
+芌 0 ㄩˋ
+兪 0 ㄩˋ
+哊 0 ㄩˋ
+珏 0 ㄩˋ
+秗 0 ㄩˋ
+俼 0 ㄩˋ
+娱 0 ㄩˋ
+娯 0 ㄩˋ
+茟 0 ㄩˋ
+惐 0 ㄩˋ
+棛 0 ㄩˋ
+淿 0 ㄩˋ
+喅 0 ㄩˋ
+喩 0 ㄩˋ
+媀 0 ㄩˋ
+㷉 0 ㄩˋ
+庽 0 ㄩˋ
+焴 0 ㄩˋ
+琙 0 ㄩˋ
+㽣 0 ㄩˋ
+䋭 0 ㄩˋ
+萮 0 ㄩˋ
+瑴 0 ㄩˋ
+銉 0 ㄩˋ
+鴪 0 ㄩˋ
+鴧 0 ㄩˋ
+礇 0 ㄩˋ
+霱 0 ㄩˋ
+鐭 0 ㄩˋ
+籞 0 ㄩˋ
+欝 0 ㄩˋ
+龥 0 ㄩˋ
+鬰 0 ㄩˋ
+缷 0 ㄩˋ
+㧒 0 ㄩˋ
+逳 0 ㄩˋ
+喐 0 ㄩˋ
+奥 0 ㄩˋ
+蜟 0 ㄩˋ
+稶 0 ㄩˋ
+穥 0 ㄩˋ
+櫲 0 ㄩˋ
+㣃 0 ㄩˋ
+於 0 ㄩˊ
+愉 0 ㄩˊ
+魚 0 ㄩˊ
+娛 0 ㄩˊ
+餘 0 ㄩˊ
+于 0 ㄩˊ
+漁 0 ㄩˊ
+予 0 ㄩˊ
+愚 0 ㄩˊ
+余 0 ㄩˊ
+竽 0 ㄩˊ
+榆 0 ㄩˊ
+逾 0 ㄩˊ
+虞 0 ㄩˊ
+俞 0 ㄩˊ
+輿 0 ㄩˊ
+瑜 0 ㄩˊ
+渝 0 ㄩˊ
+隅 0 ㄩˊ
+臾 0 ㄩˊ
+腴 0 ㄩˊ
+盂 0 ㄩˊ
+諛 0 ㄩˊ
+踰 0 ㄩˊ
+伃 0 ㄩˊ
+舁 0 ㄩˊ
+圩 0 ㄩˊ
+歟 0 ㄩˊ
+覦 0 ㄩˊ
+畬 0 ㄩˊ
+萸 0 ㄩˊ
+嵎 0 ㄩˊ
+窬 0 ㄩˊ
+妤 0 ㄩˊ
+揄 0 ㄩˊ
+歈 0 ㄩˊ
+禺 0 ㄩˊ
+轝 0 ㄩˊ
+隃 0 ㄩˊ
+雩 0 ㄩˊ
+杅 0 ㄩˊ
+楰 0 ㄩˊ
+玗 0 ㄩˊ
+緰 0 ㄩˊ
+羭 0 ㄩˊ
+蝓 0 ㄩˊ
+褕 0 ㄩˊ
+瘐 0 ㄩˊ
+艅 0 ㄩˊ
+狳 0 ㄩˊ
+邘 0 ㄩˊ
+璵 0 ㄩˊ
+硢 0 ㄩˊ
+籅 0 ㄩˊ
+釪 0 ㄩˊ
+崳 0 ㄩˊ
+湡 0 ㄩˊ
+鄃 0 ㄩˊ
+腧 0 ㄩˊ
+睮 0 ㄩˊ
+雓 0 ㄩˊ
+澞 0 ㄩˊ
+蕍 0 ㄩˊ
+螸 0 ㄩˊ
+謣 0 ㄩˊ
+鮽 0 ㄩˊ
+蘛 0 ㄩˊ
+鸆 0 ㄩˊ
+衧 0 ㄩˊ
+唹 0 ㄩˊ
+堣 0 ㄩˊ
+堬 0 ㄩˊ
+雽 0 ㄩˊ
+歶 0 ㄩˊ
+旟 0 ㄩˊ
+鰅 0 ㄩˊ
+齵 0 ㄩˊ
+吁 0 ㄩˊ
+汙 0 ㄩˊ
+污 0 ㄩˊ
+吾 0 ㄩˊ
+邪 0 ㄩˊ
+訏 0 ㄩˊ
+喻 0 ㄩˊ
+菸 0 ㄩˊ
+衙 0 ㄩˊ
+與 0 ㄩˊ
+譽 0 ㄩˊ
+亍 0 ㄩˊ
+与 0 ㄩˊ
+佘 0 ㄩˊ
+芧 0 ㄩˊ
+悇 0 ㄩˊ
+趶 0 ㄩˊ
+悆 0 ㄩˊ
+喁 0 ㄩˊ
+棜 0 ㄩˊ
+毹 0 ㄩˊ
+蜍 0 ㄩˊ
+虡 0 ㄩˊ
+顒 0 ㄩˊ
+亏 0 ㄩˊ
+汚 0 ㄩˊ
+兪 0 ㄩˊ
+娱 0 ㄩˊ
+娯 0 ㄩˊ
+桙 0 ㄩˊ
+衺 0 ㄩˊ
+酑 0 ㄩˊ
+喩 0 ㄩˊ
+媀 0 ㄩˊ
+嵛 0 ㄩˊ
+惥 0 ㄩˊ
+畭 0 ㄩˊ
+祦 0 ㄩˊ
+楡 0 ㄩˊ
+毺 0 ㄩˊ
+萮 0 ㄩˊ
+慂 0 ㄩˊ
+嬩 0 ㄩˊ
+懙 0 ㄩˊ
+鍝 0 ㄩˊ
+簴 0 ㄩˊ
+騟 0 ㄩˊ
+䱷 0 ㄩˊ
+㚥 0 ㄩˊ
+欤 0 ㄩˊ
+茰 0 ㄩˊ
+畲 0 ㄩˊ
+骬 0 ㄩˊ
+䰻 0 ㄩˊ
+㦛 0 ㄩˊ
+鷠 0 ㄩˊ
+暈 0 ㄩㄣ
+氳 0 ㄩㄣ
+縕 0 ㄩㄣ
+贇 0 ㄩㄣ
+奫 0 ㄩㄣ
+蝹 0 ㄩㄣ
+涒 0 ㄩㄣ
+氲 0 ㄩㄣ
+蒀 0 ㄩㄣ
+蒕 0 ㄩㄣ
+緼 0 ㄩㄣ
+允 0 ㄩㄣˇ
+隕 0 ㄩㄣˇ
+殞 0 ㄩㄣˇ
+狁 0 ㄩㄣˇ
+霣 0 ㄩㄣˇ
+褞 0 ㄩㄣˇ
+抎 0 ㄩㄣˇ
+賱 0 ㄩㄣˇ
+輑 0 ㄩㄣˇ
+鈗 0 ㄩㄣˇ
+阭 0 ㄩㄣˇ
+吮 0 ㄩㄣˇ
+抁 0 ㄩㄣˇ
+沇 0 ㄩㄣˇ
+荺 0 ㄩㄣˇ
+塤 0 ㄩㄣˇ
+熉 0 ㄩㄣˇ
+馻 0 ㄩㄣˇ
+薀 0 ㄩㄣˇ
+夽 0 ㄩㄣˇ
+玧 0 ㄩㄣˇ
+㽙 0 ㄩㄣˇ
+喗 0 ㄩㄣˇ
+䤞 0 ㄩㄣˇ
+腪 0 ㄩㄣˇ
+磒 0 ㄩㄣˇ
+蕰 0 ㄩㄣˇ
+䨶 0 ㄩㄣˇ
+运 0 ㄩㄣˇ
+傊 0 ㄩㄣˇ
+渷 0 ㄩㄣˇ
+運 0 ㄩㄣˋ
+韻 0 ㄩㄣˋ
+孕 0 ㄩㄣˋ
+熨 0 ㄩㄣˋ
+蘊 0 ㄩㄣˋ
+慍 0 ㄩㄣˋ
+醞 0 ㄩㄣˋ
+惲 0 ㄩㄣˋ
+暈 0 ㄩㄣˋ
+韞 0 ㄩㄣˋ
+鄆 0 ㄩㄣˋ
+薀 0 ㄩㄣˋ
+枟 0 ㄩㄣˋ
+緷 0 ㄩㄣˋ
+鶤 0 ㄩㄣˋ
+員 0 ㄩㄣˋ
+均 0 ㄩㄣˋ
+熅 0 ㄩㄣˋ
+縕 0 ㄩㄣˋ
+賱 0 ㄩㄣˋ
+璭 0 ㄩㄣˋ
+餫 0 ㄩㄣˋ
+韗 0 ㄩㄣˋ
+貟 0 ㄩㄣˋ
+愠 0 ㄩㄣˋ
+煴 0 ㄩㄣˋ
+腪 0 ㄩㄣˋ
+韵 0 ㄩㄣˋ
+緼 0 ㄩㄣˋ
+蕰 0 ㄩㄣˋ
+醖 0 ㄩㄣˋ
+藴 0 ㄩㄣˋ
+鵾 0 ㄩㄣˋ
+运 0 ㄩㄣˋ
+䲰 0 ㄩㄣˋ
+鞰 0 ㄩㄣˋ
+雲 0 ㄩㄣˊ
+云 0 ㄩㄣˊ
+勻 0 ㄩㄣˊ
+昀 0 ㄩㄣˊ
+耘 0 ㄩㄣˊ
+芸 0 ㄩㄣˊ
+紜 0 ㄩㄣˊ
+熅 0 ㄩㄣˊ
+筠 0 ㄩㄣˊ
+溳 0 ㄩㄣˊ
+澐 0 ㄩㄣˊ
+畇 0 ㄩㄣˊ
+篔 0 ㄩㄣˊ
+沄 0 ㄩㄣˊ
+熉 0 ㄩㄣˊ
+鋆 0 ㄩㄣˊ
+蕓 0 ㄩㄣˊ
+妘 0 ㄩㄣˊ
+伝 0 ㄩㄣˊ
+縜 0 ㄩㄣˊ
+荺 0 ㄩㄣˊ
+鄖 0 ㄩㄣˊ
+枃 0 ㄩㄣˊ
+眃 0 ㄩㄣˊ
+員 0 ㄩㄣˊ
+呁 0 ㄩㄣˊ
+盷 0 ㄩㄣˊ
+笉 0 ㄩㄣˊ
+匀 0 ㄩㄣˊ
+囩 0 ㄩㄣˊ
+秐 0 ㄩㄣˊ
+貟 0 ㄩㄣˊ
+愪 0 ㄩㄣˊ
+煴 0 ㄩㄣˊ
+蒷 0 ㄩㄣˊ
+橒 0 ㄩㄣˊ
+耺 0 ㄩㄣˊ
+司 0 ㄙ
+思 0 ㄙ
+斯 0 ㄙ
+絲 0 ㄙ
+私 0 ㄙ
+撕 0 ㄙ
+廝 0 ㄙ
+鷥 0 ㄙ
+嘶 0 ㄙ
+ㄙ 0 ㄙ
+澌 0 ㄙ
+緦 0 ㄙ
+偲 0 ㄙ
+罳 0 ㄙ
+颸 0 ㄙ
+禠 0 ㄙ
+虒 0 ㄙ
+楒 0 ㄙ
+鍶 0 ㄙ
+凘 0 ㄙ
+泀 0 ㄙ
+蕬 0 ㄙ
+鉰 0 ㄙ
+俬 0 ㄙ
+覗 0 ㄙ
+榹 0 ㄙ
+禗 0 ㄙ
+蜤 0 ㄙ
+磃 0 ㄙ
+謕 0 ㄙ
+蟴 0 ㄙ
+鼶 0 ㄙ
+糸 0 ㄙ
+葸 0 ㄙ
+螄 0 ㄙ
+諰 0 ㄙ
+簁 0 ㄙ
+厶 0 ㄙ
+㺨 0 ㄙ
+恖 0 ㄙ
+媤 0 ㄙ
+愢 0 ㄙ
+厮 0 ㄙ
+簛 0 ㄙ
+蟖 0 ㄙ
+騦 0 ㄙ
+籭 0 ㄙ
+㴲 0 ㄙ
+䔮 0 ㄙ
+䰄 0 ㄙ
+鐁 0 ㄙ
+搜 0 ㄙㄡ
+颼 0 ㄙㄡ
+鄋 0 ㄙㄡ
+蒐 0 ㄙㄡ
+廋 0 ㄙㄡ
+溲 0 ㄙㄡ
+餿 0 ㄙㄡ
+獀 0 ㄙㄡ
+醙 0 ㄙㄡ
+嗖 0 ㄙㄡ
+鎪 0 ㄙㄡ
+騪 0 ㄙㄡ
+叟 0 ㄙㄡ
+艘 0 ㄙㄡ
+叜 0 ㄙㄡ
+捒 0 ㄙㄡ
+捜 0 ㄙㄡ
+傁 0 ㄙㄡ
+廀 0 ㄙㄡ
+摗 0 ㄙㄡ
+蓃 0 ㄙㄡ
+撨 0 ㄙㄡ
+螋 0 ㄙㄡ
+叟 0 ㄙㄡˇ
+嗾 0 ㄙㄡˇ
+藪 0 ㄙㄡˇ
+擻 0 ㄙㄡˇ
+瞍 0 ㄙㄡˇ
+謏 0 ㄙㄡˇ
+籔 0 ㄙㄡˇ
+廋 0 ㄙㄡˇ
+溲 0 ㄙㄡˇ
+叜 0 ㄙㄡˇ
+傁 0 ㄙㄡˇ
+廀 0 ㄙㄡˇ
+蓃 0 ㄙㄡˇ
+櫢 0 ㄙㄡˇ
+嗽 0 ㄙㄡˋ
+漱 0 ㄙㄡˋ
+擻 0 ㄙㄡˋ
+欶 0 ㄙㄡˋ
+廋 0 ㄙㄡˋ
+瘐 0 ㄙㄡˋ
+凁 0 ㄙㄡˋ
+廀 0 ㄙㄡˋ
+潄 0 ㄙㄡˋ
+瘶 0 ㄙㄡˋ
+僧 0 ㄙㄥ
+鬙 0 ㄙㄥ
+䒏 0 ㄙㄥ
+喪 0 ㄙㄤ
+桑 0 ㄙㄤ
+縔 0 ㄙㄤ
+桒 0 ㄙㄤ
+槡 0 ㄙㄤ
+嗓 0 ㄙㄤˇ
+顙 0 ㄙㄤˇ
+搡 0 ㄙㄤˇ
+磉 0 ㄙㄤˇ
+鎟 0 ㄙㄤˇ
+褬 0 ㄙㄤˇ
+喪 0 ㄙㄤˋ
+三 0 ㄙㄢ
+參 0 ㄙㄢ
+毿 0 ㄙㄢ
+鬖 0 ㄙㄢ
+仨 0 ㄙㄢ
+槮 0 ㄙㄢ
+襂 0 ㄙㄢ
+弎 0 ㄙㄢ
+叁 0 ㄙㄢ
+参 0 ㄙㄢ
+叄 0 ㄙㄢ
+叅 0 ㄙㄢ
+椮 0 ㄙㄢ
+犙 0 ㄙㄢ
+曑 0 ㄙㄢ
+謲 0 ㄙㄢ
+散 0 ㄙㄢˇ
+傘 0 ㄙㄢˇ
+繖 0 ㄙㄢˇ
+糝 0 ㄙㄢˇ
+鏾 0 ㄙㄢˇ
+槮 0 ㄙㄢˇ
+鏒 0 ㄙㄢˇ
+椮 0 ㄙㄢˇ
+嘇 0 ㄙㄢˇ
+潵 0 ㄙㄢˇ
+糂 0 ㄙㄢˇ
+糣 0 ㄙㄢˇ
+仐 0 ㄙㄢˇ
+糤 0 ㄙㄢˇ
+饊 0 ㄙㄢˇ
+散 0 ㄙㄢˋ
+閐 0 ㄙㄢˋ
+三 0 ㄙㄢˋ
+霰 0 ㄙㄢˋ
+鏾 0 ㄙㄢˋ
+弎 0 ㄙㄢˋ
+俕 0 ㄙㄢˋ
+死 0 ㄙˇ
+四 0 ㄙˋ
+似 0 ㄙˋ
+賜 0 ㄙˋ
+嗣 0 ㄙˋ
+飼 0 ㄙˋ
+寺 0 ㄙˋ
+肆 0 ㄙˋ
+祀 0 ㄙˋ
+食 0 ㄙˋ
+俟 0 ㄙˋ
+伺 0 ㄙˋ
+泗 0 ㄙˋ
+巳 0 ㄙˋ
+耜 0 ㄙˋ
+儩 0 ㄙˋ
+姒 0 ㄙˋ
+笥 0 ㄙˋ
+駟 0 ㄙˋ
+兕 0 ㄙˋ
+涘 0 ㄙˋ
+柶 0 ㄙˋ
+汜 0 ㄙˋ
+肂 0 ㄙˋ
+貄 0 ㄙˋ
+蕼 0 ㄙˋ
+洍 0 ㄙˋ
+思 0 ㄙˋ
+廁 0 ㄙˋ
+圮 0 ㄙˋ
+怬 0 ㄙˋ
+羠 0 ㄙˋ
+鈶 0 ㄙˋ
+佀 0 ㄙˋ
+孠 0 ㄙˋ
+杫 0 ㄙˋ
+泤 0 ㄙˋ
+牭 0 ㄙˋ
+恖 0 ㄙˋ
+厠 0 ㄙˋ
+釲 0 ㄙˋ
+竢 0 ㄙˋ
+鈻 0 ㄙˋ
+禩 0 ㄙˋ
+瀃 0 ㄙˋ
+亖 0 ㄙˋ
+攺 0 ㄙˋ
+㹭 0 ㄙˋ
+逘 0 ㄙˋ
+𥒲 0 ㄙˋ
+娰 0 ㄙˋ
+撒 0 ㄙㄚ
+仨 0 ㄙㄚ
+三 0 ㄙㄚ
+弎 0 ㄙㄚ
+灑 0 ㄙㄚˇ
+撒 0 ㄙㄚˇ
+靸 0 ㄙㄚˇ
+洒 0 ㄙㄚˇ
+薩 0 ㄙㄚˋ
+卅 0 ㄙㄚˋ
+趿 0 ㄙㄚˋ
+颯 0 ㄙㄚˋ
+攃 0 ㄙㄚˋ
+馺 0 ㄙㄚˋ
+隡 0 ㄙㄚˋ
+蔡 0 ㄙㄚˋ
+摋 0 ㄙㄚˋ
+鎝 0 ㄙㄚˋ
+躠 0 ㄙㄚˋ
+蕯 0 ㄙㄚˋ
+櫒 0 ㄙㄚˋ
+挲 0 ㄙㄚ˙
+薩 0 ㄙㄚ˙
+挱 0 ㄙㄚ˙
+塞 0 ㄙㄞ
+鰓 0 ㄙㄞ
+腮 0 ㄙㄞ
+毢 0 ㄙㄞ
+揌 0 ㄙㄞ
+思 0 ㄙㄞ
+偲 0 ㄙㄞ
+毸 0 ㄙㄞ
+恖 0 ㄙㄞ
+愢 0 ㄙㄞ
+噻 0 ㄙㄞ
+顋 0 ㄙㄞ
+䚡 0 ㄙㄞ
+賽 0 ㄙㄞˋ
+塞 0 ㄙㄞˋ
+僿 0 ㄙㄞˋ
+簺 0 ㄙㄞˋ
+蘇 0 ㄙㄨ
+甦 0 ㄙㄨ
+酥 0 ㄙㄨ
+穌 0 ㄙㄨ
+囌 0 ㄙㄨ
+櫯 0 ㄙㄨ
+疏 0 ㄙㄨ
+蔬 0 ㄙㄨ
+薊 0 ㄙㄨ
+姀 0 ㄙㄨ
+鉌 0 ㄙㄨ
+鞂 0 ㄙㄨ
+龢 0 ㄙㄨ
+疎 0 ㄙㄨ
+踈 0 ㄙㄨ
+鯂 0 ㄙㄨ
+蘓 0 ㄙㄨ
+松 0 ㄙㄨㄥ
+鬆 0 ㄙㄨㄥ
+淞 0 ㄙㄨㄥ
+嵩 0 ㄙㄨㄥ
+忪 0 ㄙㄨㄥ
+菘 0 ㄙㄨㄥ
+娀 0 ㄙㄨㄥ
+崧 0 ㄙㄨㄥ
+濍 0 ㄙㄨㄥ
+倯 0 ㄙㄨㄥ
+硹 0 ㄙㄨㄥ
+蜙 0 ㄙㄨㄥ
+枀 0 ㄙㄨㄥ
+柗 0 ㄙㄨㄥ
+凇 0 ㄙㄨㄥ
+庺 0 ㄙㄨㄥ
+梥 0 ㄙㄨㄥ
+憽 0 ㄙㄨㄥ
+檧 0 ㄙㄨㄥ
+聳 0 ㄙㄨㄥˇ
+慫 0 ㄙㄨㄥˇ
+悚 0 ㄙㄨㄥˇ
+竦 0 ㄙㄨㄥˇ
+傱 0 ㄙㄨㄥˇ
+愯 0 ㄙㄨㄥˇ
+嵷 0 ㄙㄨㄥˇ
+駷 0 ㄙㄨㄥˇ
+捒 0 ㄙㄨㄥˇ
+摗 0 ㄙㄨㄥˇ
+㩳 0 ㄙㄨㄥˇ
+耸 0 ㄙㄨㄥˇ
+送 0 ㄙㄨㄥˋ
+宋 0 ㄙㄨㄥˋ
+頌 0 ㄙㄨㄥˋ
+訟 0 ㄙㄨㄥˋ
+誦 0 ㄙㄨㄥˋ
+㕬 0 ㄙㄨㄥˋ
+餸 0 ㄙㄨㄥˋ
+悚 0 ㄙㄨㄥˊ
+酸 0 ㄙㄨㄢ
+痠 0 ㄙㄨㄢ
+狻 0 ㄙㄨㄢ
+匴 0 ㄙㄨㄢˇ
+篹 0 ㄙㄨㄢˇ
+算 0 ㄙㄨㄢˋ
+蒜 0 ㄙㄨㄢˋ
+筭 0 ㄙㄨㄢˋ
+萛 0 ㄙㄨㄢˋ
+匴 0 ㄙㄨㄢˋ
+祘 0 ㄙㄨㄢˋ
+訴 0 ㄙㄨˋ
+速 0 ㄙㄨˋ
+素 0 ㄙㄨˋ
+肅 0 ㄙㄨˋ
+宿 0 ㄙㄨˋ
+塑 0 ㄙㄨˋ
+夙 0 ㄙㄨˋ
+粟 0 ㄙㄨˋ
+溯 0 ㄙㄨˋ
+餗 0 ㄙㄨˋ
+愬 0 ㄙㄨˋ
+蓿 0 ㄙㄨˋ
+縮 0 ㄙㄨˋ
+觫 0 ㄙㄨˋ
+愫 0 ㄙㄨˋ
+膆 0 ㄙㄨˋ
+謖 0 ㄙㄨˋ
+嗉 0 ㄙㄨˋ
+橚 0 ㄙㄨˋ
+泝 0 ㄙㄨˋ
+涑 0 ㄙㄨˋ
+潚 0 ㄙㄨˋ
+簌 0 ㄙㄨˋ
+蔌 0 ㄙㄨˋ
+樕 0 ㄙㄨˋ
+遫 0 ㄙㄨˋ
+驌 0 ㄙㄨˋ
+鱐 0 ㄙㄨˋ
+鷫 0 ㄙㄨˋ
+嫊 0 ㄙㄨˋ
+玊 0 ㄙㄨˋ
+榡 0 ㄙㄨˋ
+洬 0 ㄙㄨˋ
+栜 0 ㄙㄨˋ
+傃 0 ㄙㄨˋ
+溹 0 ㄙㄨˋ
+憟 0 ㄙㄨˋ
+鋉 0 ㄙㄨˋ
+縤 0 ㄙㄨˋ
+藗 0 ㄙㄨˋ
+僳 0 ㄙㄨˋ
+窣 0 ㄙㄨˋ
+數 0 ㄙㄨˋ
+稷 0 ㄙㄨˋ
+摍 0 ㄙㄨˋ
+熽 0 ㄙㄨˋ
+蹜 0 ㄙㄨˋ
+颽 0 ㄙㄨˋ
+珟 0 ㄙㄨˋ
+殐 0 ㄙㄨˋ
+粛 0 ㄙㄨˋ
+塐 0 ㄙㄨˋ
+㨞 0 ㄙㄨˋ
+数 0 ㄙㄨˋ
+溸 0 ㄙㄨˋ
+趚 0 ㄙㄨˋ
+遡 0 ㄙㄨˋ
+樎 0 ㄙㄨˋ
+㯈 0 ㄙㄨˋ
+潥 0 ㄙㄨˋ
+璛 0 ㄙㄨˋ
+碿 0 ㄙㄨˋ
+㩋 0 ㄙㄨˋ
+俗 0 ㄙㄨˊ
+縮 0 ㄙㄨㄛ
+梭 0 ㄙㄨㄛ
+莎 0 ㄙㄨㄛ
+唆 0 ㄙㄨㄛ
+娑 0 ㄙㄨㄛ
+簑 0 ㄙㄨㄛ
+嗦 0 ㄙㄨㄛ
+傞 0 ㄙㄨㄛ
+挲 0 ㄙㄨㄛ
+蓑 0 ㄙㄨㄛ
+桫 0 ㄙㄨㄛ
+蹜 0 ㄙㄨㄛ
+莏 0 ㄙㄨㄛ
+趖 0 ㄙㄨㄛ
+摍 0 ㄙㄨㄛ
+嗾 0 ㄙㄨㄛ
+莤 0 ㄙㄨㄛ
+㛖 0 ㄙㄨㄛ
+挱 0 ㄙㄨㄛ
+桬 0 ㄙㄨㄛ
+鮻 0 ㄙㄨㄛ
+䔋 0 ㄙㄨㄛ
+所 0 ㄙㄨㄛˇ
+索 0 ㄙㄨㄛˇ
+鎖 0 ㄙㄨㄛˇ
+瑣 0 ㄙㄨㄛˇ
+璅 0 ㄙㄨㄛˇ
+嗩 0 ㄙㄨㄛˇ
+摵 0 ㄙㄨㄛˇ
+鎍 0 ㄙㄨㄛˇ
+鏼 0 ㄙㄨㄛˇ
+惢 0 ㄙㄨㄛˇ
+溑 0 ㄙㄨㄛˇ
+鎻 0 ㄙㄨㄛˇ
+鏁 0 ㄙㄨㄛˇ
+暛 0 ㄙㄨㄛˇ
+褨 0 ㄙㄨㄛˇ
+擌 0 ㄙㄨㄛˇ
+逤 0 ㄙㄨㄛˋ
+些 0 ㄙㄨㄛˋ
+塑 0 ㄙㄨㄛˋ
+溯 0 ㄙㄨㄛˋ
+㱔 0 ㄙㄨㄛˋ
+塐 0 ㄙㄨㄛˋ
+蜶 0 ㄙㄨㄛˋ
+遡 0 ㄙㄨㄛˋ
+索 0 ㄙㄨㄛˊ
+雖 0 ㄙㄨㄟ
+綏 0 ㄙㄨㄟ
+濉 0 ㄙㄨㄟ
+睢 0 ㄙㄨㄟ
+荽 0 ㄙㄨㄟ
+毸 0 ㄙㄨㄟ
+眭 0 ㄙㄨㄟ
+浽 0 ㄙㄨㄟ
+哸 0 ㄙㄨㄟ
+娞 0 ㄙㄨㄟ
+荾 0 ㄙㄨㄟ
+滖 0 ㄙㄨㄟ
+尿 0 ㄙㄨㄟ
+葰 0 ㄙㄨㄟ
+雎 0 ㄙㄨㄟ
+夊 0 ㄙㄨㄟ
+芕 0 ㄙㄨㄟ
+虽 0 ㄙㄨㄟ
+奞 0 ㄙㄨㄟ
+熣 0 ㄙㄨㄟ
+鴡 0 ㄙㄨㄟ
+䕑 0 ㄙㄨㄟ
+鞖 0 ㄙㄨㄟ
+髓 0 ㄙㄨㄟˇ
+嶲 0 ㄙㄨㄟˇ
+瀡 0 ㄙㄨㄟˇ
+巂 0 ㄙㄨㄟˇ
+靃 0 ㄙㄨㄟˇ
+雟 0 ㄙㄨㄟˇ
+膸 0 ㄙㄨㄟˇ
+髄 0 ㄙㄨㄟˇ
+歲 0 ㄙㄨㄟˋ
+遂 0 ㄙㄨㄟˋ
+碎 0 ㄙㄨㄟˋ
+穗 0 ㄙㄨㄟˋ
+隧 0 ㄙㄨㄟˋ
+祟 0 ㄙㄨㄟˋ
+燧 0 ㄙㄨㄟˋ
+誶 0 ㄙㄨㄟˋ
+睟 0 ㄙㄨㄟˋ
+穟 0 ㄙㄨㄟˋ
+璲 0 ㄙㄨㄟˋ
+檖 0 ㄙㄨㄟˋ
+襚 0 ㄙㄨㄟˋ
+鐩 0 ㄙㄨㄟˋ
+邃 0 ㄙㄨㄟˋ
+埣 0 ㄙㄨㄟˋ
+賥 0 ㄙㄨㄟˋ
+檅 0 ㄙㄨㄟˋ
+繀 0 ㄙㄨㄟˋ
+禭 0 ㄙㄨㄟˋ
+旞 0 ㄙㄨㄟˋ
+繸 0 ㄙㄨㄟˋ
+鐆 0 ㄙㄨㄟˋ
+術 0 ㄙㄨㄟˋ
+箤 0 ㄙㄨㄟˋ
+劌 0 ㄙㄨㄟˋ
+薉 0 ㄙㄨㄟˋ
+繐 0 ㄙㄨㄟˋ
+鏏 0 ㄙㄨㄟˋ
+鐬 0 ㄙㄨㄟˋ
+饖 0 ㄙㄨㄟˋ
+顪 0 ㄙㄨㄟˋ
+亗 0 ㄙㄨㄟˋ
+砕 0 ㄙㄨㄟˋ
+嵗 0 ㄙㄨㄟˋ
+歳 0 ㄙㄨㄟˋ
+煫 0 ㄙㄨㄟˋ
+穂 0 ㄙㄨㄟˋ
+嬘 0 ㄙㄨㄟˋ
+澻 0 ㄙㄨㄟˋ
+譢 0 ㄙㄨㄟˋ
+韢 0 ㄙㄨㄟˋ
+疩 0 ㄙㄨㄟˋ
+隨 0 ㄙㄨㄟˊ
+隋 0 ㄙㄨㄟˊ
+雟 0 ㄙㄨㄟˊ
+綏 0 ㄙㄨㄟˊ
+遂 0 ㄙㄨㄟˊ
+雖 0 ㄙㄨㄟˊ
+陏 0 ㄙㄨㄟˊ
+虽 0 ㄙㄨㄟˊ
+遀 0 ㄙㄨㄟˊ
+随 0 ㄙㄨㄟˊ
+瓍 0 ㄙㄨㄟˊ
+孫 0 ㄙㄨㄣ
+飧 0 ㄙㄨㄣ
+蓀 0 ㄙㄨㄣ
+猻 0 ㄙㄨㄣ
+搎 0 ㄙㄨㄣ
+槂 0 ㄙㄨㄣ
+薞 0 ㄙㄨㄣ
+蕵 0 ㄙㄨㄣ
+飱 0 ㄙㄨㄣ
+損 0 ㄙㄨㄣˇ
+筍 0 ㄙㄨㄣˇ
+榫 0 ㄙㄨㄣˇ
+簨 0 ㄙㄨㄣˇ
+鎨 0 ㄙㄨㄣˇ
+隕 0 ㄙㄨㄣˇ
+芛 0 ㄙㄨㄣˇ
+塤 0 ㄙㄨㄣˇ
+笋 0 ㄙㄨㄣˇ
+磒 0 ㄙㄨㄣˇ
+箰 0 ㄙㄨㄣˇ
+潠 0 ㄙㄨㄣˋ
+愻 0 ㄙㄨㄣˋ
+孫 0 ㄙㄨㄣˋ
+巽 0 ㄙㄨㄣˋ
+遜 0 ㄙㄨㄣˋ
+噀 0 ㄙㄨㄣˋ
+巺 0 ㄙㄨㄣˋ
+摌 0 ㄙㄨㄣˋ
+顨 0 ㄙㄨㄣˋ
+色 0 ㄙㄜˋ
+塞 0 ㄙㄜˋ
+瑟 0 ㄙㄜˋ
+圾 0 ㄙㄜˋ
+嗇 0 ㄙㄜˋ
+澀 0 ㄙㄜˋ
+穡 0 ㄙㄜˋ
+濇 0 ㄙㄜˋ
+轖 0 ㄙㄜˋ
+譅 0 ㄙㄜˋ
+銫 0 ㄙㄜˋ
+璱 0 ㄙㄜˋ
+翜 0 ㄙㄜˋ
+犞 0 ㄙㄜˋ
+飋 0 ㄙㄜˋ
+濏 0 ㄙㄜˋ
+摵 0 ㄙㄜˋ
+鏼 0 ㄙㄜˋ
+歮 0 ㄙㄜˋ
+趇 0 ㄙㄜˋ
+雭 0 ㄙㄜˋ
+澁 0 ㄙㄜˋ
+懎 0 ㄙㄜˋ
+繬 0 ㄙㄜˋ
+穯 0 ㄙㄜˋ
+渋 0 ㄙㄜˋ
+歰 0 ㄙㄜˋ
+瀒 0 ㄙㄜˋ
+艘 0 ㄙㄠ
+騷 0 ㄙㄠ
+繅 0 ㄙㄠ
+搔 0 ㄙㄠ
+臊 0 ㄙㄠ
+慅 0 ㄙㄠ
+溞 0 ㄙㄠ
+颾 0 ㄙㄠ
+鱢 0 ㄙㄠ
+橾 0 ㄙㄠ
+璅 0 ㄙㄠ
+瘙 0 ㄙㄠ
+糔 0 ㄙㄠ
+繰 0 ㄙㄠ
+鰺 0 ㄙㄠ
+鰠 0 ㄙㄠ
+掃 0 ㄙㄠˇ
+嫂 0 ㄙㄠˇ
+埽 0 ㄙㄠˇ
+掃 0 ㄙㄠˋ
+臊 0 ㄙㄠˋ
+氉 0 ㄙㄠˋ
+瘙 0 ㄙㄠˋ
+埽 0 ㄙㄠˋ
+髞 0 ㄙㄠˋ
+塞 0 ㄙㄟ
+森 0 ㄙㄣ
+槮 0 ㄙㄣ
+罧 0 ㄙㄣ
+襂 0 ㄙㄣ
+幓 0 ㄙㄣ
+篸 0 ㄙㄣ
+穼 0 ㄙㄣ
+椮 0 ㄙㄣ
+ㄟ 0 ㄟ
+欸 0 ㄟ
+欸 0 ㄟˋ
+恩 0 ㄣ
+嗯 0 ㄣ
+ㄣ 0 ㄣ
+蒽 0 ㄣ
+峎 0 ㄣˇ
+摁 0 ㄣˋ
+ㄆ 0 ㄆ
+剖 0 ㄆㄡ
+吥 0 ㄆㄡ
+娝 0 ㄆㄡ
+剖 0 ㄆㄡˇ
+瓿 0 ㄆㄡˇ
+棓 0 ㄆㄡˇ
+婄 0 ㄆㄡˇ
+叵 0 ㄆㄡˇ
+培 0 ㄆㄡˇ
+掊 0 ㄆㄡˇ
+咅 0 ㄆㄡˇ
+勏 0 ㄆㄡˇ
+犃 0 ㄆㄡˇ
+箁 0 ㄆㄡˇ
+哣 0 ㄆㄡˇ
+掊 0 ㄆㄡˊ
+裒 0 ㄆㄡˊ
+抔 0 ㄆㄡˊ
+捊 0 ㄆㄡˊ
+抙 0 ㄆㄡˊ
+箁 0 ㄆㄡˊ
+錇 0 ㄆㄡˊ
+砰 0 ㄆㄥ
+烹 0 ㄆㄥ
+抨 0 ㄆㄥ
+怦 0 ㄆㄥ
+漰 0 ㄆㄥ
+澎 0 ㄆㄥ
+匉 0 ㄆㄥ
+閛 0 ㄆㄥ
+恲 0 ㄆㄥ
+軯 0 ㄆㄥ
+駍 0 ㄆㄥ
+磞 0 ㄆㄥ
+亨 0 ㄆㄥ
+硼 0 ㄆㄥ
+泙 0 ㄆㄥ
+淜 0 ㄆㄥ
+㛁 0 ㄆㄥ
+胓 0 ㄆㄥ
+㧸 0 ㄆㄥ
+硑 0 ㄆㄥ
+嘭 0 ㄆㄥ
+梈 0 ㄆㄥ
+捧 0 ㄆㄥˇ
+皏 0 ㄆㄥˇ
+淎 0 ㄆㄥˇ
+碰 0 ㄆㄥˋ
+堋 0 ㄆㄥˋ
+掽 0 ㄆㄥˋ
+椪 0 ㄆㄥˋ
+踫 0 ㄆㄥˋ
+甏 0 ㄆㄥˋ
+朋 0 ㄆㄥˊ
+彭 0 ㄆㄥˊ
+澎 0 ㄆㄥˊ
+蓬 0 ㄆㄥˊ
+膨 0 ㄆㄥˊ
+硼 0 ㄆㄥˊ
+棚 0 ㄆㄥˊ
+鵬 0 ㄆㄥˊ
+篷 0 ㄆㄥˊ
+蟛 0 ㄆㄥˊ
+芃 0 ㄆㄥˊ
+淜 0 ㄆㄥˊ
+鬅 0 ㄆㄥˊ
+痭 0 ㄆㄥˊ
+錋 0 ㄆㄥˊ
+倗 0 ㄆㄥˊ
+輣 0 ㄆㄥˊ
+傰 0 ㄆㄥˊ
+韸 0 ㄆㄥˊ
+髼 0 ㄆㄥˊ
+憉 0 ㄆㄥˊ
+樥 0 ㄆㄥˊ
+鑝 0 ㄆㄥˊ
+逢 0 ㄆㄥˊ
+堋 0 ㄆㄥˊ
+磞 0 ㄆㄥˊ
+竼 0 ㄆㄥˊ
+浲 0 ㄆㄥˊ
+塜 0 ㄆㄥˊ
+稝 0 ㄆㄥˊ
+塳 0 ㄆㄥˊ
+漨 0 ㄆㄥˊ
+槰 0 ㄆㄥˊ
+蟚 0 ㄆㄥˊ
+韼 0 ㄆㄥˊ
+騯 0 ㄆㄥˊ
+纄 0 ㄆㄥˊ
+蘕 0 ㄆㄥˊ
+鬔 0 ㄆㄥˊ
+㦀 0 ㄆㄥˊ
+䮾 0 ㄆㄥˊ
+乓 0 ㄆㄤ
+磅 0 ㄆㄤ
+滂 0 ㄆㄤ
+膀 0 ㄆㄤ
+汸 0 ㄆㄤ
+胮 0 ㄆㄤ
+膖 0 ㄆㄤ
+髈 0 ㄆㄤ
+霶 0 ㄆㄤ
+嗙 0 ㄆㄤˇ
+耪 0 ㄆㄤˇ
+覫 0 ㄆㄤˇ
+胖 0 ㄆㄤˋ
+㕩 0 ㄆㄤˋ
+炐 0 ㄆㄤˋ
+肨 0 ㄆㄤˋ
+旁 0 ㄆㄤˊ
+龐 0 ㄆㄤˊ
+膀 0 ㄆㄤˊ
+螃 0 ㄆㄤˊ
+徬 0 ㄆㄤˊ
+蒡 0 ㄆㄤˊ
+厖 0 ㄆㄤˊ
+尨 0 ㄆㄤˊ
+雱 0 ㄆㄤˊ
+逄 0 ㄆㄤˊ
+庬 0 ㄆㄤˊ
+篣 0 ㄆㄤˊ
+舽 0 ㄆㄤˊ
+彷 0 ㄆㄤˊ
+傍 0 ㄆㄤˊ
+嫎 0 ㄆㄤˊ
+龎 0 ㄆㄤˊ
+髈 0 ㄆㄤˊ
+潘 0 ㄆㄢ
+攀 0 ㄆㄢ
+眅 0 ㄆㄢ
+扳 0 ㄆㄢ
+拚 0 ㄆㄢ
+番 0 ㄆㄢ
+㐴 0 ㄆㄢ
+畨 0 ㄆㄢ
+坢 0 ㄆㄢˇ
+判 0 ㄆㄢˋ
+叛 0 ㄆㄢˋ
+盼 0 ㄆㄢˋ
+畔 0 ㄆㄢˋ
+拚 0 ㄆㄢˋ
+袢 0 ㄆㄢˋ
+泮 0 ㄆㄢˋ
+襻 0 ㄆㄢˋ
+詊 0 ㄆㄢˋ
+頄 0 ㄆㄢˋ
+溿 0 ㄆㄢˋ
+沜 0 ㄆㄢˋ
+牉 0 ㄆㄢˋ
+頖 0 ㄆㄢˋ
+拌 0 ㄆㄢˋ
+盻 0 ㄆㄢˋ
+冸 0 ㄆㄢˋ
+炍 0 ㄆㄢˋ
+鑻 0 ㄆㄢˋ
+鋬 0 ㄆㄢˋ
+盤 0 ㄆㄢˊ
+磐 0 ㄆㄢˊ
+蟠 0 ㄆㄢˊ
+般 0 ㄆㄢˊ
+胖 0 ㄆㄢˊ
+槃 0 ㄆㄢˊ
+蹣 0 ㄆㄢˊ
+磻 0 ㄆㄢˊ
+踫 0 ㄆㄢˊ
+鞶 0 ㄆㄢˊ
+幋 0 ㄆㄢˊ
+縏 0 ㄆㄢˊ
+柈 0 ㄆㄢˊ
+瀊 0 ㄆㄢˊ
+蒰 0 ㄆㄢˊ
+媻 0 ㄆㄢˊ
+搫 0 ㄆㄢˊ
+跘 0 ㄆㄢˊ
+弁 0 ㄆㄢˊ
+樊 0 ㄆㄢˊ
+顢 0 ㄆㄢˊ
+鎜 0 ㄆㄢˊ
+趴 0 ㄆㄚ
+葩 0 ㄆㄚ
+啪 0 ㄆㄚ
+蚆 0 ㄆㄚ
+舥 0 ㄆㄚ
+夿 0 ㄆㄚ
+妑 0 ㄆㄚ
+皅 0 ㄆㄚ
+𥐙 0 ㄆㄚ
+怕 0 ㄆㄚˋ
+帕 0 ㄆㄚˋ
+帊 0 ㄆㄚˋ
+袙 0 ㄆㄚˋ
+汃 0 ㄆㄚˋ
+袹 0 ㄆㄚˋ
+帞 0 ㄆㄚˋ
+絈 0 ㄆㄚˋ
+爬 0 ㄆㄚˊ
+扒 0 ㄆㄚˊ
+琶 0 ㄆㄚˊ
+耙 0 ㄆㄚˊ
+杷 0 ㄆㄚˊ
+跁 0 ㄆㄚˊ
+筢 0 ㄆㄚˊ
+欛 0 ㄆㄚˊ
+潖 0 ㄆㄚˊ
+杷 0 ㄆㄚ˙
+琶 0 ㄆㄚ˙
+欛 0 ㄆㄚ˙
+拍 0 ㄆㄞ
+啪 0 ㄆㄞ
+𢫦 0 ㄆㄞ
+俖 0 ㄆㄞˇ
+排 0 ㄆㄞˇ
+㧳 0 ㄆㄞˇ
+派 0 ㄆㄞˋ
+湃 0 ㄆㄞˋ
+鎃 0 ㄆㄞˋ
+蒎 0 ㄆㄞˋ
+排 0 ㄆㄞˊ
+牌 0 ㄆㄞˊ
+徘 0 ㄆㄞˊ
+俳 0 ㄆㄞˊ
+簰 0 ㄆㄞˊ
+棑 0 ㄆㄞˊ
+箄 0 ㄆㄞˊ
+輫 0 ㄆㄞˊ
+猅 0 ㄆㄞˊ
+波 0 ㄆㄛ
+潑 0 ㄆㄛ
+坡 0 ㄆㄛ
+陂 0 ㄆㄛ
+鏺 0 ㄆㄛ
+癹 0 ㄆㄛ
+翍 0 ㄆㄛ
+頗 0 ㄆㄛ
+沷 0 ㄆㄛ
+汖 0 ㄆㄛ
+昁 0 ㄆㄛ
+鉕 0 ㄆㄛ
+頗 0 ㄆㄛˇ
+剖 0 ㄆㄛˇ
+叵 0 ㄆㄛˇ
+笸 0 ㄆㄛˇ
+尀 0 ㄆㄛˇ
+鉕 0 ㄆㄛˇ
+駊 0 ㄆㄛˇ
+箥 0 ㄆㄛˇ
+破 0 ㄆㄛˋ
+迫 0 ㄆㄛˋ
+魄 0 ㄆㄛˋ
+珀 0 ㄆㄛˋ
+泊 0 ㄆㄛˋ
+朴 0 ㄆㄛˋ
+粕 0 ㄆㄛˋ
+醱 0 ㄆㄛˋ
+岶 0 ㄆㄛˋ
+烞 0 ㄆㄛˋ
+蒪 0 ㄆㄛˋ
+扑 0 ㄆㄛˋ
+拍 0 ㄆㄛˋ
+釙 0 ㄆㄛˋ
+胉 0 ㄆㄛˋ
+哱 0 ㄆㄛˋ
+濼 0 ㄆㄛˋ
+廹 0 ㄆㄛˋ
+狛 0 ㄆㄛˋ
+洦 0 ㄆㄛˋ
+砶 0 ㄆㄛˋ
+奤 0 ㄆㄛˋ
+湐 0 ㄆㄛˋ
+屰 0 ㄆㄛˋ
+婆 0 ㄆㄛˊ
+鄱 0 ㄆㄛˊ
+皤 0 ㄆㄛˊ
+櫇 0 ㄆㄛˊ
+番 0 ㄆㄛˊ
+幡 0 ㄆㄛˊ
+繁 0 ㄆㄛˊ
+碆 0 ㄆㄛˊ
+畨 0 ㄆㄛˊ
+嘙 0 ㄆㄛˊ
+蔢 0 ㄆㄛˊ
+撲 0 ㄆㄨ
+仆 0 ㄆㄨ
+鋪 0 ㄆㄨ
+噗 0 ㄆㄨ
+扑 0 ㄆㄨ
+痡 0 ㄆㄨ
+抪 0 ㄆㄨ
+瞨 0 ㄆㄨ
+駇 0 ㄆㄨ
+舖 0 ㄆㄨ
+鋍 0 ㄆㄨ
+攴 0 ㄆㄨ
+炇 0 ㄆㄨ
+陠 0 ㄆㄨ
+豧 0 ㄆㄨ
+擈 0 ㄆㄨ
+普 0 ㄆㄨˇ
+浦 0 ㄆㄨˇ
+埔 0 ㄆㄨˇ
+譜 0 ㄆㄨˇ
+圃 0 ㄆㄨˇ
+溥 0 ㄆㄨˇ
+烳 0 ㄆㄨˇ
+氆 0 ㄆㄨˇ
+鐠 0 ㄆㄨˇ
+潽 0 ㄆㄨˇ
+誧 0 ㄆㄨˇ
+哺 0 ㄆㄨˇ
+樸 0 ㄆㄨˇ
+賻 0 ㄆㄨˇ
+暜 0 ㄆㄨˇ
+諩 0 ㄆㄨˇ
+檏 0 ㄆㄨˇ
+暴 0 ㄆㄨˋ
+鋪 0 ㄆㄨˋ
+瀑 0 ㄆㄨˋ
+曝 0 ㄆㄨˋ
+舖 0 ㄆㄨˋ
+堡 0 ㄆㄨˋ
+昢 0 ㄆㄨˋ
+堢 0 ㄆㄨˋ
+曓 0 ㄆㄨˋ
+僕 0 ㄆㄨˊ
+樸 0 ㄆㄨˊ
+葡 0 ㄆㄨˊ
+蒲 0 ㄆㄨˊ
+菩 0 ㄆㄨˊ
+朴 0 ㄆㄨˊ
+蹼 0 ㄆㄨˊ
+脯 0 ㄆㄨˊ
+濮 0 ㄆㄨˊ
+璞 0 ㄆㄨˊ
+匍 0 ㄆㄨˊ
+莆 0 ㄆㄨˊ
+蒱 0 ㄆㄨˊ
+襆 0 ㄆㄨˊ
+酺 0 ㄆㄨˊ
+釙 0 ㄆㄨˊ
+鏷 0 ㄆㄨˊ
+轐 0 ㄆㄨˊ
+纀 0 ㄆㄨˊ
+墣 0 ㄆㄨˊ
+瞨 0 ㄆㄨˊ
+醭 0 ㄆㄨˊ
+圤 0 ㄆㄨˊ
+㺪 0 ㄆㄨˊ
+箁 0 ㄆㄨˊ
+幞 0 ㄆㄨˊ
+檏 0 ㄆㄨˊ
+襥 0 ㄆㄨˊ
+穙 0 ㄆㄨˊ
+菐 0 ㄆㄨˊ
+拋 0 ㄆㄠ
+脬 0 ㄆㄠ
+泡 0 ㄆㄠ
+抛 0 ㄆㄠ
+跑 0 ㄆㄠˇ
+泡 0 ㄆㄠˋ
+砲 0 ㄆㄠˋ
+炮 0 ㄆㄠˋ
+皰 0 ㄆㄠˋ
+奅 0 ㄆㄠˋ
+麭 0 ㄆㄠˋ
+髱 0 ㄆㄠˋ
+疱 0 ㄆㄠˋ
+靤 0 ㄆㄠˋ
+礮 0 ㄆㄠˋ
+礟 0 ㄆㄠˋ
+袍 0 ㄆㄠˊ
+咆 0 ㄆㄠˊ
+刨 0 ㄆㄠˊ
+匏 0 ㄆㄠˊ
+庖 0 ㄆㄠˊ
+麃 0 ㄆㄠˊ
+炰 0 ㄆㄠˊ
+齙 0 ㄆㄠˊ
+鞄 0 ㄆㄠˊ
+炮 0 ㄆㄠˊ
+瓟 0 ㄆㄠˊ
+跑 0 ㄆㄠˊ
+鉋 0 ㄆㄠˊ
+袌 0 ㄆㄠˊ
+颮 0 ㄆㄠˊ
+狍 0 ㄆㄠˊ
+爮 0 ㄆㄠˊ
+軳 0 ㄆㄠˊ
+麅 0 ㄆㄠˊ
+礮 0 ㄆㄠˊ
+礟 0 ㄆㄠˊ
+胚 0 ㄆㄟ
+呸 0 ㄆㄟ
+坏 0 ㄆㄟ
+醅 0 ㄆㄟ
+柸 0 ㄆㄟ
+岯 0 ㄆㄟ
+垺 0 ㄆㄟ
+衃 0 ㄆㄟ
+丕 0 ㄆㄟ
+披 0 ㄆㄟ
+坯 0 ㄆㄟ
+怌 0 ㄆㄟ
+妚 0 ㄆㄟ
+抷 0 ㄆㄟ
+肧 0 ㄆㄟ
+琣 0 ㄆㄟˇ
+昢 0 ㄆㄟˇ
+配 0 ㄆㄟˋ
+佩 0 ㄆㄟˋ
+沛 0 ㄆㄟˋ
+珮 0 ㄆㄟˋ
+霈 0 ㄆㄟˋ
+帔 0 ㄆㄟˋ
+旆 0 ㄆㄟˋ
+浿 0 ㄆㄟˋ
+轡 0 ㄆㄟˋ
+姵 0 ㄆㄟˋ
+翇 0 ㄆㄟˋ
+伂 0 ㄆㄟˋ
+妃 0 ㄆㄟˋ
+肺 0 ㄆㄟˋ
+朏 0 ㄆㄟˋ
+淠 0 ㄆㄟˋ
+琲 0 ㄆㄟˋ
+昁 0 ㄆㄟˋ
+斾 0 ㄆㄟˋ
+苝 0 ㄆㄟˋ
+㻗 0 ㄆㄟˋ
+馷 0 ㄆㄟˋ
+嶏 0 ㄆㄟˋ
+笩 0 ㄆㄟˋ
+培 0 ㄆㄟˊ
+賠 0 ㄆㄟˊ
+陪 0 ㄆㄟˊ
+裴 0 ㄆㄟˊ
+邳 0 ㄆㄟˊ
+碚 0 ㄆㄟˊ
+毰 0 ㄆㄟˊ
+陫 0 ㄆㄟˊ
+荖 0 ㄆㄟˊ
+坏 0 ㄆㄟˊ
+斐 0 ㄆㄟˊ
+焙 0 ㄆㄟˊ
+蓓 0 ㄆㄟˊ
+坯 0 ㄆㄟˊ
+岯 0 ㄆㄟˊ
+踣 0 ㄆㄟˊ
+醅 0 ㄆㄟˊ
+阫 0 ㄆㄟˊ
+裵 0 ㄆㄟˊ
+噴 0 ㄆㄣ
+歕 0 ㄆㄣ
+賁 0 ㄆㄣ
+濆 0 ㄆㄣ
+喯 0 ㄆㄣ
+呠 0 ㄆㄣˇ
+翸 0 ㄆㄣˇ
+翉 0 ㄆㄣˇ
+噴 0 ㄆㄣˋ
+歕 0 ㄆㄣˋ
+喯 0 ㄆㄣˋ
+盆 0 ㄆㄣˊ
+湓 0 ㄆㄣˊ
+葐 0 ㄆㄣˊ
+瓫 0 ㄆㄣˊ
+㖹 0 ㄆㄣˊ
+批 0 ㄆㄧ
+披 0 ㄆㄧ
+匹 0 ㄆㄧ
+劈 0 ㄆㄧ
+霹 0 ㄆㄧ
+砒 0 ㄆㄧ
+被 0 ㄆㄧ
+丕 0 ㄆㄧ
+坯 0 ㄆㄧ
+坏 0 ㄆㄧ
+伾 0 ㄆㄧ
+狉 0 ㄆㄧ
+紕 0 ㄆㄧ
+秠 0 ㄆㄧ
+鈹 0 ㄆㄧ
+鴄 0 ㄆㄧ
+怌 0 ㄆㄧ
+翍 0 ㄆㄧ
+釽 0 ㄆㄧ
+憵 0 ㄆㄧ
+銔 0 ㄆㄧ
+駓 0 ㄆㄧ
+髬 0 ㄆㄧ
+胚 0 ㄆㄧ
+帔 0 ㄆㄧ
+邳 0 ㄆㄧ
+鎞 0 ㄆㄧ
+妚 0 ㄆㄧ
+阫 0 ㄆㄧ
+抷 0 ㄆㄧ
+炋 0 ㄆㄧ
+狓 0 ㄆㄧ
+肧 0 ㄆㄧ
+秛 0 ㄆㄧ
+耚 0 ㄆㄧ
+㓻 0 ㄆㄧ
+豾 0 ㄆㄧ
+鈈 0 ㄆㄧ
+鉟 0 ㄆㄧ
+磇 0 ㄆㄧ
+悂 0 ㄆㄧ
+䤵 0 ㄆㄧ
+鮍 0 ㄆㄧ
+瞥 0 ㄆㄧㄝ
+撇 0 ㄆㄧㄝ
+氕 0 ㄆㄧㄝ
+潎 0 ㄆㄧㄝ
+蟞 0 ㄆㄧㄝ
+撆 0 ㄆㄧㄝ
+𢳂 0 ㄆㄧㄝ
+撇 0 ㄆㄧㄝˇ
+苤 0 ㄆㄧㄝˇ
+丿 0 ㄆㄧㄝˇ
+撆 0 ㄆㄧㄝˇ
+鐅 0 ㄆㄧㄝˇ
+嫳 0 ㄆㄧㄝˋ
+乒 0 ㄆㄧㄥ
+娉 0 ㄆㄧㄥ
+砯 0 ㄆㄧㄥ
+頩 0 ㄆㄧㄥ
+覮 0 ㄆㄧㄥ
+砰 0 ㄆㄧㄥ
+甹 0 ㄆㄧㄥ
+俜 0 ㄆㄧㄥ
+艵 0 ㄆㄧㄥ
+硑 0 ㄆㄧㄥ
+聠 0 ㄆㄧㄥ
+絣 0 ㄆㄧㄥˇ
+聘 0 ㄆㄧㄥˋ
+平 0 ㄆㄧㄥˊ
+瓶 0 ㄆㄧㄥˊ
+憑 0 ㄆㄧㄥˊ
+評 0 ㄆㄧㄥˊ
+屏 0 ㄆㄧㄥˊ
+蘋 0 ㄆㄧㄥˊ
+萍 0 ㄆㄧㄥˊ
+坪 0 ㄆㄧㄥˊ
+枰 0 ㄆㄧㄥˊ
+泙 0 ㄆㄧㄥˊ
+帡 0 ㄆㄧㄥˊ
+洴 0 ㄆㄧㄥˊ
+缾 0 ㄆㄧㄥˊ
+軿 0 ㄆㄧㄥˊ
+俜 0 ㄆㄧㄥˊ
+玶 0 ㄆㄧㄥˊ
+甹 0 ㄆㄧㄥˊ
+苹 0 ㄆㄧㄥˊ
+郱 0 ㄆㄧㄥˊ
+呯 0 ㄆㄧㄥˊ
+竮 0 ㄆㄧㄥˊ
+艵 0 ㄆㄧㄥˊ
+蛢 0 ㄆㄧㄥˊ
+馮 0 ㄆㄧㄥˊ
+荓 0 ㄆㄧㄥˊ
+蓱 0 ㄆㄧㄥˊ
+炾 0 ㄆㄧㄥˊ
+抨 0 ㄆㄧㄥˊ
+秤 0 ㄆㄧㄥˊ
+摒 0 ㄆㄧㄥˊ
+栟 0 ㄆㄧㄥˊ
+銔 0 ㄆㄧㄥˊ
+鵧 0 ㄆㄧㄥˊ
+凭 0 ㄆㄧㄥˊ
+胓 0 ㄆㄧㄥˊ
+㺸 0 ㄆㄧㄥˊ
+㻂 0 ㄆㄧㄥˊ
+屛 0 ㄆㄧㄥˊ
+帲 0 ㄆㄧㄥˊ
+蚲 0 ㄆㄧㄥˊ
+幈 0 ㄆㄧㄥˊ
+甁 0 ㄆㄧㄥˊ
+凴 0 ㄆㄧㄥˊ
+箳 0 ㄆㄧㄥˊ
+輧 0 ㄆㄧㄥˊ
+鮃 0 ㄆㄧㄥˊ
+簈 0 ㄆㄧㄥˊ
+薲 0 ㄆㄧㄥˊ
+慿 0 ㄆㄧㄥˊ
+篇 0 ㄆㄧㄢ
+偏 0 ㄆㄧㄢ
+扁 0 ㄆㄧㄢ
+翩 0 ㄆㄧㄢ
+萹 0 ㄆㄧㄢ
+媥 0 ㄆㄧㄢ
+貵 0 ㄆㄧㄢ
+頨 0 ㄆㄧㄢ
+鶣 0 ㄆㄧㄢ
+片 0 ㄆㄧㄢ
+犏 0 ㄆㄧㄢ
+貵 0 ㄆㄧㄢˇ
+諞 0 ㄆㄧㄢˇ
+覑 0 ㄆㄧㄢˇ
+片 0 ㄆㄧㄢˋ
+騙 0 ㄆㄧㄢˋ
+遍 0 ㄆㄧㄢˋ
+徧 0 ㄆㄧㄢˋ
+騗 0 ㄆㄧㄢˋ
+便 0 ㄆㄧㄢˊ
+胼 0 ㄆㄧㄢˊ
+駢 0 ㄆㄧㄢˊ
+諞 0 ㄆㄧㄢˊ
+蹁 0 ㄆㄧㄢˊ
+楩 0 ㄆㄧㄢˊ
+骿 0 ㄆㄧㄢˊ
+褊 0 ㄆㄧㄢˊ
+楄 0 ㄆㄧㄢˊ
+跰 0 ㄆㄧㄢˊ
+緶 0 ㄆㄧㄢˊ
+腁 0 ㄆㄧㄢˊ
+騈 0 ㄆㄧㄢˊ
+賆 0 ㄆㄧㄢˊ
+否 0 ㄆㄧˇ
+匹 0 ㄆㄧˇ
+疋 0 ㄆㄧˇ
+痞 0 ㄆㄧˇ
+嚭 0 ㄆㄧˇ
+苤 0 ㄆㄧˇ
+仳 0 ㄆㄧˇ
+庀 0 ㄆㄧˇ
+圮 0 ㄆㄧˇ
+崥 0 ㄆㄧˇ
+諀 0 ㄆㄧˇ
+毗 0 ㄆㄧˇ
+劈 0 ㄆㄧˇ
+癖 0 ㄆㄧˇ
+苉 0 ㄆㄧˇ
+脴 0 ㄆㄧˇ
+嶏 0 ㄆㄧˇ
+噽 0 ㄆㄧˇ
+䫌 0 ㄆㄧˇ
+譬 0 ㄆㄧˋ
+闢 0 ㄆㄧˋ
+僻 0 ㄆㄧˋ
+媲 0 ㄆㄧˋ
+屁 0 ㄆㄧˋ
+辟 0 ㄆㄧˋ
+癖 0 ㄆㄧˋ
+甓 0 ㄆㄧˋ
+擗 0 ㄆㄧˋ
+澼 0 ㄆㄧˋ
+濞 0 ㄆㄧˋ
+淠 0 ㄆㄧˋ
+揊 0 ㄆㄧˋ
+潎 0 ㄆㄧˋ
+鷿 0 ㄆㄧˋ
+髲 0 ㄆㄧˋ
+礔 0 ㄆㄧˋ
+副 0 ㄆㄧˋ
+埤 0 ㄆㄧˋ
+堛 0 ㄆㄧˋ
+廦 0 ㄆㄧˋ
+壀 0 ㄆㄧˋ
+礕 0 ㄆㄧˋ
+疈 0 ㄆㄧˋ
+鸊 0 ㄆㄧˋ
+皮 0 ㄆㄧˊ
+疲 0 ㄆㄧˊ
+脾 0 ㄆㄧˊ
+琵 0 ㄆㄧˊ
+枇 0 ㄆㄧˊ
+裨 0 ㄆㄧˊ
+啤 0 ㄆㄧˊ
+毗 0 ㄆㄧˊ
+埤 0 ㄆㄧˊ
+沘 0 ㄆㄧˊ
+貔 0 ㄆㄧˊ
+陂 0 ㄆㄧˊ
+羆 0 ㄆㄧˊ
+罷 0 ㄆㄧˊ
+紕 0 ㄆㄧˊ
+郫 0 ㄆㄧˊ
+陴 0 ㄆㄧˊ
+鼙 0 ㄆㄧˊ
+鈹 0 ㄆㄧˊ
+膍 0 ㄆㄧˊ
+毘 0 ㄆㄧˊ
+阰 0 ㄆㄧˊ
+蚽 0 ㄆㄧˊ
+蜱 0 ㄆㄧˊ
+玭 0 ㄆㄧˊ
+笓 0 ㄆㄧˊ
+鈚 0 ㄆㄧˊ
+錍 0 ㄆㄧˊ
+魾 0 ㄆㄧˊ
+螷 0 ㄆㄧˊ
+犤 0 ㄆㄧˊ
+毞 0 ㄆㄧˊ
+猈 0 ㄆㄧˊ
+蠯 0 ㄆㄧˊ
+比 0 ㄆㄧˊ
+芘 0 ㄆㄧˊ
+蚍 0 ㄆㄧˊ
+崥 0 ㄆㄧˊ
+椑 0 ㄆㄧˊ
+痹 0 ㄆㄧˊ
+髀 0 ㄆㄧˊ
+夶 0 ㄆㄧˊ
+肶 0 ㄆㄧˊ
+罢 0 ㄆㄧˊ
+渒 0 ㄆㄧˊ
+豼 0 ㄆㄧˊ
+焷 0 ㄆㄧˊ
+鈈 0 ㄆㄧˊ
+鉟 0 ㄆㄧˊ
+壀 0 ㄆㄧˊ
+篺 0 ㄆㄧˊ
+㓟 0 ㄆㄧˊ
+魮 0 ㄆㄧˊ
+隦 0 ㄆㄧˊ
+朇 0 ㄆㄧˊ
+飄 0 ㄆㄧㄠ
+漂 0 ㄆㄧㄠ
+慓 0 ㄆㄧㄠ
+螵 0 ㄆㄧㄠ
+薸 0 ㄆㄧㄠ
+僄 0 ㄆㄧㄠ
+旚 0 ㄆㄧㄠ
+翲 0 ㄆㄧㄠ
+魒 0 ㄆㄧㄠ
+票 0 ㄆㄧㄠ
+嫖 0 ㄆㄧㄠ
+縹 0 ㄆㄧㄠ
+嘌 0 ㄆㄧㄠ
+彯 0 ㄆㄧㄠ
+暼 0 ㄆㄧㄠ
+麅 0 ㄆㄧㄠ
+闝 0 ㄆㄧㄠ
+飃 0 ㄆㄧㄠ
+漂 0 ㄆㄧㄠˇ
+莩 0 ㄆㄧㄠˇ
+縹 0 ㄆㄧㄠˇ
+瞟 0 ㄆㄧㄠˇ
+殍 0 ㄆㄧㄠˇ
+皫 0 ㄆㄧㄠˇ
+摽 0 ㄆㄧㄠˇ
+醥 0 ㄆㄧㄠˇ
+犥 0 ㄆㄧㄠˇ
+剽 0 ㄆㄧㄠˇ
+篻 0 ㄆㄧㄠˇ
+顠 0 ㄆㄧㄠˇ
+勡 0 ㄆㄧㄠˇ
+票 0 ㄆㄧㄠˋ
+漂 0 ㄆㄧㄠˋ
+剽 0 ㄆㄧㄠˋ
+驃 0 ㄆㄧㄠˋ
+彯 0 ㄆㄧㄠˋ
+篻 0 ㄆㄧㄠˋ
+蔈 0 ㄆㄧㄠˋ
+縹 0 ㄆㄧㄠˋ
+鰾 0 ㄆㄧㄠˋ
+僄 0 ㄆㄧㄠˋ
+慓 0 ㄆㄧㄠˋ
+勡 0 ㄆㄧㄠˋ
+徱 0 ㄆㄧㄠˋ
+瓢 0 ㄆㄧㄠˊ
+嫖 0 ㄆㄧㄠˊ
+淲 0 ㄆㄧㄠˊ
+薸 0 ㄆㄧㄠˊ
+闝 0 ㄆㄧㄠˊ
+朴 0 ㄆㄧㄠˊ
+拼 0 ㄆㄧㄣ
+姘 0 ㄆㄧㄣ
+礗 0 ㄆㄧㄣ
+涄 0 ㄆㄧㄣ
+品 0 ㄆㄧㄣˇ
+煰 0 ㄆㄧㄣˇ
+嘂 0 ㄆㄧㄣˇ
+聘 0 ㄆㄧㄣˋ
+牝 0 ㄆㄧㄣˋ
+騁 0 ㄆㄧㄣˋ
+貧 0 ㄆㄧㄣˊ
+瀕 0 ㄆㄧㄣˊ
+頻 0 ㄆㄧㄣˊ
+顰 0 ㄆㄧㄣˊ
+嬪 0 ㄆㄧㄣˊ
+嚬 0 ㄆㄧㄣˊ
+矉 0 ㄆㄧㄣˊ
+濱 0 ㄆㄧㄣˊ
+蘋 0 ㄆㄧㄣˊ
+玭 0 ㄆㄧㄣˊ
+娦 0 ㄆㄧㄣˊ
+浜 0 ㄆㄧㄣˊ
+琕 0 ㄆㄧㄣˊ
+滨 0 ㄆㄧㄣˊ
+濵 0 ㄆㄧㄣˊ
+薲 0 ㄆㄧㄣˊ
+蠙 0 ㄆㄧㄣˊ
+ㄐ 0 ㄐ
+居 0 ㄐㄩ
+拘 0 ㄐㄩ
+駒 0 ㄐㄩ
+沮 0 ㄐㄩ
+疽 0 ㄐㄩ
+蛆 0 ㄐㄩ
+狙 0 ㄐㄩ
+俱 0 ㄐㄩ
+車 0 ㄐㄩ
+据 0 ㄐㄩ
+鋸 0 ㄐㄩ
+裾 0 ㄐㄩ
+苴 0 ㄐㄩ
+趄 0 ㄐㄩ
+罝 0 ㄐㄩ
+菹 0 ㄐㄩ
+娵 0 ㄐㄩ
+椐 0 ㄐㄩ
+腒 0 ㄐㄩ
+崌 0 ㄐㄩ
+痀 0 ㄐㄩ
+琚 0 ㄐㄩ
+雎 0 ㄐㄩ
+涺 0 ㄐㄩ
+葅 0 ㄐㄩ
+鮈 0 ㄐㄩ
+鶋 0 ㄐㄩ
+斪 0 ㄐㄩ
+揟 0 ㄐㄩ
+蜛 0 ㄐㄩ
+踙 0 ㄐㄩ
+輋 0 ㄐㄩ
+且 0 ㄐㄩ
+咀 0 ㄐㄩ
+倨 0 ㄐㄩ
+砠 0 ㄐㄩ
+踞 0 ㄐㄩ
+齟 0 ㄐㄩ
+岨 0 ㄐㄩ
+凥 0 ㄐㄩ
+抅 0 ㄐㄩ
+俥 0 ㄐㄩ
+倶 0 ㄐㄩ
+婮 0 ㄐㄩ
+鴡 0 ㄐㄩ
+眗 0 ㄐㄩ
+噘 0 ㄐㄩㄝ
+嗟 0 ㄐㄩㄝ
+撅 0 ㄐㄩㄝ
+蹶 0 ㄐㄩㄝˇ
+袦 0 ㄐㄩㄝˇ
+蹷 0 ㄐㄩㄝˇ
+倔 0 ㄐㄩㄝˋ
+𠄌 0 ㄐㄩㄝˋ
+決 0 ㄐㄩㄝˊ
+覺 0 ㄐㄩㄝˊ
+絕 0 ㄐㄩㄝˊ
+爵 0 ㄐㄩㄝˊ
+掘 0 ㄐㄩㄝˊ
+嚼 0 ㄐㄩㄝˊ
+訣 0 ㄐㄩㄝˊ
+厥 0 ㄐㄩㄝˊ
+獗 0 ㄐㄩㄝˊ
+蹶 0 ㄐㄩㄝˊ
+蕨 0 ㄐㄩㄝˊ
+崛 0 ㄐㄩㄝˊ
+攫 0 ㄐㄩㄝˊ
+倔 0 ㄐㄩㄝˊ
+炔 0 ㄐㄩㄝˊ
+抉 0 ㄐㄩㄝˊ
+噱 0 ㄐㄩㄝˊ
+矍 0 ㄐㄩㄝˊ
+觖 0 ㄐㄩㄝˊ
+角 0 ㄐㄩㄝˊ
+孓 0 ㄐㄩㄝˊ
+玨 0 ㄐㄩㄝˊ
+劂 0 ㄐㄩㄝˊ
+橛 0 ㄐㄩㄝˊ
+爝 0 ㄐㄩㄝˊ
+譎 0 ㄐㄩㄝˊ
+屩 0 ㄐㄩㄝˊ
+觼 0 ㄐㄩㄝˊ
+玦 0 ㄐㄩㄝˊ
+腳 0 ㄐㄩㄝˊ
+臄 0 ㄐㄩㄝˊ
+蕝 0 ㄐㄩㄝˊ
+躩 0 ㄐㄩㄝˊ
+戄 0 ㄐㄩㄝˊ
+桷 0 ㄐㄩㄝˊ
+潏 0 ㄐㄩㄝˊ
+鴃 0 ㄐㄩㄝˊ
+貜 0 ㄐㄩㄝˊ
+趹 0 ㄐㄩㄝˊ
+鱖 0 ㄐㄩㄝˊ
+傕 0 ㄐㄩㄝˊ
+嵑 0 ㄐㄩㄝˊ
+瘚 0 ㄐㄩㄝˊ
+蠼 0 ㄐㄩㄝˊ
+鐍 0 ㄐㄩㄝˊ
+钁 0 ㄐㄩㄝˊ
+玃 0 ㄐㄩㄝˊ
+捔 0 ㄐㄩㄝˊ
+芵 0 ㄐㄩㄝˊ
+焆 0 ㄐㄩㄝˊ
+鈌 0 ㄐㄩㄝˊ
+蚗 0 ㄐㄩㄝˊ
+谻 0 ㄐㄩㄝˊ
+赽 0 ㄐㄩㄝˊ
+僪 0 ㄐㄩㄝˊ
+憰 0 ㄐㄩㄝˊ
+蟨 0 ㄐㄩㄝˊ
+彏 0 ㄐㄩㄝˊ
+鱊 0 ㄐㄩㄝˊ
+鷢 0 ㄐㄩㄝˊ
+堀 0 ㄐㄩㄝˊ
+殌 0 ㄐㄩㄝˊ
+穱 0 ㄐㄩㄝˊ
+袂 0 ㄐㄩㄝˊ
+較 0 ㄐㄩㄝˊ
+夬 0 ㄐㄩㄝˊ
+吷 0 ㄐㄩㄝˊ
+埆 0 ㄐㄩㄝˊ
+矞 0 ㄐㄩㄝˊ
+駃 0 ㄐㄩㄝˊ
+噘 0 ㄐㄩㄝˊ
+嶡 0 ㄐㄩㄝˊ
+撅 0 ㄐㄩㄝˊ
+璚 0 ㄐㄩㄝˊ
+瞲 0 ㄐㄩㄝˊ
+鵙 0 ㄐㄩㄝˊ
+蹻 0 ㄐㄩㄝˊ
+鶪 0 ㄐㄩㄝˊ
+皭 0 ㄐㄩㄝˊ
+灚 0 ㄐㄩㄝˊ
+釂 0 ㄐㄩㄝˊ
+亅 0 ㄐㄩㄝˊ
+决 0 ㄐㄩㄝˊ
+刔 0 ㄐㄩㄝˊ
+妜 0 ㄐㄩㄝˊ
+弡 0 ㄐㄩㄝˊ
+挗 0 ㄐㄩㄝˊ
+珏 0 ㄐㄩㄝˊ
+疦 0 ㄐㄩㄝˊ
+砄 0 ㄐㄩㄝˊ
+欮 0 ㄐㄩㄝˊ
+斍 0 ㄐㄩㄝˊ
+脚 0 ㄐㄩㄝˊ
+焳 0 ㄐㄩㄝˊ
+絶 0 ㄐㄩㄝˊ
+覚 0 ㄐㄩㄝˊ
+逫 0 ㄐㄩㄝˊ
+勪 0 ㄐㄩㄝˊ
+瑴 0 ㄐㄩㄝˊ
+踋 0 ㄐㄩㄝˊ
+撧 0 ㄐㄩㄝˊ
+熦 0 ㄐㄩㄝˊ
+觮 0 ㄐㄩㄝˊ
+鴂 0 ㄐㄩㄝˊ
+橜 0 ㄐㄩㄝˊ
+蟩 0 ㄐㄩㄝˊ
+嚯 0 ㄐㄩㄝˊ
+屫 0 ㄐㄩㄝˊ
+蹷 0 ㄐㄩㄝˊ
+爑 0 ㄐㄩㄝˊ
+髉 0 ㄐㄩㄝˊ
+鞽 0 ㄐㄩㄝˊ
+欔 0 ㄐㄩㄝˊ
+鱥 0 ㄐㄩㄝˊ
+龣 0 ㄐㄩㄝˊ
+孒 0 ㄐㄩㄝˊ
+叏 0 ㄐㄩㄝˊ
+氒 0 ㄐㄩㄝˊ
+覐 0 ㄐㄩㄝˊ
+㖸 0 ㄐㄩㄝˊ
+爴 0 ㄐㄩㄝˊ
+憠 0 ㄐㄩㄝˊ
+鐝 0 ㄐㄩㄝˊ
+矡 0 ㄐㄩㄝˊ
+崫 0 ㄐㄩㄝˊ
+扃 0 ㄐㄩㄥ
+坰 0 ㄐㄩㄥ
+駉 0 ㄐㄩㄥ
+冂 0 ㄐㄩㄥ
+垧 0 ㄐㄩㄥ
+埛 0 ㄐㄩㄥ
+駫 0 ㄐㄩㄥ
+䮐 0 ㄐㄩㄥ
+窘 0 ㄐㄩㄥˇ
+迥 0 ㄐㄩㄥˇ
+煚 0 ㄐㄩㄥˇ
+泂 0 ㄐㄩㄥˇ
+炅 0 ㄐㄩㄥˇ
+絅 0 ㄐㄩㄥˇ
+褧 0 ㄐㄩㄥˇ
+冏 0 ㄐㄩㄥˇ
+熲 0 ㄐㄩㄥˇ
+囧 0 ㄐㄩㄥˇ
+皛 0 ㄐㄩㄥˇ
+炯 0 ㄐㄩㄥˇ
+幜 0 ㄐㄩㄥˇ
+顈 0 ㄐㄩㄥˇ
+坰 0 ㄐㄩㄥˇ
+炚 0 ㄐㄩㄥˇ
+扃 0 ㄐㄩㄥˇ
+浻 0 ㄐㄩㄥˇ
+迵 0 ㄐㄩㄥˇ
+駉 0 ㄐㄩㄥˇ
+冂 0 ㄐㄩㄥˇ
+垧 0 ㄐㄩㄥˇ
+埛 0 ㄐㄩㄥˇ
+逈 0 ㄐㄩㄥˇ
+烱 0 ㄐㄩㄥˇ
+䢛 0 ㄐㄩㄥˇ
+綗 0 ㄐㄩㄥˇ
+煛 0 ㄐㄩㄥˇ
+駫 0 ㄐㄩㄥˇ
+䮐 0 ㄐㄩㄥˇ
+蘏 0 ㄐㄩㄥˇ
+炛 0 ㄐㄩㄥˇ
+僒 0 ㄐㄩㄥˇ
+澃 0 ㄐㄩㄥˋ
+捐 0 ㄐㄩㄢ
+娟 0 ㄐㄩㄢ
+鵑 0 ㄐㄩㄢ
+涓 0 ㄐㄩㄢ
+鐫 0 ㄐㄩㄢ
+圈 0 ㄐㄩㄢ
+蠲 0 ㄐㄩㄢ
+朘 0 ㄐㄩㄢ
+身 0 ㄐㄩㄢ
+脧 0 ㄐㄩㄢ
+裐 0 ㄐㄩㄢ
+狷 0 ㄐㄩㄢ
+絹 0 ㄐㄩㄢ
+悁 0 ㄐㄩㄢ
+梋 0 ㄐㄩㄢ
+焆 0 ㄐㄩㄢ
+琄 0 ㄐㄩㄢ
+睊 0 ㄐㄩㄢ
+蜎 0 ㄐㄩㄢ
+鋗 0 ㄐㄩㄢ
+鋑 0 ㄐㄩㄢ
+鞙 0 ㄐㄩㄢ
+駽 0 ㄐㄩㄢ
+姢 0 ㄐㄩㄢ
+剶 0 ㄐㄩㄢ
+圏 0 ㄐㄩㄢ
+瓹 0 ㄐㄩㄢ
+鎸 0 ㄐㄩㄢ
+勬 0 ㄐㄩㄢ
+捲 0 ㄐㄩㄢˇ
+卷 0 ㄐㄩㄢˇ
+埢 0 ㄐㄩㄢˇ
+菤 0 ㄐㄩㄢˇ
+臇 0 ㄐㄩㄢˇ
+蜷 0 ㄐㄩㄢˇ
+踡 0 ㄐㄩㄢˇ
+婘 0 ㄐㄩㄢˇ
+惓 0 ㄐㄩㄢˇ
+犈 0 ㄐㄩㄢˇ
+腃 0 ㄐㄩㄢˇ
+綣 0 ㄐㄩㄢˇ
+蔨 0 ㄐㄩㄢˇ
+錈 0 ㄐㄩㄢˇ
+鬈 0 ㄐㄩㄢˇ
+巻 0 ㄐㄩㄢˇ
+埍 0 ㄐㄩㄢˇ
+㷷 0 ㄐㄩㄢˇ
+孉 0 ㄐㄩㄢˇ
+奆 0 ㄐㄩㄢˇ
+倦 0 ㄐㄩㄢˋ
+卷 0 ㄐㄩㄢˋ
+眷 0 ㄐㄩㄢˋ
+絹 0 ㄐㄩㄢˋ
+雋 0 ㄐㄩㄢˋ
+悁 0 ㄐㄩㄢˋ
+狷 0 ㄐㄩㄢˋ
+圈 0 ㄐㄩㄢˋ
+獧 0 ㄐㄩㄢˋ
+睊 0 ㄐㄩㄢˋ
+睠 0 ㄐㄩㄢˋ
+罥 0 ㄐㄩㄢˋ
+鄄 0 ㄐㄩㄢˋ
+帣 0 ㄐㄩㄢˋ
+錈 0 ㄐㄩㄢˋ
+腃 0 ㄐㄩㄢˋ
+韏 0 ㄐㄩㄢˋ
+鬳 0 ㄐㄩㄢˋ
+弮 0 ㄐㄩㄢˋ
+悛 0 ㄐㄩㄢˋ
+牶 0 ㄐㄩㄢˋ
+絭 0 ㄐㄩㄢˋ
+菤 0 ㄐㄩㄢˋ
+楗 0 ㄐㄩㄢˋ
+臇 0 ㄐㄩㄢˋ
+蠵 0 ㄐㄩㄢˋ
+觿 0 ㄐㄩㄢˋ
+鑴 0 ㄐㄩㄢˋ
+驨 0 ㄐㄩㄢˋ
+劵 0 ㄐㄩㄢˋ
+巻 0 ㄐㄩㄢˋ
+隽 0 ㄐㄩㄢˋ
+淃 0 ㄐㄩㄢˋ
+圏 0 ㄐㄩㄢˋ
+瓹 0 ㄐㄩㄢˋ
+飬 0 ㄐㄩㄢˋ
+慻 0 ㄐㄩㄢˋ
+㷷 0 ㄐㄩㄢˋ
+襈 0 ㄐㄩㄢˋ
+桊 0 ㄐㄩㄢˋ
+䣺 0 ㄐㄩㄢˋ
+餋 0 ㄐㄩㄢˋ
+羂 0 ㄐㄩㄢˋ
+觹 0 ㄐㄩㄢˋ
+觽 0 ㄐㄩㄢˋ
+舉 0 ㄐㄩˇ
+矩 0 ㄐㄩˇ
+咀 0 ㄐㄩˇ
+莒 0 ㄐㄩˇ
+沮 0 ㄐㄩˇ
+齟 0 ㄐㄩˇ
+櫸 0 ㄐㄩˇ
+筥 0 ㄐㄩˇ
+踽 0 ㄐㄩˇ
+蒟 0 ㄐㄩˇ
+椇 0 ㄐㄩˇ
+柜 0 ㄐㄩˇ
+竘 0 ㄐㄩˇ
+袓 0 ㄐㄩˇ
+跙 0 ㄐㄩˇ
+蝺 0 ㄐㄩˇ
+佝 0 ㄐㄩˇ
+狙 0 ㄐㄩˇ
+枸 0 ㄐㄩˇ
+砠 0 ㄐㄩˇ
+苴 0 ㄐㄩˇ
+菹 0 ㄐㄩˇ
+趄 0 ㄐㄩˇ
+萭 0 ㄐㄩˇ
+籧 0 ㄐㄩˇ
+弆 0 ㄐㄩˇ
+挙 0 ㄐㄩˇ
+榘 0 ㄐㄩˇ
+聥 0 ㄐㄩˇ
+擧 0 ㄐㄩˇ
+據 0 ㄐㄩˋ
+句 0 ㄐㄩˋ
+具 0 ㄐㄩˋ
+巨 0 ㄐㄩˋ
+劇 0 ㄐㄩˋ
+聚 0 ㄐㄩˋ
+俱 0 ㄐㄩˋ
+拒 0 ㄐㄩˋ
+距 0 ㄐㄩˋ
+鋸 0 ㄐㄩˋ
+懼 0 ㄐㄩˋ
+鉅 0 ㄐㄩˋ
+炬 0 ㄐㄩˋ
+詎 0 ㄐㄩˋ
+遽 0 ㄐㄩˋ
+倨 0 ㄐㄩˋ
+瞿 0 ㄐㄩˋ
+踞 0 ㄐㄩˋ
+颶 0 ㄐㄩˋ
+泃 0 ㄐㄩˋ
+苣 0 ㄐㄩˋ
+窶 0 ㄐㄩˋ
+醵 0 ㄐㄩˋ
+屨 0 ㄐㄩˋ
+秬 0 ㄐㄩˋ
+虡 0 ㄐㄩˋ
+寠 0 ㄐㄩˋ
+鐻 0 ㄐㄩˋ
+佢 0 ㄐㄩˋ
+据 0 ㄐㄩˋ
+粔 0 ㄐㄩˋ
+姖 0 ㄐㄩˋ
+怚 0 ㄐㄩˋ
+絇 0 ㄐㄩˋ
+足 0 ㄐㄩˋ
+耟 0 ㄐㄩˋ
+岠 0 ㄐㄩˋ
+埧 0 ㄐㄩˋ
+蚷 0 ㄐㄩˋ
+駏 0 ㄐㄩˋ
+澽 0 ㄐㄩˋ
+貗 0 ㄐㄩˋ
+躆 0 ㄐㄩˋ
+洰 0 ㄐㄩˋ
+焣 0 ㄐㄩˋ
+壉 0 ㄐㄩˋ
+犋 0 ㄐㄩˋ
+叵 0 ㄐㄩˋ
+沮 0 ㄐㄩˋ
+噱 0 ㄐㄩˋ
+璩 0 ㄐㄩˋ
+怐 0 ㄐㄩˋ
+朐 0 ㄐㄩˋ
+柜 0 ㄐㄩˋ
+狊 0 ㄐㄩˋ
+耇 0 ㄐㄩˋ
+胊 0 ㄐㄩˋ
+痀 0 ㄐㄩˋ
+竘 0 ㄐㄩˋ
+崌 0 ㄐㄩˋ
+涺 0 ㄐㄩˋ
+翑 0 ㄐㄩˋ
+蚼 0 ㄐㄩˋ
+袓 0 ㄐㄩˋ
+椐 0 ㄐㄩˋ
+椇 0 ㄐㄩˋ
+琚 0 ㄐㄩˋ
+腒 0 ㄐㄩˋ
+菃 0 ㄐㄩˋ
+跙 0 ㄐㄩˋ
+軥 0 ㄐㄩˋ
+郹 0 ㄐㄩˋ
+犑 0 ㄐㄩˋ
+豦 0 ㄐㄩˋ
+裾 0 ㄐㄩˋ
+懅 0 ㄐㄩˋ
+鮈 0 ㄐㄩˋ
+臄 0 ㄐㄩˋ
+螶 0 ㄐㄩˋ
+鼩 0 ㄐㄩˋ
+鶪 0 ㄐㄩˋ
+鼳 0 ㄐㄩˋ
+坥 0 ㄐㄩˋ
+怇 0 ㄐㄩˋ
+拠 0 ㄐㄩˋ
+邭 0 ㄐㄩˋ
+昛 0 ㄐㄩˋ
+歫 0 ㄐㄩˋ
+倶 0 ㄐㄩˋ
+冣 0 ㄐㄩˋ
+剧 0 ㄐㄩˋ
+埾 0 ㄐㄩˋ
+惧 0 ㄐㄩˋ
+耈 0 ㄐㄩˋ
+鄓 0 ㄐㄩˋ
+愳 0 ㄐㄩˋ
+勮 0 ㄐㄩˋ
+璖 0 ㄐㄩˋ
+鮔 0 ㄐㄩˋ
+㵵 0 ㄐㄩˋ
+嚯 0 ㄐㄩˋ
+簴 0 ㄐㄩˋ
+耉 0 ㄐㄩˋ
+㖸 0 ㄐㄩˋ
+檋 0 ㄐㄩˋ
+局 0 ㄐㄩˊ
+鞠 0 ㄐㄩˊ
+菊 0 ㄐㄩˊ
+橘 0 ㄐㄩˊ
+掬 0 ㄐㄩˊ
+跼 0 ㄐㄩˊ
+桔 0 ㄐㄩˊ
+挶 0 ㄐㄩˊ
+鞫 0 ㄐㄩˊ
+侷 0 ㄐㄩˊ
+匊 0 ㄐㄩˊ
+踘 0 ㄐㄩˊ
+鋦 0 ㄐㄩˊ
+鵙 0 ㄐㄩˊ
+鶪 0 ㄐㄩˊ
+椈 0 ㄐㄩˊ
+焗 0 ㄐㄩˊ
+淗 0 ㄐㄩˊ
+驧 0 ㄐㄩˊ
+狊 0 ㄐㄩˊ
+梮 0 ㄐㄩˊ
+郹 0 ㄐㄩˊ
+犑 0 ㄐㄩˊ
+輂 0 ㄐㄩˊ
+箤 0 ㄐㄩˊ
+趜 0 ㄐㄩˊ
+鵴 0 ㄐㄩˊ
+蘜 0 ㄐㄩˊ
+鼳 0 ㄐㄩˊ
+陱 0 ㄐㄩˊ
+駶 0 ㄐㄩˊ
+拘 0 ㄐㄩˊ
+鴃 0 ㄐㄩˊ
+譎 0 ㄐㄩˊ
+麴 0 ㄐㄩˊ
+佢 0 ㄐㄩˊ
+扃 0 ㄐㄩˊ
+匑 0 ㄐㄩˊ
+湨 0 ㄐㄩˊ
+憰 0 ㄐㄩˊ
+潏 0 ㄐㄩˊ
+閰 0 ㄐㄩˊ
+璚 0 ㄐㄩˊ
+輷 0 ㄐㄩˊ
+瞲 0 ㄐㄩˊ
+鐍 0 ㄐㄩˊ
+抅 0 ㄐㄩˊ
+毩 0 ㄐㄩˊ
+婅 0 ㄐㄩˊ
+鄓 0 ㄐㄩˊ
+粷 0 ㄐㄩˊ
+諊 0 ㄐㄩˊ
+躹 0 ㄐㄩˊ
+鴂 0 ㄐㄩˊ
+匔 0 ㄐㄩˊ
+麯 0 ㄐㄩˊ
+蹫 0 ㄐㄩˊ
+巈 0 ㄐㄩˊ
+泦 0 ㄐㄩˊ
+毱 0 ㄐㄩˊ
+軍 0 ㄐㄩㄣ
+君 0 ㄐㄩㄣ
+均 0 ㄐㄩㄣ
+鈞 0 ㄐㄩㄣ
+皸 0 ㄐㄩㄣ
+囷 0 ㄐㄩㄣ
+麇 0 ㄐㄩㄣ
+莙 0 ㄐㄩㄣ
+鮶 0 ㄐㄩㄣ
+桾 0 ㄐㄩㄣ
+蚐 0 ㄐㄩㄣ
+袀 0 ㄐㄩㄣ
+頵 0 ㄐㄩㄣ
+龜 0 ㄐㄩㄣ
+碅 0 ㄐㄩㄣ
+裙 0 ㄐㄩㄣ
+呁 0 ㄐㄩㄣ
+枃 0 ㄐㄩㄣ
+峮 0 ㄐㄩㄣ
+捃 0 ㄐㄩㄣ
+焄 0 ㄐㄩㄣ
+珺 0 ㄐㄩㄣ
+赹 0 ㄐㄩㄣ
+憌 0 ㄐㄩㄣ
+鍕 0 ㄐㄩㄣ
+鵘 0 ㄐㄩㄣ
+鼲 0 ㄐㄩㄣ
+㚬 0 ㄐㄩㄣ
+汮 0 ㄐㄩㄣ
+帬 0 ㄐㄩㄣ
+亀 0 ㄐㄩㄣ
+裠 0 ㄐㄩㄣ
+皹 0 ㄐㄩㄣ
+銁 0 ㄐㄩㄣ
+銞 0 ㄐㄩㄣ
+攈 0 ㄐㄩㄣ
+鵾 0 ㄐㄩㄣ
+麕 0 ㄐㄩㄣ
+攟 0 ㄐㄩㄣ
+覠 0 ㄐㄩㄣ
+麏 0 ㄐㄩㄣ
+窘 0 ㄐㄩㄣˇ
+蜠 0 ㄐㄩㄣˇ
+俊 0 ㄐㄩㄣˋ
+菌 0 ㄐㄩㄣˋ
+郡 0 ㄐㄩㄣˋ
+峻 0 ㄐㄩㄣˋ
+竣 0 ㄐㄩㄣˋ
+雋 0 ㄐㄩㄣˋ
+濬 0 ㄐㄩㄣˋ
+駿 0 ㄐㄩㄣˋ
+蕈 0 ㄐㄩㄣˋ
+浚 0 ㄐㄩㄣˋ
+珺 0 ㄐㄩㄣˋ
+畯 0 ㄐㄩㄣˋ
+焌 0 ㄐㄩㄣˋ
+捃 0 ㄐㄩㄣˋ
+餕 0 ㄐㄩㄣˋ
+箘 0 ㄐㄩㄣˋ
+寯 0 ㄐㄩㄣˋ
+晙 0 ㄐㄩㄣˋ
+呁 0 ㄐㄩㄣˋ
+鵘 0 ㄐㄩㄣˋ
+葰 0 ㄐㄩㄣˋ
+蔨 0 ㄐㄩㄣˋ
+甽 0 ㄐㄩㄣˋ
+璿 0 ㄐㄩㄣˋ
+紃 0 ㄐㄩㄣˋ
+朘 0 ㄐㄩㄣˋ
+脧 0 ㄐㄩㄣˋ
+莙 0 ㄐㄩㄣˋ
+逡 0 ㄐㄩㄣˋ
+踆 0 ㄐㄩㄣˋ
+鵔 0 ㄐㄩㄣˋ
+夋 0 ㄐㄩㄣˋ
+侰 0 ㄐㄩㄣˋ
+埈 0 ㄐㄩㄣˋ
+陖 0 ㄐㄩㄣˋ
+隽 0 ㄐㄩㄣˋ
+㑺 0 ㄐㄩㄣˋ
+睃 0 ㄐㄩㄣˋ
+䇹 0 ㄐㄩㄣˋ
+箟 0 ㄐㄩㄣˋ
+儁 0 ㄐㄩㄣˋ
+懏 0 ㄐㄩㄣˋ
+𤀹 0 ㄐㄩㄣˋ
+䕑 0 ㄐㄩㄣˋ
+鵕 0 ㄐㄩㄣˋ
+攈 0 ㄐㄩㄣˋ
+攟 0 ㄐㄩㄣˋ
+㖥 0 ㄐㄩㄣˋ
+㕙 0 ㄐㄩㄣˋ
+𣽊 0 ㄐㄩㄣˋ
+𤩅 0 ㄐㄩㄣˋ
+觹 0 ㄐㄩㄣˋ
+觽 0 ㄐㄩㄣˋ
+機 0 ㄐㄧ
+基 0 ㄐㄧ
+積 0 ㄐㄧ
+績 0 ㄐㄧ
+蹟 0 ㄐㄧ
+激 0 ㄐㄧ
+跡 0 ㄐㄧ
+姬 0 ㄐㄧ
+雞 0 ㄐㄧ
+饑 0 ㄐㄧ
+肌 0 ㄐㄧ
+稽 0 ㄐㄧ
+飢 0 ㄐㄧ
+奇 0 ㄐㄧ
+畸 0 ㄐㄧ
+碁 0 ㄐㄧ
+箕 0 ㄐㄧ
+磯 0 ㄐㄧ
+譏 0 ㄐㄧ
+羈 0 ㄐㄧ
+几 0 ㄐㄧ
+机 0 ㄐㄧ
+乩 0 ㄐㄧ
+屐 0 ㄐㄧ
+躋 0 ㄐㄧ
+璣 0 ㄐㄧ
+幾 0 ㄐㄧ
+嘰 0 ㄐㄧ
+畿 0 ㄐㄧ
+嵇 0 ㄐㄧ
+犄 0 ㄐㄧ
+齎 0 ㄐㄧ
+其 0 ㄐㄧ
+期 0 ㄐㄧ
+居 0 ㄐㄧ
+唧 0 ㄐㄧ
+勣 0 ㄐㄧ
+禨 0 ㄐㄧ
+欚 0 ㄐㄧ
+癘 0 ㄐㄧ
+羇 0 ㄐㄧ
+虀 0 ㄐㄧ
+觭 0 ㄐㄧ
+霙 0 ㄐㄧ
+蛣 0 ㄐㄧ
+銈 0 ㄐㄧ
+枅 0 ㄐㄧ
+丌 0 ㄐㄧ
+尐 0 ㄐㄧ
+簊 0 ㄐㄧ
+虮 0 ㄐㄧ
+鐖 0 ㄐㄧ
+櫅 0 ㄐㄧ
+稘 0 ㄐㄧ
+毄 0 ㄐㄧ
+樍 0 ㄐㄧ
+諅 0 ㄐㄧ
+鞿 0 ㄐㄧ
+鑇 0 ㄐㄧ
+齏 0 ㄐㄧ
+笄 0 ㄐㄧ
+剞 0 ㄐㄧ
+隮 0 ㄐㄧ
+鸄 0 ㄐㄧ
+癪 0 ㄐㄧ
+圾 0 ㄐㄧ
+棋 0 ㄐㄧ
+刉 0 ㄐㄧ
+咭 0 ㄐㄧ
+惎 0 ㄐㄧ
+敧 0 ㄐㄧ
+憿 0 ㄐㄧ
+獥 0 ㄐㄧ
+錤 0 ㄐㄧ
+濝 0 ㄐㄧ
+穖 0 ㄐㄧ
+齌 0 ㄐㄧ
+魕 0 ㄐㄧ
+凥 0 ㄐㄧ
+卟 0 ㄐㄧ
+㚻 0 ㄐㄧ
+竒 0 ㄐㄧ
+迹 0 ㄐㄧ
+㥍 0 ㄐㄧ
+喞 0 ㄐㄧ
+嵆 0 ㄐㄧ
+朞 0 ㄐㄧ
+棊 0 ㄐㄧ
+筓 0 ㄐㄧ
+鳮 0 ㄐㄧ
+槣 0 ㄐㄧ
+賫 0 ㄐㄧ
+躸 0 ㄐㄧ
+賷 0 ㄐㄧ
+櫀 0 ㄐㄧ
+檱 0 ㄐㄧ
+韲 0 ㄐㄧ
+鷄 0 ㄐㄧ
+覉 0 ㄐㄧ
+覊 0 ㄐㄧ
+㞓 0 ㄐㄧ
+嗘 0 ㄐㄧ
+僟 0 ㄐㄧ
+耭 0 ㄐㄧ
+㼄 0 ㄐㄧ
+鑙 0 ㄐㄧ
+街 0 ㄐㄧㄝ
+接 0 ㄐㄧㄝ
+皆 0 ㄐㄧㄝ
+階 0 ㄐㄧㄝ
+揭 0 ㄐㄧㄝ
+偕 0 ㄐㄧㄝ
+嗟 0 ㄐㄧㄝ
+喈 0 ㄐㄧㄝ
+幯 0 ㄐㄧㄝ
+結 0 ㄐㄧㄝ
+湝 0 ㄐㄧㄝ
+薢 0 ㄐㄧㄝ
+啑 0 ㄐㄧㄝ
+椄 0 ㄐㄧㄝ
+菨 0 ㄐㄧㄝ
+蝔 0 ㄐㄧㄝ
+鶛 0 ㄐㄧㄝ
+隔 0 ㄐㄧㄝ
+諧 0 ㄐㄧㄝ
+勓 0 ㄐㄧㄝ
+痎 0 ㄐㄧㄝ
+瑎 0 ㄐㄧㄝ
+踥 0 ㄐㄧㄝ
+癤 0 ㄐㄧㄝ
+龤 0 ㄐㄧㄝ
+掲 0 ㄐㄧㄝ
+堦 0 ㄐㄧㄝ
+媘 0 ㄐㄧㄝ
+脻 0 ㄐㄧㄝ
+嫅 0 ㄐㄧㄝ
+煯 0 ㄐㄧㄝ
+擑 0 ㄐㄧㄝ
+䕸 0 ㄐㄧㄝ
+𣶏 0 ㄐㄧㄝ
+䃈 0 ㄐㄧㄝ
+姐 0 ㄐㄧㄝˇ
+解 0 ㄐㄧㄝˇ
+姊 0 ㄐㄧㄝˇ
+檞 0 ㄐㄧㄝˇ
+媎 0 ㄐㄧㄝˇ
+薢 0 ㄐㄧㄝˇ
+繲 0 ㄐㄧㄝˇ
+姉 0 ㄐㄧㄝˇ
+毑 0 ㄐㄧㄝˇ
+觧 0 ㄐㄧㄝˇ
+飷 0 ㄐㄧㄝˇ
+界 0 ㄐㄧㄝˋ
+借 0 ㄐㄧㄝˋ
+介 0 ㄐㄧㄝˋ
+戒 0 ㄐㄧㄝˋ
+藉 0 ㄐㄧㄝˋ
+屆 0 ㄐㄧㄝˋ
+疥 0 ㄐㄧㄝˋ
+芥 0 ㄐㄧㄝˋ
+誡 0 ㄐㄧㄝˋ
+解 0 ㄐㄧㄝˋ
+唶 0 ㄐㄧㄝˋ
+喈 0 ㄐㄧㄝˋ
+玠 0 ㄐㄧㄝˋ
+蚧 0 ㄐㄧㄝˋ
+犗 0 ㄐㄧㄝˋ
+褯 0 ㄐㄧㄝˋ
+吤 0 ㄐㄧㄝˋ
+岕 0 ㄐㄧㄝˋ
+价 0 ㄐㄧㄝˋ
+砎 0 ㄐㄧㄝˋ
+悈 0 ㄐㄧㄝˋ
+紒 0 ㄐㄧㄝˋ
+祴 0 ㄐㄧㄝˋ
+躤 0 ㄐㄧㄝˋ
+繲 0 ㄐㄧㄝˋ
+尬 0 ㄐㄧㄝˋ
+械 0 ㄐㄧㄝˋ
+嗟 0 ㄐㄧㄝˋ
+隔 0 ㄐㄧㄝˋ
+妎 0 ㄐㄧㄝˋ
+扴 0 ㄐㄧㄝˋ
+昦 0 ㄐㄧㄝˋ
+祄 0 ㄐㄧㄝˋ
+骱 0 ㄐㄧㄝˋ
+廨 0 ㄐㄧㄝˋ
+臩 0 ㄐㄧㄝˋ
+駴 0 ㄐㄧㄝˋ
+齘 0 ㄐㄧㄝˋ
+届 0 ㄐㄧㄝˋ
+畍 0 ㄐㄧㄝˋ
+衸 0 ㄐㄧㄝˋ
+堺 0 ㄐㄧㄝˋ
+楐 0 ㄐㄧㄝˋ
+琾 0 ㄐㄧㄝˋ
+觧 0 ㄐㄧㄝˋ
+魀 0 ㄐㄧㄝˋ
+諎 0 ㄐㄧㄝˋ
+丯 0 ㄐㄧㄝˋ
+庎 0 ㄐㄧㄝˋ
+徣 0 ㄐㄧㄝˋ
+㾏 0 ㄐㄧㄝˋ
+魪 0 ㄐㄧㄝˋ
+節 0 ㄐㄧㄝˊ
+潔 0 ㄐㄧㄝˊ
+傑 0 ㄐㄧㄝˊ
+捷 0 ㄐㄧㄝˊ
+竭 0 ㄐㄧㄝˊ
+劫 0 ㄐㄧㄝˊ
+截 0 ㄐㄧㄝˊ
+結 0 ㄐㄧㄝˊ
+杰 0 ㄐㄧㄝˊ
+頡 0 ㄐㄧㄝˊ
+詰 0 ㄐㄧㄝˊ
+桀 0 ㄐㄧㄝˊ
+睫 0 ㄐㄧㄝˊ
+訐 0 ㄐㄧㄝˊ
+拮 0 ㄐㄧㄝˊ
+羯 0 ㄐㄧㄝˊ
+櫛 0 ㄐㄧㄝˊ
+桔 0 ㄐㄧㄝˊ
+孑 0 ㄐㄧㄝˊ
+癤 0 ㄐㄧㄝˊ
+絜 0 ㄐㄧㄝˊ
+偈 0 ㄐㄧㄝˊ
+擷 0 ㄐㄧㄝˊ
+倢 0 ㄐㄧㄝˊ
+劼 0 ㄐㄧㄝˊ
+婕 0 ㄐㄧㄝˊ
+楬 0 ㄐㄧㄝˊ
+碣 0 ㄐㄧㄝˊ
+鮚 0 ㄐㄧㄝˊ
+岊 0 ㄐㄧㄝˊ
+榤 0 ㄐㄧㄝˊ
+犵 0 ㄐㄧㄝˊ
+袺 0 ㄐㄧㄝˊ
+嵑 0 ㄐㄧㄝˊ
+栨 0 ㄐㄧㄝˊ
+騔 0 ㄐㄧㄝˊ
+滐 0 ㄐㄧㄝˊ
+鉣 0 ㄐㄧㄝˊ
+鐑 0 ㄐㄧㄝˊ
+衱 0 ㄐㄧㄝˊ
+迼 0 ㄐㄧㄝˊ
+崨 0 ㄐㄧㄝˊ
+嵥 0 ㄐㄧㄝˊ
+楶 0 ㄐㄧㄝˊ
+趌 0 ㄐㄧㄝˊ
+踕 0 ㄐㄧㄝˊ
+擳 0 ㄐㄧㄝˊ
+瀄 0 ㄐㄧㄝˊ
+鍻 0 ㄐㄧㄝˊ
+蠽 0 ㄐㄧㄝˊ
+昅 0 ㄐㄧㄝˊ
+揤 0 ㄐㄧㄝˊ
+緁 0 ㄐㄧㄝˊ
+巀 0 ㄐㄧㄝˊ
+緳 0 ㄐㄧㄝˊ
+舛 0 ㄐㄧㄝˊ
+揭 0 ㄐㄧㄝˊ
+渴 0 ㄐㄧㄝˊ
+隔 0 ㄐㄧㄝˊ
+泲 0 ㄐㄧㄝˊ
+疌 0 ㄐㄧㄝˊ
+狤 0 ㄐㄧㄝˊ
+勍 0 ㄐㄧㄝˊ
+栔 0 ㄐㄧㄝˊ
+洯 0 ㄐㄧㄝˊ
+荈 0 ㄐㄧㄝˊ
+啑 0 ㄐㄧㄝˊ
+梜 0 ㄐㄧㄝˊ
+楖 0 ㄐㄧㄝˊ
+萐 0 ㄐㄧㄝˊ
+蛣 0 ㄐㄧㄝˊ
+袷 0 ㄐㄧㄝˊ
+蝍 0 ㄐㄧㄝˊ
+裌 0 ㄐㄧㄝˊ
+朅 0 ㄐㄧㄝˊ
+箑 0 ㄐㄧㄝˊ
+蜨 0 ㄐㄧㄝˊ
+磔 0 ㄐㄧㄝˊ
+鋏 0 ㄐㄧㄝˊ
+幯 0 ㄐㄧㄝˊ
+謋 0 ㄐㄧㄝˊ
+鵖 0 ㄐㄧㄝˊ
+卩 0 ㄐㄧㄝˊ
+刧 0 ㄐㄧㄝˊ
+刦 0 ㄐㄧㄝˊ
+刼 0 ㄐㄧㄝˊ
+偼 0 ㄐㄧㄝˊ
+掲 0 ㄐㄧㄝˊ
+渇 0 ㄐㄧㄝˊ
+莭 0 ㄐㄧㄝˊ
+媫 0 ㄐㄧㄝˊ
+㨗 0 ㄐㄧㄝˊ
+魝 0 ㄐㄧㄝˊ
+蓵 0 ㄐㄧㄝˊ
+誱 0 ㄐㄧㄝˊ
+嶻 0 ㄐㄧㄝˊ
+擮 0 ㄐㄧㄝˊ
+櫭 0 ㄐㄧㄝˊ
+礍 0 ㄐㄧㄝˊ
+蠘 0 ㄐㄧㄝˊ
+㔾 0 ㄐㄧㄝˊ
+卪 0 ㄐㄧㄝˊ
+厇 0 ㄐㄧㄝˊ
+㛃 0 ㄐㄧㄝˊ
+蜐 0 ㄐㄧㄝˊ
+㘉 0 ㄐㄧㄝˊ
+蠞 0 ㄐㄧㄝˊ
+𠲵 0 ㄐㄧㄝˊ
+𡩣 0 ㄐㄧㄝˊ
+𦵴 0 ㄐㄧㄝˊ
+姊 0 ㄐㄧㄝ˙
+舅 0 ㄐㄧㄡ˙
+糾 0 ㄐㄧㄡ
+揪 0 ㄐㄧㄡ
+啾 0 ㄐㄧㄡ
+鳩 0 ㄐㄧㄡ
+轇 0 ㄐㄧㄡ
+湫 0 ㄐㄧㄡ
+樛 0 ㄐㄧㄡ
+揫 0 ㄐㄧㄡ
+勼 0 ㄐㄧㄡ
+朻 0 ㄐㄧㄡ
+牞 0 ㄐㄧㄡ
+觓 0 ㄐㄧㄡ
+揂 0 ㄐㄧㄡ
+萛 0 ㄐㄧㄡ
+鬮 0 ㄐㄧㄡ
+灸 0 ㄐㄧㄡ
+究 0 ㄐㄧㄡ
+虯 0 ㄐㄧㄡ
+釓 0 ㄐㄧㄡ
+蝤 0 ㄐㄧㄡ
+糺 0 ㄐㄧㄡ
+虬 0 ㄐㄧㄡ
+湬 0 ㄐㄧㄡ
+噍 0 ㄐㄧㄡ
+丩 0 ㄐㄧㄡ
+芁 0 ㄐㄧㄡ
+稵 0 ㄐㄧㄡ
+鬏 0 ㄐㄧㄡ
+赳 0 ㄐㄧㄡ
+九 0 ㄐㄧㄡˇ
+久 0 ㄐㄧㄡˇ
+酒 0 ㄐㄧㄡˇ
+玖 0 ㄐㄧㄡˇ
+赳 0 ㄐㄧㄡˇ
+灸 0 ㄐㄧㄡˇ
+韭 0 ㄐㄧㄡˇ
+糾 0 ㄐㄧㄡˇ
+炙 0 ㄐㄧㄡˇ
+疚 0 ㄐㄧㄡˇ
+柩 0 ㄐㄧㄡˇ
+愀 0 ㄐㄧㄡˇ
+勼 0 ㄐㄧㄡˇ
+虯 0 ㄐㄧㄡˇ
+觓 0 ㄐㄧㄡˇ
+釓 0 ㄐㄧㄡˇ
+韰 0 ㄐㄧㄡˇ
+薤 0 ㄐㄧㄡˇ
+齏 0 ㄐㄧㄡˇ
+乆 0 ㄐㄧㄡˇ
+乣 0 ㄐㄧㄡˇ
+奺 0 ㄐㄧㄡˇ
+糺 0 ㄐㄧㄡˇ
+虬 0 ㄐㄧㄡˇ
+柾 0 ㄐㄧㄡˇ
+紤 0 ㄐㄧㄡˇ
+韮 0 ㄐㄧㄡˇ
+熫 0 ㄐㄧㄡˇ
+韲 0 ㄐㄧㄡˇ
+匶 0 ㄐㄧㄡˇ
+匛 0 ㄐㄧㄡˇ
+舏 0 ㄐㄧㄡˇ
+镹 0 ㄐㄧㄡˇ
+就 0 ㄐㄧㄡˋ
+究 0 ㄐㄧㄡˋ
+救 0 ㄐㄧㄡˋ
+舊 0 ㄐㄧㄡˋ
+舅 0 ㄐㄧㄡˋ
+臼 0 ㄐㄧㄡˋ
+柩 0 ㄐㄧㄡˋ
+疚 0 ㄐㄧㄡˋ
+咎 0 ㄐㄧㄡˋ
+僦 0 ㄐㄧㄡˋ
+鷲 0 ㄐㄧㄡˋ
+廄 0 ㄐㄧㄡˋ
+捄 0 ㄐㄧㄡˋ
+慦 0 ㄐㄧㄡˋ
+鯦 0 ㄐㄧㄡˋ
+麔 0 ㄐㄧㄡˋ
+晷 0 ㄐㄧㄡˋ
+宄 0 ㄐㄧㄡˋ
+閰 0 ㄐㄧㄡˋ
+旧 0 ㄐㄧㄡˋ
+柾 0 ㄐㄧㄡˋ
+倃 0 ㄐㄧㄡˋ
+粙 0 ㄐㄧㄡˋ
+媨 0 ㄐㄧㄡˋ
+厩 0 ㄐㄧㄡˋ
+廐 0 ㄐㄧㄡˋ
+廏 0 ㄐㄧㄡˋ
+匶 0 ㄐㄧㄡˋ
+匛 0 ㄐㄧㄡˋ
+玐 0 ㄐㄧㄡˋ
+䊆 0 ㄐㄧㄡˋ
+齨 0 ㄐㄧㄡˋ
+匓 0 ㄐㄧㄡˋ
+經 0 ㄐㄧㄥ
+精 0 ㄐㄧㄥ
+京 0 ㄐㄧㄥ
+驚 0 ㄐㄧㄥ
+睛 0 ㄐㄧㄥ
+莖 0 ㄐㄧㄥ
+晶 0 ㄐㄧㄥ
+菁 0 ㄐㄧㄥ
+更 0 ㄐㄧㄥ
+兢 0 ㄐㄧㄥ
+涇 0 ㄐㄧㄥ
+鯨 0 ㄐㄧㄥ
+荊 0 ㄐㄧㄥ
+旌 0 ㄐㄧㄥ
+粳 0 ㄐㄧㄥ
+黥 0 ㄐㄧㄥ
+箐 0 ㄐㄧㄥ
+鶄 0 ㄐㄧㄥ
+巠 0 ㄐㄧㄥ
+婛 0 ㄐㄧㄥ
+旍 0 ㄐㄧㄥ
+鵛 0 ㄐㄧㄥ
+鶁 0 ㄐㄧㄥ
+鼱 0 ㄐㄧㄥ
+麠 0 ㄐㄧㄥ
+仱 0 ㄐㄧㄥ
+惊 0 ㄐㄧㄥ
+青 0 ㄐㄧㄥ
+耕 0 ㄐㄧㄥ
+痙 0 ㄐㄧㄥ
+弳 0 ㄐㄧㄥ
+挳 0 ㄐㄧㄥ
+婧 0 ㄐㄧㄥ
+桱 0 ㄐㄧㄥ
+殌 0 ㄐㄧㄥ
+牼 0 ㄐㄧㄥ
+硜 0 ㄐㄧㄥ
+羥 0 ㄐㄧㄥ
+蛵 0 ㄐㄧㄥ
+翞 0 ㄐㄧㄥ
+蒯 0 ㄐㄧㄥ
+誙 0 ㄐㄧㄥ
+鋞 0 ㄐㄧㄥ
+坕 0 ㄐㄧㄥ
+靑 0 ㄐㄧㄥ
+亰 0 ㄐㄧㄥ
+畊 0 ㄐㄧㄥ
+秔 0 ㄐㄧㄥ
+茎 0 ㄐㄧㄥ
+婙 0 ㄐㄧㄥ
+寈 0 ㄐㄧㄥ
+経 0 ㄐㄧㄥ
+稉 0 ㄐㄧㄥ
+腈 0 ㄐㄧㄥ
+荆 0 ㄐㄧㄥ
+葏 0 ㄐㄧㄥ
+摾 0 ㄐㄧㄥ
+䃘 0 ㄐㄧㄥ
+薓 0 ㄐㄧㄥ
+猄 0 ㄐㄧㄥ
+聙 0 ㄐㄧㄥ
+鹶 0 ㄐㄧㄥ
+麖 0 ㄐㄧㄥ
+景 0 ㄐㄧㄥˇ
+警 0 ㄐㄧㄥˇ
+井 0 ㄐㄧㄥˇ
+頸 0 ㄐㄧㄥˇ
+阱 0 ㄐㄧㄥˇ
+儆 0 ㄐㄧㄥˇ
+璟 0 ㄐㄧㄥˇ
+憬 0 ㄐㄧㄥˇ
+剄 0 ㄐㄧㄥˇ
+璥 0 ㄐㄧㄥˇ
+丼 0 ㄐㄧㄥˇ
+肼 0 ㄐㄧㄥˇ
+憼 0 ㄐㄧㄥˇ
+暻 0 ㄐㄧㄥˇ
+蟼 0 ㄐㄧㄥˇ
+燛 0 ㄐㄧㄥˇ
+境 0 ㄐㄧㄥˇ
+擎 0 ㄐㄧㄥˇ
+汫 0 ㄐㄧㄥˇ
+幜 0 ㄐㄧㄥˇ
+澋 0 ㄐㄧㄥˇ
+鵛 0 ㄐㄧㄥˇ
+汬 0 ㄐㄧㄥˇ
+穽 0 ㄐㄧㄥˇ
+頚 0 ㄐㄧㄥˇ
+璄 0 ㄐㄧㄥˇ
+䜘 0 ㄐㄧㄥˇ
+敬 0 ㄐㄧㄥˋ
+竟 0 ㄐㄧㄥˋ
+鏡 0 ㄐㄧㄥˋ
+靜 0 ㄐㄧㄥˋ
+境 0 ㄐㄧㄥˋ
+淨 0 ㄐㄧㄥˋ
+競 0 ㄐㄧㄥˋ
+逕 0 ㄐㄧㄥˋ
+徑 0 ㄐㄧㄥˋ
+靖 0 ㄐㄧㄥˋ
+勁 0 ㄐㄧㄥˋ
+凊 0 ㄐㄧㄥˋ
+脛 0 ㄐㄧㄥˋ
+痙 0 ㄐㄧㄥˋ
+獍 0 ㄐㄧㄥˋ
+倞 0 ㄐㄧㄥˋ
+靚 0 ㄐㄧㄥˋ
+竫 0 ㄐㄧㄥˋ
+婧 0 ㄐㄧㄥˋ
+桱 0 ㄐㄧㄥˋ
+俓 0 ㄐㄧㄥˋ
+凈 0 ㄐㄧㄥˋ
+葝 0 ㄐㄧㄥˋ
+擏 0 ㄐㄧㄥˋ
+弳 0 ㄐㄧㄥˋ
+莖 0 ㄐㄧㄥˋ
+兢 0 ㄐㄧㄥˋ
+請 0 ㄐㄧㄥˋ
+檠 0 ㄐㄧㄥˋ
+汫 0 ㄐㄧㄥˋ
+肵 0 ㄐㄧㄥˋ
+剄 0 ㄐㄧㄥˋ
+挳 0 ㄐㄧㄥˋ
+殌 0 ㄐㄧㄥˋ
+牼 0 ㄐㄧㄥˋ
+硜 0 ㄐㄧㄥˋ
+羥 0 ㄐㄧㄥˋ
+摬 0 ㄐㄧㄥˋ
+誙 0 ㄐㄧㄥˋ
+儆 0 ㄐㄧㄥˋ
+樈 0 ㄐㄧㄥˋ
+憼 0 ㄐㄧㄥˋ
+璥 0 ㄐㄧㄥˋ
+蟼 0 ㄐㄧㄥˋ
+妌 0 ㄐㄧㄥˋ
+径 0 ㄐㄧㄥˋ
+浄 0 ㄐㄧㄥˋ
+茎 0 ㄐㄧㄥˋ
+梷 0 ㄐㄧㄥˋ
+竧 0 ㄐㄧㄥˋ
+傹 0 ㄐㄧㄥˋ
+滰 0 ㄐㄧㄥˋ
+誩 0 ㄐㄧㄥˋ
+踁 0 ㄐㄧㄥˋ
+静 0 ㄐㄧㄥˋ
+䃘 0 ㄐㄧㄥˋ
+曔 0 ㄐㄧㄥˋ
+㯳 0 ㄐㄧㄥˋ
+瀞 0 ㄐㄧㄥˋ
+竸 0 ㄐㄧㄥˋ
+净 0 ㄐㄧㄥˋ
+將 0 ㄐㄧㄤ
+江 0 ㄐㄧㄤ
+疆 0 ㄐㄧㄤ
+僵 0 ㄐㄧㄤ
+漿 0 ㄐㄧㄤ
+姜 0 ㄐㄧㄤ
+薑 0 ㄐㄧㄤ
+豇 0 ㄐㄧㄤ
+殭 0 ㄐㄧㄤ
+韁 0 ㄐㄧㄤ
+螿 0 ㄐㄧㄤ
+橿 0 ㄐㄧㄤ
+茳 0 ㄐㄧㄤ
+礓 0 ㄐㄧㄤ
+瓨 0 ㄐㄧㄤ
+翞 0 ㄐㄧㄤ
+鏘 0 ㄐㄧㄤ
+矼 0 ㄐㄧㄤ
+墏 0 ㄐㄧㄤ
+嶈 0 ㄐㄧㄤ
+将 0 ㄐㄧㄤ
+畕 0 ㄐㄧㄤ
+畺 0 ㄐㄧㄤ
+葁 0 ㄐㄧㄤ
+摪 0 ㄐㄧㄤ
+壃 0 ㄐㄧㄤ
+繮 0 ㄐㄧㄤ
+疅 0 ㄐㄧㄤ
+講 0 ㄐㄧㄤˇ
+獎 0 ㄐㄧㄤˇ
+蔣 0 ㄐㄧㄤˇ
+槳 0 ㄐㄧㄤˇ
+顜 0 ㄐㄧㄤˇ
+膙 0 ㄐㄧㄤˇ
+傋 0 ㄐㄧㄤˇ
+耩 0 ㄐㄧㄤˇ
+奨 0 ㄐㄧㄤˇ
+奬 0 ㄐㄧㄤˇ
+鞲 0 ㄐㄧㄤˇ
+降 0 ㄐㄧㄤˋ
+匠 0 ㄐㄧㄤˋ
+醬 0 ㄐㄧㄤˋ
+強 0 ㄐㄧㄤˋ
+將 0 ㄐㄧㄤˋ
+絳 0 ㄐㄧㄤˋ
+糨 0 ㄐㄧㄤˋ
+洚 0 ㄐㄧㄤˋ
+謽 0 ㄐㄧㄤˋ
+嵹 0 ㄐㄧㄤˋ
+彊 0 ㄐㄧㄤˋ
+弶 0 ㄐㄧㄤˋ
+袶 0 ㄐㄧㄤˋ
+虹 0 ㄐㄧㄤˋ
+漿 0 ㄐㄧㄤˋ
+嶈 0 ㄐㄧㄤˋ
+鏹 0 ㄐㄧㄤˋ
+匞 0 ㄐㄧㄤˋ
+夅 0 ㄐㄧㄤˋ
+将 0 ㄐㄧㄤˋ
+强 0 ㄐㄧㄤˋ
+摾 0 ㄐㄧㄤˋ
+滰 0 ㄐㄧㄤˋ
+蔃 0 ㄐㄧㄤˋ
+糡 0 ㄐㄧㄤˋ
+弜 0 ㄐㄧㄤˋ
+犟 0 ㄐㄧㄤˋ
+間 0 ㄐㄧㄢ
+監 0 ㄐㄧㄢ
+堅 0 ㄐㄧㄢ
+尖 0 ㄐㄧㄢ
+兼 0 ㄐㄧㄢ
+肩 0 ㄐㄧㄢ
+艱 0 ㄐㄧㄢ
+奸 0 ㄐㄧㄢ
+姦 0 ㄐㄧㄢ
+煎 0 ㄐㄧㄢ
+緘 0 ㄐㄧㄢ
+濺 0 ㄐㄧㄢ
+漸 0 ㄐㄧㄢ
+箋 0 ㄐㄧㄢ
+殲 0 ㄐㄧㄢ
+菅 0 ㄐㄧㄢ
+戔 0 ㄐㄧㄢ
+鞬 0 ㄐㄧㄢ
+牋 0 ㄐㄧㄢ
+椷 0 ㄐㄧㄢ
+縑 0 ㄐㄧㄢ
+湔 0 ㄐㄧㄢ
+熸 0 ㄐㄧㄢ
+蒹 0 ㄐㄧㄢ
+鶼 0 ㄐㄧㄢ
+廌 0 ㄐㄧㄢ
+犍 0 ㄐㄧㄢ
+籛 0 ㄐㄧㄢ
+豜 0 ㄐㄧㄢ
+韉 0 ㄐㄧㄢ
+鬋 0 ㄐㄧㄢ
+鈃 0 ㄐㄧㄢ
+鑯 0 ㄐㄧㄢ
+鰹 0 ㄐㄧㄢ
+鰜 0 ㄐㄧㄢ
+櫼 0 ㄐㄧㄢ
+熞 0 ㄐㄧㄢ
+蕑 0 ㄐㄧㄢ
+揃 0 ㄐㄧㄢ
+搛 0 ㄐㄧㄢ
+幵 0 ㄐㄧㄢ
+菺 0 ㄐㄧㄢ
+靬 0 ㄐㄧㄢ
+葌 0 ㄐㄧㄢ
+鳽 0 ㄐㄧㄢ
+餰 0 ㄐㄧㄢ
+礛 0 ㄐㄧㄢ
+騝 0 ㄐㄧㄢ
+鵳 0 ㄐㄧㄢ
+瀸 0 ㄐㄧㄢ
+虃 0 ㄐㄧㄢ
+惤 0 ㄐㄧㄢ
+猏 0 ㄐㄧㄢ
+麉 0 ㄐㄧㄢ
+訐 0 ㄐㄧㄢ
+淺 0 ㄐㄧㄢ
+閒 0 ㄐㄧㄢ
+尷 0 ㄐㄧㄢ
+鏗 0 ㄐㄧㄢ
+犴 0 ㄐㄧㄢ
+掮 0 ㄐㄧㄢ
+傔 0 ㄐㄧㄢ
+堿 0 ㄐㄧㄢ
+媊 0 ㄐㄧㄢ
+慊 0 ㄐㄧㄢ
+硻 0 ㄐㄧㄢ
+葴 0 ㄐㄧㄢ
+慳 0 ㄐㄧㄢ
+槏 0 ㄐㄧㄢ
+蒧 0 ㄐㄧㄢ
+蜸 0 ㄐㄧㄢ
+鋻 0 ㄐㄧㄢ
+豏 0 ㄐㄧㄢ
+襉 0 ㄐㄧㄢ
+馦 0 ㄐㄧㄢ
+鰔 0 ㄐㄧㄢ
+鼸 0 ㄐㄧㄢ
+姧 0 ㄐㄧㄢ
+浅 0 ㄐㄧㄢ
+飦 0 ㄐㄧㄢ
+碊 0 ㄐㄧㄢ
+豣 0 ㄐㄧㄢ
+睷 0 ㄐㄧㄢ
+銒 0 ㄐㄧㄢ
+䊕 0 ㄐㄧㄢ
+尶 0 ㄐㄧㄢ
+鍳 0 ㄐㄧㄢ
+馢 0 ㄐㄧㄢ
+瀐 0 ㄐㄧㄢ
+魐 0 ㄐㄧㄢ
+譼 0 ㄐㄧㄢ
+韀 0 ㄐㄧㄢ
+礷 0 ㄐㄧㄢ
+开 0 ㄐㄧㄢ
+冿 0 ㄐㄧㄢ
+黬 0 ㄐㄧㄢ
+囏 0 ㄐㄧㄢ
+凲 0 ㄐㄧㄢ
+簡 0 ㄐㄧㄢˇ
+撿 0 ㄐㄧㄢˇ
+剪 0 ㄐㄧㄢˇ
+減 0 ㄐㄧㄢˇ
+檢 0 ㄐㄧㄢˇ
+揀 0 ㄐㄧㄢˇ
+繭 0 ㄐㄧㄢˇ
+儉 0 ㄐㄧㄢˇ
+鹼 0 ㄐㄧㄢˇ
+柬 0 ㄐㄧㄢˇ
+筧 0 ㄐㄧㄢˇ
+翦 0 ㄐㄧㄢˇ
+謇 0 ㄐㄧㄢˇ
+戩 0 ㄐㄧㄢˇ
+蹇 0 ㄐㄧㄢˇ
+譾 0 ㄐㄧㄢˇ
+趼 0 ㄐㄧㄢˇ
+堿 0 ㄐㄧㄢˇ
+囝 0 ㄐㄧㄢˇ
+鰔 0 ㄐㄧㄢˇ
+挸 0 ㄐㄧㄢˇ
+湕 0 ㄐㄧㄢˇ
+瞼 0 ㄐㄧㄢˇ
+寋 0 ㄐㄧㄢˇ
+藆 0 ㄐㄧㄢˇ
+襺 0 ㄐㄧㄢˇ
+暕 0 ㄐㄧㄢˇ
+瑐 0 ㄐㄧㄢˇ
+件 0 ㄐㄧㄢˇ
+錢 0 ㄐㄧㄢˇ
+鐧 0 ㄐㄧㄢˇ
+騫 0 ㄐㄧㄢˇ
+帴 0 ㄐㄧㄢˇ
+媊 0 ㄐㄧㄢˇ
+揃 0 ㄐㄧㄢˇ
+僉 0 ㄐㄧㄢˇ
+噞 0 ㄐㄧㄢˇ
+嬐 0 ㄐㄧㄢˇ
+憸 0 ㄐㄧㄢˇ
+襉 0 ㄐㄧㄢˇ
+攓 0 ㄐㄧㄢˇ
+鐱 0 ㄐㄧㄢˇ
+鑳 0 ㄐㄧㄢˇ
+倹 0 ㄐㄧㄢˇ
+减 0 ㄐㄧㄢˇ
+梘 0 ㄐㄧㄢˇ
+検 0 ㄐㄧㄢˇ
+詃 0 ㄐㄧㄢˇ
+絸 0 ㄐㄧㄢˇ
+戬 0 ㄐㄧㄢˇ
+碱 0 ㄐㄧㄢˇ
+銭 0 ㄐㄧㄢˇ
+謭 0 ㄐㄧㄢˇ
+瀽 0 ㄐㄧㄢˇ
+蠒 0 ㄐㄧㄢˇ
+鹻 0 ㄐㄧㄢˇ
+弿 0 ㄐㄧㄢˇ
+見 0 ㄐㄧㄢˋ
+建 0 ㄐㄧㄢˋ
+健 0 ㄐㄧㄢˋ
+漸 0 ㄐㄧㄢˋ
+件 0 ㄐㄧㄢˋ
+間 0 ㄐㄧㄢˋ
+監 0 ㄐㄧㄢˋ
+鍵 0 ㄐㄧㄢˋ
+鑑 0 ㄐㄧㄢˋ
+箭 0 ㄐㄧㄢˋ
+劍 0 ㄐㄧㄢˋ
+艦 0 ㄐㄧㄢˋ
+鑒 0 ㄐㄧㄢˋ
+賤 0 ㄐㄧㄢˋ
+踐 0 ㄐㄧㄢˋ
+諫 0 ㄐㄧㄢˋ
+毽 0 ㄐㄧㄢˋ
+薦 0 ㄐㄧㄢˋ
+餞 0 ㄐㄧㄢˋ
+腱 0 ㄐㄧㄢˋ
+濺 0 ㄐㄧㄢˋ
+僭 0 ㄐㄧㄢˋ
+檻 0 ㄐㄧㄢˋ
+閒 0 ㄐㄧㄢˋ
+洊 0 ㄐㄧㄢˋ
+俴 0 ㄐㄧㄢˋ
+牮 0 ㄐㄧㄢˋ
+栫 0 ㄐㄧㄢˋ
+楗 0 ㄐㄧㄢˋ
+珔 0 ㄐㄧㄢˋ
+瀳 0 ㄐㄧㄢˋ
+澗 0 ㄐㄧㄢˋ
+瞷 0 ㄐㄧㄢˋ
+荐 0 ㄐㄧㄢˋ
+諓 0 ㄐㄧㄢˋ
+榗 0 ㄐㄧㄢˋ
+糋 0 ㄐㄧㄢˋ
+鰎 0 ㄐㄧㄢˋ
+蔪 0 ㄐㄧㄢˋ
+鋻 0 ㄐㄧㄢˋ
+螹 0 ㄐㄧㄢˋ
+襉 0 ㄐㄧㄢˋ
+糮 0 ㄐㄧㄢˋ
+鑳 0 ㄐㄧㄢˋ
+峴 0 ㄐㄧㄢˋ
+莧 0 ㄐㄧㄢˋ
+筧 0 ㄐㄧㄢˋ
+儉 0 ㄐㄧㄢˋ
+韉 0 ㄐㄧㄢˋ
+俔 0 ㄐㄧㄢˋ
+娊 0 ㄐㄧㄢˋ
+挸 0 ㄐㄧㄢˋ
+涀 0 ㄐㄧㄢˋ
+揵 0 ㄐㄧㄢˋ
+湕 0 ㄐㄧㄢˋ
+睍 0 ㄐㄧㄢˋ
+廌 0 ㄐㄧㄢˋ
+煡 0 ㄐㄧㄢˋ
+犍 0 ㄐㄧㄢˋ
+粯 0 ㄐㄧㄢˋ
+葥 0 ㄐㄧㄢˋ
+僣 0 ㄐㄧㄢˋ
+摲 0 ㄐㄧㄢˋ
+壏 0 ㄐㄧㄢˋ
+覮 0 ㄐㄧㄢˋ
+鞬 0 ㄐㄧㄢˋ
+轞 0 ㄐㄧㄢˋ
+侟 0 ㄐㄧㄢˋ
+倹 0 ㄐㄧㄢˋ
+剣 0 ㄐㄧㄢˋ
+悓 0 ㄐㄧㄢˋ
+臶 0 ㄐㄧㄢˋ
+㨴 0 ㄐㄧㄢˋ
+劎 0 ㄐㄧㄢˋ
+㵎 0 ㄐㄧㄢˋ
+趝 0 ㄐㄧㄢˋ
+劔 0 ㄐㄧㄢˋ
+瞯 0 ㄐㄧㄢˋ
+鍳 0 ㄐㄧㄢˋ
+擶 0 ㄐㄧㄢˋ
+繝 0 ㄐㄧㄢˋ
+鏩 0 ㄐㄧㄢˋ
+鐗 0 ㄐㄧㄢˋ
+鐧 0 ㄐㄧㄢˋ
+譼 0 ㄐㄧㄢˋ
+韀 0 ㄐㄧㄢˋ
+鑬 0 ㄐㄧㄢˋ
+徤 0 ㄐㄧㄢˋ
+旔 0 ㄐㄧㄢˋ
+劒 0 ㄐㄧㄢˋ
+踺 0 ㄐㄧㄢˋ
+礀 0 ㄐㄧㄢˋ
+幾 0 ㄐㄧˇ
+給 0 ㄐㄧˇ
+己 0 ㄐㄧˇ
+擠 0 ㄐㄧˇ
+脊 0 ㄐㄧˇ
+戟 0 ㄐㄧˇ
+濟 0 ㄐㄧˇ
+几 0 ㄐㄧˇ
+麂 0 ㄐㄧˇ
+庋 0 ㄐㄧˇ
+蟣 0 ㄐㄧˇ
+剞 0 ㄐㄧˇ
+掎 0 ㄐㄧˇ
+泲 0 ㄐㄧˇ
+踦 0 ㄐㄧˇ
+魕 0 ㄐㄧˇ
+丮 0 ㄐㄧˇ
+穖 0 ㄐㄧˇ
+妀 0 ㄐㄧˇ
+撠 0 ㄐㄧˇ
+紀 0 ㄐㄧˇ
+机 0 ㄐㄧˇ
+邔 0 ㄐㄧˇ
+芑 0 ㄐㄧˇ
+枳 0 ㄐㄧˇ
+鳧 0 ㄐㄧˇ
+橶 0 ㄐㄧˇ
+鞿 0 ㄐㄧˇ
+犱 0 ㄐㄧˇ
+鳬 0 ㄐㄧˇ
+済 0 ㄐㄧˇ
+㦸 0 ㄐㄧˇ
+嵴 0 ㄐㄧˇ
+魢 0 ㄐㄧˇ
+計 0 ㄐㄧˋ
+記 0 ㄐㄧˋ
+既 0 ㄐㄧˋ
+紀 0 ㄐㄧˋ
+際 0 ㄐㄧˋ
+繼 0 ㄐㄧˋ
+季 0 ㄐㄧˋ
+寄 0 ㄐㄧˋ
+技 0 ㄐㄧˋ
+妓 0 ㄐㄧˋ
+濟 0 ㄐㄧˋ
+劑 0 ㄐㄧˋ
+繫 0 ㄐㄧˋ
+悸 0 ㄐㄧˋ
+祭 0 ㄐㄧˋ
+忌 0 ㄐㄧˋ
+暨 0 ㄐㄧˋ
+冀 0 ㄐㄧˋ
+騎 0 ㄐㄧˋ
+鯽 0 ㄐㄧˋ
+稷 0 ㄐㄧˋ
+躋 0 ㄐㄧˋ
+薺 0 ㄐㄧˋ
+驥 0 ㄐㄧˋ
+霽 0 ㄐㄧˋ
+薊 0 ㄐㄧˋ
+髻 0 ㄐㄧˋ
+罽 0 ㄐㄧˋ
+覬 0 ㄐㄧˋ
+伎 0 ㄐㄧˋ
+洎 0 ㄐㄧˋ
+瘈 0 ㄐㄧˋ
+跽 0 ㄐㄧˋ
+嚌 0 ㄐㄧˋ
+塈 0 ㄐㄧˋ
+惎 0 ㄐㄧˋ
+漈 0 ㄐㄧˋ
+穧 0 ㄐㄧˋ
+芰 0 ㄐㄧˋ
+蔇 0 ㄐㄧˋ
+痵 0 ㄐㄧˋ
+癠 0 ㄐㄧˋ
+穄 0 ㄐㄧˋ
+鮆 0 ㄐㄧˋ
+鱭 0 ㄐㄧˋ
+鯚 0 ㄐㄧˋ
+鰶 0 ㄐㄧˋ
+旡 0 ㄐㄧˋ
+刉 0 ㄐㄧˋ
+臮 0 ㄐㄧˋ
+裚 0 ㄐㄧˋ
+穊 0 ㄐㄧˋ
+誋 0 ㄐㄧˋ
+鬾 0 ㄐㄧˋ
+瞡 0 ㄐㄧˋ
+檕 0 ㄐㄧˋ
+璾 0 ㄐㄧˋ
+鵋 0 ㄐㄧˋ
+齌 0 ㄐㄧˋ
+懻 0 ㄐㄧˋ
+瀱 0 ㄐㄧˋ
+鱀 0 ㄐㄧˋ
+蘮 0 ㄐㄧˋ
+蘻 0 ㄐㄧˋ
+即 0 ㄐㄧˋ
+其 0 ㄐㄧˋ
+寂 0 ㄐㄧˋ
+廄 0 ㄐㄧˋ
+揖 0 ㄐㄧˋ
+齊 0 ㄐㄧˋ
+儕 0 ㄐㄧˋ
+邔 0 ㄐㄧˋ
+庪 0 ㄐㄧˋ
+紒 0 ㄐㄧˋ
+茤 0 ㄐㄧˋ
+偈 0 ㄐㄧˋ
+徛 0 ㄐㄧˋ
+漃 0 ㄐㄧˋ
+暩 0 ㄐㄧˋ
+瘵 0 ㄐㄧˋ
+黖 0 ㄐㄧˋ
+謖 0 ㄐㄧˋ
+齍 0 ㄐㄧˋ
+艩 0 ㄐㄧˋ
+羇 0 ㄐㄧˋ
+麡 0 ㄐㄧˋ
+彐 0 ㄐㄧˋ
+彑 0 ㄐㄧˋ
+齐 0 ㄐㄧˋ
+坖 0 ㄐㄧˋ
+亝 0 ㄐㄧˋ
+斉 0 ㄐㄧˋ
+卽 0 ㄐㄧˋ
+垍 0 ㄐㄧˋ
+峑 0 ㄐㄧˋ
+剤 0 ㄐㄧˋ
+帺 0 ㄐㄧˋ
+㥍 0 ㄐㄧˋ
+旣 0 ㄐㄧˋ
+梞 0 ㄐㄧˋ
+済 0 ㄐㄧˋ
+㻑 0 ㄐㄧˋ
+兾 0 ㄐㄧˋ
+厩 0 ㄐㄧˋ
+継 0 ㄐㄧˋ
+魝 0 ㄐㄧˋ
+墍 0 ㄐㄧˋ
+廐 0 ㄐㄧˋ
+廏 0 ㄐㄧˋ
+稩 0 ㄐㄧˋ
+褀 0 ㄐㄧˋ
+禝 0 ㄐㄧˋ
+曁 0 ㄐㄧˋ
+襀 0 ㄐㄧˋ
+櫭 0 ㄐㄧˋ
+檵 0 ㄐㄧˋ
+聻 0 ㄐㄧˋ
+斊 0 ㄐㄧˋ
+皍 0 ㄐㄧˋ
+萕 0 ㄐㄧˋ
+葪 0 ㄐㄧˋ
+縘 0 ㄐㄧˋ
+鯯 0 ㄐㄧˋ
+蘎 0 ㄐㄧˋ
+及 0 ㄐㄧˊ
+級 0 ㄐㄧˊ
+極 0 ㄐㄧˊ
+即 0 ㄐㄧˊ
+集 0 ㄐㄧˊ
+急 0 ㄐㄧˊ
+擊 0 ㄐㄧˊ
+疾 0 ㄐㄧˊ
+籍 0 ㄐㄧˊ
+吉 0 ㄐㄧˊ
+寂 0 ㄐㄧˊ
+輯 0 ㄐㄧˊ
+脊 0 ㄐㄧˊ
+圾 0 ㄐㄧˊ
+唧 0 ㄐㄧˊ
+嫉 0 ㄐㄧˊ
+汲 0 ㄐㄧˊ
+亟 0 ㄐㄧˊ
+吃 0 ㄐㄧˊ
+棘 0 ㄐㄧˊ
+藉 0 ㄐㄧˊ
+瘠 0 ㄐㄧˊ
+楫 0 ㄐㄧˊ
+岌 0 ㄐㄧˊ
+笈 0 ㄐㄧˊ
+鶺 0 ㄐㄧˊ
+戢 0 ㄐㄧˊ
+殛 0 ㄐㄧˊ
+蹐 0 ㄐㄧˊ
+伋 0 ㄐㄧˊ
+蒺 0 ㄐㄧˊ
+耤 0 ㄐㄧˊ
+芨 0 ㄐㄧˊ
+蕺 0 ㄐㄧˊ
+踖 0 ㄐㄧˊ
+鈒 0 ㄐㄧˊ
+佶 0 ㄐㄧˊ
+堲 0 ㄐㄧˊ
+姞 0 ㄐㄧˊ
+濈 0 ㄐㄧˊ
+襋 0 ㄐㄧˊ
+墼 0 ㄐㄧˊ
+潗 0 ㄐㄧˊ
+鴶 0 ㄐㄧˊ
+嶯 0 ㄐㄧˊ
+洁 0 ㄐㄧˊ
+忣 0 ㄐㄧˊ
+湒 0 ㄐㄧˊ
+极 0 ㄐㄧˊ
+銡 0 ㄐㄧˊ
+狤 0 ㄐㄧˊ
+鏶 0 ㄐㄧˊ
+蝍 0 ㄐㄧˊ
+衱 0 ㄐㄧˊ
+偮 0 ㄐㄧˊ
+庴 0 ㄐㄧˊ
+莋 0 ㄐㄧˊ
+塉 0 ㄐㄧˊ
+槉 0 ㄐㄧˊ
+漃 0 ㄐㄧˊ
+膌 0 ㄐㄧˊ
+蓻 0 ㄐㄧˊ
+橶 0 ㄐㄧˊ
+蕀 0 ㄐㄧˊ
+轚 0 ㄐㄧˊ
+霵 0 ㄐㄧˊ
+彶 0 ㄐㄧˊ
+揤 0 ㄐㄧˊ
+楖 0 ㄐㄧˊ
+秸 0 ㄐㄧˊ
+鞊 0 ㄐㄧˊ
+螏 0 ㄐㄧˊ
+觙 0 ㄐㄧˊ
+戕 0 ㄐㄧˊ
+革 0 ㄐㄧˊ
+戟 0 ㄐㄧˊ
+勣 0 ㄐㄧˊ
+詰 0 ㄐㄧˊ
+劇 0 ㄐㄧˊ
+緝 0 ㄐㄧˊ
+積 0 ㄐㄧˊ
+髻 0 ㄐㄧˊ
+擷 0 ㄐㄧˊ
+蹟 0 ㄐㄧˊ
+鯽 0 ㄐㄧˊ
+丮 0 ㄐㄧˊ
+岋 0 ㄐㄧˊ
+扱 0 ㄐㄧˊ
+昅 0 ㄐㄧˊ
+咭 0 ㄐㄧˊ
+茍 0 ㄐㄧˊ
+咠 0 ㄐㄧˊ
+恄 0 ㄐㄧˊ
+砐 0 ㄐㄧˊ
+迼 0 ㄐㄧˊ
+唶 0 ㄐㄧˊ
+硈 0 ㄐㄧˊ
+聐 0 ㄐㄧˊ
+蛣 0 ㄐㄧˊ
+趌 0 ㄐㄧˊ
+毄 0 ㄐㄧˊ
+憰 0 ㄐㄧˊ
+撠 0 ㄐㄧˊ
+墽 0 ㄐㄧˊ
+諿 0 ㄐㄧˊ
+鮚 0 ㄐㄧˊ
+蟿 0 ㄐㄧˊ
+鰿 0 ㄐㄧˊ
+鷑 0 ㄐㄧˊ
+躤 0 ㄐㄧˊ
+亼 0 ㄐㄧˊ
+皀 0 ㄐㄧˊ
+卽 0 ㄐㄧˊ
+垐 0 ㄐㄧˊ
+㘹 0 ㄐㄧˊ
+郆 0 ㄐㄧˊ
+剧 0 ㄐㄧˊ
+㭲 0 ㄐㄧˊ
+淁 0 ㄐㄧˊ
+焏 0 ㄐㄧˊ
+喞 0 ㄐㄧˊ
+㦸 0 ㄐㄧˊ
+愱 0 ㄐㄧˊ
+稭 0 ㄐㄧˊ
+撃 0 ㄐㄧˊ
+箿 0 ㄐㄧˊ
+䔛 0 ㄐㄧˊ
+瘷 0 ㄐㄧˊ
+檝 0 ㄐㄧˊ
+鍓 0 ㄐㄧˊ
+艥 0 ㄐㄧˊ
+雦 0 ㄐㄧˊ
+雧 0 ㄐㄧˊ
+皍 0 ㄐㄧˊ
+卙 0 ㄐㄧˊ
+脨 0 ㄐㄧˊ
+㗊 0 ㄐㄧˊ
+㗱 0 ㄐㄧˊ
+趞 0 ㄐㄧˊ
+㘍 0 ㄐㄧˊ
+䳭 0 ㄐㄧˊ
+家 0 ㄐㄧㄚ
+加 0 ㄐㄧㄚ
+嘉 0 ㄐㄧㄚ
+佳 0 ㄐㄧㄚ
+傢 0 ㄐㄧㄚ
+迦 0 ㄐㄧㄚ
+枷 0 ㄐㄧㄚ
+袈 0 ㄐㄧㄚ
+痂 0 ㄐㄧㄚ
+笳 0 ㄐㄧㄚ
+珈 0 ㄐㄧㄚ
+跏 0 ㄐㄧㄚ
+茄 0 ㄐㄧㄚ
+葭 0 ㄐㄧㄚ
+豭 0 ㄐㄧㄚ
+耞 0 ㄐㄧㄚ
+麚 0 ㄐㄧㄚ
+泇 0 ㄐㄧㄚ
+毠 0 ㄐㄧㄚ
+鎵 0 ㄐㄧㄚ
+鴐 0 ㄐㄧㄚ
+猳 0 ㄐㄧㄚ
+幏 0 ㄐㄧㄚ
+犌 0 ㄐㄧㄚ
+貑 0 ㄐㄧㄚ
+夾 0 ㄐㄧㄚ
+伽 0 ㄐㄧㄚ
+咖 0 ㄐㄧㄚ
+拁 0 ㄐㄧㄚ
+腵 0 ㄐㄧㄚ
+鉫 0 ㄐㄧㄚ
+擮 0 ㄐㄧㄚ
+䕒 0 ㄐㄧㄚ
+宊 0 ㄐㄧㄚ
+假 0 ㄐㄧㄚˇ
+甲 0 ㄐㄧㄚˇ
+賈 0 ㄐㄧㄚˇ
+鉀 0 ㄐㄧㄚˇ
+岬 0 ㄐㄧㄚˇ
+胛 0 ㄐㄧㄚˇ
+斝 0 ㄐㄧㄚˇ
+榎 0 ㄐㄧㄚˇ
+瘕 0 ㄐㄧㄚˇ
+檟 0 ㄐㄧㄚˇ
+婽 0 ㄐㄧㄚˇ
+玾 0 ㄐㄧㄚˇ
+徦 0 ㄐㄧㄚˇ
+椵 0 ㄐㄧㄚˇ
+夏 0 ㄐㄧㄚˇ
+柙 0 ㄐㄧㄚˇ
+瑕 0 ㄐㄧㄚˇ
+笚 0 ㄐㄧㄚˇ
+舺 0 ㄐㄧㄚˇ
+猳 0 ㄐㄧㄚˇ
+犌 0 ㄐㄧㄚˇ
+嘏 0 ㄐㄧㄚˇ
+碬 0 ㄐㄧㄚˇ
+貑 0 ㄐㄧㄚˇ
+赮 0 ㄐㄧㄚˇ
+魻 0 ㄐㄧㄚˇ
+鍜 0 ㄐㄧㄚˇ
+騢 0 ㄐㄧㄚˇ
+麚 0 ㄐㄧㄚˇ
+叚 0 ㄐㄧㄚˇ
+疨 0 ㄐㄧㄚˇ
+斚 0 ㄐㄧㄚˇ
+䘥 0 ㄐㄧㄚˇ
+夓 0 ㄐㄧㄚˇ
+價 0 ㄐㄧㄚˋ
+假 0 ㄐㄧㄚˋ
+架 0 ㄐㄧㄚˋ
+駕 0 ㄐㄧㄚˋ
+嫁 0 ㄐㄧㄚˋ
+賈 0 ㄐㄧㄚˋ
+稼 0 ㄐㄧㄚˋ
+价 0 ㄐㄧㄚˋ
+甲 0 ㄐㄧㄚˋ
+夾 0 ㄐㄧㄚˋ
+幏 0 ㄐㄧㄚˋ
+鴐 0 ㄐㄧㄚˋ
+価 0 ㄐㄧㄚˋ
+榢 0 ㄐㄧㄚˋ
+夾 0 ㄐㄧㄚˊ
+挾 0 ㄐㄧㄚˊ
+頰 0 ㄐㄧㄚˊ
+蛺 0 ㄐㄧㄚˊ
+莢 0 ㄐㄧㄚˊ
+浹 0 ㄐㄧㄚˊ
+戛 0 ㄐㄧㄚˊ
+郟 0 ㄐㄧㄚˊ
+恝 0 ㄐㄧㄚˊ
+袷 0 ㄐㄧㄚˊ
+筴 0 ㄐㄧㄚˊ
+裌 0 ㄐㄧㄚˊ
+鋏 0 ㄐㄧㄚˊ
+梜 0 ㄐㄧㄚˊ
+跲 0 ㄐㄧㄚˊ
+舺 0 ㄐㄧㄚˊ
+唊 0 ㄐㄧㄚˊ
+硈 0 ㄐㄧㄚˊ
+扴 0 ㄐㄧㄚˊ
+鞂 0 ㄐㄧㄚˊ
+鞈 0 ㄐㄧㄚˊ
+鵊 0 ㄐㄧㄚˊ
+狎 0 ㄐㄧㄚˊ
+俠 0 ㄐㄧㄚˊ
+頡 0 ㄐㄧㄚˊ
+祫 0 ㄐㄧㄚˊ
+秸 0 ㄐㄧㄚˊ
+脥 0 ㄐㄧㄚˊ
+猰 0 ㄐㄧㄚˊ
+硤 0 ㄐㄧㄚˊ
+翜 0 ㄐㄧㄚˊ
+鴶 0 ㄐㄧㄚˊ
+圿 0 ㄐㄧㄚˊ
+忦 0 ㄐㄧㄚˊ
+侠 0 ㄐㄧㄚˊ
+挟 0 ㄐㄧㄚˊ
+埉 0 ㄐㄧㄚˊ
+戞 0 ㄐㄧㄚˊ
+㮖 0 ㄐㄧㄚˊ
+稭 0 ㄐㄧㄚˊ
+浃 0 ㄐㄧㄚˊ
+䛟 0 ㄐㄧㄚˊ
+餄 0 ㄐㄧㄚˊ
+教 0 ㄐㄧㄠ
+交 0 ㄐㄧㄠ
+膠 0 ㄐㄧㄠ
+驕 0 ㄐㄧㄠ
+焦 0 ㄐㄧㄠ
+嬌 0 ㄐㄧㄠ
+郊 0 ㄐㄧㄠ
+跤 0 ㄐㄧㄠ
+澆 0 ㄐㄧㄠ
+蛟 0 ㄐㄧㄠ
+蕉 0 ㄐㄧㄠ
+礁 0 ㄐㄧㄠ
+椒 0 ㄐㄧㄠ
+茭 0 ㄐㄧㄠ
+姣 0 ㄐㄧㄠ
+鮫 0 ㄐㄧㄠ
+僬 0 ㄐㄧㄠ
+憍 0 ㄐㄧㄠ
+艽 0 ㄐㄧㄠ
+鷦 0 ㄐㄧㄠ
+燋 0 ㄐㄧㄠ
+詨 0 ㄐㄧㄠ
+鱎 0 ㄐㄧㄠ
+鐎 0 ㄐㄧㄠ
+鵁 0 ㄐㄧㄠ
+鷮 0 ㄐㄧㄠ
+嘄 0 ㄐㄧㄠ
+憿 0 ㄐㄧㄠ
+膲 0 ㄐㄧㄠ
+穚 0 ㄐㄧㄠ
+蟂 0 ㄐㄧㄠ
+鷍 0 ㄐㄧㄠ
+嶕 0 ㄐㄧㄠ
+蟭 0 ㄐㄧㄠ
+咬 0 ㄐㄧㄠ
+皎 0 ㄐㄧㄠ
+喬 0 ㄐㄧㄠ
+鉸 0 ㄐㄧㄠ
+憔 0 ㄐㄧㄠ
+恔 0 ㄐㄧㄠ
+挍 0 ㄐㄧㄠ
+洨 0 ㄐㄧㄠ
+俶 0 ㄐㄧㄠ
+珓 0 ㄐㄧㄠ
+琡 0 ㄐㄧㄠ
+筊 0 ㄐㄧㄠ
+劁 0 ㄐㄧㄠ
+摎 0 ㄐㄧㄠ
+嫶 0 ㄐㄧㄠ
+樛 0 ㄐㄧㄠ
+潐 0 ㄐㄧㄠ
+頝 0 ㄐㄧㄠ
+嬓 0 ㄐㄧㄠ
+徼 0 ㄐㄧㄠ
+燆 0 ㄐㄧㄠ
+犞 0 ㄐㄧㄠ
+穛 0 ㄐㄧㄠ
+簥 0 ㄐㄧㄠ
+趭 0 ㄐㄧㄠ
+譥 0 ㄐㄧㄠ
+鸄 0 ㄐㄧㄠ
+乔 0 ㄐㄧㄠ
+晈 0 ㄐㄧㄠ
+胶 0 ㄐㄧㄠ
+敎 0 ㄐㄧㄠ
+敫 0 ㄐㄧㄠ
+誟 0 ㄐㄧㄠ
+嶣 0 ㄐㄧㄠ
+癄 0 ㄐㄧㄠ
+譤 0 ㄐㄧㄠ
+顦 0 ㄐㄧㄠ
+齩 0 ㄐㄧㄠ
+䶧 0 ㄐㄧㄠ
+茮 0 ㄐㄧㄠ
+虠 0 ㄐㄧㄠ
+腳 0 ㄐㄧㄠˇ
+角 0 ㄐㄧㄠˇ
+繳 0 ㄐㄧㄠˇ
+攪 0 ㄐㄧㄠˇ
+勦 0 ㄐㄧㄠˇ
+矯 0 ㄐㄧㄠˇ
+絞 0 ㄐㄧㄠˇ
+姣 0 ㄐㄧㄠˇ
+佼 0 ㄐㄧㄠˇ
+餃 0 ㄐㄧㄠˇ
+皎 0 ㄐㄧㄠˇ
+僥 0 ㄐㄧㄠˇ
+剿 0 ㄐㄧㄠˇ
+較 0 ㄐㄧㄠˇ
+鉸 0 ㄐㄧㄠˇ
+狡 0 ㄐㄧㄠˇ
+皦 0 ㄐㄧㄠˇ
+儌 0 ㄐㄧㄠˇ
+筊 0 ㄐㄧㄠˇ
+蟜 0 ㄐㄧㄠˇ
+摷 0 ㄐㄧㄠˇ
+撟 0 ㄐㄧㄠˇ
+捁 0 ㄐㄧㄠˇ
+灚 0 ㄐㄧㄠˇ
+曒 0 ㄐㄧㄠˇ
+漅 0 ㄐㄧㄠˇ
+劋 0 ㄐㄧㄠˇ
+譑 0 ㄐㄧㄠˇ
+煍 0 ㄐㄧㄠˇ
+檄 0 ㄐㄧㄠˇ
+鮫 0 ㄐㄧㄠˇ
+覺 0 ㄐㄧㄠˇ
+唃 0 ㄐㄧㄠˇ
+捔 0 ㄐㄧㄠˇ
+桷 0 ㄐㄧㄠˇ
+湫 0 ㄐㄧㄠˇ
+确 0 ㄐㄧㄠˇ
+憢 0 ㄐㄧㄠˇ
+皛 0 ㄐㄧㄠˇ
+噭 0 ㄐㄧㄠˇ
+墽 0 ㄐㄧㄠˇ
+嬓 0 ㄐㄧㄠˇ
+徼 0 ㄐㄧㄠˇ
+憿 0 ㄐㄧㄠˇ
+撽 0 ㄐㄧㄠˇ
+敿 0 ㄐㄧㄠˇ
+獥 0 ㄐㄧㄠˇ
+礉 0 ㄐㄧㄠˇ
+覈 0 ㄐㄧㄠˇ
+蹻 0 ㄐㄧㄠˇ
+觷 0 ㄐㄧㄠˇ
+譥 0 ㄐㄧㄠˇ
+躈 0 ㄐㄧㄠˇ
+鱎 0 ㄐㄧㄠˇ
+㭂 0 ㄐㄧㄠˇ
+晈 0 ㄐㄧㄠˇ
+烄 0 ㄐㄧㄠˇ
+斍 0 ㄐㄧㄠˇ
+脚 0 ㄐㄧㄠˇ
+覚 0 ㄐㄧㄠˇ
+湬 0 ㄐㄧㄠˇ
+踋 0 ㄐㄧㄠˇ
+撹 0 ㄐㄧㄠˇ
+璬 0 ㄐㄧㄠˇ
+孂 0 ㄐㄧㄠˇ
+譤 0 ㄐㄧㄠˇ
+臫 0 ㄐㄧㄠˇ
+覐 0 ㄐㄧㄠˇ
+㡑 0 ㄐㄧㄠˇ
+暞 0 ㄐㄧㄠˇ
+賋 0 ㄐㄧㄠˇ
+教 0 ㄐㄧㄠˋ
+叫 0 ㄐㄧㄠˋ
+校 0 ㄐㄧㄠˋ
+較 0 ㄐㄧㄠˋ
+覺 0 ㄐㄧㄠˋ
+轎 0 ㄐㄧㄠˋ
+窖 0 ㄐㄧㄠˋ
+皭 0 ㄐㄧㄠˋ
+醮 0 ㄐㄧㄠˋ
+徼 0 ㄐㄧㄠˋ
+噭 0 ㄐㄧㄠˋ
+嶠 0 ㄐㄧㄠˋ
+挍 0 ㄐㄧㄠˋ
+斠 0 ㄐㄧㄠˋ
+珓 0 ㄐㄧㄠˋ
+釂 0 ㄐㄧㄠˋ
+滘 0 ㄐㄧㄠˋ
+窌 0 ㄐㄧㄠˋ
+嘂 0 ㄐㄧㄠˋ
+潐 0 ㄐㄧㄠˋ
+譥 0 ㄐㄧㄠˋ
+窟 0 ㄐㄧㄠˋ
+酵 0 ㄐㄧㄠˋ
+嚼 0 ㄐㄧㄠˋ
+蘸 0 ㄐㄧㄠˋ
+窔 0 ㄐㄧㄠˋ
+嘺 0 ㄐㄧㄠˋ
+撟 0 ㄐㄧㄠˋ
+嬓 0 ㄐㄧㄠˋ
+犞 0 ㄐㄧㄠˋ
+礄 0 ㄐㄧㄠˋ
+趭 0 ㄐㄧㄠˋ
+蹻 0 ㄐㄧㄠˋ
+灂 0 ㄐㄧㄠˋ
+呌 0 ㄐㄧㄠˋ
+泎 0 ㄐㄧㄠˋ
+訆 0 ㄐㄧㄠˋ
+敎 0 ㄐㄧㄠˋ
+斍 0 ㄐㄧㄠˋ
+覚 0 ㄐㄧㄠˋ
+敫 0 ㄐㄧㄠˋ
+嘦 0 ㄐㄧㄠˋ
+譤 0 ㄐㄧㄠˋ
+叽 0 ㄐㄧㄠˋ
+覐 0 ㄐㄧㄠˋ
+漖 0 ㄐㄧㄠˋ
+嚼 0 ㄐㄧㄠˊ
+今 0 ㄐㄧㄣ
+金 0 ㄐㄧㄣ
+禁 0 ㄐㄧㄣ
+津 0 ㄐㄧㄣ
+斤 0 ㄐㄧㄣ
+巾 0 ㄐㄧㄣ
+筋 0 ㄐㄧㄣ
+襟 0 ㄐㄧㄣ
+矜 0 ㄐㄧㄣ
+浸 0 ㄐㄧㄣ
+觔 0 ㄐㄧㄣ
+衿 0 ㄐㄧㄣ
+祲 0 ㄐㄧㄣ
+瑧 0 ㄐㄧㄣ
+菳 0 ㄐㄧㄣ
+珒 0 ㄐㄧㄣ
+埐 0 ㄐㄧㄣ
+紟 0 ㄐㄧㄣ
+嶜 0 ㄐㄧㄣ
+惍 0 ㄐㄧㄣ
+鈐 0 ㄐㄧㄣ
+伒 0 ㄐㄧㄣ
+坅 0 ㄐㄧㄣ
+岒 0 ㄐㄧㄣ
+庈 0 ㄐㄧㄣ
+忴 0 ㄐㄧㄣ
+扲 0 ㄐㄧㄣ
+昑 0 ㄐㄧㄣ
+肣 0 ㄐㄧㄣ
+蚙 0 ㄐㄧㄣ
+軡 0 ㄐㄧㄣ
+堻 0 ㄐㄧㄣ
+靳 0 ㄐㄧㄣ
+靲 0 ㄐㄧㄣ
+鬿 0 ㄐㄧㄣ
+斳 0 ㄐㄧㄣ
+鳹 0 ㄐㄧㄣ
+矝 0 ㄐㄧㄣ
+黅 0 ㄐㄧㄣ
+鵭 0 ㄐㄧㄣ
+兓 0 ㄐㄧㄣ
+荕 0 ㄐㄧㄣ
+濅 0 ㄐㄧㄣ
+䃸 0 ㄐㄧㄣ
+緊 0 ㄐㄧㄣˇ
+僅 0 ㄐㄧㄣˇ
+錦 0 ㄐㄧㄣˇ
+謹 0 ㄐㄧㄣˇ
+儘 0 ㄐㄧㄣˇ
+覲 0 ㄐㄧㄣˇ
+瑾 0 ㄐㄧㄣˇ
+饉 0 ㄐㄧㄣˇ
+槿 0 ㄐㄧㄣˇ
+墐 0 ㄐㄧㄣˇ
+殣 0 ㄐㄧㄣˇ
+堇 0 ㄐㄧㄣˇ
+慬 0 ㄐㄧㄣˇ
+菫 0 ㄐㄧㄣˇ
+巹 0 ㄐㄧㄣˇ
+婜 0 ㄐㄧㄣˇ
+掔 0 ㄐㄧㄣˇ
+廑 0 ㄐㄧㄣˇ
+蓳 0 ㄐㄧㄣˇ
+瘽 0 ㄐㄧㄣˇ
+嚍 0 ㄐㄧㄣˇ
+螼 0 ㄐㄧㄣˇ
+騹 0 ㄐㄧㄣˇ
+卺 0 ㄐㄧㄣˇ
+厪 0 ㄐㄧㄣˇ
+嫤 0 ㄐㄧㄣˇ
+漌 0 ㄐㄧㄣˇ
+懄 0 ㄐㄧㄣˇ
+䐶 0 ㄐㄧㄣˇ
+進 0 ㄐㄧㄣˋ
+近 0 ㄐㄧㄣˋ
+盡 0 ㄐㄧㄣˋ
+禁 0 ㄐㄧㄣˋ
+晉 0 ㄐㄧㄣˋ
+儘 0 ㄐㄧㄣˋ
+浸 0 ㄐㄧㄣˋ
+勁 0 ㄐㄧㄣˋ
+覲 0 ㄐㄧㄣˋ
+燼 0 ㄐㄧㄣˋ
+廑 0 ㄐㄧㄣˋ
+噤 0 ㄐㄧㄣˋ
+靳 0 ㄐㄧㄣˋ
+縉 0 ㄐㄧㄣˋ
+僅 0 ㄐㄧㄣˋ
+藎 0 ㄐㄧㄣˋ
+妗 0 ㄐㄧㄣˋ
+贐 0 ㄐㄧㄣˋ
+寖 0 ㄐㄧㄣˋ
+搢 0 ㄐㄧㄣˋ
+肵 0 ㄐㄧㄣˋ
+璡 0 ㄐㄧㄣˋ
+賮 0 ㄐㄧㄣˋ
+嬧 0 ㄐㄧㄣˋ
+榗 0 ㄐㄧㄣˋ
+僸 0 ㄐㄧㄣˋ
+蓳 0 ㄐㄧㄣˋ
+瘽 0 ㄐㄧㄣˋ
+嚍 0 ㄐㄧㄣˋ
+濜 0 ㄐㄧㄣˋ
+璶 0 ㄐㄧㄣˋ
+伒 0 ㄐㄧㄣˋ
+溍 0 ㄐㄧㄣˋ
+瑾 0 ㄐㄧㄣˋ
+饉 0 ㄐㄧㄣˋ
+坅 0 ㄐㄧㄣˋ
+昑 0 ㄐㄧㄣˋ
+枃 0 ㄐㄧㄣˋ
+肣 0 ㄐㄧㄣˋ
+埐 0 ㄐㄧㄣˋ
+蚙 0 ㄐㄧㄣˋ
+堇 0 ㄐㄧㄣˋ
+祲 0 ㄐㄧㄣˋ
+葝 0 ㄐㄧㄣˋ
+鄑 0 ㄐㄧㄣˋ
+靲 0 ㄐㄧㄣˋ
+墐 0 ㄐㄧㄣˋ
+戩 0 ㄐㄧㄣˋ
+殣 0 ㄐㄧㄣˋ
+澿 0 ㄐㄧㄣˋ
+尽 0 ㄐㄧㄣˋ
+晋 0 ㄐㄧㄣˋ
+唫 0 ㄐㄧㄣˋ
+厪 0 ㄐㄧㄣˋ
+嫤 0 ㄐㄧㄣˋ
+戬 0 ㄐㄧㄣˋ
+瑨 0 ㄐㄧㄣˋ
+馸 0 ㄐㄧㄣˋ
+凚 0 ㄐㄧㄣˋ
+歏 0 ㄐㄧㄣˋ
+㯲 0 ㄐㄧㄣˋ
+劤 0 ㄐㄧㄣˋ
+濅 0 ㄐㄧㄣˋ
+齽 0 ㄐㄧㄣˋ
+ㄋ 0 ㄋ
+啂 0 ㄋㄡˇ
+耨 0 ㄋㄡˋ
+鎒 0 ㄋㄡˋ
+嗕 0 ㄋㄡˋ
+弄 0 ㄋㄡˋ
+獳 0 ㄋㄡˋ
+挵 0 ㄋㄡˋ
+搙 0 ㄋㄡˋ
+槈 0 ㄋㄡˋ
+鐞 0 ㄋㄡˋ
+挊 0 ㄋㄡˋ
+譳 0 ㄋㄡˋ
+羺 0 ㄋㄡˊ
+獳 0 ㄋㄡˊ
+譨 0 ㄋㄡˊ
+𠹌 0 ㄋㄥˇ
+濘 0 ㄋㄥˋ
+弄 0 ㄋㄥˋ
+挵 0 ㄋㄥˋ
+挊 0 ㄋㄥˋ
+𤀑 0 ㄋㄥˋ
+能 0 ㄋㄥˊ
+薴 0 ㄋㄥˊ
+儜 0 ㄋㄥˊ
+膿 0 ㄋㄥˊ
+嬣 0 ㄋㄥˊ
+癑 0 ㄋㄥˊ
+曩 0 ㄋㄤˇ
+攮 0 ㄋㄤˇ
+灢 0 ㄋㄤˇ
+搑 0 ㄋㄤˇ
+饢 0 ㄋㄤˇ
+齉 0 ㄋㄤˋ
+儾 0 ㄋㄤˋ
+囊 0 ㄋㄤˊ
+搑 0 ㄋㄤˊ
+欜 0 ㄋㄤˊ
+乪 0 ㄋㄤˊ
+饢 0 ㄋㄤˊ
+囔 0 ㄋㄤ˙
+囡 0 ㄋㄢ
+赧 0 ㄋㄢˇ
+戁 0 ㄋㄢˇ
+蝻 0 ㄋㄢˇ
+湳 0 ㄋㄢˇ
+腩 0 ㄋㄢˇ
+揇 0 ㄋㄢˇ
+萳 0 ㄋㄢˇ
+罱 0 ㄋㄢˇ
+難 0 ㄋㄢˋ
+婻 0 ㄋㄢˋ
+戁 0 ㄋㄢˋ
+南 0 ㄋㄢˊ
+男 0 ㄋㄢˊ
+難 0 ㄋㄢˊ
+喃 0 ㄋㄢˊ
+楠 0 ㄋㄢˊ
+柟 0 ㄋㄢˊ
+暔 0 ㄋㄢˊ
+諵 0 ㄋㄢˊ
+奻 0 ㄋㄢˊ
+萳 0 ㄋㄢˊ
+莮 0 ㄋㄢˊ
+抩 0 ㄋㄢˊ
+蝻 0 ㄋㄢˊ
+攮 0 ㄋㄢˊ
+枏 0 ㄋㄢˊ
+畘 0 ㄋㄢˊ
+侽 0 ㄋㄢˊ
+那 0 ㄋㄚˇ
+哪 0 ㄋㄚˇ
+雫 0 ㄋㄚˇ
+㖠 0 ㄋㄚˇ
+那 0 ㄋㄚˋ
+納 0 ㄋㄚˋ
+吶 0 ㄋㄚˋ
+訥 0 ㄋㄚˋ
+鈉 0 ㄋㄚˋ
+捺 0 ㄋㄚˋ
+娜 0 ㄋㄚˋ
+肭 0 ㄋㄚˋ
+衲 0 ㄋㄚˋ
+軜 0 ㄋㄚˋ
+妠 0 ㄋㄚˋ
+豽 0 ㄋㄚˋ
+魶 0 ㄋㄚˋ
+笝 0 ㄋㄚˋ
+內 0 ㄋㄚˋ
+汭 0 ㄋㄚˋ
+枘 0 ㄋㄚˋ
+蚋 0 ㄋㄚˋ
+貀 0 ㄋㄚˋ
+内 0 ㄋㄚˋ
+呐 0 ㄋㄚˋ
+靹 0 ㄋㄚˋ
+蒳 0 ㄋㄚˋ
+蜹 0 ㄋㄚˋ
+䟜 0 ㄋㄚˋ
+拿 0 ㄋㄚˊ
+挐 0 ㄋㄚˊ
+拏 0 ㄋㄚˊ
+誽 0 ㄋㄚˊ
+南 0 ㄋㄚˊ
+掔 0 ㄋㄚˊ
+詉 0 ㄋㄚˊ
+那 0 ㄋㄚ˙
+哪 0 ㄋㄚ˙
+㖠 0 ㄋㄚ˙
+乃 0 ㄋㄞˇ
+奶 0 ㄋㄞˇ
+迺 0 ㄋㄞˇ
+氖 0 ㄋㄞˇ
+嬭 0 ㄋㄞˇ
+奈 0 ㄋㄞˇ
+氝 0 ㄋㄞˇ
+釢 0 ㄋㄞˇ
+艿 0 ㄋㄞˇ
+尕 0 ㄋㄞˇ
+妳 0 ㄋㄞˇ
+鼐 0 ㄋㄞˇ
+疓 0 ㄋㄞˇ
+廼 0 ㄋㄞˇ
+耐 0 ㄋㄞˋ
+奈 0 ㄋㄞˋ
+褦 0 ㄋㄞˋ
+鼐 0 ㄋㄞˋ
+柰 0 ㄋㄞˋ
+倷 0 ㄋㄞˋ
+螚 0 ㄋㄞˋ
+渿 0 ㄋㄞˋ
+錼 0 ㄋㄞˋ
+萘 0 ㄋㄞˋ
+孻 0 ㄋㄞˊ
+摨 0 ㄋㄞˊ
+腉 0 ㄋㄞˊ
+搱 0 ㄋㄞˊ
+熋 0 ㄋㄞˊ
+擃 0 ㄋㄨㄥˇ
+繷 0 ㄋㄨㄥˇ
+弄 0 ㄋㄨㄥˋ
+挵 0 ㄋㄨㄥˋ
+挊 0 ㄋㄨㄥˋ
+農 0 ㄋㄨㄥˊ
+濃 0 ㄋㄨㄥˊ
+膿 0 ㄋㄨㄥˊ
+儂 0 ㄋㄨㄥˊ
+噥 0 ㄋㄨㄥˊ
+穠 0 ㄋㄨㄥˊ
+襛 0 ㄋㄨㄥˊ
+醲 0 ㄋㄨㄥˊ
+齈 0 ㄋㄨㄥˊ
+鬞 0 ㄋㄨㄥˊ
+擃 0 ㄋㄨㄥˊ
+辳 0 ㄋㄨㄥˊ
+憹 0 ㄋㄨㄥˊ
+檂 0 ㄋㄨㄥˊ
+癑 0 ㄋㄨㄥˊ
+禯 0 ㄋㄨㄥˊ
+欁 0 ㄋㄨㄥˊ
+蕽 0 ㄋㄨㄥˊ
+弄 0 ㄋㄨㄥ˙
+暖 0 ㄋㄨㄢˇ
+餪 0 ㄋㄨㄢˇ
+煖 0 ㄋㄨㄢˇ
+渜 0 ㄋㄨㄢˇ
+煊 0 ㄋㄨㄢˇ
+煗 0 ㄋㄨㄢˇ
+努 0 ㄋㄨˇ
+弩 0 ㄋㄨˇ
+砮 0 ㄋㄨˇ
+駑 0 ㄋㄨˇ
+夯 0 ㄋㄨˇ
+孥 0 ㄋㄨˇ
+伮 0 ㄋㄨˇ
+怒 0 ㄋㄨˋ
+詉 0 ㄋㄨˋ
+搙 0 ㄋㄨˋ
+奴 0 ㄋㄨˊ
+駑 0 ㄋㄨˊ
+孥 0 ㄋㄨˊ
+笯 0 ㄋㄨˊ
+蒘 0 ㄋㄨˊ
+呶 0 ㄋㄨˊ
+帑 0 ㄋㄨˊ
+弩 0 ㄋㄨˊ
+拏 0 ㄋㄨˊ
+伖 0 ㄋㄨˊ
+橠 0 ㄋㄨㄛˇ
+娜 0 ㄋㄨㄛˇ
+諾 0 ㄋㄨㄛˋ
+懦 0 ㄋㄨㄛˋ
+糯 0 ㄋㄨㄛˋ
+搦 0 ㄋㄨㄛˋ
+逽 0 ㄋㄨㄛˋ
+懧 0 ㄋㄨㄛˋ
+糑 0 ㄋㄨㄛˋ
+那 0 ㄋㄨㄛˋ
+偌 0 ㄋㄨㄛˋ
+需 0 ㄋㄨㄛˋ
+喏 0 ㄋㄨㄛˋ
+愞 0 ㄋㄨㄛˋ
+掿 0 ㄋㄨㄛˋ
+搙 0 ㄋㄨㄛˋ
+搻 0 ㄋㄨㄛˋ
+榒 0 ㄋㄨㄛˋ
+稬 0 ㄋㄨㄛˋ
+蹃 0 ㄋㄨㄛˋ
+鍩 0 ㄋㄨㄛˋ
+穤 0 ㄋㄨㄛˋ
+糥 0 ㄋㄨㄛˋ
+挪 0 ㄋㄨㄛˊ
+娜 0 ㄋㄨㄛˊ
+儺 0 ㄋㄨㄛˊ
+捼 0 ㄋㄨㄛˊ
+梛 0 ㄋㄨㄛˊ
+那 0 ㄋㄨㄛˊ
+難 0 ㄋㄨㄛˊ
+挼 0 ㄋㄨㄛˊ
+郍 0 ㄋㄨㄛˊ
+嫩 0 ㄋㄨㄣˋ
+嫰 0 ㄋㄨㄣˋ
+黁 0 ㄋㄨㄣˊ
+呢 0 ㄋㄜ
+吶 0 ㄋㄜˋ
+那 0 ㄋㄜˋ
+訥 0 ㄋㄜˋ
+呐 0 ㄋㄜˋ
+抐 0 ㄋㄜˋ
+哪 0 ㄋㄜˊ
+㖠 0 ㄋㄜˊ
+呢 0 ㄋㄜ˙
+峱 0 ㄋㄠ
+撓 0 ㄋㄠ
+孬 0 ㄋㄠ
+嶩 0 ㄋㄠ
+腦 0 ㄋㄠˇ
+惱 0 ㄋㄠˇ
+瑙 0 ㄋㄠˇ
+恼 0 ㄋㄠˇ
+娚 0 ㄋㄠˇ
+悩 0 ㄋㄠˇ
+嫐 0 ㄋㄠˇ
+碯 0 ㄋㄠˇ
+憹 0 ㄋㄠˇ
+垴 0 ㄋㄠˇ
+匘 0 ㄋㄠˇ
+鬧 0 ㄋㄠˋ
+淖 0 ㄋㄠˋ
+臑 0 ㄋㄠˋ
+腝 0 ㄋㄠˋ
+閙 0 ㄋㄠˋ
+撓 0 ㄋㄠˊ
+鐃 0 ㄋㄠˊ
+橈 0 ㄋㄠˊ
+呶 0 ㄋㄠˊ
+猱 0 ㄋㄠˊ
+怓 0 ㄋㄠˊ
+譊 0 ㄋㄠˊ
+嶩 0 ㄋㄠˊ
+獶 0 ㄋㄠˊ
+繷 0 ㄋㄠˊ
+獿 0 ㄋㄠˊ
+夒 0 ㄋㄠˊ
+蟯 0 ㄋㄠˊ
+驍 0 ㄋㄠˊ
+峱 0 ㄋㄠˊ
+硇 0 ㄋㄠˊ
+詉 0 ㄋㄠˊ
+憹 0 ㄋㄠˊ
+巎 0 ㄋㄠˊ
+巙 0 ㄋㄠˊ
+虐 0 ㄋㄩㄝˋ
+瘧 0 ㄋㄩㄝˋ
+謔 0 ㄋㄩㄝˋ
+逽 0 ㄋㄩㄝˋ
+硸 0 ㄋㄩㄝˋ
+女 0 ㄋㄩˇ
+籹 0 ㄋㄩˇ
+釹 0 ㄋㄩˇ
+忸 0 ㄋㄩˋ
+恧 0 ㄋㄩˋ
+衄 0 ㄋㄩˋ
+朒 0 ㄋㄩˋ
+女 0 ㄋㄩˋ
+聏 0 ㄋㄩˋ
+沑 0 ㄋㄩˋ
+衂 0 ㄋㄩˋ
+䶊 0 ㄋㄩˋ
+餒 0 ㄋㄟˇ
+哪 0 ㄋㄟˇ
+腇 0 ㄋㄟˇ
+那 0 ㄋㄟˇ
+娞 0 ㄋㄟˇ
+㖠 0 ㄋㄟˇ
+鮾 0 ㄋㄟˇ
+鯘 0 ㄋㄟˇ
+內 0 ㄋㄟˋ
+那 0 ㄋㄟˋ
+汭 0 ㄋㄟˋ
+氝 0 ㄋㄟˋ
+内 0 ㄋㄟˋ
+㐻 0 ㄋㄟˋ
+嫩 0 ㄋㄣˋ
+腝 0 ㄋㄣˋ
+嫰 0 ㄋㄣˋ
+捏 0 ㄋㄧㄝ
+踗 0 ㄋㄧㄝ
+鑈 0 ㄋㄧㄝ
+捻 0 ㄋㄧㄝ
+揑 0 ㄋㄧㄝ
+孽 0 ㄋㄧㄝˋ
+鎳 0 ㄋㄧㄝˋ
+躡 0 ㄋㄧㄝˋ
+聶 0 ㄋㄧㄝˋ
+鑷 0 ㄋㄧㄝˋ
+涅 0 ㄋㄧㄝˋ
+囁 0 ㄋㄧㄝˋ
+囓 0 ㄋㄧㄝˋ
+臬 0 ㄋㄧㄝˋ
+乜 0 ㄋㄧㄝˋ
+嚙 0 ㄋㄧㄝˋ
+臲 0 ㄋㄧㄝˋ
+闑 0 ㄋㄧㄝˋ
+隉 0 ㄋㄧㄝˋ
+齧 0 ㄋㄧㄝˋ
+敜 0 ㄋㄧㄝˋ
+顳 0 ㄋㄧㄝˋ
+糱 0 ㄋㄧㄝˋ
+蘗 0 ㄋㄧㄝˋ
+疌 0 ㄋㄧㄝˋ
+嵲 0 ㄋㄧㄝˋ
+踂 0 ㄋㄧㄝˋ
+篞 0 ㄋㄧㄝˋ
+櫱 0 ㄋㄧㄝˋ
+蠥 0 ㄋㄧㄝˋ
+钀 0 ㄋㄧㄝˋ
+巕 0 ㄋㄧㄝˋ
+業 0 ㄋㄧㄝˋ
+懾 0 ㄋㄧㄝˋ
+攝 0 ㄋㄧㄝˋ
+羍 0 ㄋㄧㄝˋ
+嘄 0 ㄋㄧㄝˋ
+摰 0 ㄋㄧㄝˋ
+槷 0 ㄋㄧㄝˋ
+甈 0 ㄋㄧㄝˋ
+踙 0 ㄋㄧㄝˋ
+嶭 0 ㄋㄧㄝˋ
+鷍 0 ㄋㄧㄝˋ
+圼 0 ㄋㄧㄝˋ
+枿 0 ㄋㄧㄝˋ
+埝 0 ㄋㄧㄝˋ
+惗 0 ㄋㄧㄝˋ
+鈢 0 ㄋㄧㄝˋ
+暬 0 ㄋㄧㄝˋ
+錜 0 ㄋㄧㄝˋ
+褹 0 ㄋㄧㄝˋ
+孼 0 ㄋㄧㄝˋ
+籋 0 ㄋㄧㄝˋ
+蘖 0 ㄋㄧㄝˋ
+糵 0 ㄋㄧㄝˋ
+痆 0 ㄋㄧㄝˋ
+鉩 0 ㄋㄧㄝˋ
+蹑 0 ㄋㄧㄝˋ
+囐 0 ㄋㄧㄝˋ
+䯀 0 ㄋㄧㄝˋ
+帇 0 ㄋㄧㄝˋ
+苶 0 ㄋㄧㄝˊ
+妞 0 ㄋㄧㄡ
+紐 0 ㄋㄧㄡˇ
+扭 0 ㄋㄧㄡˇ
+鈕 0 ㄋㄧㄡˇ
+忸 0 ㄋㄧㄡˇ
+狃 0 ㄋㄧㄡˇ
+炄 0 ㄋㄧㄡˇ
+莥 0 ㄋㄧㄡˇ
+杻 0 ㄋㄧㄡˇ
+沑 0 ㄋㄧㄡˇ
+靵 0 ㄋㄧㄡˇ
+拗 0 ㄋㄧㄡˋ
+謬 0 ㄋㄧㄡˋ
+粈 0 ㄋㄧㄡˋ
+衄 0 ㄋㄧㄡˋ
+糅 0 ㄋㄧㄡˋ
+抝 0 ㄋㄧㄡˋ
+衂 0 ㄋㄧㄡˋ
+䋴 0 ㄋㄧㄡˋ
+牛 0 ㄋㄧㄡˊ
+汼 0 ㄋㄧㄡˊ
+擰 0 ㄋㄧㄥˇ
+橣 0 ㄋㄧㄥˇ
+矃 0 ㄋㄧㄥˇ
+濘 0 ㄋㄧㄥˋ
+佞 0 ㄋㄧㄥˋ
+寧 0 ㄋㄧㄥˋ
+擰 0 ㄋㄧㄥˋ
+獰 0 ㄋㄧㄥˋ
+甯 0 ㄋㄧㄥˋ
+寕 0 ㄋㄧㄥˋ
+寜 0 ㄋㄧㄥˋ
+寗 0 ㄋㄧㄥˋ
+䗿 0 ㄋㄧㄥˋ
+寧 0 ㄋㄧㄥˊ
+凝 0 ㄋㄧㄥˊ
+獰 0 ㄋㄧㄥˊ
+嚀 0 ㄋㄧㄥˊ
+檸 0 ㄋㄧㄥˊ
+甯 0 ㄋㄧㄥˊ
+擰 0 ㄋㄧㄥˊ
+鸋 0 ㄋㄧㄥˊ
+鑏 0 ㄋㄧㄥˊ
+寍 0 ㄋㄧㄥˊ
+聹 0 ㄋㄧㄥˊ
+嬣 0 ㄋㄧㄥˊ
+冰 0 ㄋㄧㄥˊ
+薴 0 ㄋㄧㄥˊ
+仌 0 ㄋㄧㄥˊ
+氷 0 ㄋㄧㄥˊ
+寕 0 ㄋㄧㄥˊ
+寜 0 ㄋㄧㄥˊ
+寗 0 ㄋㄧㄥˊ
+鬡 0 ㄋㄧㄥˊ
+釀 0 ㄋㄧㄤˋ
+娘 0 ㄋㄧㄤˊ
+孃 0 ㄋㄧㄤˊ
+釀 0 ㄋㄧㄤˊ
+嬢 0 ㄋㄧㄤˊ
+捻 0 ㄋㄧㄢˇ
+撚 0 ㄋㄧㄢˇ
+攆 0 ㄋㄧㄢˇ
+拈 0 ㄋㄧㄢˇ
+輦 0 ㄋㄧㄢˇ
+碾 0 ㄋㄧㄢˇ
+輾 0 ㄋㄧㄢˇ
+涊 0 ㄋㄧㄢˇ
+簐 0 ㄋㄧㄢˇ
+跈 0 ㄋㄧㄢˇ
+躎 0 ㄋㄧㄢˇ
+稔 0 ㄋㄧㄢˇ
+淰 0 ㄋㄧㄢˇ
+棯 0 ㄋㄧㄢˇ
+腍 0 ㄋㄧㄢˇ
+諗 0 ㄋㄧㄢˇ
+蹍 0 ㄋㄧㄢˇ
+菍 0 ㄋㄧㄢˇ
+蹨 0 ㄋㄧㄢˇ
+念 0 ㄋㄧㄢˋ
+唸 0 ㄋㄧㄢˋ
+淰 0 ㄋㄧㄢˋ
+廿 0 ㄋㄧㄢˋ
+鼰 0 ㄋㄧㄢˋ
+廾 0 ㄋㄧㄢˋ
+卄 0 ㄋㄧㄢˋ
+埝 0 ㄋㄧㄢˋ
+年 0 ㄋㄧㄢˊ
+黏 0 ㄋㄧㄢˊ
+粘 0 ㄋㄧㄢˊ
+姩 0 ㄋㄧㄢˊ
+哖 0 ㄋㄧㄢˊ
+拈 0 ㄋㄧㄢˊ
+撚 0 ㄋㄧㄢˊ
+溓 0 ㄋㄧㄢˊ
+鯰 0 ㄋㄧㄢˊ
+秊 0 ㄋㄧㄢˊ
+秥 0 ㄋㄧㄢˊ
+䴴 0 ㄋㄧㄢˊ
+你 0 ㄋㄧˇ
+妳 0 ㄋㄧˇ
+擬 0 ㄋㄧˇ
+禰 0 ㄋㄧˇ
+儗 0 ㄋㄧˇ
+旎 0 ㄋㄧˇ
+昵 0 ㄋㄧˇ
+坭 0 ㄋㄧˇ
+柅 0 ㄋㄧˇ
+薿 0 ㄋㄧˇ
+檷 0 ㄋㄧˇ
+抳 0 ㄋㄧˇ
+苨 0 ㄋㄧˇ
+馜 0 ㄋㄧˇ
+隬 0 ㄋㄧˇ
+譺 0 ㄋㄧˇ
+尼 0 ㄋㄧˇ
+泥 0 ㄋㄧˇ
+狔 0 ㄋㄧˇ
+掜 0 ㄋㄧˇ
+薾 0 ㄋㄧˇ
+鑈 0 ㄋㄧˇ
+伲 0 ㄋㄧˇ
+伱 0 ㄋㄧˇ
+拟 0 ㄋㄧˇ
+祢 0 ㄋㄧˇ
+埿 0 ㄋㄧˇ
+孴 0 ㄋㄧˇ
+聻 0 ㄋㄧˇ
+䛏 0 ㄋㄧˇ
+鉨 0 ㄋㄧˇ
+㘈 0 ㄋㄧˇ
+逆 0 ㄋㄧˋ
+溺 0 ㄋㄧˋ
+匿 0 ㄋㄧˋ
+膩 0 ㄋㄧˋ
+泥 0 ㄋㄧˋ
+睨 0 ㄋㄧˋ
+暱 0 ㄋㄧˋ
+惄 0 ㄋㄧˋ
+嫟 0 ㄋㄧˋ
+縌 0 ㄋㄧˋ
+迡 0 ㄋㄧˋ
+堄 0 ㄋㄧˋ
+慝 0 ㄋㄧˋ
+昵 0 ㄋㄧˋ
+衵 0 ㄋㄧˋ
+掜 0 ㄋㄧˋ
+搦 0 ㄋㄧˋ
+鈮 0 ㄋㄧˋ
+糑 0 ㄋㄧˋ
+嶷 0 ㄋㄧˋ
+氼 0 ㄋㄧˋ
+胒 0 ㄋㄧˋ
+埿 0 ㄋㄧˋ
+掿 0 ㄋㄧˋ
+搻 0 ㄋㄧˋ
+懝 0 ㄋㄧˋ
+嬺 0 ㄋㄧˋ
+屰 0 ㄋㄧˋ
+孨 0 ㄋㄧˋ
+痆 0 ㄋㄧˋ
+愵 0 ㄋㄧˋ
+䁥 0 ㄋㄧˋ
+泥 0 ㄋㄧˊ
+尼 0 ㄋㄧˊ
+妮 0 ㄋㄧˊ
+倪 0 ㄋㄧˊ
+霓 0 ㄋㄧˊ
+怩 0 ㄋㄧˊ
+猊 0 ㄋㄧˊ
+蜺 0 ㄋㄧˊ
+輗 0 ㄋㄧˊ
+郳 0 ㄋㄧˊ
+麑 0 ㄋㄧˊ
+鯢 0 ㄋㄧˊ
+齯 0 ㄋㄧˊ
+臡 0 ㄋㄧˊ
+秜 0 ㄋㄧˊ
+狋 0 ㄋㄧˊ
+觬 0 ㄋㄧˊ
+婗 0 ㄋㄧˊ
+淣 0 ㄋㄧˊ
+呢 0 ㄋㄧˊ
+狔 0 ㄋㄧˊ
+屔 0 ㄋㄧˊ
+跜 0 ㄋㄧˊ
+鈮 0 ㄋㄧˊ
+兒 0 ㄋㄧˊ
+旎 0 ㄋㄧˊ
+擬 0 ㄋㄧˊ
+堄 0 ㄋㄧˊ
+鬩 0 ㄋㄧˊ
+麛 0 ㄋㄧˊ
+児 0 ㄋㄧˊ
+㞾 0 ㄋㄧˊ
+拟 0 ㄋㄧˊ
+埿 0 ㄋㄧˊ
+棿 0 ㄋㄧˊ
+腝 0 ㄋㄧˊ
+貎 0 ㄋㄧˊ
+䦧 0 ㄋㄧˊ
+蚭 0 ㄋㄧˊ
+䛏 0 ㄋㄧˊ
+娘 0 ㄋㄧㄚˊ
+孃 0 ㄋㄧㄚˊ
+嬢 0 ㄋㄧㄚˊ
+鳥 0 ㄋㄧㄠˇ
+裊 0 ㄋㄧㄠˇ
+嬲 0 ㄋㄧㄠˇ
+嬝 0 ㄋㄧㄠˇ
+嫋 0 ㄋㄧㄠˇ
+蔦 0 ㄋㄧㄠˇ
+褭 0 ㄋㄧㄠˇ
+樢 0 ㄋㄧㄠˇ
+茮 0 ㄋㄧㄠˇ
+尿 0 ㄋㄧㄠˋ
+溺 0 ㄋㄧㄠˋ
+氼 0 ㄋㄧㄠˋ
+脲 0 ㄋㄧㄠˋ
+拰 0 ㄋㄧㄣˇ
+您 0 ㄋㄧㄣˊ
+恁 0 ㄋㄧㄣˊ
+忹 0 ㄋㄧㄣˊ
+䋻 0 ㄋㄧㄣˊ
+囜 0 ㄋㄧㄣˊ
+吃 0 ㄔ
+蚩 0 ㄔ
+癡 0 ㄔ
+痴 0 ㄔ
+嗤 0 ㄔ
+喫 0 ㄔ
+ㄔ 0 ㄔ
+郗 0 ㄔ
+魑 0 ㄔ
+笞 0 ㄔ
+絺 0 ㄔ
+鴟 0 ㄔ
+媸 0 ㄔ
+摛 0 ㄔ
+瓻 0 ㄔ
+螭 0 ㄔ
+眵 0 ㄔ
+齝 0 ㄔ
+离 0 ㄔ
+貾 0 ㄔ
+誺 0 ㄔ
+瞝 0 ㄔ
+齹 0 ㄔ
+黐 0 ㄔ
+麶 0 ㄔ
+盵 0 ㄔ
+哧 0 ㄔ
+妛 0 ㄔ
+粚 0 ㄔ
+脪 0 ㄔ
+訵 0 ㄔ
+噄 0 ㄔ
+鵄 0 ㄔ
+彲 0 ㄔ
+呞 0 ㄔ
+卨 0 ㄔ
+抽 0 ㄔㄡ
+瘳 0 ㄔㄡ
+搊 0 ㄔㄡ
+篘 0 ㄔㄡ
+犨 0 ㄔㄡ
+婤 0 ㄔㄡ
+紬 0 ㄔㄡ
+搐 0 ㄔㄡ
+㨨 0 ㄔㄡ
+犫 0 ㄔㄡ
+丑 0 ㄔㄡˇ
+醜 0 ㄔㄡˇ
+瞅 0 ㄔㄡˇ
+杻 0 ㄔㄡˇ
+杽 0 ㄔㄡˇ
+吜 0 ㄔㄡˇ
+莥 0 ㄔㄡˇ
+偢 0 ㄔㄡˇ
+矁 0 ㄔㄡˇ
+魗 0 ㄔㄡˇ
+丒 0 ㄔㄡˇ
+䪮 0 ㄔㄡˇ
+臭 0 ㄔㄡˋ
+簉 0 ㄔㄡˋ
+溴 0 ㄔㄡˋ
+殠 0 ㄔㄡˋ
+憱 0 ㄔㄡˋ
+狊 0 ㄔㄡˋ
+糗 0 ㄔㄡˋ
+遚 0 ㄔㄡˋ
+臰 0 ㄔㄡˋ
+愁 0 ㄔㄡˊ
+仇 0 ㄔㄡˊ
+籌 0 ㄔㄡˊ
+綢 0 ㄔㄡˊ
+酬 0 ㄔㄡˊ
+稠 0 ㄔㄡˊ
+紬 0 ㄔㄡˊ
+躊 0 ㄔㄡˊ
+疇 0 ㄔㄡˊ
+惆 0 ㄔㄡˊ
+裯 0 ㄔㄡˊ
+儔 0 ㄔㄡˊ
+讎 0 ㄔㄡˊ
+幬 0 ㄔㄡˊ
+鯈 0 ㄔㄡˊ
+薵 0 ㄔㄡˊ
+嬦 0 ㄔㄡˊ
+椆 0 ㄔㄡˊ
+絒 0 ㄔㄡˊ
+菗 0 ㄔㄡˊ
+懤 0 ㄔㄡˊ
+詶 0 ㄔㄡˊ
+雔 0 ㄔㄡˊ
+燽 0 ㄔㄡˊ
+栦 0 ㄔㄡˊ
+圳 0 ㄔㄡˊ
+鯛 0 ㄔㄡˊ
+氿 0 ㄔㄡˊ
+犰 0 ㄔㄡˊ
+朹 0 ㄔㄡˊ
+釚 0 ㄔㄡˊ
+僽 0 ㄔㄡˊ
+鼽 0 ㄔㄡˊ
+皗 0 ㄔㄡˊ
+筹 0 ㄔㄡˊ
+酧 0 ㄔㄡˊ
+鮋 0 ㄔㄡˊ
+鮉 0 ㄔㄡˊ
+醻 0 ㄔㄡˊ
+讐 0 ㄔㄡˊ
+稱 0 ㄔㄥ
+撐 0 ㄔㄥ
+瞠 0 ㄔㄥ
+蟶 0 ㄔㄥ
+偁 0 ㄔㄥ
+檉 0 ㄔㄥ
+赬 0 ㄔㄥ
+琤 0 ㄔㄥ
+橕 0 ㄔㄥ
+鏿 0 ㄔㄥ
+浾 0 ㄔㄥ
+埥 0 ㄔㄥ
+棦 0 ㄔㄥ
+牚 0 ㄔㄥ
+竀 0 ㄔㄥ
+崝 0 ㄔㄥ
+饓 0 ㄔㄥ
+槍 0 ㄔㄥ
+鎗 0 ㄔㄥ
+鐺 0 ㄔㄥ
+噌 0 ㄔㄥ
+樘 0 ㄔㄥ
+㣔 0 ㄔㄥ
+泟 0 ㄔㄥ
+阷 0 ㄔㄥ
+称 0 ㄔㄥ
+㛵 0 ㄔㄥ
+僜 0 ㄔㄥ
+憆 0 ㄔㄥ
+撑 0 ㄔㄥ
+緽 0 ㄔㄥ
+頳 0 ㄔㄥ
+穪 0 ㄔㄥ
+鏳 0 ㄔㄥ
+爯 0 ㄔㄥ
+逞 0 ㄔㄥˇ
+騁 0 ㄔㄥˇ
+悜 0 ㄔㄥˇ
+庱 0 ㄔㄥˇ
+塣 0 ㄔㄥˇ
+懲 0 ㄔㄥˇ
+梬 0 ㄔㄥˇ
+侱 0 ㄔㄥˇ
+徎 0 ㄔㄥˇ
+惩 0 ㄔㄥˇ
+睈 0 ㄔㄥˇ
+稱 0 ㄔㄥˋ
+秤 0 ㄔㄥˋ
+偁 0 ㄔㄥˋ
+牚 0 ㄔㄥˋ
+称 0 ㄔㄥˋ
+穪 0 ㄔㄥˋ
+靗 0 ㄔㄥˋ
+成 0 ㄔㄥˊ
+程 0 ㄔㄥˊ
+承 0 ㄔㄥˊ
+盛 0 ㄔㄥˊ
+乘 0 ㄔㄥˊ
+誠 0 ㄔㄥˊ
+呈 0 ㄔㄥˊ
+城 0 ㄔㄥˊ
+懲 0 ㄔㄥˊ
+澄 0 ㄔㄥˊ
+橙 0 ㄔㄥˊ
+丞 0 ㄔㄥˊ
+澂 0 ㄔㄥˊ
+棖 0 ㄔㄥˊ
+酲 0 ㄔㄥˊ
+宬 0 ㄔㄥˊ
+晟 0 ㄔㄥˊ
+裎 0 ㄔㄥˊ
+郕 0 ㄔㄥˊ
+埕 0 ㄔㄥˊ
+掁 0 ㄔㄥˊ
+湞 0 ㄔㄥˊ
+珵 0 ㄔㄥˊ
+荿 0 ㄔㄥˊ
+騬 0 ㄔㄥˊ
+脀 0 ㄔㄥˊ
+脭 0 ㄔㄥˊ
+揨 0 ㄔㄥˊ
+峸 0 ㄔㄥˊ
+鋮 0 ㄔㄥˊ
+塍 0 ㄔㄥˊ
+崢 0 ㄔㄥˊ
+傖 0 ㄔㄥˊ
+氶 0 ㄔㄥˊ
+巹 0 ㄔㄥˊ
+浧 0 ㄔㄥˊ
+崝 0 ㄔㄥˊ
+臹 0 ㄔㄥˊ
+溗 0 ㄔㄥˊ
+撜 0 ㄔㄥˊ
+卺 0 ㄔㄥˊ
+乗 0 ㄔㄥˊ
+娍 0 ㄔㄥˊ
+峥 0 ㄔㄥˊ
+洆 0 ㄔㄥˊ
+挰 0 ㄔㄥˊ
+晠 0 ㄔㄥˊ
+珹 0 ㄔㄥˊ
+窚 0 ㄔㄥˊ
+堘 0 ㄔㄥˊ
+惩 0 ㄔㄥˊ
+椉 0 ㄔㄥˊ
+筬 0 ㄔㄥˊ
+絾 0 ㄔㄥˊ
+塖 0 ㄔㄥˊ
+憕 0 ㄔㄥˊ
+瀓 0 ㄔㄥˊ
+畻 0 ㄔㄥˊ
+昌 0 ㄔㄤ
+倡 0 ㄔㄤ
+猖 0 ㄔㄤ
+娼 0 ㄔㄤ
+閶 0 ㄔㄤ
+菖 0 ㄔㄤ
+鯧 0 ㄔㄤ
+倀 0 ㄔㄤ
+鼚 0 ㄔㄤ
+錩 0 ㄔㄤ
+淐 0 ㄔㄤ
+琩 0 ㄔㄤ
+裮 0 ㄔㄤ
+晿 0 ㄔㄤ
+䮖 0 ㄔㄤ
+䱽 0 ㄔㄤ
+鱂 0 ㄔㄤ
+場 0 ㄔㄤˇ
+廠 0 ㄔㄤˇ
+敞 0 ㄔㄤˇ
+氅 0 ㄔㄤˇ
+昶 0 ㄔㄤˇ
+鋹 0 ㄔㄤˇ
+惝 0 ㄔㄤˇ
+僘 0 ㄔㄤˇ
+厰 0 ㄔㄤˇ
+塲 0 ㄔㄤˇ
+唱 0 ㄔㄤˋ
+倡 0 ㄔㄤˋ
+暢 0 ㄔㄤˋ
+悵 0 ㄔㄤˋ
+鬯 0 ㄔㄤˋ
+韔 0 ㄔㄤˋ
+瑒 0 ㄔㄤˋ
+誯 0 ㄔㄤˋ
+畼 0 ㄔㄤˋ
+長 0 ㄔㄤˊ
+常 0 ㄔㄤˊ
+場 0 ㄔㄤˊ
+嘗 0 ㄔㄤˊ
+裳 0 ㄔㄤˊ
+償 0 ㄔㄤˊ
+腸 0 ㄔㄤˊ
+嫦 0 ㄔㄤˊ
+鱨 0 ㄔㄤˊ
+徜 0 ㄔㄤˊ
+嚐 0 ㄔㄤˊ
+萇 0 ㄔㄤˊ
+鋿 0 ㄔㄤˊ
+粻 0 ㄔㄤˊ
+仧 0 ㄔㄤˊ
+甞 0 ㄔㄤˊ
+塲 0 ㄔㄤˊ
+瑺 0 ㄔㄤˊ
+膓 0 ㄔㄤˊ
+鏛 0 ㄔㄤˊ
+兏 0 ㄔㄤˊ
+镸 0 ㄔㄤˊ
+瓺 0 ㄔㄤˊ
+摻 0 ㄔㄢ
+攙 0 ㄔㄢ
+梴 0 ㄔㄢ
+襜 0 ㄔㄢ
+辿 0 ㄔㄢ
+鋓 0 ㄔㄢ
+惉 0 ㄔㄢ
+嬓 0 ㄔㄢ
+裧 0 ㄔㄢ
+幨 0 ㄔㄢ
+掺 0 ㄔㄢ
+袩 0 ㄔㄢ
+撡 0 ㄔㄢ
+脠 0 ㄔㄢ
+產 0 ㄔㄢˇ
+鏟 0 ㄔㄢˇ
+闡 0 ㄔㄢˇ
+剷 0 ㄔㄢˇ
+蕆 0 ㄔㄢˇ
+嘽 0 ㄔㄢˇ
+囅 0 ㄔㄢˇ
+丳 0 ㄔㄢˇ
+嵼 0 ㄔㄢˇ
+燀 0 ㄔㄢˇ
+諂 0 ㄔㄢˇ
+驏 0 ㄔㄢˇ
+幝 0 ㄔㄢˇ
+繟 0 ㄔㄢˇ
+滻 0 ㄔㄢˇ
+簅 0 ㄔㄢˇ
+灛 0 ㄔㄢˇ
+旵 0 ㄔㄢˇ
+譂 0 ㄔㄢˇ
+剗 0 ㄔㄢˇ
+産 0 ㄔㄢˇ
+摌 0 ㄔㄢˇ
+閳 0 ㄔㄢˇ
+讇 0 ㄔㄢˇ
+醦 0 ㄔㄢˇ
+懺 0 ㄔㄢˋ
+羼 0 ㄔㄢˋ
+儳 0 ㄔㄢˋ
+顫 0 ㄔㄢˋ
+讖 0 ㄔㄢˋ
+丳 0 ㄔㄢˋ
+嚵 0 ㄔㄢˋ
+硟 0 ㄔㄢˋ
+韂 0 ㄔㄢˋ
+纏 0 ㄔㄢˊ
+蟬 0 ㄔㄢˊ
+禪 0 ㄔㄢˊ
+饞 0 ㄔㄢˊ
+讒 0 ㄔㄢˊ
+潺 0 ㄔㄢˊ
+蟾 0 ㄔㄢˊ
+巉 0 ㄔㄢˊ
+嬋 0 ㄔㄢˊ
+單 0 ㄔㄢˊ
+澶 0 ㄔㄢˊ
+廛 0 ㄔㄢˊ
+孱 0 ㄔㄢˊ
+劖 0 ㄔㄢˊ
+毚 0 ㄔㄢˊ
+瀍 0 ㄔㄢˊ
+瀺 0 ㄔㄢˊ
+躔 0 ㄔㄢˊ
+鑱 0 ㄔㄢˊ
+磛 0 ㄔㄢˊ
+艬 0 ㄔㄢˊ
+僝 0 ㄔㄢˊ
+棎 0 ㄔㄢˊ
+湹 0 ㄔㄢˊ
+鋋 0 ㄔㄢˊ
+煘 0 ㄔㄢˊ
+獑 0 ㄔㄢˊ
+繵 0 ㄔㄢˊ
+酁 0 ㄔㄢˊ
+嶄 0 ㄔㄢˊ
+厘 0 ㄔㄢˊ
+儃 0 ㄔㄢˊ
+樼 0 ㄔㄢˊ
+虥 0 ㄔㄢˊ
+蟺 0 ㄔㄢˊ
+轏 0 ㄔㄢˊ
+欃 0 ㄔㄢˊ
+单 0 ㄔㄢˊ
+単 0 ㄔㄢˊ
+婵 0 ㄔㄢˊ
+嶃 0 ㄔㄢˊ
+潹 0 ㄔㄢˊ
+緾 0 ㄔㄢˊ
+蟮 0 ㄔㄢˊ
+鄽 0 ㄔㄢˊ
+鏩 0 ㄔㄢˊ
+纒 0 ㄔㄢˊ
+誗 0 ㄔㄢˊ
+尺 0 ㄔˇ
+齒 0 ㄔˇ
+恥 0 ㄔˇ
+呎 0 ㄔˇ
+侈 0 ㄔˇ
+褫 0 ㄔˇ
+欼 0 ㄔˇ
+搋 0 ㄔˇ
+蚇 0 ㄔˇ
+恀 0 ㄔˇ
+拸 0 ㄔˇ
+姼 0 ㄔˇ
+傂 0 ㄔˇ
+誃 0 ㄔˇ
+鉹 0 ㄔˇ
+伬 0 ㄔˇ
+咫 0 ㄔˇ
+豉 0 ㄔˇ
+奓 0 ㄔˇ
+胣 0 ㄔˇ
+趍 0 ㄔˇ
+擨 0 ㄔˇ
+肔 0 ㄔˇ
+垑 0 ㄔˇ
+䊼 0 ㄔˇ
+耻 0 ㄔˇ
+歯 0 ㄔˇ
+誀 0 ㄔˇ
+裭 0 ㄔˇ
+㶴 0 ㄔˇ
+袳 0 ㄔˇ
+赤 0 ㄔˋ
+翅 0 ㄔˋ
+斥 0 ㄔˋ
+飭 0 ㄔˋ
+叱 0 ㄔˋ
+熾 0 ㄔˋ
+啻 0 ㄔˋ
+傺 0 ㄔˋ
+敕 0 ㄔˋ
+眙 0 ㄔˋ
+抶 0 ㄔˋ
+饎 0 ㄔˋ
+栻 0 ㄔˋ
+遫 0 ㄔˋ
+彳 0 ㄔˋ
+跮 0 ㄔˋ
+踅 0 ㄔˋ
+鷘 0 ㄔˋ
+乿 0 ㄔˋ
+瘛 0 ㄔˋ
+鉓 0 ㄔˋ
+哧 0 ㄔˋ
+淔 0 ㄔˋ
+痸 0 ㄔˋ
+懘 0 ㄔˋ
+戠 0 ㄔˋ
+摰 0 ㄔˋ
+吒 0 ㄔˋ
+柝 0 ㄔˋ
+赫 0 ㄔˋ
+幟 0 ㄔˋ
+乇 0 ㄔˋ
+虴 0 ㄔˋ
+捇 0 ㄔˋ
+湁 0 ㄔˋ
+觢 0 ㄔˋ
+赩 0 ㄔˋ
+趐 0 ㄔˋ
+鶒 0 ㄔˋ
+杘 0 ㄔˋ
+灻 0 ㄔˋ
+卶 0 ㄔˋ
+呹 0 ㄔˋ
+勅 0 ㄔˋ
+咤 0 ㄔˋ
+恜 0 ㄔˋ
+勑 0 ㄔˋ
+翄 0 ㄔˋ
+烾 0 ㄔˋ
+痓 0 ㄔˋ
+雴 0 ㄔˋ
+慗 0 ㄔˋ
+憏 0 ㄔˋ
+慸 0 ㄔˋ
+爀 0 ㄔˋ
+糦 0 ㄔˋ
+趩 0 ㄔˋ
+侙 0 ㄔˋ
+卙 0 ㄔˋ
+旘 0 ㄔˋ
+翤 0 ㄔˋ
+持 0 ㄔˊ
+池 0 ㄔˊ
+遲 0 ㄔˊ
+馳 0 ㄔˊ
+匙 0 ㄔˊ
+弛 0 ㄔˊ
+墀 0 ㄔˊ
+坻 0 ㄔˊ
+踟 0 ㄔˊ
+箎 0 ㄔˊ
+茬 0 ㄔˊ
+蚳 0 ㄔˊ
+篪 0 ㄔˊ
+蚔 0 ㄔˊ
+茌 0 ㄔˊ
+痄 0 ㄔˊ
+忯 0 ㄔˊ
+汦 0 ㄔˊ
+荎 0 ㄔˊ
+栘 0 ㄔˊ
+歭 0 ㄔˊ
+耛 0 ㄔˊ
+貾 0 ㄔˊ
+趍 0 ㄔˊ
+箈 0 ㄔˊ
+徲 0 ㄔˊ
+謘 0 ㄔˊ
+徥 0 ㄔˊ
+尺 0 ㄔˊ
+治 0 ㄔˊ
+泜 0 ㄔˊ
+痴 0 ㄔˊ
+彽 0 ㄔˊ
+阺 0 ㄔˊ
+乿 0 ㄔˊ
+跢 0 ㄔˊ
+鍉 0 ㄔˊ
+坘 0 ㄔˊ
+岻 0 ㄔˊ
+竾 0 ㄔˊ
+俿 0 ㄔˊ
+赿 0 ㄔˊ
+筂 0 ㄔˊ
+遅 0 ㄔˊ
+遟 0 ㄔˊ
+差 0 ㄔㄚ
+插 0 ㄔㄚ
+叉 0 ㄔㄚ
+喳 0 ㄔㄚ
+艖 0 ㄔㄚ
+嗏 0 ㄔㄚ
+扠 0 ㄔㄚ
+杈 0 ㄔㄚ
+偛 0 ㄔㄚ
+疀 0 ㄔㄚ
+鎈 0 ㄔㄚ
+臿 0 ㄔㄚ
+溠 0 ㄔㄚ
+槎 0 ㄔㄚ
+鍤 0 ㄔㄚ
+芆 0 ㄔㄚ
+挿 0 ㄔㄚ
+訍 0 ㄔㄚ
+揷 0 ㄔㄚ
+肞 0 ㄔㄚ
+銟 0 ㄔㄚ
+餷 0 ㄔㄚ
+蹅 0 ㄔㄚˇ
+叉 0 ㄔㄚˇ
+鑔 0 ㄔㄚˇ
+詫 0 ㄔㄚˋ
+岔 0 ㄔㄚˋ
+剎 0 ㄔㄚˋ
+差 0 ㄔㄚˋ
+汊 0 ㄔㄚˋ
+衩 0 ㄔㄚˋ
+蜡 0 ㄔㄚˋ
+侘 0 ㄔㄚˋ
+奼 0 ㄔㄚˋ
+紁 0 ㄔㄚˋ
+杈 0 ㄔㄚˋ
+刹 0 ㄔㄚˋ
+姹 0 ㄔㄚˋ
+訍 0 ㄔㄚˋ
+仛 0 ㄔㄚˋ
+䟕 0 ㄔㄚˋ
+查 0 ㄔㄚˊ
+察 0 ㄔㄚˊ
+茶 0 ㄔㄚˊ
+搽 0 ㄔㄚˊ
+槎 0 ㄔㄚˊ
+鍤 0 ㄔㄚˊ
+碴 0 ㄔㄚˊ
+臿 0 ㄔㄚˊ
+垞 0 ㄔㄚˊ
+秅 0 ㄔㄚˊ
+叉 0 ㄔㄚˊ
+岔 0 ㄔㄚˊ
+楂 0 ㄔㄚˊ
+蹅 0 ㄔㄚˊ
+嚓 0 ㄔㄚˊ
+査 0 ㄔㄚˊ
+詧 0 ㄔㄚˊ
+摖 0 ㄔㄚˊ
+檫 0 ㄔㄚˊ
+櫒 0 ㄔㄚˊ
+褨 0 ㄔㄚˊ
+䠡 0 ㄔㄚˊ
+茬 0 ㄔㄚˊ
+拆 0 ㄔㄞ
+釵 0 ㄔㄞ
+差 0 ㄔㄞ
+偨 0 ㄔㄞ
+靫 0 ㄔㄞ
+冊 0 ㄔㄞˇ
+册 0 ㄔㄞˇ
+茝 0 ㄔㄞˇ
+笧 0 ㄔㄞˇ
+蠆 0 ㄔㄞˋ
+袃 0 ㄔㄞˋ
+囆 0 ㄔㄞˋ
+瘥 0 ㄔㄞˋ
+訍 0 ㄔㄞˋ
+差 0 ㄔㄞˋ
+柴 0 ㄔㄞˊ
+豺 0 ㄔㄞˊ
+儕 0 ㄔㄞˊ
+祡 0 ㄔㄞˊ
+喍 0 ㄔㄞˊ
+茈 0 ㄔㄞˊ
+砦 0 ㄔㄞˊ
+釮 0 ㄔㄞˊ
+犲 0 ㄔㄞˊ
+出 0 ㄔㄨ
+初 0 ㄔㄨ
+齣 0 ㄔㄨ
+貙 0 ㄔㄨ
+趉 0 ㄔㄨ
+趎 0 ㄔㄨ
+犓 0 ㄔㄨ
+岀 0 ㄔㄨ
+摢 0 ㄔㄨ
+誳 0 ㄔㄨ
+出 0 ㄔㄨ˙
+充 0 ㄔㄨㄥ
+衝 0 ㄔㄨㄥ
+沖 0 ㄔㄨㄥ
+舂 0 ㄔㄨㄥ
+忡 0 ㄔㄨㄥ
+憧 0 ㄔㄨㄥ
+珫 0 ㄔㄨㄥ
+茺 0 ㄔㄨㄥ
+浺 0 ㄔㄨㄥ
+蹖 0 ㄔㄨㄥ
+祌 0 ㄔㄨㄥ
+翀 0 ㄔㄨㄥ
+憃 0 ㄔㄨㄥ
+罿 0 ㄔㄨㄥ
+冲 0 ㄔㄨㄥ
+嘃 0 ㄔㄨㄥ
+摏 0 ㄔㄨㄥ
+寵 0 ㄔㄨㄥˇ
+埫 0 ㄔㄨㄥˇ
+衝 0 ㄔㄨㄥˋ
+銃 0 ㄔㄨㄥˋ
+揰 0 ㄔㄨㄥˋ
+尰 0 ㄔㄨㄥˋ
+瘇 0 ㄔㄨㄥˋ
+重 0 ㄔㄨㄥˊ
+崇 0 ㄔㄨㄥˊ
+虫 0 ㄔㄨㄥˊ
+蟲 0 ㄔㄨㄥˊ
+种 0 ㄔㄨㄥˊ
+翀 0 ㄔㄨㄥˊ
+蝩 0 ㄔㄨㄥˊ
+隀 0 ㄔㄨㄥˊ
+茧 0 ㄔㄨㄥˊ
+痋 0 ㄔㄨㄥˊ
+蠱 0 ㄔㄨㄥˊ
+嫞 0 ㄔㄨㄥˊ
+爞 0 ㄔㄨㄥˊ
+烛 0 ㄔㄨㄥˊ
+崈 0 ㄔㄨㄥˊ
+漴 0 ㄔㄨㄥˊ
+蛊 0 ㄔㄨㄥˊ
+窗 0 ㄔㄨㄤ
+創 0 ㄔㄨㄤ
+瘡 0 ㄔㄨㄤ
+囪 0 ㄔㄨㄤ
+憃 0 ㄔㄨㄤ
+戧 0 ㄔㄨㄤ
+摐 0 ㄔㄨㄤ
+愴 0 ㄔㄨㄤ
+刱 0 ㄔㄨㄤ
+瑲 0 ㄔㄨㄤ
+刅 0 ㄔㄨㄤ
+囱 0 ㄔㄨㄤ
+剏 0 ㄔㄨㄤ
+剙 0 ㄔㄨㄤ
+窓 0 ㄔㄨㄤ
+牎 0 ㄔㄨㄤ
+牕 0 ㄔㄨㄤ
+窻 0 ㄔㄨㄤ
+刽 0 ㄔㄨㄤ
+闖 0 ㄔㄨㄤˇ
+搶 0 ㄔㄨㄤˇ
+漺 0 ㄔㄨㄤˇ
+傸 0 ㄔㄨㄤˇ
+磢 0 ㄔㄨㄤˇ
+摤 0 ㄔㄨㄤˇ
+創 0 ㄔㄨㄤˋ
+闖 0 ㄔㄨㄤˋ
+愴 0 ㄔㄨㄤˋ
+刱 0 ㄔㄨㄤˋ
+獊 0 ㄔㄨㄤˋ
+凔 0 ㄔㄨㄤˋ
+剏 0 ㄔㄨㄤˋ
+剙 0 ㄔㄨㄤˋ
+刽 0 ㄔㄨㄤˋ
+床 0 ㄔㄨㄤˊ
+幢 0 ㄔㄨㄤˊ
+撞 0 ㄔㄨㄤˊ
+橦 0 ㄔㄨㄤˊ
+疒 0 ㄔㄨㄤˊ
+牀 0 ㄔㄨㄤˊ
+漴 0 ㄔㄨㄤˊ
+噇 0 ㄔㄨㄤˊ
+穿 0 ㄔㄨㄢ
+川 0 ㄔㄨㄢ
+鐉 0 ㄔㄨㄢ
+氚 0 ㄔㄨㄢ
+瑏 0 ㄔㄨㄢ
+釧 0 ㄔㄨㄢ
+圌 0 ㄔㄨㄢ
+灥 0 ㄔㄨㄢ
+巛 0 ㄔㄨㄢ
+喘 0 ㄔㄨㄢˇ
+舛 0 ㄔㄨㄢˇ
+荈 0 ㄔㄨㄢˇ
+揣 0 ㄔㄨㄢˇ
+踹 0 ㄔㄨㄢˇ
+踳 0 ㄔㄨㄢˇ
+堾 0 ㄔㄨㄢˇ
+僢 0 ㄔㄨㄢˇ
+蝽 0 ㄔㄨㄢˇ
+串 0 ㄔㄨㄢˋ
+釧 0 ㄔㄨㄢˋ
+玔 0 ㄔㄨㄢˋ
+汌 0 ㄔㄨㄢˋ
+夼 0 ㄔㄨㄢˋ
+賗 0 ㄔㄨㄢˋ
+腨 0 ㄔㄨㄢˋ
+傳 0 ㄔㄨㄢˊ
+船 0 ㄔㄨㄢˊ
+遄 0 ㄔㄨㄢˊ
+椽 0 ㄔㄨㄢˊ
+歂 0 ㄔㄨㄢˊ
+諯 0 ㄔㄨㄢˊ
+暷 0 ㄔㄨㄢˊ
+輲 0 ㄔㄨㄢˊ
+猭 0 ㄔㄨㄢˊ
+椯 0 ㄔㄨㄢˊ
+縳 0 ㄔㄨㄢˊ
+餯 0 ㄔㄨㄢˊ
+舩 0 ㄔㄨㄢˊ
+篅 0 ㄔㄨㄢˊ
+處 0 ㄔㄨˇ
+楚 0 ㄔㄨˇ
+儲 0 ㄔㄨˇ
+礎 0 ㄔㄨˇ
+杵 0 ㄔㄨˇ
+褚 0 ㄔㄨˇ
+楮 0 ㄔㄨˇ
+濋 0 ㄔㄨˇ
+檚 0 ㄔㄨˇ
+貯 0 ㄔㄨˇ
+泞 0 ㄔㄨˇ
+儊 0 ㄔㄨˇ
+处 0 ㄔㄨˇ
+椘 0 ㄔㄨˇ
+禇 0 ㄔㄨˇ
+憷 0 ㄔㄨˇ
+齼 0 ㄔㄨˇ
+柠 0 ㄔㄨˇ
+齭 0 ㄔㄨˇ
+處 0 ㄔㄨˋ
+觸 0 ㄔㄨˋ
+畜 0 ㄔㄨˋ
+絀 0 ㄔㄨˋ
+矗 0 ㄔㄨˋ
+黜 0 ㄔㄨˋ
+俶 0 ㄔㄨˋ
+怵 0 ㄔㄨˋ
+搐 0 ㄔㄨˋ
+歜 0 ㄔㄨˋ
+詘 0 ㄔㄨˋ
+鄐 0 ㄔㄨˋ
+斶 0 ㄔㄨˋ
+亍 0 ㄔㄨˋ
+豖 0 ㄔㄨˋ
+泏 0 ㄔㄨˋ
+琡 0 ㄔㄨˋ
+踀 0 ㄔㄨˋ
+滀 0 ㄔㄨˋ
+儊 0 ㄔㄨˋ
+臅 0 ㄔㄨˋ
+敊 0 ㄔㄨˋ
+怷 0 ㄔㄨˋ
+眝 0 ㄔㄨˋ
+触 0 ㄔㄨˋ
+諔 0 ㄔㄨˋ
+擉 0 ㄔㄨˋ
+蠲 0 ㄔㄨˋ
+处 0 ㄔㄨˋ
+竌 0 ㄔㄨˋ
+炪 0 ㄔㄨˋ
+㙇 0 ㄔㄨˋ
+笜 0 ㄔㄨˋ
+傗 0 ㄔㄨˋ
+誳 0 ㄔㄨˋ
+閦 0 ㄔㄨˋ
+嘼 0 ㄔㄨˋ
+除 0 ㄔㄨˊ
+儲 0 ㄔㄨˊ
+廚 0 ㄔㄨˊ
+鋤 0 ㄔㄨˊ
+櫥 0 ㄔㄨˊ
+雛 0 ㄔㄨˊ
+芻 0 ㄔㄨˊ
+躇 0 ㄔㄨˊ
+滁 0 ㄔㄨˊ
+躕 0 ㄔㄨˊ
+篨 0 ㄔㄨˊ
+耡 0 ㄔㄨˊ
+蜍 0 ㄔㄨˊ
+鉏 0 ㄔㄨˊ
+蒢 0 ㄔㄨˊ
+跦 0 ㄔㄨˊ
+鶵 0 ㄔㄨˊ
+幮 0 ㄔㄨˊ
+貙 0 ㄔㄨˊ
+趎 0 ㄔㄨˊ
+犓 0 ㄔㄨˊ
+屠 0 ㄔㄨˊ
+媰 0 ㄔㄨˊ
+藸 0 ㄔㄨˊ
+耝 0 ㄔㄨˊ
+䟞 0 ㄔㄨˊ
+厨 0 ㄔㄨˊ
+豠 0 ㄔㄨˊ
+㕑 0 ㄔㄨˊ
+蒭 0 ㄔㄨˊ
+橱 0 ㄔㄨˊ
+蹰 0 ㄔㄨˊ
+雏 0 ㄔㄨˊ
+蕏 0 ㄔㄨˊ
+欻 0 ㄔㄨㄚ
+歘 0 ㄔㄨㄚ
+抓 0 ㄔㄨㄚˇ
+揣 0 ㄔㄨㄞˇ
+踹 0 ㄔㄨㄞˋ
+嘬 0 ㄔㄨㄞˋ
+欼 0 ㄔㄨㄞˋ
+膗 0 ㄔㄨㄞˊ
+戳 0 ㄔㄨㄛ
+綽 0 ㄔㄨㄛˋ
+輟 0 ㄔㄨㄛˋ
+齪 0 ㄔㄨㄛˋ
+婼 0 ㄔㄨㄛˋ
+啜 0 ㄔㄨㄛˋ
+惙 0 ㄔㄨㄛˋ
+歠 0 ㄔㄨㄛˋ
+醊 0 ㄔㄨㄛˋ
+婥 0 ㄔㄨㄛˋ
+畷 0 ㄔㄨㄛˋ
+逴 0 ㄔㄨㄛˋ
+娖 0 ㄔㄨㄛˋ
+吷 0 ㄔㄨㄛˋ
+珿 0 ㄔㄨㄛˋ
+磭 0 ㄔㄨㄛˋ
+腏 0 ㄔㄨㄛˋ
+趠 0 ㄔㄨㄛˋ
+擉 0 ㄔㄨㄛˋ
+嚽 0 ㄔㄨㄛˋ
+娕 0 ㄔㄨㄛˋ
+焯 0 ㄔㄨㄛˋ
+錣 0 ㄔㄨㄛˋ
+餟 0 ㄔㄨㄛˋ
+辵 0 ㄔㄨㄛˋ
+竐 0 ㄔㄨㄛˋ
+涰 0 ㄔㄨㄛˋ
+䓎 0 ㄔㄨㄛˋ
+酫 0 ㄔㄨㄛˋ
+諁 0 ㄔㄨㄛˋ
+鋜 0 ㄔㄨㄛˋ
+繛 0 ㄔㄨㄛˋ
+蠚 0 ㄔㄨㄛˋ
+鑡 0 ㄔㄨㄛˋ
+辶 0 ㄔㄨㄛˋ
+㲋 0 ㄔㄨㄛˋ
+遬 0 ㄔㄨㄛˋ
+吹 0 ㄔㄨㄟ
+炊 0 ㄔㄨㄟ
+磓 0 ㄔㄨㄟ
+龡 0 ㄔㄨㄟ
+吹 0 ㄔㄨㄟˋ
+炊 0 ㄔㄨㄟˋ
+諈 0 ㄔㄨㄟˋ
+龡 0 ㄔㄨㄟˋ
+垂 0 ㄔㄨㄟˊ
+鎚 0 ㄔㄨㄟˊ
+槌 0 ㄔㄨㄟˊ
+搥 0 ㄔㄨㄟˊ
+椎 0 ㄔㄨㄟˊ
+陲 0 ㄔㄨㄟˊ
+錘 0 ㄔㄨㄟˊ
+捶 0 ㄔㄨㄟˊ
+棰 0 ㄔㄨㄟˊ
+箠 0 ㄔㄨㄟˊ
+圌 0 ㄔㄨㄟˊ
+湷 0 ㄔㄨㄟˊ
+倕 0 ㄔㄨㄟˊ
+菙 0 ㄔㄨㄟˊ
+綞 0 ㄔㄨㄟˊ
+娷 0 ㄔㄨㄟˊ
+腄 0 ㄔㄨㄟˊ
+甀 0 ㄔㄨㄟˊ
+厜 0 ㄔㄨㄟˊ
+硾 0 ㄔㄨㄟˊ
+諈 0 ㄔㄨㄟˊ
+埀 0 ㄔㄨㄟˊ
+桘 0 ㄔㄨㄟˊ
+顀 0 ㄔㄨㄟˊ
+春 0 ㄔㄨㄣ
+椿 0 ㄔㄨㄣ
+杶 0 ㄔㄨㄣ
+輴 0 ㄔㄨㄣ
+焞 0 ㄔㄨㄣ
+鰆 0 ㄔㄨㄣ
+媋 0 ㄔㄨㄣ
+暙 0 ㄔㄨㄣ
+鶞 0 ㄔㄨㄣ
+湷 0 ㄔㄨㄣ
+橁 0 ㄔㄨㄣ
+旾 0 ㄔㄨㄣ
+萅 0 ㄔㄨㄣ
+櫄 0 ㄔㄨㄣ
+蠢 0 ㄔㄨㄣˇ
+惷 0 ㄔㄨㄣˇ
+踳 0 ㄔㄨㄣˇ
+偆 0 ㄔㄨㄣˇ
+萶 0 ㄔㄨㄣˇ
+㖺 0 ㄔㄨㄣˇ
+堾 0 ㄔㄨㄣˇ
+僢 0 ㄔㄨㄣˇ
+睶 0 ㄔㄨㄣˇ
+蝽 0 ㄔㄨㄣˇ
+箺 0 ㄔㄨㄣˇ
+純 0 ㄔㄨㄣˊ
+唇 0 ㄔㄨㄣˊ
+醇 0 ㄔㄨㄣˊ
+淳 0 ㄔㄨㄣˊ
+蓴 0 ㄔㄨㄣˊ
+鶉 0 ㄔㄨㄣˊ
+漘 0 ㄔㄨㄣˊ
+錞 0 ㄔㄨㄣˊ
+韕 0 ㄔㄨㄣˊ
+脣 0 ㄔㄨㄣˊ
+憌 0 ㄔㄨㄣˊ
+鯙 0 ㄔㄨㄣˊ
+屯 0 ㄔㄨㄣˊ
+焞 0 ㄔㄨㄣˊ
+浱 0 ㄔㄨㄣˊ
+陙 0 ㄔㄨㄣˊ
+湻 0 ㄔㄨㄣˊ
+滣 0 ㄔㄨㄣˊ
+蒓 0 ㄔㄨㄣˊ
+醕 0 ㄔㄨㄣˊ
+車 0 ㄔㄜ
+硨 0 ㄔㄜ
+莗 0 ㄔㄜ
+俥 0 ㄔㄜ
+唓 0 ㄔㄜ
+蛼 0 ㄔㄜ
+扯 0 ㄔㄜˇ
+撦 0 ㄔㄜˇ
+奲 0 ㄔㄜˇ
+尺 0 ㄔㄜˇ
+哆 0 ㄔㄜˇ
+拸 0 ㄔㄜˇ
+偖 0 ㄔㄜˇ
+徹 0 ㄔㄜˋ
+澈 0 ㄔㄜˋ
+轍 0 ㄔㄜˋ
+撤 0 ㄔㄜˋ
+掣 0 ㄔㄜˋ
+坼 0 ㄔㄜˋ
+屮 0 ㄔㄜˋ
+迠 0 ㄔㄜˋ
+硩 0 ㄔㄜˋ
+拆 0 ㄔㄜˋ
+呫 0 ㄔㄜˋ
+鮿 0 ㄔㄜˋ
+頙 0 ㄔㄜˋ
+爡 0 ㄔㄜˋ
+㿭 0 ㄔㄜˋ
+瞮 0 ㄔㄜˋ
+勶 0 ㄔㄜˋ
+抄 0 ㄔㄠ
+鈔 0 ㄔㄠ
+超 0 ㄔㄠ
+勦 0 ㄔㄠ
+弨 0 ㄔㄠ
+怊 0 ㄔㄠ
+訬 0 ㄔㄠ
+剿 0 ㄔㄠ
+罺 0 ㄔㄠ
+摷 0 ㄔㄠ
+欩 0 ㄔㄠ
+䫿 0 ㄔㄠ
+吵 0 ㄔㄠˇ
+炒 0 ㄔㄠˇ
+眧 0 ㄔㄠˇ
+赻 0 ㄔㄠˇ
+粆 0 ㄔㄠˇ
+煼 0 ㄔㄠˇ
+巐 0 ㄔㄠˇ
+㥮 0 ㄔㄠˇ
+麨 0 ㄔㄠˇ
+耖 0 ㄔㄠˋ
+鈔 0 ㄔㄠˋ
+趠 0 ㄔㄠˋ
+仦 0 ㄔㄠˋ
+仯 0 ㄔㄠˋ
+觘 0 ㄔㄠˋ
+䮓 0 ㄔㄠˋ
+朝 0 ㄔㄠˊ
+潮 0 ㄔㄠˊ
+巢 0 ㄔㄠˊ
+嘲 0 ㄔㄠˊ
+晁 0 ㄔㄠˊ
+樔 0 ㄔㄠˊ
+轈 0 ㄔㄠˊ
+鄛 0 ㄔㄠˊ
+啁 0 ㄔㄠˊ
+剿 0 ㄔㄠˊ
+勦 0 ㄔㄠˊ
+漅 0 ㄔㄠˊ
+璅 0 ㄔㄠˊ
+巣 0 ㄔㄠˊ
+鼂 0 ㄔㄠˊ
+謿 0 ㄔㄠˊ
+䄻 0 ㄔㄠˊ
+嗔 0 ㄔㄣ
+琛 0 ㄔㄣ
+瞋 0 ㄔㄣ
+郴 0 ㄔㄣ
+賝 0 ㄔㄣ
+棽 0 ㄔㄣ
+謓 0 ㄔㄣ
+諃 0 ㄔㄣ
+搷 0 ㄔㄣ
+堔 0 ㄔㄣ
+抻 0 ㄔㄣ
+捵 0 ㄔㄣ
+綝 0 ㄔㄣ
+捵 0 ㄔㄣˇ
+磣 0 ㄔㄣˇ
+鍖 0 ㄔㄣˇ
+裖 0 ㄔㄣˇ
+墋 0 ㄔㄣˇ
+踸 0 ㄔㄣˇ
+贂 0 ㄔㄣˇ
+祳 0 ㄔㄣˇ
+趻 0 ㄔㄣˇ
+硶 0 ㄔㄣˇ
+夦 0 ㄔㄣˇ
+謲 0 ㄔㄣˇ
+趁 0 ㄔㄣˋ
+稱 0 ㄔㄣˋ
+襯 0 ㄔㄣˋ
+櫬 0 ㄔㄣˋ
+讖 0 ㄔㄣˋ
+疢 0 ㄔㄣˋ
+齔 0 ㄔㄣˋ
+嚫 0 ㄔㄣˋ
+藽 0 ㄔㄣˋ
+儭 0 ㄔㄣˋ
+闖 0 ㄔㄣˋ
+称 0 ㄔㄣˋ
+趂 0 ㄔㄣˋ
+䚀 0 ㄔㄣˋ
+齓 0 ㄔㄣˋ
+穪 0 ㄔㄣˋ
+陳 0 ㄔㄣˊ
+沉 0 ㄔㄣˊ
+晨 0 ㄔㄣˊ
+臣 0 ㄔㄣˊ
+塵 0 ㄔㄣˊ
+辰 0 ㄔㄣˊ
+娠 0 ㄔㄣˊ
+忱 0 ㄔㄣˊ
+沈 0 ㄔㄣˊ
+宸 0 ㄔㄣˊ
+諶 0 ㄔㄣˊ
+煁 0 ㄔㄣˊ
+茞 0 ㄔㄣˊ
+蔯 0 ㄔㄣˊ
+樄 0 ㄔㄣˊ
+莐 0 ㄔㄣˊ
+愖 0 ㄔㄣˊ
+鈂 0 ㄔㄣˊ
+螴 0 ㄔㄣˊ
+麎 0 ㄔㄣˊ
+鷐 0 ㄔㄣˊ
+伔 0 ㄔㄣˊ
+敶 0 ㄔㄣˊ
+脤 0 ㄔㄣˊ
+蜃 0 ㄔㄣˊ
+橙 0 ㄔㄣˊ
+岒 0 ㄔㄣˊ
+抌 0 ㄔㄣˊ
+侲 0 ㄔㄣˊ
+挋 0 ㄔㄣˊ
+桭 0 ㄔㄣˊ
+梣 0 ㄔㄣˊ
+臦 0 ㄔㄣˊ
+蜄 0 ㄔㄣˊ
+誫 0 ㄔㄣˊ
+鋠 0 ㄔㄣˊ
+燛 0 ㄔㄣˊ
+尘 0 ㄔㄣˊ
+牨 0 ㄔㄣˊ
+迧 0 ㄔㄣˊ
+栕 0 ㄔㄣˊ
+莀 0 ㄔㄣˊ
+訦 0 ㄔㄣˊ
+軙 0 ㄔㄣˊ
+瘎 0 ㄔㄣˊ
+曟 0 ㄔㄣˊ
+敐 0 ㄔㄣˊ
+薼 0 ㄔㄣˊ
+霃 0 ㄔㄣˊ
+一 0 ㄧ
+壹 0 ㄧ
+衣 0 ㄧ
+依 0 ㄧ
+醫 0 ㄧ
+伊 0 ㄧ
+揖 0 ㄧ
+噫 0 ㄧ
+漪 0 ㄧ
+猗 0 ㄧ
+咿 0 ㄧ
+ㄧ 0 ㄧ
+禕 0 ㄧ
+繄 0 ㄧ
+黟 0 ㄧ
+曀 0 ㄧ
+銥 0 ㄧ
+泆 0 ㄧ
+鷖 0 ㄧ
+欹 0 ㄧ
+郼 0 ㄧ
+圪 0 ㄧ
+溰 0 ㄧ
+稦 0 ㄧ
+燚 0 ㄧ
+洢 0 ㄧ
+陭 0 ㄧ
+蛜 0 ㄧ
+嫛 0 ㄧ
+瑿 0 ㄧ
+檹 0 ㄧ
+毉 0 ㄧ
+黳 0 ㄧ
+嶬 0 ㄧ
+她 0 ㄧ
+椅 0 ㄧ
+翳 0 ㄧ
+弌 0 ㄧ
+医 0 ㄧ
+壱 0 ㄧ
+㛄 0 ㄧ
+㳖 0 ㄧ
+悘 0 ㄧ
+嬄 0 ㄧ
+夁 0 ㄧ
+䫑 0 ㄧ
+譩 0 ㄧ
+鎄 0 ㄧ
+耶 0 ㄧㄝ
+噎 0 ㄧㄝ
+蠮 0 ㄧㄝ
+掖 0 ㄧㄝ
+也 0 ㄧㄝˇ
+野 0 ㄧㄝˇ
+冶 0 ㄧㄝˇ
+埜 0 ㄧㄝˇ
+漜 0 ㄧㄝˇ
+壄 0 ㄧㄝˇ
+業 0 ㄧㄝˋ
+葉 0 ㄧㄝˋ
+頁 0 ㄧㄝˋ
+夜 0 ㄧㄝˋ
+咽 0 ㄧㄝˋ
+謁 0 ㄧㄝˋ
+拽 0 ㄧㄝˋ
+靨 0 ㄧㄝˋ
+鄴 0 ㄧㄝˋ
+燁 0 ㄧㄝˋ
+瞱 0 ㄧㄝˋ
+擫 0 ㄧㄝˋ
+射 0 ㄧㄝˋ
+曄 0 ㄧㄝˋ
+饁 0 ㄧㄝˋ
+煠 0 ㄧㄝˋ
+鍱 0 ㄧㄝˋ
+鐷 0 ㄧㄝˋ
+澲 0 ㄧㄝˋ
+鎑 0 ㄧㄝˋ
+偞 0 ㄧㄝˋ
+殗 0 ㄧㄝˋ
+嶪 0 ㄧㄝˋ
+擛 0 ㄧㄝˋ
+曳 0 ㄧㄝˋ
+掖 0 ㄧㄝˋ
+液 0 ㄧㄝˋ
+喝 0 ㄧㄝˋ
+腋 0 ㄧㄝˋ
+暍 0 ㄧㄝˋ
+噎 0 ㄧㄝˋ
+抴 0 ㄧㄝˋ
+焲 0 ㄧㄝˋ
+絏 0 ㄧㄝˋ
+楪 0 ㄧㄝˋ
+痷 0 ㄧㄝˋ
+裛 0 ㄧㄝˋ
+蝢 0 ㄧㄝˋ
+顉 0 ㄧㄝˋ
+韘 0 ㄧㄝˋ
+蠂 0 ㄧㄝˋ
+黦 0 ㄧㄝˋ
+譺 0 ㄧㄝˋ
+曵 0 ㄧㄝˋ
+亱 0 ㄧㄝˋ
+枼 0 ㄧㄝˋ
+洂 0 ㄧㄝˋ
+啘 0 ㄧㄝˋ
+殜 0 ㄧㄝˋ
+僷 0 ㄧㄝˋ
+墷 0 ㄧㄝˋ
+嶫 0 ㄧㄝˋ
+曅 0 ㄧㄝˋ
+餣 0 ㄧㄝˋ
+曗 0 ㄧㄝˋ
+皣 0 ㄧㄝˋ
+㒯 0 ㄧㄝˋ
+擪 0 ㄧㄝˋ
+瞸 0 ㄧㄝˋ
+鵺 0 ㄧㄝˋ
+爗 0 ㄧㄝˋ
+驜 0 ㄧㄝˋ
+鸈 0 ㄧㄝˋ
+枽 0 ㄧㄝˋ
+㖡 0 ㄧㄝˋ
+弽 0 ㄧㄝˋ
+牃 0 ㄧㄝˋ
+㗼 0 ㄧㄝˋ
+嚈 0 ㄧㄝˋ
+礏 0 ㄧㄝˋ
+爺 0 ㄧㄝˊ
+耶 0 ㄧㄝˊ
+椰 0 ㄧㄝˊ
+琊 0 ㄧㄝˊ
+揶 0 ㄧㄝˊ
+擨 0 ㄧㄝˊ
+邪 0 ㄧㄝˊ
+斜 0 ㄧㄝˊ
+峫 0 ㄧㄝˊ
+捓 0 ㄧㄝˊ
+衺 0 ㄧㄝˊ
+㖿 0 ㄧㄝˊ
+釾 0 ㄧㄝˊ
+瑘 0 ㄧㄝˊ
+鋣 0 ㄧㄝˊ
+鎁 0 ㄧㄝˊ
+吔 0 ㄧㄝ˙
+優 0 ㄧㄡ
+憂 0 ㄧㄡ
+幽 0 ㄧㄡ
+悠 0 ㄧㄡ
+呦 0 ㄧㄡ
+攸 0 ㄧㄡ
+耰 0 ㄧㄡ
+麀 0 ㄧㄡ
+櫌 0 ㄧㄡ
+鄾 0 ㄧㄡ
+懮 0 ㄧㄡ
+怮 0 ㄧㄡ
+嚘 0 ㄧㄡ
+瀀 0 ㄧㄡ
+纋 0 ㄧㄡ
+蚴 0 ㄧㄡ
+黝 0 ㄧㄡ
+优 0 ㄧㄡ
+泑 0 ㄧㄡ
+筱 0 ㄧㄡ
+忧 0 ㄧㄡ
+䥳 0 ㄧㄡ
+妋 0 ㄧㄡ
+有 0 ㄧㄡˇ
+友 0 ㄧㄡˇ
+酉 0 ㄧㄡˇ
+莠 0 ㄧㄡˇ
+牖 0 ㄧㄡˇ
+黝 0 ㄧㄡˇ
+羑 0 ㄧㄡˇ
+泑 0 ㄧㄡˇ
+銪 0 ㄧㄡˇ
+岰 0 ㄧㄡˇ
+庮 0 ㄧㄡˇ
+蒏 0 ㄧㄡˇ
+苃 0 ㄧㄡˇ
+聈 0 ㄧㄡˇ
+槱 0 ㄧㄡˇ
+卣 0 ㄧㄡˇ
+唒 0 ㄧㄡˇ
+栯 0 ㄧㄡˇ
+眑 0 ㄧㄡˇ
+莤 0 ㄧㄡˇ
+蚴 0 ㄧㄡˇ
+懮 0 ㄧㄡˇ
+㶭 0 ㄧㄡˇ
+梄 0 ㄧㄡˇ
+湵 0 ㄧㄡˇ
+禉 0 ㄧㄡˇ
+牗 0 ㄧㄡˇ
+丣 0 ㄧㄡˇ
+羐 0 ㄧㄡˇ
+蜏 0 ㄧㄡˇ
+又 0 ㄧㄡˋ
+右 0 ㄧㄡˋ
+幼 0 ㄧㄡˋ
+誘 0 ㄧㄡˋ
+佑 0 ㄧㄡˋ
+柚 0 ㄧㄡˋ
+釉 0 ㄧㄡˋ
+祐 0 ㄧㄡˋ
+有 0 ㄧㄡˋ
+莠 0 ㄧㄡˋ
+宥 0 ㄧㄡˋ
+侑 0 ㄧㄡˋ
+囿 0 ㄧㄡˋ
+鼬 0 ㄧㄡˋ
+卣 0 ㄧㄡˋ
+姷 0 ㄧㄡˋ
+狖 0 ㄧㄡˋ
+峟 0 ㄧㄡˋ
+貁 0 ㄧㄡˋ
+鴢 0 ㄧㄡˋ
+扰 0 ㄧㄡˋ
+牰 0 ㄧㄡˋ
+迶 0 ㄧㄡˋ
+岫 0 ㄧㄡˋ
+鈾 0 ㄧㄡˋ
+柪 0 ㄧㄡˋ
+珛 0 ㄧㄡˋ
+聈 0 ㄧㄡˋ
+袎 0 ㄧㄡˋ
+靿 0 ㄧㄡˋ
+褎 0 ㄧㄡˋ
+叹 0 ㄧㄡˋ
+唀 0 ㄧㄡˋ
+櫾 0 ㄧㄡˋ
+亴 0 ㄧㄡˋ
+酭 0 ㄧㄡˋ
+由 0 ㄧㄡˊ
+游 0 ㄧㄡˊ
+遊 0 ㄧㄡˊ
+尤 0 ㄧㄡˊ
+油 0 ㄧㄡˊ
+郵 0 ㄧㄡˊ
+猶 0 ㄧㄡˊ
+猷 0 ㄧㄡˊ
+鈾 0 ㄧㄡˊ
+輶 0 ㄧㄡˊ
+疣 0 ㄧㄡˊ
+蚰 0 ㄧㄡˊ
+蕕 0 ㄧㄡˊ
+斿 0 ㄧㄡˊ
+蝣 0 ㄧㄡˊ
+訧 0 ㄧㄡˊ
+逌 0 ㄧㄡˊ
+楢 0 ㄧㄡˊ
+魷 0 ㄧㄡˊ
+优 0 ㄧㄡˊ
+沋 0 ㄧㄡˊ
+浟 0 ㄧㄡˊ
+偤 0 ㄧㄡˊ
+秞 0 ㄧㄡˊ
+莤 0 ㄧㄡˊ
+酋 0 ㄧㄡˊ
+鯈 0 ㄧㄡˊ
+冘 0 ㄧㄡˊ
+囮 0 ㄧㄡˊ
+怞 0 ㄧㄡˊ
+苬 0 ㄧㄡˊ
+紌 0 ㄧㄡˊ
+崷 0 ㄧㄡˊ
+揄 0 ㄧㄡˊ
+煪 0 ㄧㄡˊ
+遒 0 ㄧㄡˊ
+緧 0 ㄧㄡˊ
+繇 0 ㄧㄡˊ
+蠤 0 ㄧㄡˊ
+㕱 0 ㄧㄡˊ
+犹 0 ㄧㄡˊ
+肬 0 ㄧㄡˊ
+怣 0 ㄧㄡˊ
+峳 0 ㄧㄡˊ
+逎 0 ㄧㄡˊ
+逰 0 ㄧㄡˊ
+滺 0 ㄧㄡˊ
+駀 0 ㄧㄡˊ
+鮋 0 ㄧㄡˊ
+鰌 0 ㄧㄡˊ
+櫾 0 ㄧㄡˊ
+邮 0 ㄧㄡˊ
+䣭 0 ㄧㄡˊ
+輏 0 ㄧㄡˊ
+醔 0 ㄧㄡˊ
+鞧 0 ㄧㄡˊ
+㘥 0 ㄧㄡˊ
+邎 0 ㄧㄡˊ
+應 0 ㄧㄥ
+英 0 ㄧㄥ
+鷹 0 ㄧㄥ
+嬰 0 ㄧㄥ
+鶯 0 ㄧㄥ
+櫻 0 ㄧㄥ
+膺 0 ㄧㄥ
+瑛 0 ㄧㄥ
+鸚 0 ㄧㄥ
+嚶 0 ㄧㄥ
+罌 0 ㄧㄥ
+纓 0 ㄧㄥ
+攖 0 ㄧㄥ
+瓔 0 ㄧㄥ
+嫈 0 ㄧㄥ
+甖 0 ㄧㄥ
+罃 0 ㄧㄥ
+煐 0 ㄧㄥ
+韺 0 ㄧㄥ
+甇 0 ㄧㄥ
+霙 0 ㄧㄥ
+碤 0 ㄧㄥ
+礯 0 ㄧㄥ
+朠 0 ㄧㄥ
+蝧 0 ㄧㄥ
+渶 0 ㄧㄥ
+褮 0 ㄧㄥ
+偀 0 ㄧㄥ
+霒 0 ㄧㄥ
+蘡 0 ㄧㄥ
+譻 0 ㄧㄥ
+蠳 0 ㄧㄥ
+鶧 0 ㄧㄥ
+薨 0 ㄧㄥ
+贗 0 ㄧㄥ
+賏 0 ㄧㄥ
+瀴 0 ㄧㄥ
+応 0 ㄧㄥ
+偐 0 ㄧㄥ
+啨 0 ㄧㄥ
+媖 0 ㄧㄥ
+䊔 0 ㄧㄥ
+噟 0 ㄧㄥ
+贋 0 ㄧㄥ
+鶑 0 ㄧㄥ
+孆 0 ㄧㄥ
+孾 0 ㄧㄥ
+譍 0 ㄧㄥ
+鑍 0 ㄧㄥ
+鸎 0 ㄧㄥ
+䣐 0 ㄧㄥ
+鷪 0 ㄧㄥ
+䇦 0 ㄧㄥ
+影 0 ㄧㄥˇ
+景 0 ㄧㄥˇ
+穎 0 ㄧㄥˇ
+潁 0 ㄧㄥˇ
+癭 0 ㄧㄥˇ
+郢 0 ㄧㄥˇ
+瀴 0 ㄧㄥˇ
+矨 0 ㄧㄥˇ
+梬 0 ㄧㄥˇ
+浧 0 ㄧㄥˇ
+熲 0 ㄧㄥˇ
+顈 0 ㄧㄥˇ
+廮 0 ㄧㄥˇ
+頴 0 ㄧㄥˇ
+巊 0 ㄧㄥˇ
+鐛 0 ㄧㄥˇ
+應 0 ㄧㄥˋ
+硬 0 ㄧㄥˋ
+映 0 ㄧㄥˋ
+媵 0 ㄧㄥˋ
+瀅 0 ㄧㄥˋ
+鎣 0 ㄧㄥˋ
+摬 0 ㄧㄥˋ
+賏 0 ㄧㄥˋ
+迎 0 ㄧㄥˋ
+瀴 0 ㄧㄥˋ
+応 0 ㄧㄥˋ
+暎 0 ㄧㄥˋ
+膡 0 ㄧㄥˋ
+噟 0 ㄧㄥˋ
+譍 0 ㄧㄥˋ
+鞕 0 ㄧㄥˋ
+營 0 ㄧㄥˊ
+迎 0 ㄧㄥˊ
+蠅 0 ㄧㄥˊ
+螢 0 ㄧㄥˊ
+贏 0 ㄧㄥˊ
+盈 0 ㄧㄥˊ
+瑩 0 ㄧㄥˊ
+縈 0 ㄧㄥˊ
+瀛 0 ㄧㄥˊ
+滎 0 ㄧㄥˊ
+嬴 0 ㄧㄥˊ
+塋 0 ㄧㄥˊ
+熒 0 ㄧㄥˊ
+楹 0 ㄧㄥˊ
+瀅 0 ㄧㄥˊ
+瀠 0 ㄧㄥˊ
+籯 0 ㄧㄥˊ
+瀯 0 ㄧㄥˊ
+謍 0 ㄧㄥˊ
+攍 0 ㄧㄥˊ
+巆 0 ㄧㄥˊ
+廮 0 ㄧㄥˊ
+藀 0 ㄧㄥˊ
+犖 0 ㄧㄥˊ
+嫈 0 ㄧㄥˊ
+禜 0 ㄧㄥˊ
+罃 0 ㄧㄥˊ
+褮 0 ㄧㄥˊ
+濴 0 ㄧㄥˊ
+覮 0 ㄧㄥˊ
+醟 0 ㄧㄥˊ
+鎣 0 ㄧㄥˊ
+㕲 0 ㄧㄥˊ
+盁 0 ㄧㄥˊ
+僌 0 ㄧㄥˊ
+萾 0 ㄧㄥˊ
+蝇 0 ㄧㄥˊ
+䋼 0 ㄧㄥˊ
+濙 0 ㄧㄥˊ
+濚 0 ㄧㄥˊ
+㶈 0 ㄧㄥˊ
+櫿 0 ㄧㄥˊ
+籝 0 ㄧㄥˊ
+耺 0 ㄧㄥˊ
+㜲 0 ㄧㄥˊ
+営 0 ㄧㄥˊ
+央 0 ㄧㄤ
+秧 0 ㄧㄤ
+殃 0 ㄧㄤ
+鴦 0 ㄧㄤ
+鞅 0 ㄧㄤ
+泱 0 ㄧㄤ
+坱 0 ㄧㄤ
+胦 0 ㄧㄤ
+柍 0 ㄧㄤ
+佒 0 ㄧㄤ
+姎 0 ㄧㄤ
+紻 0 ㄧㄤ
+鉠 0 ㄧㄤ
+雵 0 ㄧㄤ
+抰 0 ㄧㄤ
+咉 0 ㄧㄤ
+眏 0 ㄧㄤ
+䄃 0 ㄧㄤ
+楧 0 ㄧㄤ
+鍈 0 ㄧㄤ
+䱀 0 ㄧㄤ
+養 0 ㄧㄤˇ
+仰 0 ㄧㄤˇ
+氧 0 ㄧㄤˇ
+癢 0 ㄧㄤˇ
+鞅 0 ㄧㄤˇ
+卬 0 ㄧㄤˇ
+攁 0 ㄧㄤˇ
+岟 0 ㄧㄤˇ
+炴 0 ㄧㄤˇ
+抰 0 ㄧㄤˇ
+痒 0 ㄧㄤˇ
+懩 0 ㄧㄤˇ
+蝆 0 ㄧㄤˇ
+坱 0 ㄧㄤˇ
+蛘 0 ㄧㄤˇ
+瀁 0 ㄧㄤˇ
+慃 0 ㄧㄤˇ
+氱 0 ㄧㄤˇ
+駚 0 ㄧㄤˇ
+傟 0 ㄧㄤˇ
+詇 0 ㄧㄤˇ
+䬬 0 ㄧㄤˇ
+勜 0 ㄧㄤˇ
+樣 0 ㄧㄤˋ
+養 0 ㄧㄤˋ
+恙 0 ㄧㄤˋ
+漾 0 ㄧㄤˋ
+怏 0 ㄧㄤˋ
+煬 0 ㄧㄤˋ
+瀁 0 ㄧㄤˋ
+羕 0 ㄧㄤˋ
+様 0 ㄧㄤˋ
+諹 0 ㄧㄤˋ
+詇 0 ㄧㄤˋ
+楊 0 ㄧㄤˊ
+陽 0 ㄧㄤˊ
+揚 0 ㄧㄤˊ
+洋 0 ㄧㄤˊ
+羊 0 ㄧㄤˊ
+佯 0 ㄧㄤˊ
+烊 0 ㄧㄤˊ
+瘍 0 ㄧㄤˊ
+鍚 0 ㄧㄤˊ
+徉 0 ㄧㄤˊ
+颺 0 ㄧㄤˊ
+暘 0 ㄧㄤˊ
+煬 0 ㄧㄤˊ
+垟 0 ㄧㄤˊ
+昜 0 ㄧㄤˊ
+禓 0 ㄧㄤˊ
+蛘 0 ㄧㄤˊ
+瑒 0 ㄧㄤˊ
+珜 0 ㄧㄤˊ
+鐊 0 ㄧㄤˊ
+崵 0 ㄧㄤˊ
+鸉 0 ㄧㄤˊ
+眻 0 ㄧㄤˊ
+婸 0 ㄧㄤˊ
+吀 0 ㄧㄤˊ
+阦 0 ㄧㄤˊ
+阳 0 ㄧㄤˊ
+氜 0 ㄧㄤˊ
+羏 0 ㄧㄤˊ
+哶 0 ㄧㄤˊ
+样 0 ㄧㄤˊ
+敭 0 ㄧㄤˊ
+輰 0 ㄧㄤˊ
+霷 0 ㄧㄤˊ
+𦍌 0 ㄧㄤˊ
+𦍋 0 ㄧㄤˊ
+𢒑 0 ㄧㄤˊ
+鰑 0 ㄧㄤˊ
+劷 0 ㄧㄤˊ
+𦭵 0 ㄧㄤˊ
+𤋁 0 ㄧㄤˊ
+樣 0 ㄧㄤ˙
+煙 0 ㄧㄢ
+焉 0 ㄧㄢ
+淹 0 ㄧㄢ
+殷 0 ㄧㄢ
+醃 0 ㄧㄢ
+咽 0 ㄧㄢ
+胭 0 ㄧㄢ
+奄 0 ㄧㄢ
+湮 0 ㄧㄢ
+菸 0 ㄧㄢ
+嫣 0 ㄧㄢ
+燕 0 ㄧㄢ
+蔫 0 ㄧㄢ
+閹 0 ㄧㄢ
+厭 0 ㄧㄢ
+崦 0 ㄧㄢ
+臙 0 ㄧㄢ
+鄢 0 ㄧㄢ
+漹 0 ㄧㄢ
+猒 0 ㄧㄢ
+珚 0 ㄧㄢ
+偣 0 ㄧㄢ
+嬮 0 ㄧㄢ
+酀 0 ㄧㄢ
+腌 0 ㄧㄢ
+垔 0 ㄧㄢ
+凐 0 ㄧㄢ
+殗 0 ㄧㄢ
+傿 0 ㄧㄢ
+歅 0 ㄧㄢ
+嘕 0 ㄧㄢ
+禋 0 ㄧㄢ
+嬐 0 ㄧㄢ
+諲 0 ㄧㄢ
+閼 0 ㄧㄢ
+懨 0 ㄧㄢ
+黫 0 ㄧㄢ
+烟 0 ㄧㄢ
+陻 0 ㄧㄢ
+硽 0 ㄧㄢ
+嶖 0 ㄧㄢ
+㷼 0 ㄧㄢ
+篶 0 ㄧㄢ
+㤿 0 ㄧㄢ
+㥼 0 ㄧㄢ
+䅧 0 ㄧㄢ
+懕 0 ㄧㄢ
+眼 0 ㄧㄢˇ
+演 0 ㄧㄢˇ
+掩 0 ㄧㄢˇ
+衍 0 ㄧㄢˇ
+郾 0 ㄧㄢˇ
+偃 0 ㄧㄢˇ
+兗 0 ㄧㄢˇ
+齞 0 ㄧㄢˇ
+甗 0 ㄧㄢˇ
+儼 0 ㄧㄢˇ
+魘 0 ㄧㄢˇ
+剡 0 ㄧㄢˇ
+弇 0 ㄧㄢˇ
+罨 0 ㄧㄢˇ
+沇 0 ㄧㄢˇ
+巘 0 ㄧㄢˇ
+扊 0 ㄧㄢˇ
+揜 0 ㄧㄢˇ
+渰 0 ㄧㄢˇ
+蝘 0 ㄧㄢˇ
+黶 0 ㄧㄢˇ
+姶 0 ㄧㄢˇ
+戭 0 ㄧㄢˇ
+棪 0 ㄧㄢˇ
+鰋 0 ㄧㄢˇ
+鼴 0 ㄧㄢˇ
+琰 0 ㄧㄢˇ
+匽 0 ㄧㄢˇ
+厴 0 ㄧㄢˇ
+椼 0 ㄧㄢˇ
+抁 0 ㄧㄢˇ
+龑 0 ㄧㄢˇ
+酓 0 ㄧㄢˇ
+嵃 0 ㄧㄢˇ
+愝 0 ㄧㄢˇ
+萒 0 ㄧㄢˇ
+隒 0 ㄧㄢˇ
+裺 0 ㄧㄢˇ
+褗 0 ㄧㄢˇ
+鶠 0 ㄧㄢˇ
+黤 0 ㄧㄢˇ
+曮 0 ㄧㄢˇ
+惔 0 ㄧㄢˇ
+躽 0 ㄧㄢˇ
+馣 0 ㄧㄢˇ
+奄 0 ㄧㄢˇ
+堰 0 ㄧㄢˇ
+愆 0 ㄧㄢˇ
+縯 0 ㄧㄢˇ
+崦 0 ㄧㄢˇ
+郯 0 ㄧㄢˇ
+媕 0 ㄧㄢˇ
+晻 0 ㄧㄢˇ
+羡 0 ㄧㄢˇ
+馻 0 ㄧㄢˇ
+蔩 0 ㄧㄢˇ
+噞 0 ㄧㄢˇ
+餰 0 ㄧㄢˇ
+顩 0 ㄧㄢˇ
+齴 0 ㄧㄢˇ
+广 0 ㄧㄢˇ
+兖 0 ㄧㄢˇ
+埯 0 ㄧㄢˇ
+隌 0 ㄧㄢˇ
+隁 0 ㄧㄢˇ
+硽 0 ㄧㄢˇ
+遃 0 ㄧㄢˇ
+墕 0 ㄧㄢˇ
+嬊 0 ㄧㄢˇ
+嶖 0 ㄧㄢˇ
+諐 0 ㄧㄢˇ
+鮎 0 ㄧㄢˇ
+檿 0 ㄧㄢˇ
+鼹 0 ㄧㄢˇ
+夵 0 ㄧㄢˇ
+乵 0 ㄧㄢˇ
+渷 0 ㄧㄢˇ
+巚 0 ㄧㄢˇ
+驗 0 ㄧㄢˋ
+燕 0 ㄧㄢˋ
+厭 0 ㄧㄢˋ
+晏 0 ㄧㄢˋ
+雁 0 ㄧㄢˋ
+宴 0 ㄧㄢˋ
+淹 0 ㄧㄢˋ
+豔 0 ㄧㄢˋ
+燄 0 ㄧㄢˋ
+彥 0 ㄧㄢˋ
+堰 0 ㄧㄢˋ
+硯 0 ㄧㄢˋ
+咽 0 ㄧㄢˋ
+嚥 0 ㄧㄢˋ
+唁 0 ㄧㄢˋ
+饜 0 ㄧㄢˋ
+研 0 ㄧㄢˋ
+讌 0 ㄧㄢˋ
+諺 0 ㄧㄢˋ
+沿 0 ㄧㄢˋ
+讞 0 ㄧㄢˋ
+焱 0 ㄧㄢˋ
+釅 0 ㄧㄢˋ
+贗 0 ㄧㄢˋ
+喭 0 ㄧㄢˋ
+灩 0 ㄧㄢˋ
+爓 0 ㄧㄢˋ
+閆 0 ㄧㄢˋ
+鷃 0 ㄧㄢˋ
+嬿 0 ㄧㄢˋ
+鴳 0 ㄧㄢˋ
+醼 0 ㄧㄢˋ
+焰 0 ㄧㄢˋ
+牪 0 ㄧㄢˋ
+姲 0 ㄧㄢˋ
+鷰 0 ㄧㄢˋ
+椻 0 ㄧㄢˋ
+曣 0 ㄧㄢˋ
+婩 0 ㄧㄢˋ
+傿 0 ㄧㄢˋ
+鴈 0 ㄧㄢˋ
+噞 0 ㄧㄢˋ
+騴 0 ㄧㄢˋ
+觾 0 ㄧㄢˋ
+艷 0 ㄧㄢˋ
+驠 0 ㄧㄢˋ
+莚 0 ㄧㄢˋ
+敥 0 ㄧㄢˋ
+俺 0 ㄧㄢˋ
+涎 0 ㄧㄢˋ
+郾 0 ㄧㄢˋ
+筵 0 ㄧㄢˋ
+靨 0 ㄧㄢˋ
+魘 0 ㄧㄢˋ
+鹽 0 ㄧㄢˋ
+掞 0 ㄧㄢˋ
+淊 0 ㄧㄢˋ
+嵃 0 ㄧㄢˋ
+烻 0 ㄧㄢˋ
+猒 0 ㄧㄢˋ
+羡 0 ㄧㄢˋ
+楌 0 ㄧㄢˋ
+赩 0 ㄧㄢˋ
+靘 0 ㄧㄢˋ
+嬮 0 ㄧㄢˋ
+擫 0 ㄧㄢˋ
+酀 0 ㄧㄢˋ
+齴 0 ㄧㄢˋ
+妟 0 ㄧㄢˋ
+彦 0 ㄧㄢˋ
+偐 0 ㄧㄢˋ
+硏 0 ㄧㄢˋ
+隁 0 ㄧㄢˋ
+塩 0 ㄧㄢˋ
+鳫 0 ㄧㄢˋ
+墕 0 ㄧㄢˋ
+暥 0 ㄧㄢˋ
+嬊 0 ㄧㄢˋ
+㵪 0 ㄧㄢˋ
+㷼 0 ㄧㄢˋ
+曕 0 ㄧㄢˋ
+擪 0 ㄧㄢˋ
+騐 0 ㄧㄢˋ
+艶 0 ㄧㄢˋ
+贋 0 ㄧㄢˋ
+㬫 0 ㄧㄢˋ
+灔 0 ㄧㄢˋ
+灧 0 ㄧㄢˋ
+豓 0 ㄧㄢˋ
+覎 0 ㄧㄢˋ
+㷳 0 ㄧㄢˋ
+䢭 0 ㄧㄢˋ
+懕 0 ㄧㄢˋ
+囐 0 ㄧㄢˋ
+研 0 ㄧㄢˊ
+言 0 ㄧㄢˊ
+顏 0 ㄧㄢˊ
+嚴 0 ㄧㄢˊ
+延 0 ㄧㄢˊ
+沿 0 ㄧㄢˊ
+炎 0 ㄧㄢˊ
+癌 0 ㄧㄢˊ
+鹽 0 ㄧㄢˊ
+岩 0 ㄧㄢˊ
+筵 0 ㄧㄢˊ
+簷 0 ㄧㄢˊ
+閻 0 ㄧㄢˊ
+妍 0 ㄧㄢˊ
+蜒 0 ㄧㄢˊ
+檐 0 ㄧㄢˊ
+埏 0 ㄧㄢˊ
+喦 0 ㄧㄢˊ
+揅 0 ㄧㄢˊ
+碞 0 ㄧㄢˊ
+綖 0 ㄧㄢˊ
+郔 0 ㄧㄢˊ
+巖 0 ㄧㄢˊ
+孍 0 ㄧㄢˊ
+楌 0 ㄧㄢˊ
+礹 0 ㄧㄢˊ
+閰 0 ㄧㄢˊ
+娮 0 ㄧㄢˊ
+鈆 0 ㄧㄢˊ
+狿 0 ㄧㄢˊ
+虤 0 ㄧㄢˊ
+顃 0 ㄧㄢˊ
+壛 0 ㄧㄢˊ
+麙 0 ㄧㄢˊ
+壧 0 ㄧㄢˊ
+莚 0 ㄧㄢˊ
+嵒 0 ㄧㄢˊ
+焰 0 ㄧㄢˊ
+鉛 0 ㄧㄢˊ
+釅 0 ㄧㄢˊ
+厂 0 ㄧㄢˊ
+岍 0 ㄧㄢˊ
+汧 0 ㄧㄢˊ
+宕 0 ㄧㄢˊ
+阽 0 ㄧㄢˊ
+狺 0 ㄧㄢˊ
+唌 0 ㄧㄢˊ
+砦 0 ㄧㄢˊ
+豜 0 ㄧㄢˊ
+趼 0 ㄧㄢˊ
+閆 0 ㄧㄢˊ
+欻 0 ㄧㄢˊ
+琰 0 ㄧㄢˊ
+鈃 0 ㄧㄢˊ
+裧 0 ㄧㄢˊ
+誾 0 ㄧㄢˊ
+鳽 0 ㄧㄢˊ
+燅 0 ㄧㄢˊ
+燚 0 ㄧㄢˊ
+錟 0 ㄧㄢˊ
+鋋 0 ㄧㄢˊ
+盬 0 ㄧㄢˊ
+玁 0 ㄧㄢˊ
+炏 0 ㄧㄢˊ
+姸 0 ㄧㄢˊ
+娫 0 ㄧㄢˊ
+琂 0 ㄧㄢˊ
+硏 0 ㄧㄢˊ
+嵓 0 ㄧㄢˊ
+塩 0 ㄧㄢˊ
+詽 0 ㄧㄢˊ
+豣 0 ㄧㄢˊ
+膁 0 ㄧㄢˊ
+銒 0 ㄧㄢˊ
+蔅 0 ㄧㄢˊ
+歘 0 ㄧㄢˊ
+厳 0 ㄧㄢˊ
+顔 0 ㄧㄢˊ
+巌 0 ㄧㄢˊ
+櫩 0 ㄧㄢˊ
+巗 0 ㄧㄢˊ
+麣 0 ㄧㄢˊ
+厃 0 ㄧㄢˊ
+开 0 ㄧㄢˊ
+厈 0 ㄧㄢˊ
+昖 0 ㄧㄢˊ
+訮 0 ㄧㄢˊ
+以 0 ㄧˇ
+已 0 ㄧˇ
+乙 0 ㄧˇ
+倚 0 ㄧˇ
+椅 0 ㄧˇ
+矣 0 ㄧˇ
+蟻 0 ㄧˇ
+尾 0 ㄧˇ
+艤 0 ㄧˇ
+迤 0 ㄧˇ
+苡 0 ㄧˇ
+偯 0 ㄧˇ
+扆 0 ㄧˇ
+旖 0 ㄧˇ
+螘 0 ㄧˇ
+扡 0 ㄧˇ
+酏 0 ㄧˇ
+鳦 0 ㄧˇ
+釔 0 ㄧˇ
+齮 0 ㄧˇ
+顗 0 ㄧˇ
+檥 0 ㄧˇ
+鉯 0 ㄧˇ
+迆 0 ㄧˇ
+胣 0 ㄧˇ
+礒 0 ㄧˇ
+掜 0 ㄧˇ
+陭 0 ㄧˇ
+崺 0 ㄧˇ
+晲 0 ㄧˇ
+轙 0 ㄧˇ
+蛾 0 ㄧˇ
+佁 0 ㄧˇ
+衪 0 ㄧˇ
+娭 0 ㄧˇ
+猗 0 ㄧˇ
+銥 0 ㄧˇ
+踦 0 ㄧˇ
+嶬 0 ㄧˇ
+燨 0 ㄧˇ
+肔 0 ㄧˇ
+庡 0 ㄧˇ
+苢 0 ㄧˇ
+迱 0 ㄧˇ
+笖 0 ㄧˇ
+旑 0 ㄧˇ
+鈘 0 ㄧˇ
+裿 0 ㄧˇ
+輢 0 ㄧˇ
+嬟 0 ㄧˇ
+䧧 0 ㄧˇ
+䭲 0 ㄧˇ
+攺 0 ㄧˇ
+逘 0 ㄧˇ
+鎄 0 ㄧˇ
+意 0 ㄧˋ
+義 0 ㄧˋ
+易 0 ㄧˋ
+議 0 ㄧˋ
+亦 0 ㄧˋ
+益 0 ㄧˋ
+異 0 ㄧˋ
+藝 0 ㄧˋ
+億 0 ㄧˋ
+憶 0 ㄧˋ
+譯 0 ㄧˋ
+液 0 ㄧˋ
+役 0 ㄧˋ
+翼 0 ㄧˋ
+疫 0 ㄧˋ
+毅 0 ㄧˋ
+逸 0 ㄧˋ
+邑 0 ㄧˋ
+抑 0 ㄧˋ
+肄 0 ㄧˋ
+一 0 ㄧˋ
+誼 0 ㄧˋ
+繹 0 ㄧˋ
+溢 0 ㄧˋ
+縊 0 ㄧˋ
+軼 0 ㄧˋ
+詣 0 ㄧˋ
+屹 0 ㄧˋ
+佚 0 ㄧˋ
+翌 0 ㄧˋ
+羿 0 ㄧˋ
+驛 0 ㄧˋ
+掖 0 ㄧˋ
+懿 0 ㄧˋ
+裔 0 ㄧˋ
+臆 0 ㄧˋ
+曳 0 ㄧˋ
+奕 0 ㄧˋ
+蜴 0 ㄧˋ
+腋 0 ㄧˋ
+衣 0 ㄧˋ
+刈 0 ㄧˋ
+翳 0 ㄧˋ
+挹 0 ㄧˋ
+鎰 0 ㄧˋ
+囈 0 ㄧˋ
+弈 0 ㄧˋ
+佾 0 ㄧˋ
+乂 0 ㄧˋ
+弋 0 ㄧˋ
+艾 0 ㄧˋ
+懌 0 ㄧˋ
+劓 0 ㄧˋ
+圛 0 ㄧˋ
+斁 0 ㄧˋ
+薏 0 ㄧˋ
+悒 0 ㄧˋ
+瘞 0 ㄧˋ
+仡 0 ㄧˋ
+勩 0 ㄧˋ
+埸 0 ㄧˋ
+嶧 0 ㄧˋ
+帟 0 ㄧˋ
+曀 0 ㄧˋ
+杙 0 ㄧˋ
+枻 0 ㄧˋ
+殪 0 ㄧˋ
+浥 0 ㄧˋ
+熠 0 ㄧˋ
+艗 0 ㄧˋ
+襼 0 ㄧˋ
+饐 0 ㄧˋ
+黓 0 ㄧˋ
+亄 0 ㄧˋ
+唈 0 ㄧˋ
+燡 0 ㄧˋ
+藙 0 ㄧˋ
+豷 0 ㄧˋ
+寱 0 ㄧˋ
+阣 0 ㄧˋ
+熤 0 ㄧˋ
+劮 0 ㄧˋ
+檍 0 ㄧˋ
+嗌 0 ㄧˋ
+廙 0 ㄧˋ
+鐿 0 ㄧˋ
+醳 0 ㄧˋ
+醷 0 ㄧˋ
+翊 0 ㄧˋ
+肊 0 ㄧˋ
+异 0 ㄧˋ
+枍 0 ㄧˋ
+伿 0 ㄧˋ
+浂 0 ㄧˋ
+澺 0 ㄧˋ
+芅 0 ㄧˋ
+熼 0 ㄧˋ
+玴 0 ㄧˋ
+抴 0 ㄧˋ
+蘙 0 ㄧˋ
+俋 0 ㄧˋ
+焲 0 ㄧˋ
+燱 0 ㄧˋ
+晹 0 ㄧˋ
+垼 0 ㄧˋ
+釴 0 ㄧˋ
+捙 0 ㄧˋ
+欭 0 ㄧˋ
+埶 0 ㄧˋ
+羛 0 ㄧˋ
+隿 0 ㄧˋ
+殔 0 ㄧˋ
+跇 0 ㄧˋ
+裛 0 ㄧˋ
+嫕 0 ㄧˋ
+緆 0 ㄧˋ
+膉 0 ㄧˋ
+靾 0 ㄧˋ
+槷 0 ㄧˋ
+潩 0 ㄧˋ
+蓺 0 ㄧˋ
+墿 0 ㄧˋ
+瘱 0 ㄧˋ
+謚 0 ㄧˋ
+繶 0 ㄧˋ
+瀷 0 ㄧˋ
+帠 0 ㄧˋ
+槸 0 ㄧˋ
+霬 0 ㄧˋ
+鷾 0 ㄧˋ
+齸 0 ㄧˋ
+泄 0 ㄧˋ
+疙 0 ㄧˋ
+施 0 ㄧˋ
+洩 0 ㄧˋ
+食 0 ㄧˋ
+射 0 ㄧˋ
+睪 0 ㄧˋ
+噫 0 ㄧˋ
+圪 0 ㄧˋ
+泆 0 ㄧˋ
+昳 0 ㄧˋ
+栺 0 ㄧˋ
+詍 0 ㄧˋ
+詄 0 ㄧˋ
+鳦 0 ㄧˋ
+馹 0 ㄧˋ
+蓻 0 ㄧˋ
+誽 0 ㄧˋ
+燚 0 ㄧˋ
+鴩 0 ㄧˋ
+燨 0 ㄧˋ
+贀 0 ㄧˋ
+鶂 0 ㄧˋ
+鷁 0 ㄧˋ
+鷊 0 ㄧˋ
+鸅 0 ㄧˋ
+义 0 ㄧˋ
+阝 0 ㄧˋ
+弌 0 ㄧˋ
+㐹 0 ㄧˋ
+伇 0 ㄧˋ
+曵 0 ㄧˋ
+呭 0 ㄧˋ
+怈 0 ㄧˋ
+㳑 0 ㄧˋ
+炈 0 ㄧˋ
+秇 0 ㄧˋ
+洂 0 ㄧˋ
+栧 0 ㄧˋ
+浳 0 ㄧˋ
+袣 0 ㄧˋ
+訲 0 ㄧˋ
+豛 0 ㄧˋ
+幆 0 ㄧˋ
+敡 0 ㄧˋ
+棭 0 ㄧˋ
+湙 0 ㄧˋ
+萟 0 ㄧˋ
+蛡 0 ㄧˋ
+鈠 0 ㄧˋ
+竩 0 ㄧˋ
+䇼 0 ㄧˋ
+榏 0 ㄧˋ
+㦉 0 ㄧˋ
+撎 0 ㄧˋ
+嬟 0 ㄧˋ
+嬑 0 ㄧˋ
+㵩 0 ㄧˋ
+瞖 0 ㄧˋ
+穓 0 ㄧˋ
+曎 0 ㄧˋ
+歝 0 ㄧˋ
+褹 0 ㄧˋ
+貖 0 ㄧˋ
+鯣 0 ㄧˋ
+鶃 0 ㄧˋ
+虉 0 ㄧˋ
+讛 0 ㄧˋ
+㧒 0 ㄧˋ
+悥 0 ㄧˋ
+殹 0 ㄧˋ
+䓃 0 ㄧˋ
+豙 0 ㄧˋ
+㴒 0 ㄧˋ
+痬 0 ㄧˋ
+骮 0 ㄧˋ
+螠 0 ㄧˋ
+㘈 0 ㄧˋ
+癔 0 ㄧˋ
+䱛 0 ㄧˋ
+㦤 0 ㄧˋ
+䭞 0 ㄧˋ
+鷧 0 ㄧˋ
+㑊 0 ㄧˋ
+遺 0 ㄧˊ
+疑 0 ㄧˊ
+移 0 ㄧˊ
+宜 0 ㄧˊ
+怡 0 ㄧˊ
+姨 0 ㄧˊ
+儀 0 ㄧˊ
+夷 0 ㄧˊ
+一 0 ㄧˊ
+誼 0 ㄧˊ
+胰 0 ㄧˊ
+貽 0 ㄧˊ
+飴 0 ㄧˊ
+咦 0 ㄧˊ
+詒 0 ㄧˊ
+沂 0 ㄧˊ
+頤 0 ㄧˊ
+彞 0 ㄧˊ
+迤 0 ㄧˊ
+椸 0 ㄧˊ
+痍 0 ㄧˊ
+蛇 0 ㄧˊ
+圯 0 ㄧˊ
+嶷 0 ㄧˊ
+笫 0 ㄧˊ
+桋 0 ㄧˊ
+匜 0 ㄧˊ
+宧 0 ㄧˊ
+洟 0 ㄧˊ
+簃 0 ㄧˊ
+訑 0 ㄧˊ
+貤 0 ㄧˊ
+迻 0 ㄧˊ
+杝 0 ㄧˊ
+柂 0 ㄧˊ
+袲 0 ㄧˊ
+酏 0 ㄧˊ
+峓 0 ㄧˊ
+眱 0 ㄧˊ
+羠 0 ㄧˊ
+鈶 0 ㄧˊ
+寲 0 ㄧˊ
+侇 0 ㄧˊ
+珆 0 ㄧˊ
+衪 0 ㄧˊ
+銕 0 ㄧˊ
+呲 0 ㄧˊ
+恞 0 ㄧˊ
+萓 0 ㄧˊ
+沶 0 ㄧˊ
+栘 0 ㄧˊ
+瓵 0 ㄧˊ
+袘 0 ㄧˊ
+羡 0 ㄧˊ
+蛦 0 ㄧˊ
+暆 0 ㄧˊ
+跠 0 ㄧˊ
+歋 0 ㄧˊ
+熪 0 ㄧˊ
+箷 0 ㄧˊ
+螔 0 ㄧˊ
+顊 0 ㄧˊ
+謻 0 ㄧˊ
+觺 0 ㄧˊ
+鸃 0 ㄧˊ
+彝 0 ㄧˊ
+台 0 ㄧˊ
+圻 0 ㄧˊ
+迆 0 ㄧˊ
+益 0 ㄧˊ
+熙 0 ㄧˊ
+懿 0 ㄧˊ
+圮 0 ㄧˊ
+狋 0 ㄧˊ
+祂 0 ㄧˊ
+拸 0 ㄧˊ
+眙 0 ㄧˊ
+荑 0 ㄧˊ
+詑 0 ㄧˊ
+溰 0 ㄧˊ
+磑 0 ㄧˊ
+擨 0 ㄧˊ
+鏔 0 ㄧˊ
+弌 0 ㄧˊ
+冝 0 ㄧˊ
+狏 0 ㄧˊ
+虵 0 ㄧˊ
+迱 0 ㄧˊ
+扅 0 ㄧˊ
+眤 0 ㄧˊ
+焈 0 ㄧˊ
+竩 0 ㄧˊ
+熈 0 ㄧˊ
+㦉 0 ㄧˊ
+彛 0 ㄧˊ
+乁 0 ㄧˊ
+宐 0 ㄧˊ
+沵 0 ㄧˊ
+巸 0 ㄧˊ
+弬 0 ㄧˊ
+㺿 0 ㄧˊ
+頉 0 ㄧˊ
+頥 0 ㄧˊ
+鮧 0 ㄧˊ
+鴺 0 ㄧˊ
+㦤 0 ㄧˊ
+㰘 0 ㄧˊ
+讉 0 ㄧˊ
+呀 0 ㄧㄚ
+壓 0 ㄧㄚ
+鴉 0 ㄧㄚ
+鴨 0 ㄧㄚ
+押 0 ㄧㄚ
+丫 0 ㄧㄚ
+椏 0 ㄧㄚ
+孲 0 ㄧㄚ
+啞 0 ㄧㄚ
+雅 0 ㄧㄚ
+劜 0 ㄧㄚ
+压 0 ㄧㄚ
+庘 0 ㄧㄚ
+俹 0 ㄧㄚ
+瘂 0 ㄧㄚ
+鵶 0 ㄧㄚ
+圧 0 ㄧㄚ
+曱 0 ㄧㄚ
+唖 0 ㄧㄚ
+亞 0 ㄧㄚˇ
+啞 0 ㄧㄚˇ
+雅 0 ㄧㄚˇ
+掗 0 ㄧㄚˇ
+厊 0 ㄧㄚˇ
+庌 0 ㄧㄚˇ
+蕥 0 ㄧㄚˇ
+雃 0 ㄧㄚˇ
+疋 0 ㄧㄚˇ
+鴉 0 ㄧㄚˇ
+埡 0 ㄧㄚˇ
+錏 0 ㄧㄚˇ
+亜 0 ㄧㄚˇ
+瘂 0 ㄧㄚˇ
+鵶 0 ㄧㄚˇ
+鐚 0 ㄧㄚˇ
+唖 0 ㄧㄚˇ
+亞 0 ㄧㄚˋ
+訝 0 ㄧㄚˋ
+迓 0 ㄧㄚˋ
+砑 0 ㄧㄚˋ
+氬 0 ㄧㄚˋ
+婭 0 ㄧㄚˋ
+揠 0 ㄧㄚˋ
+錏 0 ㄧㄚˋ
+聐 0 ㄧㄚˋ
+軋 0 ㄧㄚˋ
+圠 0 ㄧㄚˋ
+襾 0 ㄧㄚˋ
+玡 0 ㄧㄚˋ
+猰 0 ㄧㄚˋ
+窫 0 ㄧㄚˋ
+齾 0 ㄧㄚˋ
+御 0 ㄧㄚˋ
+穵 0 ㄧㄚˋ
+岈 0 ㄧㄚˋ
+掗 0 ㄧㄚˋ
+椏 0 ㄧㄚˋ
+圔 0 ㄧㄚˋ
+亜 0 ㄧㄚˋ
+俹 0 ㄧㄚˋ
+谺 0 ㄧㄚˋ
+稏 0 ㄧㄚˋ
+鐚 0 ㄧㄚˋ
+豄 0 ㄧㄚˋ
+鼼 0 ㄧㄚˋ
+䰲 0 ㄧㄚˋ
+牙 0 ㄧㄚˊ
+芽 0 ㄧㄚˊ
+涯 0 ㄧㄚˊ
+衙 0 ㄧㄚˊ
+蚜 0 ㄧㄚˊ
+押 0 ㄧㄚˊ
+枒 0 ㄧㄚˊ
+犽 0 ㄧㄚˊ
+齖 0 ㄧㄚˊ
+伢 0 ㄧㄚˊ
+堐 0 ㄧㄚˊ
+崖 0 ㄧㄚˊ
+睚 0 ㄧㄚˊ
+岈 0 ㄧㄚˊ
+颬 0 ㄧㄚˊ
+厓 0 ㄧㄚˊ
+崕 0 ㄧㄚˊ
+猚 0 ㄧㄚˊ
+谺 0 ㄧㄚˊ
+漄 0 ㄧㄚˊ
+豄 0 ㄧㄚˊ
+笌 0 ㄧㄚˊ
+㾏 0 ㄧㄚˊ
+呀 0 ㄧㄚ˙
+崖 0 ㄧㄞˊ
+睚 0 ㄧㄞˊ
+啀 0 ㄧㄞˊ
+娾 0 ㄧㄞˊ
+厓 0 ㄧㄞˊ
+崕 0 ㄧㄞˊ
+嘊 0 ㄧㄞˊ
+唷 0 ㄧㄛ
+喲 0 ㄧㄛ
+嚛 0 ㄧㄛ˙
+要 0 ㄧㄠ
+腰 0 ㄧㄠ
+夭 0 ㄧㄠ
+妖 0 ㄧㄠ
+邀 0 ㄧㄠ
+么 0 ㄧㄠ
+吆 0 ㄧㄠ
+喲 0 ㄧㄠ
+喓 0 ㄧㄠ
+祅 0 ㄧㄠ
+葽 0 ㄧㄠ
+訞 0 ㄧㄠ
+凹 0 ㄧㄠ
+宎 0 ㄧㄠ
+殀 0 ㄧㄠ
+芺 0 ㄧㄠ
+徼 0 ㄧㄠ
+幺 0 ㄧㄠ
+枖 0 ㄧㄠ
+梎 0 ㄧㄠ
+楆 0 ㄧㄠ
+鴁 0 ㄧㄠ
+咬 0 ㄧㄠˇ
+窈 0 ㄧㄠˇ
+舀 0 ㄧㄠˇ
+夭 0 ㄧㄠˇ
+殀 0 ㄧㄠˇ
+杳 0 ㄧㄠˇ
+窅 0 ㄧㄠˇ
+窔 0 ㄧㄠˇ
+鷕 0 ㄧㄠˇ
+宎 0 ㄧㄠˇ
+抭 0 ㄧㄠˇ
+苭 0 ㄧㄠˇ
+眑 0 ㄧㄠˇ
+偠 0 ㄧㄠˇ
+溔 0 ㄧㄠˇ
+榚 0 ㄧㄠˇ
+騕 0 ㄧㄠˇ
+岆 0 ㄧㄠˇ
+嫍 0 ㄧㄠˇ
+蓔 0 ㄧㄠˇ
+嬈 0 ㄧㄠˇ
+柼 0 ㄧㄠˇ
+穾 0 ㄧㄠˇ
+仸 0 ㄧㄠˇ
+婹 0 ㄧㄠˇ
+崾 0 ㄧㄠˇ
+闄 0 ㄧㄠˇ
+齩 0 ㄧㄠˇ
+䶧 0 ㄧㄠˇ
+要 0 ㄧㄠˋ
+藥 0 ㄧㄠˋ
+耀 0 ㄧㄠˋ
+曜 0 ㄧㄠˋ
+鑰 0 ㄧㄠˋ
+樂 0 ㄧㄠˋ
+鷂 0 ㄧㄠˋ
+燿 0 ㄧㄠˋ
+袎 0 ㄧㄠˋ
+靿 0 ㄧㄠˋ
+艞 0 ㄧㄠˋ
+覞 0 ㄧㄠˋ
+穾 0 ㄧㄠˋ
+筄 0 ㄧㄠˋ
+葯 0 ㄧㄠˋ
+獟 0 ㄧㄠˋ
+趭 0 ㄧㄠˋ
+虐 0 ㄧㄠˋ
+腰 0 ㄧㄠˋ
+瘧 0 ㄧㄠˋ
+躍 0 ㄧㄠˋ
+瀹 0 ㄧㄠˋ
+爚 0 ㄧㄠˋ
+抝 0 ㄧㄠˋ
+敫 0 ㄧㄠˋ
+楽 0 ㄧㄠˋ
+熎 0 ㄧㄠˋ
+薬 0 ㄧㄠˋ
+矅 0 ㄧㄠˋ
+纅 0 ㄧㄠˋ
+爠 0 ㄧㄠˋ
+讑 0 ㄧㄠˋ
+鼼 0 ㄧㄠˋ
+搖 0 ㄧㄠˊ
+謠 0 ㄧㄠˊ
+堯 0 ㄧㄠˊ
+遙 0 ㄧㄠˊ
+姚 0 ㄧㄠˊ
+洮 0 ㄧㄠˊ
+瑤 0 ㄧㄠˊ
+僥 0 ㄧㄠˊ
+淆 0 ㄧㄠˊ
+餚 0 ㄧㄠˊ
+颻 0 ㄧㄠˊ
+傜 0 ㄧㄠˊ
+繇 0 ㄧㄠˊ
+嶢 0 ㄧㄠˊ
+徭 0 ㄧㄠˊ
+殽 0 ㄧㄠˊ
+猺 0 ㄧㄠˊ
+軺 0 ㄧㄠˊ
+爻 0 ㄧㄠˊ
+垚 0 ㄧㄠˊ
+崤 0 ㄧㄠˊ
+銚 0 ㄧㄠˊ
+珧 0 ㄧㄠˊ
+柼 0 ㄧㄠˊ
+猇 0 ㄧㄠˊ
+鰩 0 ㄧㄠˊ
+肴 0 ㄧㄠˊ
+媱 0 ㄧㄠˊ
+烑 0 ㄧㄠˊ
+窯 0 ㄧㄠˊ
+嗂 0 ㄧㄠˊ
+愮 0 ㄧㄠˊ
+榣 0 ㄧㄠˊ
+顤 0 ㄧㄠˊ
+陶 0 ㄧㄠˊ
+驍 0 ㄧㄠˊ
+郩 0 ㄧㄠˊ
+揄 0 ㄧㄠˊ
+筊 0 ㄧㄠˊ
+隃 0 ㄧㄠˊ
+嘵 0 ㄧㄠˊ
+墝 0 ㄧㄠˊ
+憢 0 ㄧㄠˊ
+膮 0 ㄧㄠˊ
+穘 0 ㄧㄠˊ
+倄 0 ㄧㄠˊ
+窑 0 ㄧㄠˊ
+䚻 0 ㄧㄠˊ
+摇 0 ㄧㄠˊ
+暚 0 ㄧㄠˊ
+瑶 0 ㄧㄠˊ
+餆 0 ㄧㄠˊ
+嶤 0 ㄧㄠˊ
+窰 0 ㄧㄠˊ
+㠙 0 ㄧㄠˊ
+鎐 0 ㄧㄠˊ
+䬙 0 ㄧㄠˊ
+蘨 0 ㄧㄠˊ
+鑃 0 ㄧㄠˊ
+揺 0 ㄧㄠˊ
+㑾 0 ㄧㄠˊ
+䔄 0 ㄧㄠˊ
+訤 0 ㄧㄠˊ
+因 0 ㄧㄣ
+音 0 ㄧㄣ
+陰 0 ㄧㄣ
+姻 0 ㄧㄣ
+殷 0 ㄧㄣ
+茵 0 ㄧㄣ
+慇 0 ㄧㄣ
+氤 0 ㄧㄣ
+瘖 0 ㄧㄣ
+喑 0 ㄧㄣ
+堙 0 ㄧㄣ
+湮 0 ㄧㄣ
+愔 0 ㄧㄣ
+禋 0 ㄧㄣ
+絪 0 ㄧㄣ
+裀 0 ㄧㄣ
+闉 0 ㄧㄣ
+駰 0 ㄧㄣ
+銦 0 ㄧㄣ
+蒑 0 ㄧㄣ
+諲 0 ㄧㄣ
+垔 0 ㄧㄣ
+韾 0 ㄧㄣ
+洇 0 ㄧㄣ
+凐 0 ㄧㄣ
+歅 0 ㄧㄣ
+噾 0 ㄧㄣ
+霠 0 ㄧㄣ
+黫 0 ㄧㄣ
+摿 0 ㄧㄣ
+欭 0 ㄧㄣ
+珚 0 ㄧㄣ
+偣 0 ㄧㄣ
+湆 0 ㄧㄣ
+霒 0 ㄧㄣ
+阴 0 ㄧㄣ
+侌 0 ㄧㄣ
+栶 0 ㄧㄣ
+婣 0 ㄧㄣ
+䄄 0 ㄧㄣ
+秵 0 ㄧㄣ
+筃 0 ㄧㄣ
+陻 0 ㄧㄣ
+隂 0 ㄧㄣ
+溵 0 ㄧㄣ
+潱 0 ㄧㄣ
+緸 0 ㄧㄣ
+鞇 0 ㄧㄣ
+囙 0 ㄧㄣ
+阥 0 ㄧㄣ
+㧢 0 ㄧㄣ
+磤 0 ㄧㄣ
+引 0 ㄧㄣˇ
+飲 0 ㄧㄣˇ
+隱 0 ㄧㄣˇ
+尹 0 ㄧㄣˇ
+癮 0 ㄧㄣˇ
+蚓 0 ㄧㄣˇ
+听 0 ㄧㄣˇ
+靷 0 ㄧㄣˇ
+紖 0 ㄧㄣˇ
+縯 0 ㄧㄣˇ
+讔 0 ㄧㄣˇ
+趛 0 ㄧㄣˇ
+螾 0 ㄧㄣˇ
+馻 0 ㄧㄣˇ
+鈏 0 ㄧㄣˇ
+檃 0 ㄧㄣˇ
+濦 0 ㄧㄣˇ
+蘟 0 ㄧㄣˇ
+粌 0 ㄧㄣˇ
+殷 0 ㄧㄣˇ
+戭 0 ㄧㄣˇ
+廴 0 ㄧㄣˇ
+吲 0 ㄧㄣˇ
+弞 0 ㄧㄣˇ
+赺 0 ㄧㄣˇ
+淾 0 ㄧㄣˇ
+隠 0 ㄧㄣˇ
+嶾 0 ㄧㄣˇ
+濥 0 ㄧㄣˇ
+檼 0 ㄧㄣˇ
+櫽 0 ㄧㄣˇ
+䘆 0 ㄧㄣˇ
+乚 0 ㄧㄣˇ
+磤 0 ㄧㄣˇ
+㶏 0 ㄧㄣˇ
+印 0 ㄧㄣˋ
+飲 0 ㄧㄣˋ
+隱 0 ㄧㄣˋ
+蔭 0 ㄧㄣˋ
+胤 0 ㄧㄣˋ
+廕 0 ㄧㄣˋ
+窨 0 ㄧㄣˋ
+憖 0 ㄧㄣˋ
+湚 0 ㄧㄣˋ
+垽 0 ㄧㄣˋ
+猌 0 ㄧㄣˋ
+朄 0 ㄧㄣˋ
+酳 0 ㄧㄣˋ
+音 0 ㄧㄣˋ
+陰 0 ㄧㄣˋ
+暈 0 ㄧㄣˋ
+阴 0 ㄧㄣˋ
+侌 0 ㄧㄣˋ
+洕 0 ㄧㄣˋ
+淾 0 ㄧㄣˋ
+隂 0 ㄧㄣˋ
+隠 0 ㄧㄣˋ
+憗 0 ㄧㄣˋ
+懚 0 ㄧㄣˋ
+鮣 0 ㄧㄣˋ
+乚 0 ㄧㄣˋ
+币 0 ㄧㄣˋ
+阥 0 ㄧㄣˋ
+茚 0 ㄧㄣˋ
+㥼 0 ㄧㄣˋ
+慭 0 ㄧㄣˋ
+䕃 0 ㄧㄣˋ
+癊 0 ㄧㄣˋ
+銀 0 ㄧㄣˊ
+吟 0 ㄧㄣˊ
+寅 0 ㄧㄣˊ
+淫 0 ㄧㄣˊ
+鄞 0 ㄧㄣˊ
+齦 0 ㄧㄣˊ
+霪 0 ㄧㄣˊ
+垠 0 ㄧㄣˊ
+夤 0 ㄧㄣˊ
+狺 0 ㄧㄣˊ
+嚚 0 ㄧㄣˊ
+崟 0 ㄧㄣˊ
+誾 0 ㄧㄣˊ
+蟫 0 ㄧㄣˊ
+婬 0 ㄧㄣˊ
+冘 0 ㄧㄣˊ
+苂 0 ㄧㄣˊ
+釿 0 ㄧㄣˊ
+圁 0 ㄧㄣˊ
+烎 0 ㄧㄣˊ
+凐 0 ㄧㄣˊ
+荶 0 ㄧㄣˊ
+殥 0 ㄧㄣˊ
+蔩 0 ㄧㄣˊ
+檭 0 ㄧㄣˊ
+鷣 0 ㄧㄣˊ
+鏔 0 ㄧㄣˊ
+言 0 ㄧㄣˊ
+粌 0 ㄧㄣˊ
+齗 0 ㄧㄣˊ
+犾 0 ㄧㄣˊ
+垦 0 ㄧㄣˊ
+泿 0 ㄧㄣˊ
+㖗 0 ㄧㄣˊ
+珢 0 ㄧㄣˊ
+崯 0 ㄧㄣˊ
+訡 0 ㄧㄣˊ
+滛 0 ㄧㄣˊ
+碒 0 ㄧㄣˊ
+噖 0 ㄧㄣˊ
+璌 0 ㄧㄣˊ
+峾 0 ㄧㄣˊ
+訔 0 ㄧㄣˊ
+鈝 0 ㄧㄣˊ
+ㄒ 0 ㄒ
+須 0 ㄒㄩ
+需 0 ㄒㄩ
+虛 0 ㄒㄩ
+鬚 0 ㄒㄩ
+噓 0 ㄒㄩ
+墟 0 ㄒㄩ
+戌 0 ㄒㄩ
+胥 0 ㄒㄩ
+訏 0 ㄒㄩ
+吁 0 ㄒㄩ
+歔 0 ㄒㄩ
+盱 0 ㄒㄩ
+嬃 0 ㄒㄩ
+繻 0 ㄒㄩ
+殈 0 ㄒㄩ
+旴 0 ㄒㄩ
+呴 0 ㄒㄩ
+楈 0 ㄒㄩ
+嬬 0 ㄒㄩ
+鑐 0 ㄒㄩ
+欨 0 ㄒㄩ
+倠 0 ㄒㄩ
+稰 0 ㄒㄩ
+縃 0 ㄒㄩ
+蝑 0 ㄒㄩ
+蕦 0 ㄒㄩ
+驉 0 ㄒㄩ
+魖 0 ㄒㄩ
+晇 0 ㄒㄩ
+幁 0 ㄒㄩ
+揟 0 ㄒㄩ
+糈 0 ㄒㄩ
+于 0 ㄒㄩ
+嘔 0 ㄒㄩ
+樨 0 ㄒㄩ
+謣 0 ㄒㄩ
+覷 0 ㄒㄩ
+鱋 0 ㄒㄩ
+亏 0 ㄒㄩ
+扝 0 ㄒㄩ
+偦 0 ㄒㄩ
+虚 0 ㄒㄩ
+虗 0 ㄒㄩ
+嘘 0 ㄒㄩ
+覰 0 ㄒㄩ
+譃 0 ㄒㄩ
+覻 0 ㄒㄩ
+薛 0 ㄒㄩㄝ
+靴 0 ㄒㄩㄝ
+噱 0 ㄒㄩㄝ
+嶨 0 ㄒㄩㄝ
+吙 0 ㄒㄩㄝ
+辥 0 ㄒㄩㄝ
+嚯 0 ㄒㄩㄝ
+鞾 0 ㄒㄩㄝ
+㖸 0 ㄒㄩㄝ
+㗾 0 ㄒㄩㄝ
+雪 0 ㄒㄩㄝˇ
+鱈 0 ㄒㄩㄝˇ
+血 0 ㄒㄩㄝˋ
+雪 0 ㄒㄩㄝˋ
+穴 0 ㄒㄩㄝˋ
+削 0 ㄒㄩㄝˋ
+趐 0 ㄒㄩㄝˋ
+泬 0 ㄒㄩㄝˋ
+謞 0 ㄒㄩㄝˋ
+岤 0 ㄒㄩㄝˋ
+袕 0 ㄒㄩㄝˋ
+屑 0 ㄒㄩㄝˋ
+吷 0 ㄒㄩㄝˋ
+狘 0 ㄒㄩㄝˋ
+穸 0 ㄒㄩㄝˋ
+箾 0 ㄒㄩㄝˋ
+桖 0 ㄒㄩㄝˋ
+㕰 0 ㄒㄩㄝˋ
+坹 0 ㄒㄩㄝˋ
+學 0 ㄒㄩㄝˊ
+穴 0 ㄒㄩㄝˊ
+鷽 0 ㄒㄩㄝˊ
+觷 0 ㄒㄩㄝˊ
+踅 0 ㄒㄩㄝˊ
+燢 0 ㄒㄩㄝˊ
+澩 0 ㄒㄩㄝˊ
+壆 0 ㄒㄩㄝˊ
+尋 0 ㄒㄩㄝˊ
+嶨 0 ㄒㄩㄝˊ
+斈 0 ㄒㄩㄝˊ
+斅 0 ㄒㄩㄝˊ
+雤 0 ㄒㄩㄝˊ
+乴 0 ㄒㄩㄝˊ
+学 0 ㄒㄩㄝˊ
+㶅 0 ㄒㄩㄝˊ
+兄 0 ㄒㄩㄥ
+兇 0 ㄒㄩㄥ
+胸 0 ㄒㄩㄥ
+凶 0 ㄒㄩㄥ
+匈 0 ㄒㄩㄥ
+洶 0 ㄒㄩㄥ
+忷 0 ㄒㄩㄥ
+哅 0 ㄒㄩㄥ
+恟 0 ㄒㄩㄥ
+酗 0 ㄒㄩㄥ
+勳 0 ㄒㄩㄥ
+芎 0 ㄒㄩㄥ
+汹 0 ㄒㄩㄥ
+胷 0 ㄒㄩㄥ
+訩 0 ㄒㄩㄥ
+詾 0 ㄒㄩㄥ
+敻 0 ㄒㄩㄥˋ
+詗 0 ㄒㄩㄥˋ
+焸 0 ㄒㄩㄥˋ
+夐 0 ㄒㄩㄥˋ
+雄 0 ㄒㄩㄥˊ
+熊 0 ㄒㄩㄥˊ
+赨 0 ㄒㄩㄥˊ
+熋 0 ㄒㄩㄥˊ
+宣 0 ㄒㄩㄢ
+軒 0 ㄒㄩㄢ
+喧 0 ㄒㄩㄢ
+瑄 0 ㄒㄩㄢ
+萱 0 ㄒㄩㄢ
+暄 0 ㄒㄩㄢ
+亘 0 ㄒㄩㄢ
+壎 0 ㄒㄩㄢ
+儇 0 ㄒㄩㄢ
+諼 0 ㄒㄩㄢ
+塤 0 ㄒㄩㄢ
+嬛 0 ㄒㄩㄢ
+揎 0 ㄒㄩㄢ
+翾 0 ㄒㄩㄢ
+諠 0 ㄒㄩㄢ
+愃 0 ㄒㄩㄢ
+晅 0 ㄒㄩㄢ
+鍹 0 ㄒㄩㄢ
+梋 0 ㄒㄩㄢ
+煖 0 ㄒㄩㄢ
+萲 0 ㄒㄩㄢ
+愋 0 ㄒㄩㄢ
+佡 0 ㄒㄩㄢ
+昍 0 ㄒㄩㄢ
+鋗 0 ㄒㄩㄢ
+媗 0 ㄒㄩㄢ
+禤 0 ㄒㄩㄢ
+蝖 0 ㄒㄩㄢ
+蠉 0 ㄒㄩㄢ
+矎 0 ㄒㄩㄢ
+渲 0 ㄒㄩㄢ
+暖 0 ㄒㄩㄢ
+仚 0 ㄒㄩㄢ
+搟 0 ㄒㄩㄢ
+楦 0 ㄒㄩㄢ
+蓒 0 ㄒㄩㄢ
+懁 0 ㄒㄩㄢ
+駽 0 ㄒㄩㄢ
+坃 0 ㄒㄩㄢ
+㘣 0 ㄒㄩㄢ
+弲 0 ㄒㄩㄢ
+煊 0 ㄒㄩㄢ
+煗 0 ㄒㄩㄢ
+睻 0 ㄒㄩㄢ
+箮 0 ㄒㄩㄢ
+翧 0 ㄒㄩㄢ
+蕿 0 ㄒㄩㄢ
+藼 0 ㄒㄩㄢ
+蘐 0 ㄒㄩㄢ
+壦 0 ㄒㄩㄢ
+暅 0 ㄒㄩㄢ
+譞 0 ㄒㄩㄢ
+選 0 ㄒㄩㄢˇ
+咺 0 ㄒㄩㄢˇ
+烜 0 ㄒㄩㄢˇ
+癬 0 ㄒㄩㄢˇ
+选 0 ㄒㄩㄢˇ
+炫 0 ㄒㄩㄢˋ
+絢 0 ㄒㄩㄢˋ
+漩 0 ㄒㄩㄢˋ
+眩 0 ㄒㄩㄢˋ
+泫 0 ㄒㄩㄢˋ
+渲 0 ㄒㄩㄢˋ
+旋 0 ㄒㄩㄢˋ
+眴 0 ㄒㄩㄢˋ
+楦 0 ㄒㄩㄢˋ
+敻 0 ㄒㄩㄢˋ
+鉉 0 ㄒㄩㄢˋ
+衒 0 ㄒㄩㄢˋ
+蔙 0 ㄒㄩㄢˋ
+駽 0 ㄒㄩㄢˋ
+鞙 0 ㄒㄩㄢˋ
+鏇 0 ㄒㄩㄢˋ
+昡 0 ㄒㄩㄢˋ
+楥 0 ㄒㄩㄢˋ
+袨 0 ㄒㄩㄢˋ
+縼 0 ㄒㄩㄢˋ
+讂 0 ㄒㄩㄢˋ
+贙 0 ㄒㄩㄢˋ
+陷 0 ㄒㄩㄢˋ
+琄 0 ㄒㄩㄢˋ
+怰 0 ㄒㄩㄢˋ
+姰 0 ㄒㄩㄢˋ
+䧟 0 ㄒㄩㄢˋ
+夐 0 ㄒㄩㄢˋ
+駨 0 ㄒㄩㄢˋ
+繏 0 ㄒㄩㄢˋ
+矎 0 ㄒㄩㄢˋ
+玄 0 ㄒㄩㄢˊ
+旋 0 ㄒㄩㄢˊ
+懸 0 ㄒㄩㄢˊ
+漩 0 ㄒㄩㄢˊ
+璇 0 ㄒㄩㄢˊ
+璿 0 ㄒㄩㄢˊ
+伭 0 ㄒㄩㄢˊ
+妶 0 ㄒㄩㄢˊ
+琁 0 ㄒㄩㄢˊ
+玹 0 ㄒㄩㄢˊ
+嫙 0 ㄒㄩㄢˊ
+誸 0 ㄒㄩㄢˊ
+還 0 ㄒㄩㄢˊ
+縣 0 ㄒㄩㄢˊ
+蜁 0 ㄒㄩㄢˊ
+弦 0 ㄒㄩㄢˊ
+絃 0 ㄒㄩㄢˊ
+舷 0 ㄒㄩㄢˊ
+盷 0 ㄒㄩㄢˊ
+胘 0 ㄒㄩㄢˊ
+娹 0 ㄒㄩㄢˊ
+惤 0 ㄒㄩㄢˊ
+蚿 0 ㄒㄩㄢˊ
+蔙 0 ㄒㄩㄢˊ
+縼 0 ㄒㄩㄢˊ
+还 0 ㄒㄩㄢˊ
+婱 0 ㄒㄩㄢˊ
+暶 0 ㄒㄩㄢˊ
+䁢 0 ㄒㄩㄢˊ
+檈 0 ㄒㄩㄢˊ
+䲂 0 ㄒㄩㄢˊ
+䴉 0 ㄒㄩㄢˊ
+許 0 ㄒㄩˇ
+栩 0 ㄒㄩˇ
+煦 0 ㄒㄩˇ
+咻 0 ㄒㄩˇ
+詡 0 ㄒㄩˇ
+冔 0 ㄒㄩˇ
+姁 0 ㄒㄩˇ
+湑 0 ㄒㄩˇ
+諝 0 ㄒㄩˇ
+醑 0 ㄒㄩˇ
+鄦 0 ㄒㄩˇ
+珝 0 ㄒㄩˇ
+喣 0 ㄒㄩˇ
+休 0 ㄒㄩˇ
+呴 0 ㄒㄩˇ
+沀 0 ㄒㄩˇ
+昫 0 ㄒㄩˇ
+祤 0 ㄒㄩˇ
+滸 0 ㄒㄩˇ
+糈 0 ㄒㄩˇ
+偦 0 ㄒㄩˇ
+綇 0 ㄒㄩˇ
+繏 0 ㄒㄩˇ
+盨 0 ㄒㄩˇ
+序 0 ㄒㄩˋ
+續 0 ㄒㄩˋ
+蓄 0 ㄒㄩˋ
+緒 0 ㄒㄩˋ
+敘 0 ㄒㄩˋ
+絮 0 ㄒㄩˋ
+旭 0 ㄒㄩˋ
+恤 0 ㄒㄩˋ
+卹 0 ㄒㄩˋ
+酗 0 ㄒㄩˋ
+婿 0 ㄒㄩˋ
+畜 0 ㄒㄩˋ
+洫 0 ㄒㄩˋ
+旮 0 ㄒㄩˋ
+侐 0 ㄒㄩˋ
+慉 0 ㄒㄩˋ
+漵 0 ㄒㄩˋ
+藚 0 ㄒㄩˋ
+頊 0 ㄒㄩˋ
+芧 0 ㄒㄩˋ
+藇 0 ㄒㄩˋ
+魆 0 ㄒㄩˋ
+勖 0 ㄒㄩˋ
+勗 0 ㄒㄩˋ
+訹 0 ㄒㄩˋ
+鱮 0 ㄒㄩˋ
+烅 0 ㄒㄩˋ
+怴 0 ㄒㄩˋ
+垿 0 ㄒㄩˋ
+窢 0 ㄒㄩˋ
+瞲 0 ㄒㄩˋ
+銊 0 ㄒㄩˋ
+沀 0 ㄒㄩˋ
+昫 0 ㄒㄩˋ
+瞁 0 ㄒㄩˋ
+戌 0 ㄒㄩˋ
+煦 0 ㄒㄩˋ
+殈 0 ㄒㄩˋ
+淢 0 ㄒㄩˋ
+揟 0 ㄒㄩˋ
+欻 0 ㄒㄩˋ
+鈙 0 ㄒㄩˋ
+獝 0 ㄒㄩˋ
+馘 0 ㄒㄩˋ
+伵 0 ㄒㄩˋ
+汿 0 ㄒㄩˋ
+叙 0 ㄒㄩˋ
+䘏 0 ㄒㄩˋ
+欰 0 ㄒㄩˋ
+珬 0 ㄒㄩˋ
+惐 0 ㄒㄩˋ
+敍 0 ㄒㄩˋ
+壻 0 ㄒㄩˋ
+賉 0 ㄒㄩˋ
+槒 0 ㄒㄩˋ
+潊 0 ㄒㄩˋ
+盢 0 ㄒㄩˋ
+聟 0 ㄒㄩˋ
+稸 0 ㄒㄩˋ
+緖 0 ㄒㄩˋ
+魣 0 ㄒㄩˋ
+歘 0 ㄒㄩˋ
+肷 0 ㄒㄩˋ
+㖅 0 ㄒㄩˋ
+溆 0 ㄒㄩˋ
+㜅 0 ㄒㄩˋ
+嘼 0 ㄒㄩˋ
+徐 0 ㄒㄩˊ
+余 0 ㄒㄩˊ
+邪 0 ㄒㄩˊ
+俆 0 ㄒㄩˊ
+衺 0 ㄒㄩˊ
+蒣 0 ㄒㄩˊ
+勳 0 ㄒㄩㄣ
+薰 0 ㄒㄩㄣ
+燻 0 ㄒㄩㄣ
+熏 0 ㄒㄩㄣ
+醺 0 ㄒㄩㄣ
+峋 0 ㄒㄩㄣ
+曛 0 ㄒㄩㄣ
+焄 0 ㄒㄩㄣ
+獯 0 ㄒㄩㄣ
+纁 0 ㄒㄩㄣ
+臐 0 ㄒㄩㄣ
+蔒 0 ㄒㄩㄣ
+勛 0 ㄒㄩㄣ
+矄 0 ㄒㄩㄣ
+勣 0 ㄒㄩㄣ
+葷 0 ㄒㄩㄣ
+壎 0 ㄒㄩㄣ
+塤 0 ㄒㄩㄣ
+窨 0 ㄒㄩㄣ
+坃 0 ㄒㄩㄣ
+姰 0 ㄒㄩㄣ
+勲 0 ㄒㄩㄣ
+薫 0 ㄒㄩㄣ
+爋 0 ㄒㄩㄣ
+蘍 0 ㄒㄩㄣ
+壦 0 ㄒㄩㄣ
+訊 0 ㄒㄩㄣˋ
+訓 0 ㄒㄩㄣˋ
+迅 0 ㄒㄩㄣˋ
+遜 0 ㄒㄩㄣˋ
+殉 0 ㄒㄩㄣˋ
+馴 0 ㄒㄩㄣˋ
+徇 0 ㄒㄩㄣˋ
+巽 0 ㄒㄩㄣˋ
+汛 0 ㄒㄩㄣˋ
+蕈 0 ㄒㄩㄣˋ
+噀 0 ㄒㄩㄣˋ
+侚 0 ㄒㄩㄣˋ
+潠 0 ㄒㄩㄣˋ
+迿 0 ㄒㄩㄣˋ
+孫 0 ㄒㄩㄣˋ
+丮 0 ㄒㄩㄣˋ
+阠 0 ㄒㄩㄣˋ
+熏 0 ㄒㄩㄣˋ
+伨 0 ㄒㄩㄣˋ
+巺 0 ㄒㄩㄣˋ
+狥 0 ㄒㄩㄣˋ
+訙 0 ㄒㄩㄣˋ
+奞 0 ㄒㄩㄣˋ
+殾 0 ㄒㄩㄣˋ
+賐 0 ㄒㄩㄣˋ
+爋 0 ㄒㄩㄣˋ
+顨 0 ㄒㄩㄣˋ
+鑂 0 ㄒㄩㄣˋ
+尋 0 ㄒㄩㄣˊ
+巡 0 ㄒㄩㄣˊ
+詢 0 ㄒㄩㄣˊ
+循 0 ㄒㄩㄣˊ
+旬 0 ㄒㄩㄣˊ
+馴 0 ㄒㄩㄣˊ
+潯 0 ㄒㄩㄣˊ
+珣 0 ㄒㄩㄣˊ
+蟳 0 ㄒㄩㄣˊ
+洵 0 ㄒㄩㄣˊ
+荀 0 ㄒㄩㄣˊ
+徇 0 ㄒㄩㄣˊ
+恂 0 ㄒㄩㄣˊ
+峋 0 ㄒㄩㄣˊ
+栒 0 ㄒㄩㄣˊ
+燖 0 ㄒㄩㄣˊ
+璿 0 ㄒㄩㄣˊ
+紃 0 ㄒㄩㄣˊ
+郇 0 ㄒㄩㄣˊ
+鱘 0 ㄒㄩㄣˊ
+槆 0 ㄒㄩㄣˊ
+撏 0 ㄒㄩㄣˊ
+枔 0 ㄒㄩㄣˊ
+咰 0 ㄒㄩㄣˊ
+璕 0 ㄒㄩㄣˊ
+橁 0 ㄒㄩㄣˊ
+蕁 0 ㄒㄩㄣˊ
+噚 0 ㄒㄩㄣˊ
+殉 0 ㄒㄩㄣˊ
+攳 0 ㄒㄩㄣˊ
+燅 0 ㄒㄩㄣˊ
+燂 0 ㄒㄩㄣˊ
+襑 0 ㄒㄩㄣˊ
+灥 0 ㄒㄩㄣˊ
+伨 0 ㄒㄩㄣˊ
+廵 0 ㄒㄩㄣˊ
+杊 0 ㄒㄩㄣˊ
+狥 0 ㄒㄩㄣˊ
+毥 0 ㄒㄩㄣˊ
+偱 0 ㄒㄩㄣˊ
+樳 0 ㄒㄩㄣˊ
+駨 0 ㄒㄩㄣˊ
+鱏 0 ㄒㄩㄣˊ
+畃 0 ㄒㄩㄣˊ
+㵌 0 ㄒㄩㄣˊ
+西 0 ㄒㄧ
+希 0 ㄒㄧ
+吸 0 ㄒㄧ
+攜 0 ㄒㄧ
+嘻 0 ㄒㄧ
+犧 0 ㄒㄧ
+稀 0 ㄒㄧ
+悉 0 ㄒㄧ
+溪 0 ㄒㄧ
+析 0 ㄒㄧ
+蟋 0 ㄒㄧ
+熙 0 ㄒㄧ
+禧 0 ㄒㄧ
+膝 0 ㄒㄧ
+棲 0 ㄒㄧ
+釐 0 ㄒㄧ
+嬉 0 ㄒㄧ
+兮 0 ㄒㄧ
+犀 0 ㄒㄧ
+晰 0 ㄒㄧ
+羲 0 ㄒㄧ
+畦 0 ㄒㄧ
+曦 0 ㄒㄧ
+僖 0 ㄒㄧ
+蜥 0 ㄒㄧ
+扱 0 ㄒㄧ
+熹 0 ㄒㄧ
+奚 0 ㄒㄧ
+盻 0 ㄒㄧ
+觿 0 ㄒㄧ
+譆 0 ㄒㄧ
+晞 0 ㄒㄧ
+欷 0 ㄒㄧ
+蹊 0 ㄒㄧ
+樨 0 ㄒㄧ
+巇 0 ㄒㄧ
+淅 0 ㄒㄧ
+皙 0 ㄒㄧ
+唏 0 ㄒㄧ
+烯 0 ㄒㄧ
+傒 0 ㄒㄧ
+徯 0 ㄒㄧ
+恓 0 ㄒㄧ
+窸 0 ㄒㄧ
+粞 0 ㄒㄧ
+豨 0 ㄒㄧ
+醯 0 ㄒㄧ
+鼷 0 ㄒㄧ
+氥 0 ㄒㄧ
+浠 0 ㄒㄧ
+燨 0 ㄒㄧ
+瓗 0 ㄒㄧ
+疧 0 ㄒㄧ
+酅 0 ㄒㄧ
+媐 0 ㄒㄧ
+巂 0 ㄒㄧ
+悕 0 ㄒㄧ
+睎 0 ㄒㄧ
+硒 0 ㄒㄧ
+蠵 0 ㄒㄧ
+鑴 0 ㄒㄧ
+榽 0 ㄒㄧ
+歖 0 ㄒㄧ
+爔 0 ㄒㄧ
+琋 0 ㄒㄧ
+螇 0 ㄒㄧ
+俙 0 ㄒㄧ
+徆 0 ㄒㄧ
+怷 0 ㄒㄧ
+娭 0 ㄒㄧ
+屖 0 ㄒㄧ
+谿 0 ㄒㄧ
+莃 0 ㄒㄧ
+菥 0 ㄒㄧ
+僁 0 ㄒㄧ
+橀 0 ㄒㄧ
+螝 0 ㄒㄧ
+豯 0 ㄒㄧ
+貕 0 ㄒㄧ
+鵗 0 ㄒㄧ
+騱 0 ㄒㄧ
+驨 0 ㄒㄧ
+郋 0 ㄒㄧ
+桸 0 ㄒㄧ
+惁 0 ㄒㄧ
+凞 0 ㄒㄧ
+誒 0 ㄒㄧ
+礂 0 ㄒㄧ
+屎 0 ㄒㄧ
+訢 0 ㄒㄧ
+萋 0 ㄒㄧ
+墀 0 ㄒㄧ
+撕 0 ㄒㄧ
+璽 0 ㄒㄧ
+恄 0 ㄒㄧ
+栖 0 ㄒㄧ
+狶 0 ㄒㄧ
+茜 0 ㄒㄧ
+梊 0 ㄒㄧ
+瓻 0 ㄒㄧ
+慀 0 ㄒㄧ
+磎 0 ㄒㄧ
+螅 0 ㄒㄧ
+蟢 0 ㄒㄧ
+孈 0 ㄒㄧ
+鸂 0 ㄒㄧ
+忚 0 ㄒㄧ
+吚 0 ㄒㄧ
+忾 0 ㄒㄧ
+㛓 0 ㄒㄧ
+牺 0 ㄒㄧ
+胿 0 ㄒㄧ
+捿 0 ㄒㄧ
+焁 0 ㄒㄧ
+焈 0 ㄒㄧ
+晳 0 ㄒㄧ
+焬 0 ㄒㄧ
+厀 0 ㄒㄧ
+嵠 0 ㄒㄧ
+携 0 ㄒㄧ
+熈 0 ㄒㄧ
+噏 0 ㄒㄧ
+嬆 0 ㄒㄧ
+蔳 0 ㄒㄧ
+㩗 0 ㄒㄧ
+擕 0 ㄒㄧ
+暿 0 ㄒㄧ
+熻 0 ㄒㄧ
+熺 0 ㄒㄧ
+壐 0 ㄒㄧ
+瞦 0 ㄒㄧ
+䁯 0 ㄒㄧ
+豀 0 ㄒㄧ
+㩦 0 ㄒㄧ
+黊 0 ㄒㄧ
+鏭 0 ㄒㄧ
+儶 0 ㄒㄧ
+㼇 0 ㄒㄧ
+隵 0 ㄒㄧ
+㰕 0 ㄒㄧ
+讗 0 ㄒㄧ
+卤 0 ㄒㄧ
+怸 0 ㄒㄧ
+玺 0 ㄒㄧ
+𠴭 0 ㄒㄧ
+唽 0 ㄒㄧ
+㓾 0 ㄒㄧ
+㗭 0 ㄒㄧ
+燍 0 ㄒㄧ
+㬢 0 ㄒㄧ
+繥 0 ㄒㄧ
+觹 0 ㄒㄧ
+鬹 0 ㄒㄧ
+觽 0 ㄒㄧ
+𢹂 0 ㄒㄧ
+𡾞 0 ㄒㄧ
+饎 0 ㄒㄧ
+西 0 ㄒㄧ˙
+些 0 ㄒㄧㄝ
+歇 0 ㄒㄧㄝ
+蠍 0 ㄒㄧㄝ
+蝎 0 ㄒㄧㄝ
+猲 0 ㄒㄧㄝ
+褉 0 ㄒㄧㄝ
+嗋 0 ㄒㄧㄝ
+楔 0 ㄒㄧㄝ
+碣 0 ㄒㄧㄝ
+羯 0 ㄒㄧㄝ
+燮 0 ㄒㄧㄝ
+偈 0 ㄒㄧㄝ
+堨 0 ㄒㄧㄝ
+揳 0 ㄒㄧㄝ
+毼 0 ㄒㄧㄝ
+㱔 0 ㄒㄧㄝ
+礍 0 ㄒㄧㄝ
+爕 0 ㄒㄧㄝ
+寫 0 ㄒㄧㄝˇ
+血 0 ㄒㄧㄝˇ
+蟹 0 ㄒㄧㄝˇ
+舄 0 ㄒㄧㄝˇ
+写 0 ㄒㄧㄝˇ
+舃 0 ㄒㄧㄝˇ
+藛 0 ㄒㄧㄝˇ
+蠏 0 ㄒㄧㄝˇ
+謝 0 ㄒㄧㄝˋ
+械 0 ㄒㄧㄝˋ
+洩 0 ㄒㄧㄝˋ
+屑 0 ㄒㄧㄝˋ
+瀉 0 ㄒㄧㄝˋ
+懈 0 ㄒㄧㄝˋ
+卸 0 ㄒㄧㄝˋ
+泄 0 ㄒㄧㄝˋ
+蟹 0 ㄒㄧㄝˋ
+解 0 ㄒㄧㄝˋ
+屜 0 ㄒㄧㄝˋ
+褻 0 ㄒㄧㄝˋ
+榭 0 ㄒㄧㄝˋ
+契 0 ㄒㄧㄝˋ
+駭 0 ㄒㄧㄝˋ
+廨 0 ㄒㄧㄝˋ
+渫 0 ㄒㄧㄝˋ
+邂 0 ㄒㄧㄝˋ
+燮 0 ㄒㄧㄝˋ
+楔 0 ㄒㄧㄝˋ
+絏 0 ㄒㄧㄝˋ
+薤 0 ㄒㄧㄝˋ
+紲 0 ㄒㄧㄝˋ
+媟 0 ㄒㄧㄝˋ
+嶰 0 ㄒㄧㄝˋ
+澥 0 ㄒㄧㄝˋ
+瀣 0 ㄒㄧㄝˋ
+獬 0 ㄒㄧㄝˋ
+躞 0 ㄒㄧㄝˋ
+灺 0 ㄒㄧㄝˋ
+疶 0 ㄒㄧㄝˋ
+鞢 0 ㄒㄧㄝˋ
+骱 0 ㄒㄧㄝˋ
+駴 0 ㄒㄧㄝˋ
+偰 0 ㄒㄧㄝˋ
+檞 0 ㄒㄧㄝˋ
+齘 0 ㄒㄧㄝˋ
+伳 0 ㄒㄧㄝˋ
+妎 0 ㄒㄧㄝˋ
+祄 0 ㄒㄧㄝˋ
+榍 0 ㄒㄧㄝˋ
+韰 0 ㄒㄧㄝˋ
+屧 0 ㄒㄧㄝˋ
+焎 0 ㄒㄧㄝˋ
+揳 0 ㄒㄧㄝˋ
+齥 0 ㄒㄧㄝˋ
+脅 0 ㄒㄧㄝˋ
+寫 0 ㄒㄧㄝˋ
+潟 0 ㄒㄧㄝˋ
+嗋 0 ㄒㄧㄝˋ
+愶 0 ㄒㄧㄝˋ
+熁 0 ㄒㄧㄝˋ
+燲 0 ㄒㄧㄝˋ
+薢 0 ㄒㄧㄝˋ
+齛 0 ㄒㄧㄝˋ
+写 0 ㄒㄧㄝˋ
+斺 0 ㄒㄧㄝˋ
+炨 0 ㄒㄧㄝˋ
+炧 0 ㄒㄧㄝˋ
+脇 0 ㄒㄧㄝˋ
+衸 0 ㄒㄧㄝˋ
+烲 0 ㄒㄧㄝˋ
+屟 0 ㄒㄧㄝˋ
+絬 0 ㄒㄧㄝˋ
+㻡 0 ㄒㄧㄝˋ
+觧 0 ㄒㄧㄝˋ
+暬 0 ㄒㄧㄝˋ
+緤 0 ㄒㄧㄝˋ
+噧 0 ㄒㄧㄝˋ
+爕 0 ㄒㄧㄝˋ
+蠏 0 ㄒㄧㄝˋ
+譮 0 ㄒㄧㄝˋ
+缷 0 ㄒㄧㄝˋ
+徢 0 ㄒㄧㄝˋ
+碿 0 ㄒㄧㄝˋ
+糏 0 ㄒㄧㄝˋ
+協 0 ㄒㄧㄝˊ
+鞋 0 ㄒㄧㄝˊ
+斜 0 ㄒㄧㄝˊ
+脅 0 ㄒㄧㄝˊ
+諧 0 ㄒㄧㄝˊ
+邪 0 ㄒㄧㄝˊ
+偕 0 ㄒㄧㄝˊ
+頡 0 ㄒㄧㄝˊ
+挾 0 ㄒㄧㄝˊ
+絜 0 ㄒㄧㄝˊ
+攜 0 ㄒㄧㄝˊ
+擷 0 ㄒㄧㄝˊ
+勰 0 ㄒㄧㄝˊ
+纈 0 ㄒㄧㄝˊ
+襭 0 ㄒㄧㄝˊ
+脥 0 ㄒㄧㄝˊ
+慀 0 ㄒㄧㄝˊ
+劦 0 ㄒㄧㄝˊ
+蝢 0 ㄒㄧㄝˊ
+垥 0 ㄒㄧㄝˊ
+拹 0 ㄒㄧㄝˊ
+籺 0 ㄒㄧㄝˊ
+奊 0 ㄒㄧㄝˊ
+龤 0 ㄒㄧㄝˊ
+愶 0 ㄒㄧㄝˊ
+搚 0 ㄒㄧㄝˊ
+瑎 0 ㄒㄧㄝˊ
+熁 0 ㄒㄧㄝˊ
+燲 0 ㄒㄧㄝˊ
+頁 0 ㄒㄧㄝˊ
+鮭 0 ㄒㄧㄝˊ
+蠍 0 ㄒㄧㄝˊ
+姭 0 ㄒㄧㄝˊ
+嗋 0 ㄒㄧㄝˊ
+緳 0 ㄒㄧㄝˊ
+叶 0 ㄒㄧㄝˊ
+协 0 ㄒㄧㄝˊ
+旪 0 ㄒㄧㄝˊ
+恊 0 ㄒㄧㄝˊ
+挟 0 ㄒㄧㄝˊ
+峫 0 ㄒㄧㄝˊ
+脇 0 ㄒㄧㄝˊ
+衺 0 ㄒㄧㄝˊ
+翓 0 ㄒㄧㄝˊ
+携 0 ㄒㄧㄝˊ
+綊 0 ㄒㄧㄝˊ
+綇 0 ㄒㄧㄝˊ
+㩗 0 ㄒㄧㄝˊ
+擕 0 ㄒㄧㄝˊ
+㩦 0 ㄒㄧㄝˊ
+鞵 0 ㄒㄧㄝˊ
+膎 0 ㄒㄧㄝˊ
+𦳃 0 ㄒㄧㄝˊ
+謝 0 ㄒㄧㄝ˙
+修 0 ㄒㄧㄡ
+休 0 ㄒㄧㄡ
+羞 0 ㄒㄧㄡ
+脩 0 ㄒㄧㄡ
+咻 0 ㄒㄧㄡ
+庥 0 ㄒㄧㄡ
+貅 0 ㄒㄧㄡ
+髹 0 ㄒㄧㄡ
+饈 0 ㄒㄧㄡ
+鵂 0 ㄒㄧㄡ
+滫 0 ㄒㄧㄡ
+樇 0 ㄒㄧㄡ
+臹 0 ㄒㄧㄡ
+茠 0 ㄒㄧㄡ
+銝 0 ㄒㄧㄡ
+蓨 0 ㄒㄧㄡ
+鎀 0 ㄒㄧㄡ
+潃 0 ㄒㄧㄡ
+恘 0 ㄒㄧㄡ
+烌 0 ㄒㄧㄡ
+蓚 0 ㄒㄧㄡ
+髤 0 ㄒㄧㄡ
+鏅 0 ㄒㄧㄡ
+飍 0 ㄒㄧㄡ
+俢 0 ㄒㄧㄡ
+㳜 0 ㄒㄧㄡ
+鱃 0 ㄒㄧㄡ
+朽 0 ㄒㄧㄡˇ
+宿 0 ㄒㄧㄡˇ
+糔 0 ㄒㄧㄡˇ
+休 0 ㄒㄧㄡˇ
+枵 0 ㄒㄧㄡˇ
+滫 0 ㄒㄧㄡˇ
+潃 0 ㄒㄧㄡˇ
+鴞 0 ㄒㄧㄡˇ
+秀 0 ㄒㄧㄡˋ
+繡 0 ㄒㄧㄡˋ
+鏽 0 ㄒㄧㄡˋ
+袖 0 ㄒㄧㄡˋ
+嗅 0 ㄒㄧㄡˋ
+宿 0 ㄒㄧㄡˋ
+臭 0 ㄒㄧㄡˋ
+銹 0 ㄒㄧㄡˋ
+琇 0 ㄒㄧㄡˋ
+溴 0 ㄒㄧㄡˋ
+岫 0 ㄒㄧㄡˋ
+珛 0 ㄒㄧㄡˋ
+玊 0 ㄒㄧㄡˋ
+殠 0 ㄒㄧㄡˋ
+褎 0 ㄒㄧㄡˋ
+螑 0 ㄒㄧㄡˋ
+綉 0 ㄒㄧㄡˋ
+璓 0 ㄒㄧㄡˋ
+褏 0 ㄒㄧㄡˋ
+繍 0 ㄒㄧㄡˋ
+鏅 0 ㄒㄧㄡˋ
+鏥 0 ㄒㄧㄡˋ
+齅 0 ㄒㄧㄡˋ
+臰 0 ㄒㄧㄡˋ
+嘼 0 ㄒㄧㄡˋ
+興 0 ㄒㄧㄥ
+星 0 ㄒㄧㄥ
+猩 0 ㄒㄧㄥ
+腥 0 ㄒㄧㄥ
+馨 0 ㄒㄧㄥ
+惺 0 ㄒㄧㄥ
+騂 0 ㄒㄧㄥ
+煋 0 ㄒㄧㄥ
+瑆 0 ㄒㄧㄥ
+胜 0 ㄒㄧㄥ
+垶 0 ㄒㄧㄥ
+蛵 0 ㄒㄧㄥ
+觲 0 ㄒㄧㄥ
+馫 0 ㄒㄧㄥ
+醒 0 ㄒㄧㄥ
+狌 0 ㄒㄧㄥ
+觪 0 ㄒㄧㄥ
+鮏 0 ㄒㄧㄥ
+曐 0 ㄒㄧㄥ
+嬹 0 ㄒㄧㄥ
+鯹 0 ㄒㄧㄥ
+篂 0 ㄒㄧㄥ
+皨 0 ㄒㄧㄥ
+省 0 ㄒㄧㄥˇ
+醒 0 ㄒㄧㄥˇ
+擤 0 ㄒㄧㄥˇ
+渻 0 ㄒㄧㄥˇ
+惺 0 ㄒㄧㄥˇ
+睲 0 ㄒㄧㄥˇ
+行 0 ㄒㄧㄥˋ
+興 0 ㄒㄧㄥˋ
+性 0 ㄒㄧㄥˋ
+幸 0 ㄒㄧㄥˋ
+姓 0 ㄒㄧㄥˋ
+杏 0 ㄒㄧㄥˋ
+倖 0 ㄒㄧㄥˋ
+悻 0 ㄒㄧㄥˋ
+荇 0 ㄒㄧㄥˋ
+婞 0 ㄒㄧㄥˋ
+莕 0 ㄒㄧㄥˋ
+涬 0 ㄒㄧㄥˋ
+啈 0 ㄒㄧㄥˋ
+矎 0 ㄒㄧㄥˋ
+緈 0 ㄒㄧㄥˋ
+嬹 0 ㄒㄧㄥˋ
+臖 0 ㄒㄧㄥˋ
+行 0 ㄒㄧㄥˊ
+形 0 ㄒㄧㄥˊ
+型 0 ㄒㄧㄥˊ
+刑 0 ㄒㄧㄥˊ
+邢 0 ㄒㄧㄥˊ
+陘 0 ㄒㄧㄥˊ
+硎 0 ㄒㄧㄥˊ
+鉶 0 ㄒㄧㄥˊ
+餳 0 ㄒㄧㄥˊ
+侀 0 ㄒㄧㄥˊ
+烆 0 ㄒㄧㄥˊ
+洐 0 ㄒㄧㄥˊ
+胻 0 ㄒㄧㄥˊ
+鋞 0 ㄒㄧㄥˊ
+濴 0 ㄒㄧㄥˊ
+娙 0 ㄒㄧㄥˊ
+絎 0 ㄒㄧㄥˊ
+鈃 0 ㄒㄧㄥˊ
+雃 0 ㄒㄧㄥˊ
+滎 0 ㄒㄧㄥˊ
+坓 0 ㄒㄧㄥˊ
+郉 0 ㄒㄧㄥˊ
+銒 0 ㄒㄧㄥˊ
+糃 0 ㄒㄧㄥˊ
+鄉 0 ㄒㄧㄤ
+相 0 ㄒㄧㄤ
+香 0 ㄒㄧㄤ
+箱 0 ㄒㄧㄤ
+湘 0 ㄒㄧㄤ
+襄 0 ㄒㄧㄤ
+鑲 0 ㄒㄧㄤ
+廂 0 ㄒㄧㄤ
+驤 0 ㄒㄧㄤ
+緗 0 ㄒㄧㄤ
+薌 0 ㄒㄧㄤ
+瓖 0 ㄒㄧㄤ
+纕 0 ㄒㄧㄤ
+欀 0 ㄒㄧㄤ
+葙 0 ㄒㄧㄤ
+忀 0 ㄒㄧㄤ
+曩 0 ㄒㄧㄤ
+舡 0 ㄒㄧㄤ
+萫 0 ㄒㄧㄤ
+曏 0 ㄒㄧㄤ
+膷 0 ㄒㄧㄤ
+勷 0 ㄒㄧㄤ
+皀 0 ㄒㄧㄤ
+啌 0 ㄒㄧㄤ
+郷 0 ㄒㄧㄤ
+鄊 0 ㄒㄧㄤ
+鄕 0 ㄒㄧㄤ
+麘 0 ㄒㄧㄤ
+想 0 ㄒㄧㄤˇ
+響 0 ㄒㄧㄤˇ
+享 0 ㄒㄧㄤˇ
+餉 0 ㄒㄧㄤˇ
+饗 0 ㄒㄧㄤˇ
+鯗 0 ㄒㄧㄤˇ
+饟 0 ㄒㄧㄤˇ
+晑 0 ㄒㄧㄤˇ
+晌 0 ㄒㄧㄤˇ
+嚮 0 ㄒㄧㄤˇ
+崞 0 ㄒㄧㄤˇ
+亯 0 ㄒㄧㄤˇ
+响 0 ㄒㄧㄤˇ
+銄 0 ㄒㄧㄤˇ
+鮝 0 ㄒㄧㄤˇ
+鑜 0 ㄒㄧㄤˇ
+鱶 0 ㄒㄧㄤˇ
+巷 0 ㄒㄧㄤˋ
+向 0 ㄒㄧㄤˋ
+相 0 ㄒㄧㄤˋ
+像 0 ㄒㄧㄤˋ
+項 0 ㄒㄧㄤˋ
+象 0 ㄒㄧㄤˋ
+橡 0 ㄒㄧㄤˋ
+嚮 0 ㄒㄧㄤˋ
+曏 0 ㄒㄧㄤˋ
+蠁 0 ㄒㄧㄤˋ
+萫 0 ㄒㄧㄤˋ
+闀 0 ㄒㄧㄤˋ
+蟓 0 ㄒㄧㄤˋ
+襐 0 ㄒㄧㄤˋ
+鐌 0 ㄒㄧㄤˋ
+鄉 0 ㄒㄧㄤˋ
+恦 0 ㄒㄧㄤˋ
+潒 0 ㄒㄧㄤˋ
+鱌 0 ㄒㄧㄤˋ
+餉 0 ㄒㄧㄤˋ
+樣 0 ㄒㄧㄤˋ
+姠 0 ㄒㄧㄤˋ
+晑 0 ㄒㄧㄤˋ
+缿 0 ㄒㄧㄤˋ
+銗 0 ㄒㄧㄤˋ
+澒 0 ㄒㄧㄤˋ
+珦 0 ㄒㄧㄤˋ
+郷 0 ㄒㄧㄤˋ
+鄊 0 ㄒㄧㄤˋ
+鄕 0 ㄒㄧㄤˋ
+銄 0 ㄒㄧㄤˋ
+嶑 0 ㄒㄧㄤˋ
+様 0 ㄒㄧㄤˋ
+闂 0 ㄒㄧㄤˋ
+鑜 0 ㄒㄧㄤˋ
+勨 0 ㄒㄧㄤˋ
+詳 0 ㄒㄧㄤˊ
+祥 0 ㄒㄧㄤˊ
+降 0 ㄒㄧㄤˊ
+翔 0 ㄒㄧㄤˊ
+庠 0 ㄒㄧㄤˊ
+羊 0 ㄒㄧㄤˊ
+吀 0 ㄒㄧㄤˊ
+夅 0 ㄒㄧㄤˊ
+佭 0 ㄒㄧㄤˊ
+哶 0 ㄒㄧㄤˊ
+栙 0 ㄒㄧㄤˊ
+絴 0 ㄒㄧㄤˊ
+跭 0 ㄒㄧㄤˊ
+鴹 0 ㄒㄧㄤˊ
+䜶 0 ㄒㄧㄤˊ
+先 0 ㄒㄧㄢ
+仙 0 ㄒㄧㄢ
+掀 0 ㄒㄧㄢ
+鮮 0 ㄒㄧㄢ
+纖 0 ㄒㄧㄢ
+暹 0 ㄒㄧㄢ
+姍 0 ㄒㄧㄢ
+孅 0 ㄒㄧㄢ
+憸 0 ㄒㄧㄢ
+躚 0 ㄒㄧㄢ
+銛 0 ㄒㄧㄢ
+秈 0 ㄒㄧㄢ
+韱 0 ㄒㄧㄢ
+枮 0 ㄒㄧㄢ
+氙 0 ㄒㄧㄢ
+馦 0 ㄒㄧㄢ
+嬐 0 ㄒㄧㄢ
+仚 0 ㄒㄧㄢ
+屳 0 ㄒㄧㄢ
+奾 0 ㄒㄧㄢ
+杴 0 ㄒㄧㄢ
+忺 0 ㄒㄧㄢ
+澖 0 ㄒㄧㄢ
+灦 0 ㄒㄧㄢ
+祆 0 ㄒㄧㄢ
+僊 0 ㄒㄧㄢ
+嘕 0 ㄒㄧㄢ
+蓒 0 ㄒㄧㄢ
+褼 0 ㄒㄧㄢ
+廯 0 ㄒㄧㄢ
+襳 0 ㄒㄧㄢ
+珗 0 ㄒㄧㄢ
+屾 0 ㄒㄧㄢ
+佡 0 ㄒㄧㄢ
+侁 0 ㄒㄧㄢ
+胘 0 ㄒㄧㄢ
+赻 0 ㄒㄧㄢ
+筅 0 ㄒㄧㄢ
+綅 0 ㄒㄧㄢ
+詵 0 ㄒㄧㄢ
+錟 0 ㄒㄧㄢ
+駪 0 ㄒㄧㄢ
+薟 0 ㄒㄧㄢ
+攕 0 ㄒㄧㄢ
+鶱 0 ㄒㄧㄢ
+虃 0 ㄒㄧㄢ
+彡 0 ㄒㄧㄢ
+姗 0 ㄒㄧㄢ
+欦 0 ㄒㄧㄢ
+籼 0 ㄒㄧㄢ
+苮 0 ㄒㄧㄢ
+箲 0 ㄒㄧㄢ
+韯 0 ㄒㄧㄢ
+嬜 0 ㄒㄧㄢ
+纎 0 ㄒㄧㄢ
+鱻 0 ㄒㄧㄢ
+酰 0 ㄒㄧㄢ
+銽 0 ㄒㄧㄢ
+蹮 0 ㄒㄧㄢ
+險 0 ㄒㄧㄢˇ
+顯 0 ㄒㄧㄢˇ
+鮮 0 ㄒㄧㄢˇ
+癬 0 ㄒㄧㄢˇ
+蘚 0 ㄒㄧㄢˇ
+銑 0 ㄒㄧㄢˇ
+燹 0 ㄒㄧㄢˇ
+跣 0 ㄒㄧㄢˇ
+嶮 0 ㄒㄧㄢˇ
+蜆 0 ㄒㄧㄢˇ
+姺 0 ㄒㄧㄢˇ
+尟 0 ㄒㄧㄢˇ
+譣 0 ㄒㄧㄢˇ
+幰 0 ㄒㄧㄢˇ
+獫 0 ㄒㄧㄢˇ
+獮 0 ㄒㄧㄢˇ
+玁 0 ㄒㄧㄢˇ
+筅 0 ㄒㄧㄢˇ
+韅 0 ㄒㄧㄢˇ
+毨 0 ㄒㄧㄢˇ
+烍 0 ㄒㄧㄢˇ
+鍌 0 ㄒㄧㄢˇ
+搟 0 ㄒㄧㄢˇ
+鼸 0 ㄒㄧㄢˇ
+齴 0 ㄒㄧㄢˇ
+赻 0 ㄒㄧㄢˇ
+攇 0 ㄒㄧㄢˇ
+禒 0 ㄒㄧㄢˇ
+洗 0 ㄒㄧㄢˇ
+冼 0 ㄒㄧㄢˇ
+暹 0 ㄒㄧㄢˇ
+洒 0 ㄒㄧㄢˇ
+珗 0 ㄒㄧㄢˇ
+兟 0 ㄒㄧㄢˇ
+鋧 0 ㄒㄧㄢˇ
+廯 0 ㄒㄧㄢˇ
+灦 0 ㄒㄧㄢˇ
+㧥 0 ㄒㄧㄢˇ
+㭠 0 ㄒㄧㄢˇ
+尠 0 ㄒㄧㄢˇ
+箲 0 ㄒㄧㄢˇ
+礆 0 ㄒㄧㄢˇ
+顕 0 ㄒㄧㄢˇ
+鱻 0 ㄒㄧㄢˇ
+㬎 0 ㄒㄧㄢˇ
+䥪 0 ㄒㄧㄢˇ
+縣 0 ㄒㄧㄢˋ
+現 0 ㄒㄧㄢˋ
+線 0 ㄒㄧㄢˋ
+限 0 ㄒㄧㄢˋ
+憲 0 ㄒㄧㄢˋ
+獻 0 ㄒㄧㄢˋ
+羨 0 ㄒㄧㄢˋ
+陷 0 ㄒㄧㄢˋ
+腺 0 ㄒㄧㄢˋ
+餡 0 ㄒㄧㄢˋ
+莧 0 ㄒㄧㄢˋ
+霰 0 ㄒㄧㄢˋ
+俔 0 ㄒㄧㄢˋ
+僩 0 ㄒㄧㄢˋ
+峴 0 ㄒㄧㄢˋ
+晛 0 ㄒㄧㄢˋ
+睍 0 ㄒㄧㄢˋ
+豏 0 ㄒㄧㄢˋ
+轞 0 ㄒㄧㄢˋ
+涀 0 ㄒㄧㄢˋ
+瀗 0 ㄒㄧㄢˋ
+粯 0 ㄒㄧㄢˋ
+娊 0 ㄒㄧㄢˋ
+撊 0 ㄒㄧㄢˋ
+錎 0 ㄒㄧㄢˋ
+姭 0 ㄒㄧㄢˋ
+先 0 ㄒㄧㄢˋ
+見 0 ㄒㄧㄢˋ
+賢 0 ㄒㄧㄢˋ
+埳 0 ㄒㄧㄢˋ
+淊 0 ㄒㄧㄢˋ
+硍 0 ㄒㄧㄢˋ
+羡 0 ㄒㄧㄢˋ
+萏 0 ㄒㄧㄢˋ
+窞 0 ㄒㄧㄢˋ
+蜭 0 ㄒㄧㄢˋ
+幰 0 ㄒㄧㄢˋ
+攇 0 ㄒㄧㄢˋ
+甗 0 ㄒㄧㄢˋ
+巘 0 ㄒㄧㄢˋ
+瓛 0 ㄒㄧㄢˋ
+讞 0 ㄒㄧㄢˋ
+咞 0 ㄒㄧㄢˋ
+哯 0 ㄒㄧㄢˋ
+垷 0 ㄒㄧㄢˋ
+悓 0 ㄒㄧㄢˋ
+軐 0 ㄒㄧㄢˋ
+唺 0 ㄒㄧㄢˋ
+絤 0 ㄒㄧㄢˋ
+塪 0 ㄒㄧㄢˋ
+献 0 ㄒㄧㄢˋ
+蛿 0 ㄒㄧㄢˋ
+䧟 0 ㄒㄧㄢˋ
+僴 0 ㄒㄧㄢˋ
+綫 0 ㄒㄧㄢˋ
+膁 0 ㄒㄧㄢˋ
+誢 0 ㄒㄧㄢˋ
+橌 0 ㄒㄧㄢˋ
+懢 0 ㄒㄧㄢˋ
+麲 0 ㄒㄧㄢˋ
+臔 0 ㄒㄧㄢˋ
+藖 0 ㄒㄧㄢˋ
+贒 0 ㄒㄧㄢˋ
+臽 0 ㄒㄧㄢˋ
+䱤 0 ㄒㄧㄢˋ
+櫶 0 ㄒㄧㄢˋ
+賢 0 ㄒㄧㄢˊ
+閒 0 ㄒㄧㄢˊ
+嫌 0 ㄒㄧㄢˊ
+咸 0 ㄒㄧㄢˊ
+鹹 0 ㄒㄧㄢˊ
+弦 0 ㄒㄧㄢˊ
+銜 0 ㄒㄧㄢˊ
+絃 0 ㄒㄧㄢˊ
+嫻 0 ㄒㄧㄢˊ
+嫺 0 ㄒㄧㄢˊ
+涎 0 ㄒㄧㄢˊ
+啣 0 ㄒㄧㄢˊ
+舷 0 ㄒㄧㄢˊ
+閑 0 ㄒㄧㄢˊ
+癇 0 ㄒㄧㄢˊ
+諴 0 ㄒㄧㄢˊ
+蚿 0 ㄒㄧㄢˊ
+憪 0 ㄒㄧㄢˊ
+鷴 0 ㄒㄧㄢˊ
+娹 0 ㄒㄧㄢˊ
+葴 0 ㄒㄧㄢˊ
+胘 0 ㄒㄧㄢˊ
+蛝 0 ㄒㄧㄢˊ
+羬 0 ㄒㄧㄢˊ
+燅 0 ㄒㄧㄢˊ
+礥 0 ㄒㄧㄢˊ
+鷳 0 ㄒㄧㄢˊ
+唌 0 ㄒㄧㄢˊ
+玄 0 ㄒㄧㄢˊ
+炫 0 ㄒㄧㄢˊ
+眩 0 ㄒㄧㄢˊ
+鉉 0 ㄒㄧㄢˊ
+僩 0 ㄒㄧㄢˊ
+箴 0 ㄒㄧㄢˊ
+伭 0 ㄒㄧㄢˊ
+妶 0 ㄒㄧㄢˊ
+泫 0 ㄒㄧㄢˊ
+昡 0 ㄒㄧㄢˊ
+玹 0 ㄒㄧㄢˊ
+惤 0 ㄒㄧㄢˊ
+袨 0 ㄒㄧㄢˊ
+嵅 0 ㄒㄧㄢˊ
+嗛 0 ㄒㄧㄢˊ
+瑊 0 ㄒㄧㄢˊ
+撊 0 ㄒㄧㄢˊ
+澖 0 ㄒㄧㄢˊ
+誸 0 ㄒㄧㄢˊ
+襉 0 ㄒㄧㄢˊ
+顑 0 ㄒㄧㄢˊ
+鰔 0 ㄒㄧㄢˊ
+麙 0 ㄒㄧㄢˊ
+痃 0 ㄒㄧㄢˊ
+婱 0 ㄒㄧㄢˊ
+衘 0 ㄒㄧㄢˊ
+詽 0 ㄒㄧㄢˊ
+僴 0 ㄒㄧㄢˊ
+甉 0 ㄒㄧㄢˊ
+㯗 0 ㄒㄧㄢˊ
+㵪 0 ㄒㄧㄢˊ
+輱 0 ㄒㄧㄢˊ
+醎 0 ㄒㄧㄢˊ
+癎 0 ㄒㄧㄢˊ
+簚 0 ㄒㄧㄢˊ
+藖 0 ㄒㄧㄢˊ
+贒 0 ㄒㄧㄢˊ
+鷼 0 ㄒㄧㄢˊ
+臤 0 ㄒㄧㄢˊ
+訮 0 ㄒㄧㄢˊ
+稴 0 ㄒㄧㄢˊ
+喜 0 ㄒㄧˇ
+洗 0 ㄒㄧˇ
+徙 0 ㄒㄧˇ
+璽 0 ㄒㄧˇ
+鰓 0 ㄒㄧˇ
+屣 0 ㄒㄧˇ
+蓰 0 ㄒㄧˇ
+囍 0 ㄒㄧˇ
+枲 0 ㄒㄧˇ
+蟢 0 ㄒㄧˇ
+縰 0 ㄒㄧˇ
+蹝 0 ㄒㄧˇ
+匚 0 ㄒㄧˇ
+狶 0 ㄒㄧˇ
+諰 0 ㄒㄧˇ
+簁 0 ㄒㄧˇ
+葸 0 ㄒㄧˇ
+漇 0 ㄒㄧˇ
+敼 0 ㄒㄧˇ
+僖 0 ㄒㄧˇ
+嬉 0 ㄒㄧˇ
+禧 0 ㄒㄧˇ
+譆 0 ㄒㄧˇ
+洒 0 ㄒㄧˇ
+歖 0 ㄒㄧˇ
+礂 0 ㄒㄧˇ
+褷 0 ㄒㄧˇ
+鍌 0 ㄒㄧˇ
+饎 0 ㄒㄧˇ
+匸 0 ㄒㄧˇ
+杫 0 ㄒㄧˇ
+愢 0 ㄒㄧˇ
+葈 0 ㄒㄧˇ
+憘 0 ㄒㄧˇ
+憙 0 ㄒㄧˇ
+壐 0 ㄒㄧˇ
+簛 0 ㄒㄧˇ
+糦 0 ㄒㄧˇ
+籭 0 ㄒㄧˇ
+躧 0 ㄒㄧˇ
+玺 0 ㄒㄧˇ
+鉩 0 ㄒㄧˇ
+細 0 ㄒㄧˋ
+戲 0 ㄒㄧˋ
+係 0 ㄒㄧˋ
+系 0 ㄒㄧˋ
+繫 0 ㄒㄧˋ
+夕 0 ㄒㄧˋ
+汐 0 ㄒㄧˋ
+隙 0 ㄒㄧˋ
+歙 0 ㄒㄧˋ
+鬩 0 ㄒㄧˋ
+翕 0 ㄒㄧˋ
+穸 0 ㄒㄧˋ
+咥 0 ㄒㄧˋ
+衋 0 ㄒㄧˋ
+屭 0 ㄒㄧˋ
+綌 0 ㄒㄧˋ
+肸 0 ㄒㄧˋ
+鄎 0 ㄒㄧˋ
+醯 0 ㄒㄧˋ
+餼 0 ㄒㄧˋ
+滊 0 ㄒㄧˋ
+褉 0 ㄒㄧˋ
+潟 0 ㄒㄧˋ
+舄 0 ㄒㄧˋ
+矽 0 ㄒㄧˋ
+鑴 0 ㄒㄧˋ
+卌 0 ㄒㄧˋ
+怬 0 ㄒㄧˋ
+釸 0 ㄒㄧˋ
+鎎 0 ㄒㄧˋ
+釳 0 ㄒㄧˋ
+赩 0 ㄒㄧˋ
+郤 0 ㄒㄧˋ
+熂 0 ㄒㄧˋ
+覤 0 ㄒㄧˋ
+蕮 0 ㄒㄧˋ
+黖 0 ㄒㄧˋ
+謑 0 ㄒㄧˋ
+虩 0 ㄒㄧˋ
+忥 0 ㄒㄧˋ
+恄 0 ㄒㄧˋ
+摡 0 ㄒㄧˋ
+禊 0 ㄒㄧˋ
+齂 0 ㄒㄧˋ
+愾 0 ㄒㄧˋ
+扢 0 ㄒㄧˋ
+妎 0 ㄒㄧˋ
+呬 0 ㄒㄧˋ
+盻 0 ㄒㄧˋ
+籺 0 ㄒㄧˋ
+傒 0 ㄒㄧˋ
+塈 0 ㄒㄧˋ
+慀 0 ㄒㄧˋ
+緆 0 ㄒㄧˋ
+獡 0 ㄒㄧˋ
+罊 0 ㄒㄧˋ
+霫 0 ㄒㄧˋ
+闟 0 ㄒㄧˋ
+蘻 0 ㄒㄧˋ
+戏 0 ㄒㄧˋ
+欪 0 ㄒㄧˋ
+郄 0 ㄒㄧˋ
+屓 0 ㄒㄧˋ
+赥 0 ㄒㄧˋ
+椞 0 ㄒㄧˋ
+翖 0 ㄒㄧˋ
+舃 0 ㄒㄧˋ
+嘅 0 ㄒㄧˋ
+墍 0 ㄒㄧˋ
+犔 0 ㄒㄧˋ
+蒵 0 ㄒㄧˋ
+隟 0 ㄒㄧˋ
+戯 0 ㄒㄧˋ
+戱 0 ㄒㄧˋ
+䦧 0 ㄒㄧˋ
+嚊 0 ㄒㄧˋ
+韢 0 ㄒㄧˋ
+霼 0 ㄒㄧˋ
+肹 0 ㄒㄧˋ
+稧 0 ㄒㄧˋ
+縘 0 ㄒㄧˋ
+磶 0 ㄒㄧˋ
+䮎 0 ㄒㄧˋ
+嚱 0 ㄒㄧˋ
+潝 0 ㄒㄧˋ
+習 0 ㄒㄧˊ
+昔 0 ㄒㄧˊ
+息 0 ㄒㄧˊ
+席 0 ㄒㄧˊ
+惜 0 ㄒㄧˊ
+媳 0 ㄒㄧˊ
+錫 0 ㄒㄧˊ
+襲 0 ㄒㄧˊ
+熄 0 ㄒㄧˊ
+蓆 0 ㄒㄧˊ
+褶 0 ㄒㄧˊ
+檄 0 ㄒㄧˊ
+覡 0 ㄒㄧˊ
+濕 0 ㄒㄧˊ
+隰 0 ㄒㄧˊ
+裼 0 ㄒㄧˊ
+嶍 0 ㄒㄧˊ
+螅 0 ㄒㄧˊ
+鰼 0 ㄒㄧˊ
+腊 0 ㄒㄧˊ
+槢 0 ㄒㄧˊ
+焟 0 ㄒㄧˊ
+謵 0 ㄒㄧˊ
+鎴 0 ㄒㄧˊ
+欯 0 ㄒㄧˊ
+棤 0 ㄒㄧˊ
+蒠 0 ㄒㄧˊ
+瘜 0 ㄒㄧˊ
+獥 0 ㄒㄧˊ
+薂 0 ㄒㄧˊ
+霫 0 ㄒㄧˊ
+飁 0 ㄒㄧˊ
+騽 0 ㄒㄧˊ
+蝷 0 ㄒㄧˊ
+夕 0 ㄒㄧˊ
+汐 0 ㄒㄧˊ
+矽 0 ㄒㄧˊ
+悉 0 ㄒㄧˊ
+憩 0 ㄒㄧˊ
+郋 0 ㄒㄧˊ
+唶 0 ㄒㄧˊ
+庴 0 ㄒㄧˊ
+釸 0 ㄒㄧˊ
+僁 0 ㄒㄧˊ
+慴 0 ㄒㄧˊ
+緆 0 ㄒㄧˊ
+踖 0 ㄒㄧˊ
+褯 0 ㄒㄧˊ
+雭 0 ㄒㄧˊ
+漝 0 ㄒㄧˊ
+蒵 0 ㄒㄧˊ
+趘 0 ㄒㄧˊ
+憇 0 ㄒㄧˊ
+齚 0 ㄒㄧˊ
+怸 0 ㄒㄧˊ
+椺 0 ㄒㄧˊ
+趞 0 ㄒㄧˊ
+瞎 0 ㄒㄧㄚ
+蝦 0 ㄒㄧㄚ
+岈 0 ㄒㄧㄚ
+颬 0 ㄒㄧㄚ
+鍜 0 ㄒㄧㄚ
+呀 0 ㄒㄧㄚ
+嗐 0 ㄒㄧㄚ
+磍 0 ㄒㄧㄚ
+谺 0 ㄒㄧㄚ
+㗇 0 ㄒㄧㄚ
+閕 0 ㄒㄧㄚ
+鰕 0 ㄒㄧㄚ
+豄 0 ㄒㄧㄚ
+傄 0 ㄒㄧㄚ
+敮 0 ㄒㄧㄚ
+閜 0 ㄒㄧㄚˇ
+下 0 ㄒㄧㄚˋ
+夏 0 ㄒㄧㄚˋ
+嚇 0 ㄒㄧㄚˋ
+廈 0 ㄒㄧㄚˋ
+暇 0 ㄒㄧㄚˋ
+煆 0 ㄒㄧㄚˋ
+罅 0 ㄒㄧㄚˋ
+芐 0 ㄒㄧㄚˋ
+欱 0 ㄒㄧㄚˋ
+鏬 0 ㄒㄧㄚˋ
+鶷 0 ㄒㄧㄚˋ
+磍 0 ㄒㄧㄚˋ
+諕 0 ㄒㄧㄚˋ
+縖 0 ㄒㄧㄚˋ
+丅 0 ㄒㄧㄚˋ
+吓 0 ㄒㄧㄚˋ
+㙈 0 ㄒㄧㄚˋ
+厦 0 ㄒㄧㄚˋ
+睱 0 ㄒㄧㄚˋ
+疜 0 ㄒㄧㄚˋ
+㰰 0 ㄒㄧㄚˋ
+懗 0 ㄒㄧㄚˋ
+夓 0 ㄒㄧㄚˋ
+暇 0 ㄒㄧㄚˊ
+峽 0 ㄒㄧㄚˊ
+轄 0 ㄒㄧㄚˊ
+霞 0 ㄒㄧㄚˊ
+俠 0 ㄒㄧㄚˊ
+狹 0 ㄒㄧㄚˊ
+挾 0 ㄒㄧㄚˊ
+匣 0 ㄒㄧㄚˊ
+呷 0 ㄒㄧㄚˊ
+遐 0 ㄒㄧㄚˊ
+硤 0 ㄒㄧㄚˊ
+狎 0 ㄒㄧㄚˊ
+瑕 0 ㄒㄧㄚˊ
+斜 0 ㄒㄧㄚˊ
+黠 0 ㄒㄧㄚˊ
+柙 0 ㄒㄧㄚˊ
+祫 0 ㄒㄧㄚˊ
+洽 0 ㄒㄧㄚˊ
+舝 0 ㄒㄧㄚˊ
+碬 0 ㄒㄧㄚˊ
+騢 0 ㄒㄧㄚˊ
+搳 0 ㄒㄧㄚˊ
+烚 0 ㄒㄧㄚˊ
+冾 0 ㄒㄧㄚˊ
+笚 0 ㄒㄧㄚˊ
+縖 0 ㄒㄧㄚˊ
+珨 0 ㄒㄧㄚˊ
+陜 0 ㄒㄧㄚˊ
+磍 0 ㄒㄧㄚˊ
+赮 0 ㄒㄧㄚˊ
+魻 0 ㄒㄧㄚˊ
+蕸 0 ㄒㄧㄚˊ
+邪 0 ㄒㄧㄚˊ
+恰 0 ㄒㄧㄚˊ
+陝 0 ㄒㄧㄚˊ
+愜 0 ㄒㄧㄚˊ
+脥 0 ㄒㄧㄚˊ
+鍜 0 ㄒㄧㄚˊ
+侠 0 ㄒㄧㄚˊ
+叚 0 ㄒㄧㄚˊ
+峡 0 ㄒㄧㄚˊ
+挟 0 ㄒㄧㄚˊ
+炠 0 ㄒㄧㄚˊ
+狭 0 ㄒㄧㄚˊ
+衺 0 ㄒㄧㄚˊ
+捾 0 ㄒㄧㄚˊ
+㭱 0 ㄒㄧㄚˊ
+陿 0 ㄒㄧㄚˊ
+睱 0 ㄒㄧㄚˊ
+縀 0 ㄒㄧㄚˊ
+鎋 0 ㄒㄧㄚˊ
+䕸 0 ㄒㄧㄚˊ
+陕 0 ㄒㄧㄚˊ
+翈 0 ㄒㄧㄚˊ
+筪 0 ㄒㄧㄚˊ
+消 0 ㄒㄧㄠ
+銷 0 ㄒㄧㄠ
+蕭 0 ㄒㄧㄠ
+瀟 0 ㄒㄧㄠ
+宵 0 ㄒㄧㄠ
+逍 0 ㄒㄧㄠ
+囂 0 ㄒㄧㄠ
+簫 0 ㄒㄧㄠ
+削 0 ㄒㄧㄠ
+硝 0 ㄒㄧㄠ
+霄 0 ㄒㄧㄠ
+哮 0 ㄒㄧㄠ
+驍 0 ㄒㄧㄠ
+梟 0 ㄒㄧㄠ
+蠨 0 ㄒㄧㄠ
+枵 0 ㄒㄧㄠ
+魈 0 ㄒㄧㄠ
+鴞 0 ㄒㄧㄠ
+嘵 0 ㄒㄧㄠ
+綃 0 ㄒㄧㄠ
+嘐 0 ㄒㄧㄠ
+歊 0 ㄒㄧㄠ
+潚 0 ㄒㄧㄠ
+烋 0 ㄒㄧㄠ
+獢 0 ㄒㄧㄠ
+虓 0 ㄒㄧㄠ
+蛸 0 ㄒㄧㄠ
+痚 0 ㄒㄧㄠ
+憢 0 ㄒㄧㄠ
+灱 0 ㄒㄧㄠ
+呺 0 ㄒㄧㄠ
+穘 0 ㄒㄧㄠ
+洨 0 ㄒㄧㄠ
+涍 0 ㄒㄧㄠ
+痟 0 ㄒㄧㄠ
+萷 0 ㄒㄧㄠ
+踃 0 ㄒㄧㄠ
+膮 0 ㄒㄧㄠ
+藃 0 ㄒㄧㄠ
+櫹 0 ㄒㄧㄠ
+髇 0 ㄒㄧㄠ
+毊 0 ㄒㄧㄠ
+虈 0 ㄒㄧㄠ
+庨 0 ㄒㄧㄠ
+啋 0 ㄒㄧㄠ
+窙 0 ㄒㄧㄠ
+顤 0 ㄒㄧㄠ
+謼 0 ㄒㄧㄠ
+肖 0 ㄒㄧㄠ
+屑 0 ㄒㄧㄠ
+猇 0 ㄒㄧㄠ
+揱 0 ㄒㄧㄠ
+翛 0 ㄒㄧㄠ
+榍 0 ㄒㄧㄠ
+鄡 0 ㄒㄧㄠ
+箾 0 ㄒㄧㄠ
+橚 0 ㄒㄧㄠ
+熽 0 ㄒㄧㄠ
+蟂 0 ㄒㄧㄠ
+髐 0 ㄒㄧㄠ
+灲 0 ㄒㄧㄠ
+侾 0 ㄒㄧㄠ
+奞 0 ㄒㄧㄠ
+婋 0 ㄒㄧㄠ
+焇 0 ㄒㄧㄠ
+硣 0 ㄒㄧㄠ
+嘋 0 ㄒㄧㄠ
+鄥 0 ㄒㄧㄠ
+撨 0 ㄒㄧㄠ
+䲷 0 ㄒㄧㄠ
+簘 0 ㄒㄧㄠ
+鴵 0 ㄒㄧㄠ
+蟰 0 ㄒㄧㄠ
+嚻 0 ㄒㄧㄠ
+宯 0 ㄒㄧㄠ
+彇 0 ㄒㄧㄠ
+㩋 0 ㄒㄧㄠ
+小 0 ㄒㄧㄠˇ
+曉 0 ㄒㄧㄠˇ
+筱 0 ㄒㄧㄠˇ
+篠 0 ㄒㄧㄠˇ
+謏 0 ㄒㄧㄠˇ
+暁 0 ㄒㄧㄠˇ
+皢 0 ㄒㄧㄠˇ
+校 0 ㄒㄧㄠˋ
+笑 0 ㄒㄧㄠˋ
+孝 0 ㄒㄧㄠˋ
+效 0 ㄒㄧㄠˋ
+酵 0 ㄒㄧㄠˋ
+嘯 0 ㄒㄧㄠˋ
+肖 0 ㄒㄧㄠˋ
+傚 0 ㄒㄧㄠˋ
+恔 0 ㄒㄧㄠˋ
+熽 0 ㄒㄧㄠˋ
+踍 0 ㄒㄧㄠˋ
+哮 0 ㄒㄧㄠˋ
+挍 0 ㄒㄧㄠˋ
+庨 0 ㄒㄧㄠˋ
+涍 0 ㄒㄧㄠˋ
+痚 0 ㄒㄧㄠˋ
+窙 0 ㄒㄧㄠˋ
+効 0 ㄒㄧㄠˋ
+咲 0 ㄒㄧㄠˋ
+俲 0 ㄒㄧㄠˋ
+㗛 0 ㄒㄧㄠˋ
+嘨 0 ㄒㄧㄠˋ
+撨 0 ㄒㄧㄠˋ
+歗 0 ㄒㄧㄠˋ
+关 0 ㄒㄧㄠˋ
+娎 0 ㄒㄧㄠˋ
+藠 0 ㄒㄧㄠˋ
+洨 0 ㄒㄧㄠˊ
+笅 0 ㄒㄧㄠˊ
+郩 0 ㄒㄧㄠˊ
+爻 0 ㄒㄧㄠˊ
+肴 0 ㄒㄧㄠˊ
+餚 0 ㄒㄧㄠˊ
+斈 0 ㄒㄧㄠˊ
+胶 0 ㄒㄧㄠˊ
+誵 0 ㄒㄧㄠˊ
+斅 0 ㄒㄧㄠˊ
+心 0 ㄒㄧㄣ
+新 0 ㄒㄧㄣ
+辛 0 ㄒㄧㄣ
+薪 0 ㄒㄧㄣ
+欣 0 ㄒㄧㄣ
+鋅 0 ㄒㄧㄣ
+馨 0 ㄒㄧㄣ
+鑫 0 ㄒㄧㄣ
+莘 0 ㄒㄧㄣ
+炘 0 ㄒㄧㄣ
+歆 0 ㄒㄧㄣ
+芯 0 ㄒㄧㄣ
+昕 0 ㄒㄧㄣ
+訢 0 ㄒㄧㄣ
+鈊 0 ㄒㄧㄣ
+盺 0 ㄒㄧㄣ
+兟 0 ㄒㄧㄣ
+廞 0 ㄒㄧㄣ
+忻 0 ㄒㄧㄣ
+妡 0 ㄒㄧㄣ
+噷 0 ㄒㄧㄣ
+掀 0 ㄒㄧㄣ
+伈 0 ㄒㄧㄣ
+伒 0 ㄒㄧㄣ
+忥 0 ㄒㄧㄣ
+杺 0 ㄒㄧㄣ
+斪 0 ㄒㄧㄣ
+惢 0 ㄒㄧㄣ
+焮 0 ㄒㄧㄣ
+騂 0 ㄒㄧㄣ
+邤 0 ㄒㄧㄣ
+俽 0 ㄒㄧㄣ
+惞 0 ㄒㄧㄣ
+忄 0 ㄒㄧㄣ
+㣺 0 ㄒㄧㄣ
+伈 0 ㄒㄧㄣˇ
+信 0 ㄒㄧㄣˋ
+釁 0 ㄒㄧㄣˋ
+芯 0 ㄒㄧㄣˋ
+焮 0 ㄒㄧㄣˋ
+舋 0 ㄒㄧㄣˋ
+膷 0 ㄒㄧㄣˋ
+囟 0 ㄒㄧㄣˋ
+妡 0 ㄒㄧㄣˋ
+煡 0 ㄒㄧㄣˋ
+阠 0 ㄒㄧㄣˋ
+蕈 0 ㄒㄧㄣˋ
+庍 0 ㄒㄧㄣˋ
+杋 0 ㄒㄧㄣˋ
+訄 0 ㄒㄧㄣˋ
+衅 0 ㄒㄧㄣˋ
+訫 0 ㄒㄧㄣˋ
+馸 0 ㄒㄧㄣˋ
+顖 0 ㄒㄧㄣˋ
+卂 0 ㄒㄧㄣˋ
+尋 0 ㄒㄧㄣˊ
+鄩 0 ㄒㄧㄣˊ
+杺 0 ㄒㄧㄣˊ
+攳 0 ㄒㄧㄣˊ
+襑 0 ㄒㄧㄣˊ
+鬵 0 ㄒㄧㄣˊ
+ㄊ 0 ㄊ
+偷 0 ㄊㄡ
+媮 0 ㄊㄡ
+偸 0 ㄊㄡ
+婾 0 ㄊㄡ
+鍮 0 ㄊㄡ
+黈 0 ㄊㄡˇ
+妵 0 ㄊㄡˇ
+紏 0 ㄊㄡˇ
+鈄 0 ㄊㄡˇ
+蘣 0 ㄊㄡˇ
+敨 0 ㄊㄡˇ
+斢 0 ㄊㄡˇ
+飳 0 ㄊㄡˇ
+透 0 ㄊㄡˋ
+斢 0 ㄊㄡˋ
+頭 0 ㄊㄡˊ
+投 0 ㄊㄡˊ
+牏 0 ㄊㄡˊ
+酘 0 ㄊㄡˊ
+骰 0 ㄊㄡˊ
+緰 0 ㄊㄡˊ
+头 0 ㄊㄡˊ
+坄 0 ㄊㄡˊ
+頭 0 ㄊㄡ˙
+头 0 ㄊㄡ˙
+疼 0 ㄊㄥˊ
+騰 0 ㄊㄥˊ
+藤 0 ㄊㄥˊ
+籐 0 ㄊㄥˊ
+謄 0 ㄊㄥˊ
+滕 0 ㄊㄥˊ
+螣 0 ㄊㄥˊ
+縢 0 ㄊㄥˊ
+邆 0 ㄊㄥˊ
+漛 0 ㄊㄥˊ
+駦 0 ㄊㄥˊ
+儯 0 ㄊㄥˊ
+籘 0 ㄊㄥˊ
+驣 0 ㄊㄥˊ
+幐 0 ㄊㄥˊ
+鰧 0 ㄊㄥˊ
+湯 0 ㄊㄤ
+鏜 0 ㄊㄤ
+鼞 0 ㄊㄤ
+蹚 0 ㄊㄤ
+蝪 0 ㄊㄤ
+薚 0 ㄊㄤ
+鐋 0 ㄊㄤ
+䠀 0 ㄊㄤ
+鞺 0 ㄊㄤ
+倘 0 ㄊㄤˇ
+躺 0 ㄊㄤˇ
+儻 0 ㄊㄤˇ
+淌 0 ㄊㄤˇ
+帑 0 ㄊㄤˇ
+惝 0 ㄊㄤˇ
+钂 0 ㄊㄤˇ
+鎲 0 ㄊㄤˇ
+戃 0 ㄊㄤˇ
+曭 0 ㄊㄤˇ
+爣 0 ㄊㄤˇ
+矘 0 ㄊㄤˇ
+徜 0 ㄊㄤˇ
+伖 0 ㄊㄤˇ
+偒 0 ㄊㄤˇ
+耥 0 ㄊㄤˇ
+趟 0 ㄊㄤˋ
+燙 0 ㄊㄤˋ
+摥 0 ㄊㄤˋ
+盪 0 ㄊㄤˋ
+䠀 0 ㄊㄤˋ
+堂 0 ㄊㄤˊ
+糖 0 ㄊㄤˊ
+唐 0 ㄊㄤˊ
+塘 0 ㄊㄤˊ
+膛 0 ㄊㄤˊ
+螳 0 ㄊㄤˊ
+棠 0 ㄊㄤˊ
+醣 0 ㄊㄤˊ
+搪 0 ㄊㄤˊ
+鏜 0 ㄊㄤˊ
+溏 0 ㄊㄤˊ
+螗 0 ㄊㄤˊ
+瑭 0 ㄊㄤˊ
+赯 0 ㄊㄤˊ
+榶 0 ㄊㄤˊ
+樘 0 ㄊㄤˊ
+漟 0 ㄊㄤˊ
+煻 0 ㄊㄤˊ
+鎕 0 ㄊㄤˊ
+闛 0 ㄊㄤˊ
+橖 0 ㄊㄤˊ
+蓎 0 ㄊㄤˊ
+磄 0 ㄊㄤˊ
+踼 0 ㄊㄤˊ
+薚 0 ㄊㄤˊ
+鶶 0 ㄊㄤˊ
+瞠 0 ㄊㄤˊ
+嵣 0 ㄊㄤˊ
+餳 0 ㄊㄤˊ
+坣 0 ㄊㄤˊ
+傏 0 ㄊㄤˊ
+啺 0 ㄊㄤˊ
+㭻 0 ㄊㄤˊ
+㑽 0 ㄊㄤˊ
+㜍 0 ㄊㄤˊ
+鄌 0 ㄊㄤˊ
+憆 0 ㄊㄤˊ
+禟 0 ㄊㄤˊ
+糃 0 ㄊㄤˊ
+糛 0 ㄊㄤˊ
+餹 0 ㄊㄤˊ
+饄 0 ㄊㄤˊ
+摚 0 ㄊㄤˊ
+膅 0 ㄊㄤˊ
+隚 0 ㄊㄤˊ
+篖 0 ㄊㄤˊ
+貪 0 ㄊㄢ
+灘 0 ㄊㄢ
+攤 0 ㄊㄢ
+癱 0 ㄊㄢ
+坍 0 ㄊㄢ
+怹 0 ㄊㄢ
+抩 0 ㄊㄢ
+舑 0 ㄊㄢ
+緂 0 ㄊㄢ
+探 0 ㄊㄢ
+嘽 0 ㄊㄢ
+橝 0 ㄊㄢ
+滩 0 ㄊㄢ
+噒 0 ㄊㄢ
+擹 0 ㄊㄢ
+坦 0 ㄊㄢˇ
+毯 0 ㄊㄢˇ
+袒 0 ㄊㄢˇ
+襢 0 ㄊㄢˇ
+忐 0 ㄊㄢˇ
+禫 0 ㄊㄢˇ
+菼 0 ㄊㄢˇ
+嗿 0 ㄊㄢˇ
+膻 0 ㄊㄢˇ
+憳 0 ㄊㄢˇ
+醓 0 ㄊㄢˇ
+裧 0 ㄊㄢˇ
+怛 0 ㄊㄢˇ
+氈 0 ㄊㄢˇ
+緂 0 ㄊㄢˇ
+儃 0 ㄊㄢˇ
+黮 0 ㄊㄢˇ
+氍 0 ㄊㄢˇ
+毡 0 ㄊㄢˇ
+憻 0 ㄊㄢˇ
+氊 0 ㄊㄢˇ
+璮 0 ㄊㄢˇ
+䏙 0 ㄊㄢˇ
+探 0 ㄊㄢˋ
+嘆 0 ㄊㄢˋ
+歎 0 ㄊㄢˋ
+碳 0 ㄊㄢˋ
+炭 0 ㄊㄢˋ
+賧 0 ㄊㄢˋ
+埮 0 ㄊㄢˋ
+湠 0 ㄊㄢˋ
+羰 0 ㄊㄢˋ
+撢 0 ㄊㄢˋ
+舕 0 ㄊㄢˋ
+憛 0 ㄊㄢˋ
+䑙 0 ㄊㄢˋ
+舚 0 ㄊㄢˋ
+䗊 0 ㄊㄢˋ
+談 0 ㄊㄢˊ
+彈 0 ㄊㄢˊ
+痰 0 ㄊㄢˊ
+潭 0 ㄊㄢˊ
+譚 0 ㄊㄢˊ
+檀 0 ㄊㄢˊ
+壇 0 ㄊㄢˊ
+曇 0 ㄊㄢˊ
+罈 0 ㄊㄢˊ
+覃 0 ㄊㄢˊ
+郯 0 ㄊㄢˊ
+錟 0 ㄊㄢˊ
+餤 0 ㄊㄢˊ
+鐔 0 ㄊㄢˊ
+倓 0 ㄊㄢˊ
+醰 0 ㄊㄢˊ
+貚 0 ㄊㄢˊ
+婒 0 ㄊㄢˊ
+憛 0 ㄊㄢˊ
+藫 0 ㄊㄢˊ
+橝 0 ㄊㄢˊ
+鷤 0 ㄊㄢˊ
+澹 0 ㄊㄢˊ
+惔 0 ㄊㄢˊ
+嘾 0 ㄊㄢˊ
+曋 0 ㄊㄢˊ
+燂 0 ㄊㄢˊ
+蕁 0 ㄊㄢˊ
+瞫 0 ㄊㄢˊ
+邅 0 ㄊㄢˊ
+皽 0 ㄊㄢˊ
+蟫 0 ㄊㄢˊ
+饘 0 ㄊㄢˊ
+鷣 0 ㄊㄢˊ
+弹 0 ㄊㄢˊ
+聅 0 ㄊㄢˊ
+弾 0 ㄊㄢˊ
+墵 0 ㄊㄢˊ
+墰 0 ㄊㄢˊ
+醈 0 ㄊㄢˊ
+壜 0 ㄊㄢˊ
+罎 0 ㄊㄢˊ
+它 0 ㄊㄚ
+他 0 ㄊㄚ
+她 0 ㄊㄚ
+牠 0 ㄊㄚ
+塌 0 ㄊㄚ
+褟 0 ㄊㄚ
+祂 0 ㄊㄚ
+禢 0 ㄊㄚ
+灺 0 ㄊㄚ
+趿 0 ㄊㄚ
+搨 0 ㄊㄚ
+鉈 0 ㄊㄚ
+靸 0 ㄊㄚ
+禤 0 ㄊㄚ
+炨 0 ㄊㄚ
+炧 0 ㄊㄚ
+溻 0 ㄊㄚ
+鉇 0 ㄊㄚ
+佗 0 ㄊㄚ
+塔 0 ㄊㄚˇ
+榙 0 ㄊㄚˇ
+鎝 0 ㄊㄚˇ
+獺 0 ㄊㄚˇ
+嗒 0 ㄊㄚˇ
+溚 0 ㄊㄚˇ
+墖 0 ㄊㄚˇ
+㗳 0 ㄊㄚˇ
+踏 0 ㄊㄚˋ
+榻 0 ㄊㄚˋ
+蹋 0 ㄊㄚˋ
+塌 0 ㄊㄚˋ
+獺 0 ㄊㄚˋ
+搨 0 ㄊㄚˋ
+遢 0 ㄊㄚˋ
+嚃 0 ㄊㄚˋ
+躂 0 ㄊㄚˋ
+沓 0 ㄊㄚˋ
+嗒 0 ㄊㄚˋ
+撻 0 ㄊㄚˋ
+遝 0 ㄊㄚˋ
+闥 0 ㄊㄚˋ
+鎉 0 ㄊㄚˋ
+闒 0 ㄊㄚˋ
+錔 0 ㄊㄚˋ
+鞜 0 ㄊㄚˋ
+鞳 0 ㄊㄚˋ
+鰨 0 ㄊㄚˋ
+羍 0 ㄊㄚˋ
+涾 0 ㄊㄚˋ
+傝 0 ㄊㄚˋ
+毾 0 ㄊㄚˋ
+誻 0 ㄊㄚˋ
+鑉 0 ㄊㄚˋ
+漯 0 ㄊㄚˋ
+迖 0 ㄊㄚˋ
+濌 0 ㄊㄚˋ
+龘 0 ㄊㄚˋ
+拓 0 ㄊㄚˋ
+達 0 ㄊㄚˋ
+呇 0 ㄊㄚˋ
+褟 0 ㄊㄚˋ
+闟 0 ㄊㄚˋ
+达 0 ㄊㄚˋ
+迏 0 ㄊㄚˋ
+狧 0 ㄊㄚˋ
+崉 0 ㄊㄚˋ
+㳫 0 ㄊㄚˋ
+㭼 0 ㄊㄚˋ
+㒓 0 ㄊㄚˋ
+澾 0 ㄊㄚˋ
+橽 0 ㄊㄚˋ
+鮙 0 ㄊㄚˋ
+爡 0 ㄊㄚˋ
+躢 0 ㄊㄚˋ
+眔 0 ㄊㄚˋ
+𠴲 0 ㄊㄚˋ
+㛥 0 ㄊㄚˋ
+䂿 0 ㄊㄚˋ
+㿹 0 ㄊㄚˋ
+蹹 0 ㄊㄚˋ
+譶 0 ㄊㄚˋ
+龖 0 ㄊㄚˋ
+𪘁 0 ㄊㄚˋ
+胎 0 ㄊㄞ
+苔 0 ㄊㄞ
+台 0 ㄊㄞ
+囼 0 ㄊㄞ
+孡 0 ㄊㄞ
+𧉟 0 ㄊㄞ
+太 0 ㄊㄞˋ
+態 0 ㄊㄞˋ
+泰 0 ㄊㄞˋ
+汰 0 ㄊㄞˋ
+鈦 0 ㄊㄞˋ
+燤 0 ㄊㄞˋ
+溙 0 ㄊㄞˋ
+呔 0 ㄊㄞˋ
+肽 0 ㄊㄞˋ
+酞 0 ㄊㄞˋ
+大 0 ㄊㄞˋ
+忕 0 ㄊㄞˋ
+釱 0 ㄊㄞˋ
+亣 0 ㄊㄞˋ
+忲 0 ㄊㄞˋ
+鉪 0 ㄊㄞˋ
+曃 0 ㄊㄞˋ
+冭 0 ㄊㄞˋ
+夳 0 ㄊㄞˋ
+舦 0 ㄊㄞˋ
+台 0 ㄊㄞˊ
+臺 0 ㄊㄞˊ
+抬 0 ㄊㄞˊ
+颱 0 ㄊㄞˊ
+苔 0 ㄊㄞˊ
+邰 0 ㄊㄞˊ
+跆 0 ㄊㄞˊ
+檯 0 ㄊㄞˊ
+薹 0 ㄊㄞˊ
+炱 0 ㄊㄞˊ
+駘 0 ㄊㄞˊ
+鮐 0 ㄊㄞˊ
+儓 0 ㄊㄞˊ
+嬯 0 ㄊㄞˊ
+籉 0 ㄊㄞˊ
+旲 0 ㄊㄞˊ
+秮 0 ㄊㄞˊ
+殆 0 ㄊㄞˊ
+笞 0 ㄊㄞˊ
+鈶 0 ㄊㄞˊ
+齝 0 ㄊㄞˊ
+坮 0 ㄊㄞˊ
+枱 0 ㄊㄞˊ
+炲 0 ㄊㄞˊ
+菭 0 ㄊㄞˊ
+擡 0 ㄊㄞˊ
+呞 0 ㄊㄞˊ
+䔶 0 ㄊㄞˊ
+㘆 0 ㄊㄞˊ
+禿 0 ㄊㄨ
+凸 0 ㄊㄨ
+鵚 0 ㄊㄨ
+涋 0 ㄊㄨ
+捸 0 ㄊㄨ
+嶀 0 ㄊㄨ
+廜 0 ㄊㄨ
+秃 0 ㄊㄨ
+庩 0 ㄊㄨ
+痜 0 ㄊㄨ
+通 0 ㄊㄨㄥ
+恫 0 ㄊㄨㄥ
+蓪 0 ㄊㄨㄥ
+痌 0 ㄊㄨㄥ
+炵 0 ㄊㄨㄥ
+熥 0 ㄊㄨㄥ
+狪 0 ㄊㄨㄥ
+囲 0 ㄊㄨㄥ
+樋 0 ㄊㄨㄥ
+統 0 ㄊㄨㄥˇ
+筒 0 ㄊㄨㄥˇ
+桶 0 ㄊㄨㄥˇ
+捅 0 ㄊㄨㄥˇ
+垌 0 ㄊㄨㄥˇ
+筩 0 ㄊㄨㄥˇ
+姛 0 ㄊㄨㄥˇ
+痛 0 ㄊㄨㄥˋ
+衕 0 ㄊㄨㄥˋ
+慟 0 ㄊㄨㄥˋ
+蘳 0 ㄊㄨㄥˋ
+疼 0 ㄊㄨㄥˋ
+憅 0 ㄊㄨㄥˋ
+同 0 ㄊㄨㄥˊ
+童 0 ㄊㄨㄥˊ
+銅 0 ㄊㄨㄥˊ
+桐 0 ㄊㄨㄥˊ
+潼 0 ㄊㄨㄥˊ
+瞳 0 ㄊㄨㄥˊ
+砼 0 ㄊㄨㄥˊ
+彤 0 ㄊㄨㄥˊ
+佟 0 ㄊㄨㄥˊ
+僮 0 ㄊㄨㄥˊ
+峒 0 ㄊㄨㄥˊ
+侗 0 ㄊㄨㄥˊ
+艟 0 ㄊㄨㄥˊ
+曈 0 ㄊㄨㄥˊ
+膧 0 ㄊㄨㄥˊ
+穜 0 ㄊㄨㄥˊ
+罿 0 ㄊㄨㄥˊ
+硐 0 ㄊㄨㄥˊ
+橦 0 ㄊㄨㄥˊ
+氃 0 ㄊㄨㄥˊ
+獞 0 ㄊㄨㄥˊ
+茼 0 ㄊㄨㄥˊ
+烔 0 ㄊㄨㄥˊ
+浵 0 ㄊㄨㄥˊ
+鉖 0 ㄊㄨㄥˊ
+餇 0 ㄊㄨㄥˊ
+仝 0 ㄊㄨㄥˊ
+酮 0 ㄊㄨㄥˊ
+迵 0 ㄊㄨㄥˊ
+粡 0 ㄊㄨㄥˊ
+絧 0 ㄊㄨㄥˊ
+朣 0 ㄊㄨㄥˊ
+犝 0 ㄊㄨㄥˊ
+蕫 0 ㄊㄨㄥˊ
+鮦 0 ㄊㄨㄥˊ
+鼨 0 ㄊㄨㄥˊ
+爞 0 ㄊㄨㄥˊ
+哃 0 ㄊㄨㄥˊ
+詷 0 ㄊㄨㄥˊ
+洞 0 ㄊㄨㄥˊ
+胴 0 ㄊㄨㄥˊ
+筒 0 ㄊㄨㄥˊ
+炵 0 ㄊㄨㄥˊ
+戙 0 ㄊㄨㄥˊ
+筩 0 ㄊㄨㄥˊ
+赨 0 ㄊㄨㄥˊ
+庝 0 ㄊㄨㄥˊ
+峝 0 ㄊㄨㄥˊ
+晍 0 ㄊㄨㄥˊ
+蚒 0 ㄊㄨㄥˊ
+秱 0 ㄊㄨㄥˊ
+勭 0 ㄊㄨㄥˊ
+燑 0 ㄊㄨㄥˊ
+眮 0 ㄊㄨㄥˊ
+硧 0 ㄊㄨㄥˊ
+鉵 0 ㄊㄨㄥˊ
+㼿 0 ㄊㄨㄥˊ
+湍 0 ㄊㄨㄢ
+煓 0 ㄊㄨㄢ
+貒 0 ㄊㄨㄢ
+遄 0 ㄊㄨㄢ
+猯 0 ㄊㄨㄢ
+䝎 0 ㄊㄨㄢ
+畽 0 ㄊㄨㄢˇ
+疃 0 ㄊㄨㄢˇ
+彖 0 ㄊㄨㄢˋ
+褖 0 ㄊㄨㄢˋ
+湪 0 ㄊㄨㄢˋ
+團 0 ㄊㄨㄢˊ
+摶 0 ㄊㄨㄢˊ
+糰 0 ㄊㄨㄢˊ
+漙 0 ㄊㄨㄢˊ
+剸 0 ㄊㄨㄢˊ
+慱 0 ㄊㄨㄢˊ
+鏄 0 ㄊㄨㄢˊ
+鷻 0 ㄊㄨㄢˊ
+槫 0 ㄊㄨㄢˊ
+湍 0 ㄊㄨㄢˊ
+剬 0 ㄊㄨㄢˊ
+篿 0 ㄊㄨㄢˊ
+鷒 0 ㄊㄨㄢˊ
+団 0 ㄊㄨㄢˊ
+檲 0 ㄊㄨㄢˊ
+土 0 ㄊㄨˇ
+吐 0 ㄊㄨˇ
+釷 0 ㄊㄨˇ
+芏 0 ㄊㄨˇ
+唋 0 ㄊㄨˇ
+圡 0 ㄊㄨˇ
+兔 0 ㄊㄨˋ
+吐 0 ㄊㄨˋ
+菟 0 ㄊㄨˋ
+鵵 0 ㄊㄨˋ
+堍 0 ㄊㄨˋ
+唾 0 ㄊㄨˋ
+兎 0 ㄊㄨˋ
+迌 0 ㄊㄨˋ
+圖 0 ㄊㄨˊ
+途 0 ㄊㄨˊ
+突 0 ㄊㄨˊ
+徒 0 ㄊㄨˊ
+塗 0 ㄊㄨˊ
+屠 0 ㄊㄨˊ
+凸 0 ㄊㄨˊ
+荼 0 ㄊㄨˊ
+涂 0 ㄊㄨˊ
+余 0 ㄊㄨˊ
+酴 0 ㄊㄨˊ
+瘏 0 ㄊㄨˊ
+稌 0 ㄊㄨˊ
+腯 0 ㄊㄨˊ
+峹 0 ㄊㄨˊ
+葖 0 ㄊㄨˊ
+捈 0 ㄊㄨˊ
+怢 0 ㄊㄨˊ
+鍎 0 ㄊㄨˊ
+跿 0 ㄊㄨˊ
+梌 0 ㄊㄨˊ
+湥 0 ㄊㄨˊ
+筡 0 ㄊㄨˊ
+蒤 0 ㄊㄨˊ
+瑹 0 ㄊㄨˊ
+駼 0 ㄊㄨˊ
+鶟 0 ㄊㄨˊ
+鷋 0 ㄊㄨˊ
+鼵 0 ㄊㄨˊ
+嵞 0 ㄊㄨˊ
+廜 0 ㄊㄨˊ
+潳 0 ㄊㄨˊ
+鷵 0 ㄊㄨˊ
+陡 0 ㄊㄨˊ
+徙 0 ㄊㄨˊ
+菟 0 ㄊㄨˊ
+唋 0 ㄊㄨˊ
+悇 0 ㄊㄨˊ
+蓗 0 ㄊㄨˊ
+鵌 0 ㄊㄨˊ
+図 0 ㄊㄨˊ
+阧 0 ㄊㄨˊ
+凃 0 ㄊㄨˊ
+鈯 0 ㄊㄨˊ
+圗 0 ㄊㄨˊ
+摕 0 ㄊㄨˊ
+宊 0 ㄊㄨˊ
+㻌 0 ㄊㄨˊ
+堗 0 ㄊㄨˊ
+揬 0 ㄊㄨˊ
+䣝 0 ㄊㄨˊ
+䠈 0 ㄊㄨˊ
+馟 0 ㄊㄨˊ
+脫 0 ㄊㄨㄛ
+拖 0 ㄊㄨㄛ
+托 0 ㄊㄨㄛ
+託 0 ㄊㄨㄛ
+堶 0 ㄊㄨㄛ
+侂 0 ㄊㄨㄛ
+挩 0 ㄊㄨㄛ
+扥 0 ㄊㄨㄛ
+矺 0 ㄊㄨㄛ
+沰 0 ㄊㄨㄛ
+馲 0 ㄊㄨㄛ
+侻 0 ㄊㄨㄛ
+詑 0 ㄊㄨㄛ
+魠 0 ㄊㄨㄛ
+他 0 ㄊㄨㄛ
+它 0 ㄊㄨㄛ
+佗 0 ㄊㄨㄛ
+牠 0 ㄊㄨㄛ
+扡 0 ㄊㄨㄛ
+灺 0 ㄊㄨㄛ
+虴 0 ㄊㄨㄛ
+袘 0 ㄊㄨㄛ
+飥 0 ㄊㄨㄛ
+汑 0 ㄊㄨㄛ
+杔 0 ㄊㄨㄛ
+拕 0 ㄊㄨㄛ
+炨 0 ㄊㄨㄛ
+炧 0 ㄊㄨㄛ
+捝 0 ㄊㄨㄛ
+脱 0 ㄊㄨㄛ
+涶 0 ㄊㄨㄛ
+咃 0 ㄊㄨㄛ
+驝 0 ㄊㄨㄛ
+妥 0 ㄊㄨㄛˇ
+橢 0 ㄊㄨㄛˇ
+撱 0 ㄊㄨㄛˇ
+庹 0 ㄊㄨㄛˇ
+嫷 0 ㄊㄨㄛˇ
+脫 0 ㄊㄨㄛˇ
+脱 0 ㄊㄨㄛˇ
+媠 0 ㄊㄨㄛˇ
+楕 0 ㄊㄨㄛˇ
+鋖 0 ㄊㄨㄛˇ
+鵎 0 ㄊㄨㄛˇ
+㨊 0 ㄊㄨㄛˇ
+鰖 0 ㄊㄨㄛˇ
+拓 0 ㄊㄨㄛˋ
+唾 0 ㄊㄨㄛˋ
+柝 0 ㄊㄨㄛˋ
+籜 0 ㄊㄨㄛˋ
+蘀 0 ㄊㄨㄛˋ
+跅 0 ㄊㄨㄛˋ
+毻 0 ㄊㄨㄛˋ
+毤 0 ㄊㄨㄛˋ
+魄 0 ㄊㄨㄛˋ
+沰 0 ㄊㄨㄛˋ
+柘 0 ㄊㄨㄛˋ
+莌 0 ㄊㄨㄛˋ
+袥 0 ㄊㄨㄛˋ
+駝 0 ㄊㄨㄛˊ
+陀 0 ㄊㄨㄛˊ
+馱 0 ㄊㄨㄛˊ
+沱 0 ㄊㄨㄛˊ
+佗 0 ㄊㄨㄛˊ
+鴕 0 ㄊㄨㄛˊ
+跎 0 ㄊㄨㄛˊ
+橐 0 ㄊㄨㄛˊ
+坨 0 ㄊㄨㄛˊ
+紽 0 ㄊㄨㄛˊ
+酡 0 ㄊㄨㄛˊ
+砣 0 ㄊㄨㄛˊ
+阤 0 ㄊㄨㄛˊ
+鮀 0 ㄊㄨㄛˊ
+岮 0 ㄊㄨㄛˊ
+碢 0 ㄊㄨㄛˊ
+鞁 0 ㄊㄨㄛˊ
+驒 0 ㄊㄨㄛˊ
+鼉 0 ㄊㄨㄛˊ
+鉈 0 ㄊㄨㄛˊ
+袉 0 ㄊㄨㄛˊ
+飥 0 ㄊㄨㄛˊ
+柁 0 ㄊㄨㄛˊ
+堶 0 ㄊㄨㄛˊ
+詑 0 ㄊㄨㄛˊ
+沲 0 ㄊㄨㄛˊ
+陁 0 ㄊㄨㄛˊ
+砤 0 ㄊㄨㄛˊ
+槖 0 ㄊㄨㄛˊ
+䭾 0 ㄊㄨㄛˊ
+駄 0 ㄊㄨㄛˊ
+駞 0 ㄊㄨㄛˊ
+踻 0 ㄊㄨㄛˊ
+鼧 0 ㄊㄨㄛˊ
+彵 0 ㄊㄨㄛˊ
+鉇 0 ㄊㄨㄛˊ
+推 0 ㄊㄨㄟ
+蓷 0 ㄊㄨㄟ
+藬 0 ㄊㄨㄟ
+太 0 ㄊㄨㄟ
+蘈 0 ㄊㄨㄟ
+㷟 0 ㄊㄨㄟ
+煺 0 ㄊㄨㄟ
+腿 0 ㄊㄨㄟˇ
+俀 0 ㄊㄨㄟˇ
+僓 0 ㄊㄨㄟˇ
+聉 0 ㄊㄨㄟˇ
+脮 0 ㄊㄨㄟˇ
+蹆 0 ㄊㄨㄟˇ
+骽 0 ㄊㄨㄟˇ
+退 0 ㄊㄨㄟˋ
+蛻 0 ㄊㄨㄟˋ
+駾 0 ㄊㄨㄟˋ
+螁 0 ㄊㄨㄟˋ
+褪 0 ㄊㄨㄟˋ
+裉 0 ㄊㄨㄟˋ
+裞 0 ㄊㄨㄟˋ
+蜕 0 ㄊㄨㄟˋ
+褃 0 ㄊㄨㄟˋ
+娧 0 ㄊㄨㄟˋ
+頹 0 ㄊㄨㄟˊ
+穨 0 ㄊㄨㄟˊ
+隤 0 ㄊㄨㄟˊ
+魋 0 ㄊㄨㄟˊ
+橔 0 ㄊㄨㄟˊ
+僓 0 ㄊㄨㄟˊ
+蹪 0 ㄊㄨㄟˊ
+弚 0 ㄊㄨㄟˊ
+墤 0 ㄊㄨㄟˊ
+頺 0 ㄊㄨㄟˊ
+頽 0 ㄊㄨㄟˊ
+謉 0 ㄊㄨㄟˊ
+㿗 0 ㄊㄨㄟˊ
+尵 0 ㄊㄨㄟˊ
+吞 0 ㄊㄨㄣ
+暾 0 ㄊㄨㄣ
+啍 0 ㄊㄨㄣ
+涒 0 ㄊㄨㄣ
+旽 0 ㄊㄨㄣ
+昋 0 ㄊㄨㄣ
+呑 0 ㄊㄨㄣ
+噋 0 ㄊㄨㄣ
+黗 0 ㄊㄨㄣ
+朜 0 ㄊㄨㄣ
+汆 0 ㄊㄨㄣˇ
+吨 0 ㄊㄨㄣˇ
+畽 0 ㄊㄨㄣˇ
+疃 0 ㄊㄨㄣˇ
+褪 0 ㄊㄨㄣˋ
+螁 0 ㄊㄨㄣˋ
+屯 0 ㄊㄨㄣˊ
+囤 0 ㄊㄨㄣˊ
+豚 0 ㄊㄨㄣˊ
+飩 0 ㄊㄨㄣˊ
+臀 0 ㄊㄨㄣˊ
+軘 0 ㄊㄨㄣˊ
+魨 0 ㄊㄨㄣˊ
+忳 0 ㄊㄨㄣˊ
+芚 0 ㄊㄨㄣˊ
+吨 0 ㄊㄨㄣˊ
+拵 0 ㄊㄨㄣˊ
+肫 0 ㄊㄨㄣˊ
+坉 0 ㄊㄨㄣˊ
+庉 0 ㄊㄨㄣˊ
+杶 0 ㄊㄨㄣˊ
+炖 0 ㄊㄨㄣˊ
+烼 0 ㄊㄨㄣˊ
+棆 0 ㄊㄨㄣˊ
+遯 0 ㄊㄨㄣˊ
+豘 0 ㄊㄨㄣˊ
+踲 0 ㄊㄨㄣˊ
+霕 0 ㄊㄨㄣˊ
+櫄 0 ㄊㄨㄣˊ
+䐁 0 ㄊㄨㄣˊ
+臋 0 ㄊㄨㄣˊ
+特 0 ㄊㄜˋ
+慝 0 ㄊㄜˋ
+忒 0 ㄊㄜˋ
+忑 0 ㄊㄜˋ
+鋱 0 ㄊㄜˋ
+貣 0 ㄊㄜˋ
+蟘 0 ㄊㄜˋ
+貸 0 ㄊㄜˋ
+螣 0 ㄊㄜˋ
+蚮 0 ㄊㄜˋ
+脦 0 ㄊㄜˋ
+掏 0 ㄊㄠ
+濤 0 ㄊㄠ
+滔 0 ㄊㄠ
+饕 0 ㄊㄠ
+韜 0 ㄊㄠ
+弢 0 ㄊㄠ
+絛 0 ㄊㄠ
+縚 0 ㄊㄠ
+搯 0 ㄊㄠ
+慆 0 ㄊㄠ
+槄 0 ㄊㄠ
+幍 0 ㄊㄠ
+翢 0 ㄊㄠ
+嫍 0 ㄊㄠ
+蜪 0 ㄊㄠ
+叨 0 ㄊㄠ
+挑 0 ㄊㄠ
+夲 0 ㄊㄠ
+涛 0 ㄊㄠ
+瑫 0 ㄊㄠ
+飸 0 ㄊㄠ
+縧 0 ㄊㄠ
+謟 0 ㄊㄠ
+轁 0 ㄊㄠ
+䤾 0 ㄊㄠ
+饀 0 ㄊㄠ
+鞱 0 ㄊㄠ
+夵 0 ㄊㄠ
+㫞 0 ㄊㄠ
+䄻 0 ㄊㄠ
+詜 0 ㄊㄠ
+討 0 ㄊㄠˇ
+䵚 0 ㄊㄠˇ
+套 0 ㄊㄠˋ
+逃 0 ㄊㄠˊ
+桃 0 ㄊㄠˊ
+陶 0 ㄊㄠˊ
+萄 0 ㄊㄠˊ
+淘 0 ㄊㄠˊ
+濤 0 ㄊㄠˊ
+啕 0 ㄊㄠˊ
+洮 0 ㄊㄠˊ
+燾 0 ㄊㄠˊ
+檮 0 ㄊㄠˊ
+匋 0 ㄊㄠˊ
+咷 0 ㄊㄠˊ
+綯 0 ㄊㄠˊ
+鞀 0 ㄊㄠˊ
+醄 0 ㄊㄠˊ
+騊 0 ㄊㄠˊ
+錭 0 ㄊㄠˊ
+駣 0 ㄊㄠˊ
+祹 0 ㄊㄠˊ
+鋾 0 ㄊㄠˊ
+掏 0 ㄊㄠˊ
+滔 0 ㄊㄠˊ
+蜪 0 ㄊㄠˊ
+翿 0 ㄊㄠˊ
+迯 0 ㄊㄠˊ
+涛 0 ㄊㄠˊ
+裪 0 ㄊㄠˊ
+鞉 0 ㄊㄠˊ
+饀 0 ㄊㄠˊ
+鼗 0 ㄊㄠˊ
+萄 0 ㄊㄠ˙
+梯 0 ㄊㄧ
+踢 0 ㄊㄧ
+剔 0 ㄊㄧ
+焍 0 ㄊㄧ
+掦 0 ㄊㄧ
+貼 0 ㄊㄧㄝ
+帖 0 ㄊㄧㄝ
+怗 0 ㄊㄧㄝ
+鐵 0 ㄊㄧㄝˇ
+帖 0 ㄊㄧㄝˇ
+驖 0 ㄊㄧㄝˇ
+僣 0 ㄊㄧㄝˇ
+銕 0 ㄊㄧㄝˇ
+鉄 0 ㄊㄧㄝˇ
+帖 0 ㄊㄧㄝˋ
+餮 0 ㄊㄧㄝˋ
+蛈 0 ㄊㄧㄝˋ
+飻 0 ㄊㄧㄝˋ
+聽 0 ㄊㄧㄥ
+廳 0 ㄊㄧㄥ
+汀 0 ㄊㄧㄥ
+桯 0 ㄊㄧㄥ
+艼 0 ㄊㄧㄥ
+耵 0 ㄊㄧㄥ
+听 0 ㄊㄧㄥ
+朾 0 ㄊㄧㄥ
+烴 0 ㄊㄧㄥ
+綎 0 ㄊㄧㄥ
+庁 0 ㄊㄧㄥ
+鞓 0 ㄊㄧㄥ
+聴 0 ㄊㄧㄥ
+廰 0 ㄊㄧㄥ
+聼 0 ㄊㄧㄥ
+耓 0 ㄊㄧㄥ
+挺 0 ㄊㄧㄥˇ
+艇 0 ㄊㄧㄥˇ
+町 0 ㄊㄧㄥˇ
+梃 0 ㄊㄧㄥˇ
+頲 0 ㄊㄧㄥˇ
+珽 0 ㄊㄧㄥˇ
+脡 0 ㄊㄧㄥˇ
+鋌 0 ㄊㄧㄥˇ
+烶 0 ㄊㄧㄥˇ
+圢 0 ㄊㄧㄥˇ
+侹 0 ㄊㄧㄥˇ
+娗 0 ㄊㄧㄥˇ
+侱 0 ㄊㄧㄥˇ
+涏 0 ㄊㄧㄥˇ
+誔 0 ㄊㄧㄥˇ
+𡈼 0 ㄊㄧㄥˇ
+聽 0 ㄊㄧㄥˋ
+庭 0 ㄊㄧㄥˋ
+聴 0 ㄊㄧㄥˋ
+聼 0 ㄊㄧㄥˋ
+停 0 ㄊㄧㄥˊ
+庭 0 ㄊㄧㄥˊ
+廷 0 ㄊㄧㄥˊ
+亭 0 ㄊㄧㄥˊ
+蜓 0 ㄊㄧㄥˊ
+霆 0 ㄊㄧㄥˊ
+婷 0 ㄊㄧㄥˊ
+渟 0 ㄊㄧㄥˊ
+莛 0 ㄊㄧㄥˊ
+朾 0 ㄊㄧㄥˊ
+筳 0 ㄊㄧㄥˊ
+蝏 0 ㄊㄧㄥˊ
+聤 0 ㄊㄧㄥˊ
+葶 0 ㄊㄧㄥˊ
+鼮 0 ㄊㄧㄥˊ
+楟 0 ㄊㄧㄥˊ
+榳 0 ㄊㄧㄥˊ
+閮 0 ㄊㄧㄥˊ
+嵉 0 ㄊㄧㄥˊ
+綎 0 ㄊㄧㄥˊ
+邒 0 ㄊㄧㄥˊ
+㨩 0 ㄊㄧㄥˊ
+葕 0 ㄊㄧㄥˊ
+諪 0 ㄊㄧㄥˊ
+天 0 ㄊㄧㄢ
+添 0 ㄊㄧㄢ
+倎 0 ㄊㄧㄢ
+屇 0 ㄊㄧㄢ
+酟 0 ㄊㄧㄢ
+婖 0 ㄊㄧㄢ
+兲 0 ㄊㄧㄢ
+沗 0 ㄊㄧㄢ
+詽 0 ㄊㄧㄢ
+靝 0 ㄊㄧㄢ
+訮 0 ㄊㄧㄢ
+黇 0 ㄊㄧㄢ
+舔 0 ㄊㄧㄢˇ
+忝 0 ㄊㄧㄢˇ
+殄 0 ㄊㄧㄢˇ
+腆 0 ㄊㄧㄢˇ
+靦 0 ㄊㄧㄢˇ
+淟 0 ㄊㄧㄢˇ
+餂 0 ㄊㄧㄢˇ
+賟 0 ㄊㄧㄢˇ
+悿 0 ㄊㄧㄢˇ
+蚕 0 ㄊㄧㄢˇ
+晪 0 ㄊㄧㄢˇ
+痶 0 ㄊㄧㄢˇ
+恬 0 ㄊㄧㄢˇ
+倎 0 ㄊㄧㄢˇ
+琠 0 ㄊㄧㄢˇ
+跈 0 ㄊㄧㄢˇ
+銛 0 ㄊㄧㄢˇ
+錪 0 ㄊㄧㄢˇ
+㙉 0 ㄊㄧㄢˇ
+睓 0 ㄊㄧㄢˇ
+覥 0 ㄊㄧㄢˇ
+鍩 0 ㄊㄧㄢˇ
+㥏 0 ㄊㄧㄢˇ
+銽 0 ㄊㄧㄢˇ
+掭 0 ㄊㄧㄢˋ
+煔 0 ㄊㄧㄢˋ
+瑱 0 ㄊㄧㄢˋ
+蚺 0 ㄊㄧㄢˋ
+蚦 0 ㄊㄧㄢˋ
+㐁 0 ㄊㄧㄢˋ
+田 0 ㄊㄧㄢˊ
+甜 0 ㄊㄧㄢˊ
+填 0 ㄊㄧㄢˊ
+恬 0 ㄊㄧㄢˊ
+闐 0 ㄊㄧㄢˊ
+畋 0 ㄊㄧㄢˊ
+窴 0 ㄊㄧㄢˊ
+沺 0 ㄊㄧㄢˊ
+盷 0 ㄊㄧㄢˊ
+湉 0 ㄊㄧㄢˊ
+菾 0 ㄊㄧㄢˊ
+磌 0 ㄊㄧㄢˊ
+佃 0 ㄊㄧㄢˊ
+滇 0 ㄊㄧㄢˊ
+鈿 0 ㄊㄧㄢˊ
+屇 0 ㄊㄧㄢˊ
+搷 0 ㄊㄧㄢˊ
+鷏 0 ㄊㄧㄢˊ
+胋 0 ㄊㄧㄢˊ
+甛 0 ㄊㄧㄢˊ
+塡 0 ㄊㄧㄢˊ
+璳 0 ㄊㄧㄢˊ
+體 0 ㄊㄧˇ
+体 0 ㄊㄧˇ
+綈 0 ㄊㄧˇ
+挮 0 ㄊㄧˇ
+躰 0 ㄊㄧˇ
+骵 0 ㄊㄧˇ
+軆 0 ㄊㄧˇ
+替 0 ㄊㄧˋ
+惕 0 ㄊㄧˋ
+涕 0 ㄊㄧˋ
+屜 0 ㄊㄧˋ
+悌 0 ㄊㄧˋ
+剃 0 ㄊㄧˋ
+銻 0 ㄊㄧˋ
+嚏 0 ㄊㄧˋ
+倜 0 ㄊㄧˋ
+薙 0 ㄊㄧˋ
+殢 0 ㄊㄧˋ
+裼 0 ㄊㄧˋ
+揥 0 ㄊㄧˋ
+籊 0 ㄊㄧˋ
+鬄 0 ㄊㄧˋ
+悐 0 ㄊㄧˋ
+褅 0 ㄊㄧˋ
+逖 0 ㄊㄧˋ
+弟 0 ㄊㄧˋ
+娣 0 ㄊㄧˋ
+啻 0 ㄊㄧˋ
+棣 0 ㄊㄧˋ
+迖 0 ㄊㄧˋ
+俶 0 ㄊㄧˋ
+睇 0 ㄊㄧˋ
+疐 0 ㄊㄧˋ
+懥 0 ㄊㄧˋ
+擿 0 ㄊㄧˋ
+趯 0 ㄊㄧˋ
+戻 0 ㄊㄧˋ
+达 0 ㄊㄧˋ
+屉 0 ㄊㄧˋ
+迏 0 ㄊㄧˋ
+惖 0 ㄊㄧˋ
+逷 0 ㄊㄧˋ
+髢 0 ㄊㄧˋ
+歒 0 ㄊㄧˋ
+䞶 0 ㄊㄧˋ
+鬀 0 ㄊㄧˋ
+嚔 0 ㄊㄧˋ
+鐟 0 ㄊㄧˋ
+髰 0 ㄊㄧˋ
+䶑 0 ㄊㄧˋ
+題 0 ㄊㄧˊ
+提 0 ㄊㄧˊ
+啼 0 ㄊㄧˊ
+堤 0 ㄊㄧˊ
+蹄 0 ㄊㄧˊ
+醍 0 ㄊㄧˊ
+禔 0 ㄊㄧˊ
+稊 0 ㄊㄧˊ
+緹 0 ㄊㄧˊ
+荑 0 ㄊㄧˊ
+騠 0 ㄊㄧˊ
+隄 0 ㄊㄧˊ
+鶗 0 ㄊㄧˊ
+惿 0 ㄊㄧˊ
+厗 0 ㄊㄧˊ
+鍗 0 ㄊㄧˊ
+偍 0 ㄊㄧˊ
+趧 0 ㄊㄧˊ
+謕 0 ㄊㄧˊ
+鶙 0 ㄊㄧˊ
+崹 0 ㄊㄧˊ
+睼 0 ㄊㄧˊ
+蝭 0 ㄊㄧˊ
+蕛 0 ㄊㄧˊ
+鷤 0 ㄊㄧˊ
+鯷 0 ㄊㄧˊ
+鵜 0 ㄊㄧˊ
+珶 0 ㄊㄧˊ
+媞 0 ㄊㄧˊ
+蛦 0 ㄊㄧˊ
+綈 0 ㄊㄧˊ
+褆 0 ㄊㄧˊ
+鍉 0 ㄊㄧˊ
+鷈 0 ㄊㄧˊ
+鼶 0 ㄊㄧˊ
+埞 0 ㄊㄧˊ
+嗁 0 ㄊㄧˊ
+瑅 0 ㄊㄧˊ
+遆 0 ㄊㄧˊ
+碮 0 ㄊㄧˊ
+漽 0 ㄊㄧˊ
+蹏 0 ㄊㄧˊ
+禵 0 ㄊㄧˊ
+罤 0 ㄊㄧˊ
+䬫 0 ㄊㄧˊ
+䔶 0 ㄊㄧˊ
+鴺 0 ㄊㄧˊ
+鮷 0 ㄊㄧˊ
+鷉 0 ㄊㄧˊ
+挑 0 ㄊㄧㄠ
+祧 0 ㄊㄧㄠ
+恌 0 ㄊㄧㄠ
+庣 0 ㄊㄧㄠ
+鮡 0 ㄊㄧㄠ
+佻 0 ㄊㄧㄠ
+趒 0 ㄊㄧㄠ
+蓨 0 ㄊㄧㄠ
+旫 0 ㄊㄧㄠ
+聎 0 ㄊㄧㄠ
+蓚 0 ㄊㄧㄠ
+䄻 0 ㄊㄧㄠ
+挑 0 ㄊㄧㄠˇ
+窕 0 ㄊㄧㄠˇ
+誂 0 ㄊㄧㄠˇ
+宨 0 ㄊㄧㄠˇ
+嬥 0 ㄊㄧㄠˇ
+窱 0 ㄊㄧㄠˇ
+晀 0 ㄊㄧㄠˇ
+䠷 0 ㄊㄧㄠˇ
+跳 0 ㄊㄧㄠˋ
+眺 0 ㄊㄧㄠˋ
+糶 0 ㄊㄧㄠˋ
+朓 0 ㄊㄧㄠˋ
+覜 0 ㄊㄧㄠˋ
+頫 0 ㄊㄧㄠˋ
+絩 0 ㄊㄧㄠˋ
+窱 0 ㄊㄧㄠˋ
+脁 0 ㄊㄧㄠˋ
+佻 0 ㄊㄧㄠˋ
+趒 0 ㄊㄧㄠˋ
+艞 0 ㄊㄧㄠˋ
+粜 0 ㄊㄧㄠˋ
+條 0 ㄊㄧㄠˊ
+調 0 ㄊㄧㄠˊ
+笤 0 ㄊㄧㄠˊ
+佻 0 ㄊㄧㄠˊ
+迢 0 ㄊㄧㄠˊ
+蜩 0 ㄊㄧㄠˊ
+髫 0 ㄊㄧㄠˊ
+岧 0 ㄊㄧㄠˊ
+苕 0 ㄊㄧㄠˊ
+齠 0 ㄊㄧㄠˊ
+鰷 0 ㄊㄧㄠˊ
+鞗 0 ㄊㄧㄠˊ
+芀 0 ㄊㄧㄠˊ
+鎥 0 ㄊㄧㄠˊ
+趒 0 ㄊㄧㄠˊ
+祒 0 ㄊㄧㄠˊ
+窕 0 ㄊㄧㄠˊ
+絛 0 ㄊㄧㄠˊ
+滌 0 ㄊㄧㄠˊ
+篠 0 ㄊㄧㄠˊ
+朷 0 ㄊㄧㄠˊ
+条 0 ㄊㄧㄠˊ
+岹 0 ㄊㄧㄠˊ
+㨄 0 ㄊㄧㄠˊ
+萔 0 ㄊㄧㄠˊ
+樤 0 ㄊㄧㄠˊ
+鋚 0 ㄊㄧㄠˊ
+縧 0 ㄊㄧㄠˊ
+ㄌ 0 ㄌ
+摟 0 ㄌㄡ
+瞜 0 ㄌㄡ
+簍 0 ㄌㄡˇ
+摟 0 ㄌㄡˇ
+塿 0 ㄌㄡˇ
+嶁 0 ㄌㄡˇ
+嘍 0 ㄌㄡˇ
+甊 0 ㄌㄡˇ
+㪹 0 ㄌㄡˇ
+漏 0 ㄌㄡˋ
+陋 0 ㄌㄡˋ
+露 0 ㄌㄡˋ
+鏤 0 ㄌㄡˋ
+瘺 0 ㄌㄡˋ
+屚 0 ㄌㄡˋ
+樓 0 ㄌㄡˊ
+嘍 0 ㄌㄡˊ
+婁 0 ㄌㄡˊ
+螻 0 ㄌㄡˊ
+髏 0 ㄌㄡˊ
+僂 0 ㄌㄡˊ
+蔞 0 ㄌㄡˊ
+廔 0 ㄌㄡˊ
+漊 0 ㄌㄡˊ
+耬 0 ㄌㄡˊ
+熡 0 ㄌㄡˊ
+謱 0 ㄌㄡˊ
+艛 0 ㄌㄡˊ
+鞻 0 ㄌㄡˊ
+鷜 0 ㄌㄡˊ
+瞜 0 ㄌㄡˊ
+摟 0 ㄌㄡˊ
+鏤 0 ㄌㄡˊ
+寠 0 ㄌㄡˊ
+慺 0 ㄌㄡˊ
+窶 0 ㄌㄡˊ
+貗 0 ㄌㄡˊ
+剅 0 ㄌㄡˊ
+娄 0 ㄌㄡˊ
+偻 0 ㄌㄡˊ
+楼 0 ㄌㄡˊ
+遱 0 ㄌㄡˊ
+瘻 0 ㄌㄡˊ
+軁 0 ㄌㄡˊ
+蝼 0 ㄌㄡˊ
+䝏 0 ㄌㄡˊ
+嘍 0 ㄌㄡ˙
+冷 0 ㄌㄥˇ
+泠 0 ㄌㄥˇ
+愣 0 ㄌㄥˋ
+踜 0 ㄌㄥˋ
+楞 0 ㄌㄥˋ
+怔 0 ㄌㄥˋ
+佂 0 ㄌㄥˋ
+稜 0 ㄌㄥˊ
+崚 0 ㄌㄥˊ
+棱 0 ㄌㄥˊ
+薐 0 ㄌㄥˊ
+蔆 0 ㄌㄥˊ
+倰 0 ㄌㄥˊ
+楞 0 ㄌㄥˊ
+碐 0 ㄌㄥˊ
+祾 0 ㄌㄥˊ
+蓤 0 ㄌㄥˊ
+䔖 0 ㄌㄥˊ
+掕 0 ㄌㄥˊ
+塄 0 ㄌㄥˊ
+啷 0 ㄌㄤ
+朗 0 ㄌㄤˇ
+閬 0 ㄌㄤˇ
+硠 0 ㄌㄤˇ
+峎 0 ㄌㄤˇ
+悢 0 ㄌㄤˇ
+誏 0 ㄌㄤˇ
+烺 0 ㄌㄤˇ
+塱 0 ㄌㄤˇ
+崀 0 ㄌㄤˇ
+朖 0 ㄌㄤˇ
+朤 0 ㄌㄤˇ
+㫰 0 ㄌㄤˇ
+浪 0 ㄌㄤˋ
+埌 0 ㄌㄤˋ
+蒗 0 ㄌㄤˋ
+莨 0 ㄌㄤˋ
+閬 0 ㄌㄤˋ
+郎 0 ㄌㄤˊ
+狼 0 ㄌㄤˊ
+廊 0 ㄌㄤˊ
+螂 0 ㄌㄤˊ
+瑯 0 ㄌㄤˊ
+琅 0 ㄌㄤˊ
+榔 0 ㄌㄤˊ
+稂 0 ㄌㄤˊ
+莨 0 ㄌㄤˊ
+蜋 0 ㄌㄤˊ
+桹 0 ㄌㄤˊ
+筤 0 ㄌㄤˊ
+鋃 0 ㄌㄤˊ
+俍 0 ㄌㄤˊ
+崀 0 ㄌㄤˊ
+欴 0 ㄌㄤˊ
+浪 0 ㄌㄤˊ
+羹 0 ㄌㄤˊ
+硠 0 ㄌㄤˊ
+踉 0 ㄌㄤˊ
+駺 0 ㄌㄤˊ
+哴 0 ㄌㄤˊ
+郞 0 ㄌㄤˊ
+嫏 0 ㄌㄤˊ
+蓈 0 ㄌㄤˊ
+躴 0 ㄌㄤˊ
+羮 0 ㄌㄤˊ
+勆 0 ㄌㄤˊ
+艆 0 ㄌㄤˊ
+樃 0 ㄌㄤˊ
+螂 0 ㄌㄤ˙
+覽 0 ㄌㄢˇ
+懶 0 ㄌㄢˇ
+攬 0 ㄌㄢˇ
+欖 0 ㄌㄢˇ
+纜 0 ㄌㄢˇ
+壈 0 ㄌㄢˇ
+爦 0 ㄌㄢˇ
+灠 0 ㄌㄢˇ
+醂 0 ㄌㄢˇ
+嬾 0 ㄌㄢˇ
+顲 0 ㄌㄢˇ
+浨 0 ㄌㄢˇ
+卵 0 ㄌㄢˇ
+嵐 0 ㄌㄢˇ
+濫 0 ㄌㄢˇ
+㛦 0 ㄌㄢˇ
+覧 0 ㄌㄢˇ
+㩜 0 ㄌㄢˇ
+燣 0 ㄌㄢˇ
+擥 0 ㄌㄢˇ
+攋 0 ㄌㄢˇ
+孄 0 ㄌㄢˇ
+孏 0 ㄌㄢˇ
+漤 0 ㄌㄢˇ
+䌫 0 ㄌㄢˇ
+爛 0 ㄌㄢˋ
+濫 0 ㄌㄢˋ
+纜 0 ㄌㄢˋ
+爁 0 ㄌㄢˋ
+壏 0 ㄌㄢˋ
+婪 0 ㄌㄢˋ
+亂 0 ㄌㄢˋ
+瀾 0 ㄌㄢˋ
+僋 0 ㄌㄢˋ
+嚂 0 ㄌㄢˋ
+糷 0 ㄌㄢˋ
+乱 0 ㄌㄢˋ
+釠 0 ㄌㄢˋ
+瓓 0 ㄌㄢˋ
+爤 0 ㄌㄢˋ
+钄 0 ㄌㄢˋ
+㜮 0 ㄌㄢˋ
+燗 0 ㄌㄢˋ
+䌫 0 ㄌㄢˋ
+蘭 0 ㄌㄢˊ
+籃 0 ㄌㄢˊ
+藍 0 ㄌㄢˊ
+欄 0 ㄌㄢˊ
+攔 0 ㄌㄢˊ
+瀾 0 ㄌㄢˊ
+襤 0 ㄌㄢˊ
+婪 0 ㄌㄢˊ
+嵐 0 ㄌㄢˊ
+闌 0 ㄌㄢˊ
+鑭 0 ㄌㄢˊ
+襴 0 ㄌㄢˊ
+讕 0 ㄌㄢˊ
+斕 0 ㄌㄢˊ
+籣 0 ㄌㄢˊ
+欗 0 ㄌㄢˊ
+糷 0 ㄌㄢˊ
+灆 0 ㄌㄢˊ
+灡 0 ㄌㄢˊ
+譋 0 ㄌㄢˊ
+躝 0 ㄌㄢˊ
+瑯 0 ㄌㄢˊ
+欖 0 ㄌㄢˊ
+惏 0 ㄌㄢˊ
+灠 0 ㄌㄢˊ
+啉 0 ㄌㄢˊ
+葻 0 ㄌㄢˊ
+厱 0 ㄌㄢˊ
+儖 0 ㄌㄢˊ
+懢 0 ㄌㄢˊ
+璼 0 ㄌㄢˊ
+繿 0 ㄌㄢˊ
+蘫 0 ㄌㄢˊ
+囒 0 ㄌㄢˊ
+襽 0 ㄌㄢˊ
+韊 0 ㄌㄢˊ
+㜮 0 ㄌㄢˊ
+礛 0 ㄌㄢˊ
+拉 0 ㄌㄚ
+啦 0 ㄌㄚ
+喇 0 ㄌㄚ
+柆 0 ㄌㄚ
+邋 0 ㄌㄚ
+鞡 0 ㄌㄚ
+翋 0 ㄌㄚ
+菈 0 ㄌㄚ
+剌 0 ㄌㄚ
+磖 0 ㄌㄚ
+喇 0 ㄌㄚˇ
+藞 0 ㄌㄚˇ
+拉 0 ㄌㄚˇ
+臘 0 ㄌㄚˋ
+蠟 0 ㄌㄚˋ
+鑞 0 ㄌㄚˋ
+辣 0 ㄌㄚˋ
+剌 0 ㄌㄚˋ
+腊 0 ㄌㄚˋ
+落 0 ㄌㄚˋ
+鬎 0 ㄌㄚˋ
+瘌 0 ㄌㄚˋ
+揧 0 ㄌㄚˋ
+楋 0 ㄌㄚˋ
+喇 0 ㄌㄚˋ
+棘 0 ㄌㄚˋ
+菈 0 ㄌㄚˋ
+搚 0 ㄌㄚˋ
+擸 0 ㄌㄚˋ
+襋 0 ㄌㄚˋ
+辢 0 ㄌㄚˋ
+臈 0 ㄌㄚˋ
+攋 0 ㄌㄚˋ
+瓎 0 ㄌㄚˋ
+鯻 0 ㄌㄚˋ
+蝲 0 ㄌㄚˋ
+爉 0 ㄌㄚˋ
+鱲 0 ㄌㄚˋ
+剌 0 ㄌㄚˊ
+邋 0 ㄌㄚˊ
+旯 0 ㄌㄚˊ
+拉 0 ㄌㄚˊ
+喇 0 ㄌㄚˊ
+揦 0 ㄌㄚˊ
+啦 0 ㄌㄚ˙
+藍 0 ㄌㄚ˙
+瘌 0 ㄌㄚ˙
+攋 0 ㄌㄞˇ
+賴 0 ㄌㄞˋ
+癩 0 ㄌㄞˋ
+瀨 0 ㄌㄞˋ
+籟 0 ㄌㄞˋ
+睞 0 ㄌㄞˋ
+賚 0 ㄌㄞˋ
+藾 0 ㄌㄞˋ
+娕 0 ㄌㄞˋ
+來 0 ㄌㄞˋ
+徠 0 ㄌㄞˋ
+厲 0 ㄌㄞˋ
+獺 0 ㄌㄞˋ
+誺 0 ㄌㄞˋ
+厉 0 ㄌㄞˋ
+倈 0 ㄌㄞˋ
+頼 0 ㄌㄞˋ
+鵣 0 ㄌㄞˋ
+攋 0 ㄌㄞˋ
+瀬 0 ㄌㄞˋ
+櫴 0 ㄌㄞˋ
+来 0 ㄌㄞˋ
+襰 0 ㄌㄞˋ
+來 0 ㄌㄞˊ
+萊 0 ㄌㄞˊ
+徠 0 ㄌㄞˊ
+淶 0 ㄌㄞˊ
+騋 0 ㄌㄞˊ
+箂 0 ㄌㄞˊ
+崍 0 ㄌㄞˊ
+郲 0 ㄌㄞˊ
+錸 0 ㄌㄞˊ
+鯠 0 ㄌㄞˊ
+棶 0 ㄌㄞˊ
+庲 0 ㄌㄞˊ
+鶆 0 ㄌㄞˊ
+唻 0 ㄌㄞˊ
+賚 0 ㄌㄞˊ
+倈 0 ㄌㄞˊ
+婡 0 ㄌㄞˊ
+琜 0 ㄌㄞˊ
+逨 0 ㄌㄞˊ
+来 0 ㄌㄞˊ
+顂 0 ㄌㄞˊ
+麳 0 ㄌㄞˊ
+咯 0 ㄌㄛ˙
+嚕 0 ㄌㄨ
+氌 0 ㄌㄨ
+蘆 0 ㄌㄨ˙
+隴 0 ㄌㄨㄥˇ
+攏 0 ㄌㄨㄥˇ
+壟 0 ㄌㄨㄥˇ
+龍 0 ㄌㄨㄥˇ
+籠 0 ㄌㄨㄥˇ
+儱 0 ㄌㄨㄥˇ
+竜 0 ㄌㄨㄥˇ
+篭 0 ㄌㄨㄥˇ
+壠 0 ㄌㄨㄥˇ
+竉 0 ㄌㄨㄥˇ
+龓 0 ㄌㄨㄥˇ
+䡁 0 ㄌㄨㄥˇ
+㡣 0 ㄌㄨㄥˇ
+衖 0 ㄌㄨㄥˋ
+哢 0 ㄌㄨㄥˋ
+徿 0 ㄌㄨㄥˋ
+梇 0 ㄌㄨㄥˋ
+弄 0 ㄌㄨㄥˋ
+咔 0 ㄌㄨㄥˋ
+挵 0 ㄌㄨㄥˋ
+硦 0 ㄌㄨㄥˋ
+贚 0 ㄌㄨㄥˋ
+挊 0 ㄌㄨㄥˋ
+㟖 0 ㄌㄨㄥˋ
+龍 0 ㄌㄨㄥˊ
+隆 0 ㄌㄨㄥˊ
+籠 0 ㄌㄨㄥˊ
+嚨 0 ㄌㄨㄥˊ
+聾 0 ㄌㄨㄥˊ
+瓏 0 ㄌㄨㄥˊ
+朧 0 ㄌㄨㄥˊ
+窿 0 ㄌㄨㄥˊ
+瀧 0 ㄌㄨㄥˊ
+癃 0 ㄌㄨㄥˊ
+櫳 0 ㄌㄨㄥˊ
+礱 0 ㄌㄨㄥˊ
+曨 0 ㄌㄨㄥˊ
+巃 0 ㄌㄨㄥˊ
+矓 0 ㄌㄨㄥˊ
+蘢 0 ㄌㄨㄥˊ
+躘 0 ㄌㄨㄥˊ
+豅 0 ㄌㄨㄥˊ
+鏧 0 ㄌㄨㄥˊ
+鑨 0 ㄌㄨㄥˊ
+靇 0 ㄌㄨㄥˊ
+蠪 0 ㄌㄨㄥˊ
+襱 0 ㄌㄨㄥˊ
+鸗 0 ㄌㄨㄥˊ
+儱 0 ㄌㄨㄥˊ
+龒 0 ㄌㄨㄥˊ
+蠬 0 ㄌㄨㄥˊ
+壟 0 ㄌㄨㄥˊ
+攏 0 ㄌㄨㄥˊ
+屸 0 ㄌㄨㄥˊ
+竜 0 ㄌㄨㄥˊ
+湰 0 ㄌㄨㄥˊ
+滝 0 ㄌㄨㄥˊ
+嶐 0 ㄌㄨㄥˊ
+漋 0 ㄌㄨㄥˊ
+篭 0 ㄌㄨㄥˊ
+壠 0 ㄌㄨㄥˊ
+巄 0 ㄌㄨㄥˊ
+㰍 0 ㄌㄨㄥˊ
+爖 0 ㄌㄨㄥˊ
+霳 0 ㄌㄨㄥˊ
+礲 0 ㄌㄨㄥˊ
+龓 0 ㄌㄨㄥˊ
+驡 0 ㄌㄨㄥˊ
+㡣 0 ㄌㄨㄥˊ
+卵 0 ㄌㄨㄢˇ
+亂 0 ㄌㄨㄢˋ
+薍 0 ㄌㄨㄢˋ
+乱 0 ㄌㄨㄢˋ
+釠 0 ㄌㄨㄢˋ
+灓 0 ㄌㄨㄢˋ
+巒 0 ㄌㄨㄢˊ
+鑾 0 ㄌㄨㄢˊ
+鸞 0 ㄌㄨㄢˊ
+孿 0 ㄌㄨㄢˊ
+灤 0 ㄌㄨㄢˊ
+臠 0 ㄌㄨㄢˊ
+圞 0 ㄌㄨㄢˊ
+欒 0 ㄌㄨㄢˊ
+曫 0 ㄌㄨㄢˊ
+羉 0 ㄌㄨㄢˊ
+癵 0 ㄌㄨㄢˊ
+孌 0 ㄌㄨㄢˊ
+峦 0 ㄌㄨㄢˊ
+栾 0 ㄌㄨㄢˊ
+脔 0 ㄌㄨㄢˊ
+滦 0 ㄌㄨㄢˊ
+銮 0 ㄌㄨㄢˊ
+圝 0 ㄌㄨㄢˊ
+灓 0 ㄌㄨㄢˊ
+魯 0 ㄌㄨˇ
+虜 0 ㄌㄨˇ
+擄 0 ㄌㄨˇ
+滷 0 ㄌㄨˇ
+鹵 0 ㄌㄨˇ
+櫓 0 ㄌㄨˇ
+艣 0 ㄌㄨˇ
+磠 0 ㄌㄨˇ
+鐪 0 ㄌㄨˇ
+蓾 0 ㄌㄨˇ
+擼 0 ㄌㄨˇ
+塷 0 ㄌㄨˇ
+樐 0 ㄌㄨˇ
+瀂 0 ㄌㄨˇ
+艪 0 ㄌㄨˇ
+鑥 0 ㄌㄨˇ
+路 0 ㄌㄨˋ
+陸 0 ㄌㄨˋ
+錄 0 ㄌㄨˋ
+鹿 0 ㄌㄨˋ
+露 0 ㄌㄨˋ
+賂 0 ㄌㄨˋ
+祿 0 ㄌㄨˋ
+碌 0 ㄌㄨˋ
+氯 0 ㄌㄨˋ
+麓 0 ㄌㄨˋ
+鷺 0 ㄌㄨˋ
+戮 0 ㄌㄨˋ
+轆 0 ㄌㄨˋ
+蓼 0 ㄌㄨˋ
+逯 0 ㄌㄨˋ
+漉 0 ㄌㄨˋ
+輅 0 ㄌㄨˋ
+僇 0 ㄌㄨˋ
+潞 0 ㄌㄨˋ
+籙 0 ㄌㄨˋ
+璐 0 ㄌㄨˋ
+甪 0 ㄌㄨˋ
+稑 0 ㄌㄨˋ
+穋 0 ㄌㄨˋ
+簏 0 ㄌㄨˋ
+醁 0 ㄌㄨˋ
+騄 0 ㄌㄨˋ
+淥 0 ㄌㄨˋ
+琭 0 ㄌㄨˋ
+盝 0 ㄌㄨˋ
+磟 0 ㄌㄨˋ
+彔 0 ㄌㄨˋ
+菉 0 ㄌㄨˋ
+蔍 0 ㄌㄨˋ
+錴 0 ㄌㄨˋ
+垏 0 ㄌㄨˋ
+鏕 0 ㄌㄨˋ
+鯥 0 ㄌㄨˋ
+摝 0 ㄌㄨˋ
+硉 0 ㄌㄨˋ
+睩 0 ㄌㄨˋ
+廘 0 ㄌㄨˋ
+熝 0 ㄌㄨˋ
+踛 0 ㄌㄨˋ
+蕗 0 ㄌㄨˋ
+螰 0 ㄌㄨˋ
+鵱 0 ㄌㄨˋ
+淕 0 ㄌㄨˋ
+塶 0 ㄌㄨˋ
+蹗 0 ㄌㄨˋ
+六 0 ㄌㄨˋ
+角 0 ㄌㄨˋ
+綠 0 ㄌㄨˋ
+坴 0 ㄌㄨˋ
+翏 0 ㄌㄨˋ
+觻 0 ㄌㄨˋ
+侓 0 ㄌㄨˋ
+录 0 ㄌㄨˋ
+峍 0 ㄌㄨˋ
+勎 0 ㄌㄨˋ
+娽 0 ㄌㄨˋ
+渌 0 ㄌㄨˋ
+椂 0 ㄌㄨˋ
+禄 0 ㄌㄨˋ
+剹 0 ㄌㄨˋ
+勠 0 ㄌㄨˋ
+箓 0 ㄌㄨˋ
+緑 0 ㄌㄨˋ
+樚 0 ㄌㄨˋ
+膔 0 ㄌㄨˋ
+觮 0 ㄌㄨˋ
+趢 0 ㄌㄨˋ
+録 0 ㄌㄨˋ
+簵 0 ㄌㄨˋ
+鵦 0 ㄌㄨˋ
+鏴 0 ㄌㄨˋ
+騼 0 ㄌㄨˋ
+虂 0 ㄌㄨˋ
+龣 0 ㄌㄨˋ
+圥 0 ㄌㄨˋ
+䐂 0 ㄌㄨˋ
+粶 0 ㄌㄨˋ
+䟿 0 ㄌㄨˋ
+㯝 0 ㄌㄨˋ
+鴼 0 ㄌㄨˋ
+簶 0 ㄌㄨˋ
+䱚 0 ㄌㄨˋ
+盧 0 ㄌㄨˊ
+蘆 0 ㄌㄨˊ
+廬 0 ㄌㄨˊ
+臚 0 ㄌㄨˊ
+爐 0 ㄌㄨˊ
+顱 0 ㄌㄨˊ
+瀘 0 ㄌㄨˊ
+鱸 0 ㄌㄨˊ
+轤 0 ㄌㄨˊ
+壚 0 ㄌㄨˊ
+鸕 0 ㄌㄨˊ
+玈 0 ㄌㄨˊ
+罏 0 ㄌㄨˊ
+艫 0 ㄌㄨˊ
+鑪 0 ㄌㄨˊ
+籚 0 ㄌㄨˊ
+櫨 0 ㄌㄨˊ
+嚧 0 ㄌㄨˊ
+攎 0 ㄌㄨˊ
+蠦 0 ㄌㄨˊ
+纑 0 ㄌㄨˊ
+璷 0 ㄌㄨˊ
+庐 0 ㄌㄨˊ
+炉 0 ㄌㄨˊ
+芦 0 ㄌㄨˊ
+魲 0 ㄌㄨˊ
+瓐 0 ㄌㄨˊ
+矑 0 ㄌㄨˊ
+髗 0 ㄌㄨˊ
+皶 0 ㄌㄨˊ
+獹 0 ㄌㄨˊ
+黸 0 ㄌㄨˊ
+囉 0 ㄌㄨㄛ
+捋 0 ㄌㄨㄛ
+寽 0 ㄌㄨㄛ
+裸 0 ㄌㄨㄛˇ
+瘰 0 ㄌㄨㄛˇ
+臝 0 ㄌㄨㄛˇ
+蠃 0 ㄌㄨㄛˇ
+蓏 0 ㄌㄨㄛˇ
+鎯 0 ㄌㄨㄛˇ
+卵 0 ㄌㄨㄛˇ
+虜 0 ㄌㄨㄛˇ
+擄 0 ㄌㄨㄛˇ
+砢 0 ㄌㄨㄛˇ
+祼 0 ㄌㄨㄛˇ
+倮 0 ㄌㄨㄛˇ
+躶 0 ㄌㄨㄛˇ
+攞 0 ㄌㄨㄛˇ
+曪 0 ㄌㄨㄛˇ
+攭 0 ㄌㄨㄛˇ
+落 0 ㄌㄨㄛˋ
+駱 0 ㄌㄨㄛˋ
+洛 0 ㄌㄨㄛˋ
+絡 0 ㄌㄨㄛˋ
+雒 0 ㄌㄨㄛˋ
+烙 0 ㄌㄨㄛˋ
+酪 0 ㄌㄨㄛˋ
+濼 0 ㄌㄨㄛˋ
+犖 0 ㄌㄨㄛˋ
+咯 0 ㄌㄨㄛˋ
+珞 0 ㄌㄨㄛˋ
+纙 0 ㄌㄨㄛˋ
+袼 0 ㄌㄨㄛˋ
+硌 0 ㄌㄨㄛˋ
+鮥 0 ㄌㄨㄛˋ
+鵅 0 ㄌㄨㄛˋ
+峈 0 ㄌㄨㄛˋ
+貉 0 ㄌㄨㄛˋ
+賂 0 ㄌㄨㄛˋ
+輅 0 ㄌㄨㄛˋ
+躒 0 ㄌㄨㄛˋ
+鱳 0 ㄌㄨㄛˋ
+狢 0 ㄌㄨㄛˋ
+洜 0 ㄌㄨㄛˋ
+貈 0 ㄌㄨㄛˋ
+笿 0 ㄌㄨㄛˋ
+嗠 0 ㄌㄨㄛˋ
+羅 0 ㄌㄨㄛˊ
+螺 0 ㄌㄨㄛˊ
+蘿 0 ㄌㄨㄛˊ
+鑼 0 ㄌㄨㄛˊ
+邏 0 ㄌㄨㄛˊ
+籮 0 ㄌㄨㄛˊ
+騾 0 ㄌㄨㄛˊ
+囉 0 ㄌㄨㄛˊ
+玀 0 ㄌㄨㄛˊ
+儸 0 ㄌㄨㄛˊ
+覶 0 ㄌㄨㄛˊ
+摞 0 ㄌㄨㄛˊ
+欏 0 ㄌㄨㄛˊ
+蔂 0 ㄌㄨㄛˊ
+鏍 0 ㄌㄨㄛˊ
+鸁 0 ㄌㄨㄛˊ
+剆 0 ㄌㄨㄛˊ
+漯 0 ㄌㄨㄛˊ
+縲 0 ㄌㄨㄛˊ
+腡 0 ㄌㄨㄛˊ
+蠃 0 ㄌㄨㄛˊ
+逻 0 ㄌㄨㄛˊ
+頱 0 ㄌㄨㄛˊ
+覼 0 ㄌㄨㄛˊ
+攞 0 ㄌㄨㄛˊ
+驘 0 ㄌㄨㄛˊ
+纝 0 ㄌㄨㄛˊ
+饠 0 ㄌㄨㄛˊ
+掄 0 ㄌㄨㄣ
+輪 0 ㄌㄨㄣ
+稐 0 ㄌㄨㄣˇ
+耣 0 ㄌㄨㄣˇ
+論 0 ㄌㄨㄣˋ
+溣 0 ㄌㄨㄣˋ
+惀 0 ㄌㄨㄣˋ
+碖 0 ㄌㄨㄣˋ
+倫 0 ㄌㄨㄣˊ
+論 0 ㄌㄨㄣˊ
+輪 0 ㄌㄨㄣˊ
+淪 0 ㄌㄨㄣˊ
+崙 0 ㄌㄨㄣˊ
+侖 0 ㄌㄨㄣˊ
+綸 0 ㄌㄨㄣˊ
+掄 0 ㄌㄨㄣˊ
+圇 0 ㄌㄨㄣˊ
+碖 0 ㄌㄨㄣˊ
+錀 0 ㄌㄨㄣˊ
+惀 0 ㄌㄨㄣˊ
+陯 0 ㄌㄨㄣˊ
+菕 0 ㄌㄨㄣˊ
+踚 0 ㄌㄨㄣˊ
+棆 0 ㄌㄨㄣˊ
+蜦 0 ㄌㄨㄣˊ
+埨 0 ㄌㄨㄣˊ
+婨 0 ㄌㄨㄣˊ
+崘 0 ㄌㄨㄣˊ
+㷍 0 ㄌㄨㄣˊ
+腀 0 ㄌㄨㄣˊ
+鯩 0 ㄌㄨㄣˊ
+樂 0 ㄌㄜˋ
+垃 0 ㄌㄜˋ
+勒 0 ㄌㄜˋ
+肋 0 ㄌㄜˋ
+泐 0 ㄌㄜˋ
+埒 0 ㄌㄜˋ
+叻 0 ㄌㄜˋ
+仂 0 ㄌㄜˋ
+捋 0 ㄌㄜˋ
+扐 0 ㄌㄜˋ
+阞 0 ㄌㄜˋ
+砳 0 ㄌㄜˋ
+鰳 0 ㄌㄜˋ
+氻 0 ㄌㄜˋ
+哷 0 ㄌㄜˋ
+竻 0 ㄌㄜˋ
+落 0 ㄌㄜˋ
+牞 0 ㄌㄜˋ
+礐 0 ㄌㄜˋ
+礜 0 ㄌㄜˋ
+忇 0 ㄌㄜˋ
+玏 0 ㄌㄜˋ
+艻 0 ㄌㄜˋ
+寽 0 ㄌㄜˋ
+楽 0 ㄌㄜˋ
+㦡 0 ㄌㄜˋ
+埓 0 ㄌㄜˋ
+㿭 0 ㄌㄜˋ
+韷 0 ㄌㄜˋ
+簕 0 ㄌㄜˋ
+皬 0 ㄌㄜˋ
+了 0 ㄌㄜ˙
+嘞 0 ㄌㄜ˙
+撈 0 ㄌㄠ
+嘮 0 ㄌㄠ
+哰 0 ㄌㄠ
+老 0 ㄌㄠˇ
+姥 0 ㄌㄠˇ
+佬 0 ㄌㄠˇ
+鐒 0 ㄌㄠˇ
+栳 0 ㄌㄠˇ
+狫 0 ㄌㄠˇ
+轑 0 ㄌㄠˇ
+咾 0 ㄌㄠˇ
+橑 0 ㄌㄠˇ
+銠 0 ㄌㄠˇ
+恅 0 ㄌㄠˇ
+荖 0 ㄌㄠˇ
+耋 0 ㄌㄠˇ
+潦 0 ㄌㄠˇ
+㧯 0 ㄌㄠˇ
+耊 0 ㄌㄠˇ
+䇭 0 ㄌㄠˇ
+蛯 0 ㄌㄠˇ
+勞 0 ㄌㄠˋ
+絡 0 ㄌㄠˋ
+烙 0 ㄌㄠˋ
+酪 0 ㄌㄠˋ
+嫪 0 ㄌㄠˋ
+軂 0 ㄌㄠˋ
+橯 0 ㄌㄠˋ
+僗 0 ㄌㄠˋ
+落 0 ㄌㄠˋ
+樂 0 ㄌㄠˋ
+潦 0 ㄌㄠˋ
+澇 0 ㄌㄠˋ
+醪 0 ㄌㄠˋ
+労 0 ㄌㄠˋ
+劳 0 ㄌㄠˋ
+楽 0 ㄌㄠˋ
+憦 0 ㄌㄠˋ
+耮 0 ㄌㄠˋ
+髝 0 ㄌㄠˋ
+勞 0 ㄌㄠˊ
+牢 0 ㄌㄠˊ
+癆 0 ㄌㄠˊ
+澇 0 ㄌㄠˊ
+嘮 0 ㄌㄠˊ
+醪 0 ㄌㄠˊ
+浶 0 ㄌㄠˊ
+簩 0 ㄌㄠˊ
+蟧 0 ㄌㄠˊ
+嶗 0 ㄌㄠˊ
+犖 0 ㄌㄠˊ
+撈 0 ㄌㄠˊ
+僗 0 ㄌㄠˊ
+轑 0 ㄌㄠˊ
+顟 0 ㄌㄠˊ
+労 0 ㄌㄠˊ
+劳 0 ㄌㄠˊ
+窂 0 ㄌㄠˊ
+哰 0 ㄌㄠˊ
+磱 0 ㄌㄠˊ
+髝 0 ㄌㄠˊ
+憥 0 ㄌㄠˊ
+略 0 ㄌㄩㄝˋ
+掠 0 ㄌㄩㄝˋ
+鋝 0 ㄌㄩㄝˋ
+撂 0 ㄌㄩㄝˋ
+擽 0 ㄌㄩㄝˋ
+婛 0 ㄌㄩㄝˋ
+弶 0 ㄌㄩㄝˋ
+剠 0 ㄌㄩㄝˋ
+畧 0 ㄌㄩㄝˋ
+摾 0 ㄌㄩㄝˋ
+鋢 0 ㄌㄩㄝˋ
+孌 0 ㄌㄩㄢˇ
+臠 0 ㄌㄩㄢˇ
+脔 0 ㄌㄩㄢˇ
+攣 0 ㄌㄩㄢˊ
+孿 0 ㄌㄩㄢˊ
+癵 0 ㄌㄩㄢˊ
+孪 0 ㄌㄩㄢˊ
+挛 0 ㄌㄩㄢˊ
+虊 0 ㄌㄩㄢˊ
+癴 0 ㄌㄩㄢˊ
+呂 0 ㄌㄩˇ
+旅 0 ㄌㄩˇ
+履 0 ㄌㄩˇ
+侶 0 ㄌㄩˇ
+鋁 0 ㄌㄩˇ
+屢 0 ㄌㄩˇ
+縷 0 ㄌㄩˇ
+褸 0 ㄌㄩˇ
+婁 0 ㄌㄩˇ
+膂 0 ㄌㄩˇ
+漊 0 ㄌㄩˇ
+穭 0 ㄌㄩˇ
+梠 0 ㄌㄩˇ
+郘 0 ㄌㄩˇ
+挔 0 ㄌㄩˇ
+絽 0 ㄌㄩˇ
+儢 0 ㄌㄩˇ
+祣 0 ㄌㄩˇ
+莒 0 ㄌㄩˇ
+閭 0 ㄌㄩˇ
+櫚 0 ㄌㄩˇ
+鏤 0 ㄌㄩˇ
+捋 0 ㄌㄩˇ
+筥 0 ㄌㄩˇ
+寠 0 ㄌㄩˇ
+貗 0 ㄌㄩˇ
+吕 0 ㄌㄩˇ
+寽 0 ㄌㄩˇ
+侣 0 ㄌㄩˇ
+娄 0 ㄌㄩˇ
+捛 0 ㄌㄩˇ
+屡 0 ㄌㄩˇ
+鋶 0 ㄌㄩˇ
+褛 0 ㄌㄩˇ
+㜢 0 ㄌㄩˇ
+膐 0 ㄌㄩˇ
+稆 0 ㄌㄩˇ
+律 0 ㄌㄩˋ
+綠 0 ㄌㄩˋ
+率 0 ㄌㄩˋ
+慮 0 ㄌㄩˋ
+濾 0 ㄌㄩˋ
+氯 0 ㄌㄩˋ
+嵂 0 ㄌㄩˋ
+膟 0 ㄌㄩˋ
+鑢 0 ㄌㄩˋ
+菉 0 ㄌㄩˋ
+葎 0 ㄌㄩˋ
+勴 0 ㄌㄩˋ
+壘 0 ㄌㄩˋ
+珒 0 ㄌㄩˋ
+繂 0 ㄌㄩˋ
+緑 0 ㄌㄩˋ
+爈 0 ㄌㄩˋ
+箻 0 ㄌㄩˋ
+櫖 0 ㄌㄩˋ
+卛 0 ㄌㄩˋ
+驢 0 ㄌㄩˊ
+閭 0 ㄌㄩˊ
+櫚 0 ㄌㄩˊ
+藘 0 ㄌㄩˊ
+慺 0 ㄌㄩˊ
+氀 0 ㄌㄩˊ
+膢 0 ㄌㄩˊ
+婁 0 ㄌㄩˊ
+娄 0 ㄌㄩˊ
+馿 0 ㄌㄩˊ
+爈 0 ㄌㄩˊ
+曥 0 ㄌㄩˊ
+㠠 0 ㄌㄩˊ
+䕡 0 ㄌㄩˊ
+勒 0 ㄌㄟ
+累 0 ㄌㄟˇ
+壘 0 ㄌㄟˇ
+儡 0 ㄌㄟˇ
+漯 0 ㄌㄟˇ
+耒 0 ㄌㄟˇ
+磊 0 ㄌㄟˇ
+蕾 0 ㄌㄟˇ
+誄 0 ㄌㄟˇ
+藟 0 ㄌㄟˇ
+樏 0 ㄌㄟˇ
+癗 0 ㄌㄟˇ
+礌 0 ㄌㄟˇ
+絫 0 ㄌㄟˇ
+磥 0 ㄌㄟˇ
+鑸 0 ㄌㄟˇ
+瘣 0 ㄌㄟˇ
+櫑 0 ㄌㄟˇ
+櫐 0 ㄌㄟˇ
+礨 0 ㄌㄟˇ
+灅 0 ㄌㄟˇ
+讄 0 ㄌㄟˇ
+鸓 0 ㄌㄟˇ
+頛 0 ㄌㄟˇ
+礧 0 ㄌㄟˇ
+蘲 0 ㄌㄟˇ
+嫘 0 ㄌㄟˇ
+羸 0 ㄌㄟˇ
+蜼 0 ㄌㄟˇ
+儽 0 ㄌㄟˇ
+欙 0 ㄌㄟˇ
+垒 0 ㄌㄟˇ
+洡 0 ㄌㄟˇ
+腂 0 ㄌㄟˇ
+傫 0 ㄌㄟˇ
+蕌 0 ㄌㄟˇ
+蘽 0 ㄌㄟˇ
+厽 0 ㄌㄟˇ
+㵽 0 ㄌㄟˇ
+類 0 ㄌㄟˋ
+淚 0 ㄌㄟˋ
+累 0 ㄌㄟˋ
+擂 0 ㄌㄟˋ
+纇 0 ㄌㄟˋ
+酹 0 ㄌㄟˋ
+銇 0 ㄌㄟˋ
+儽 0 ㄌㄟˋ
+蘱 0 ㄌㄟˋ
+禷 0 ㄌㄟˋ
+肋 0 ㄌㄟˋ
+戾 0 ㄌㄟˋ
+唳 0 ㄌㄟˋ
+捩 0 ㄌㄟˋ
+礌 0 ㄌㄟˋ
+礧 0 ㄌㄟˋ
+泪 0 ㄌㄟˋ
+类 0 ㄌㄟˋ
+涙 0 ㄌㄟˋ
+頪 0 ㄌㄟˋ
+錑 0 ㄌㄟˋ
+䢮 0 ㄌㄟˋ
+攂 0 ㄌㄟˋ
+䉪 0 ㄌㄟˋ
+雷 0 ㄌㄟˊ
+累 0 ㄌㄟˊ
+纍 0 ㄌㄟˊ
+擂 0 ㄌㄟˊ
+嫘 0 ㄌㄟˊ
+鐳 0 ㄌㄟˊ
+羸 0 ㄌㄟˊ
+縲 0 ㄌㄟˊ
+罍 0 ㄌㄟˊ
+檑 0 ㄌㄟˊ
+畾 0 ㄌㄟˊ
+櫑 0 ㄌㄟˊ
+瓃 0 ㄌㄟˊ
+蠝 0 ㄌㄟˊ
+轠 0 ㄌㄟˊ
+壨 0 ㄌㄟˊ
+蔂 0 ㄌㄟˊ
+蘲 0 ㄌㄟˊ
+虆 0 ㄌㄟˊ
+㵢 0 ㄌㄟˊ
+靁 0 ㄌㄟˊ
+錑 0 ㄌㄟˊ
+攂 0 ㄌㄟˊ
+鑘 0 ㄌㄟˊ
+纝 0 ㄌㄟˊ
+鼺 0 ㄌㄟˊ
+哩 0 ㄌㄧ
+咧 0 ㄌㄧㄝ
+咧 0 ㄌㄧㄝˇ
+忚 0 ㄌㄧㄝˇ
+列 0 ㄌㄧㄝˋ
+烈 0 ㄌㄧㄝˋ
+劣 0 ㄌㄧㄝˋ
+裂 0 ㄌㄧㄝˋ
+獵 0 ㄌㄧㄝˋ
+捩 0 ㄌㄧㄝˋ
+冽 0 ㄌㄧㄝˋ
+鬣 0 ㄌㄧㄝˋ
+躐 0 ㄌㄧㄝˋ
+洌 0 ㄌㄧㄝˋ
+茢 0 ㄌㄧㄝˋ
+睙 0 ㄌㄧㄝˋ
+擸 0 ㄌㄧㄝˋ
+趔 0 ㄌㄧㄝˋ
+姴 0 ㄌㄧㄝˋ
+迾 0 ㄌㄧㄝˋ
+脟 0 ㄌㄧㄝˋ
+蛚 0 ㄌㄧㄝˋ
+蛶 0 ㄌㄧㄝˋ
+颲 0 ㄌㄧㄝˋ
+儠 0 ㄌㄧㄝˋ
+鮤 0 ㄌㄧㄝˋ
+鴷 0 ㄌㄧㄝˋ
+犣 0 ㄌㄧㄝˋ
+戾 0 ㄌㄧㄝˋ
+唳 0 ㄌㄧㄝˋ
+邋 0 ㄌㄧㄝˋ
+浖 0 ㄌㄧㄝˋ
+烮 0 ㄌㄧㄝˋ
+猎 0 ㄌㄧㄝˋ
+煭 0 ㄌㄧㄝˋ
+聗 0 ㄌㄧㄝˋ
+巤 0 ㄌㄧㄝˋ
+巁 0 ㄌㄧㄝˋ
+爄 0 ㄌㄧㄝˋ
+劽 0 ㄌㄧㄝˋ
+挒 0 ㄌㄧㄝˋ
+鬛 0 ㄌㄧㄝˋ
+咧 0 ㄌㄧㄝˊ
+溜 0 ㄌㄧㄡ
+蹓 0 ㄌㄧㄡ
+澑 0 ㄌㄧㄡ
+柳 0 ㄌㄧㄡˇ
+綹 0 ㄌㄧㄡˇ
+罶 0 ㄌㄧㄡˇ
+飹 0 ㄌㄧㄡˇ
+珋 0 ㄌㄧㄡˇ
+嬼 0 ㄌㄧㄡˇ
+栁 0 ㄌㄧㄡˇ
+桺 0 ㄌㄧㄡˇ
+熮 0 ㄌㄧㄡˇ
+橮 0 ㄌㄧㄡˇ
+羀 0 ㄌㄧㄡˇ
+六 0 ㄌㄧㄡˋ
+陸 0 ㄌㄧㄡˋ
+溜 0 ㄌㄧㄡˋ
+餾 0 ㄌㄧㄡˋ
+霤 0 ㄌㄧㄡˋ
+坴 0 ㄌㄧㄡˋ
+翏 0 ㄌㄧㄡˋ
+雡 0 ㄌㄧㄡˋ
+廇 0 ㄌㄧㄡˋ
+塯 0 ㄌㄧㄡˋ
+蹓 0 ㄌㄧㄡˋ
+遛 0 ㄌㄧㄡˋ
+窌 0 ㄌㄧㄡˋ
+飂 0 ㄌㄧㄡˋ
+飉 0 ㄌㄧㄡˋ
+鷚 0 ㄌㄧㄡˋ
+澑 0 ㄌㄧㄡˋ
+鬸 0 ㄌㄧㄡˋ
+䄂 0 ㄌㄧㄡˋ
+劉 0 ㄌㄧㄡˊ
+流 0 ㄌㄧㄡˊ
+留 0 ㄌㄧㄡˊ
+硫 0 ㄌㄧㄡˊ
+琉 0 ㄌㄧㄡˊ
+榴 0 ㄌㄧㄡˊ
+瀏 0 ㄌㄧㄡˊ
+瘤 0 ㄌㄧㄡˊ
+遛 0 ㄌㄧㄡˊ
+旒 0 ㄌㄧㄡˊ
+騮 0 ㄌㄧㄡˊ
+鏐 0 ㄌㄧㄡˊ
+飀 0 ㄌㄧㄡˊ
+鶹 0 ㄌㄧㄡˊ
+懰 0 ㄌㄧㄡˊ
+鎏 0 ㄌㄧㄡˊ
+鎦 0 ㄌㄧㄡˊ
+媹 0 ㄌㄧㄡˊ
+嬼 0 ㄌㄧㄡˊ
+嵧 0 ㄌㄧㄡˊ
+藰 0 ㄌㄧㄡˊ
+裗 0 ㄌㄧㄡˊ
+麍 0 ㄌㄧㄡˊ
+鷎 0 ㄌㄧㄡˊ
+蓅 0 ㄌㄧㄡˊ
+鰡 0 ㄌㄧㄡˊ
+巰 0 ㄌㄧㄡˊ
+餾 0 ㄌㄧㄡˊ
+塯 0 ㄌㄧㄡˊ
+摎 0 ㄌㄧㄡˊ
+橀 0 ㄌㄧㄡˊ
+蟉 0 ㄌㄧㄡˊ
+刘 0 ㄌㄧㄡˊ
+沠 0 ㄌㄧㄡˊ
+畄 0 ㄌㄧㄡˊ
+畱 0 ㄌㄧㄡˊ
+瑬 0 ㄌㄧㄡˊ
+瑠 0 ㄌㄧㄡˊ
+蒥 0 ㄌㄧㄡˊ
+磂 0 ㄌㄧㄡˊ
+駠 0 ㄌㄧㄡˊ
+橊 0 ㄌㄧㄡˊ
+璢 0 ㄌㄧㄡˊ
+疁 0 ㄌㄧㄡˊ
+癅 0 ㄌㄧㄡˊ
+駵 0 ㄌㄧㄡˊ
+嚠 0 ㄌㄧㄡˊ
+鐂 0 ㄌㄧㄡˊ
+驑 0 ㄌㄧㄡˊ
+旈 0 ㄌㄧㄡˊ
+綂 0 ㄌㄧㄡˊ
+𩗩 0 ㄌㄧㄡˊ
+䶉 0 ㄌㄧㄡˊ
+溜 0 ㄌㄧㄡ˙
+榴 0 ㄌㄧㄡ˙
+橊 0 ㄌㄧㄡ˙
+拎 0 ㄌㄧㄥ
+昤 0 ㄌㄧㄥ
+領 0 ㄌㄧㄥˇ
+嶺 0 ㄌㄧㄥˇ
+彾 0 ㄌㄧㄥˇ
+阾 0 ㄌㄧㄥˇ
+袊 0 ㄌㄧㄥˇ
+𦊓 0 ㄌㄧㄥˇ
+令 0 ㄌㄧㄥˋ
+另 0 ㄌㄧㄥˋ
+炩 0 ㄌㄧㄥˋ
+旌 0 ㄌㄧㄥˋ
+櫺 0 ㄌㄧㄥˋ
+旍 0 ㄌㄧㄥˋ
+零 0 ㄌㄧㄥˊ
+玲 0 ㄌㄧㄥˊ
+靈 0 ㄌㄧㄥˊ
+鈴 0 ㄌㄧㄥˊ
+齡 0 ㄌㄧㄥˊ
+陵 0 ㄌㄧㄥˊ
+凌 0 ㄌㄧㄥˊ
+菱 0 ㄌㄧㄥˊ
+聆 0 ㄌㄧㄥˊ
+羚 0 ㄌㄧㄥˊ
+苓 0 ㄌㄧㄥˊ
+伶 0 ㄌㄧㄥˊ
+綾 0 ㄌㄧㄥˊ
+淩 0 ㄌㄧㄥˊ
+翎 0 ㄌㄧㄥˊ
+鴒 0 ㄌㄧㄥˊ
+囹 0 ㄌㄧㄥˊ
+蛉 0 ㄌㄧㄥˊ
+瓴 0 ㄌㄧㄥˊ
+泠 0 ㄌㄧㄥˊ
+舲 0 ㄌㄧㄥˊ
+酃 0 ㄌㄧㄥˊ
+軨 0 ㄌㄧㄥˊ
+錂 0 ㄌㄧㄥˊ
+櫺 0 ㄌㄧㄥˊ
+柃 0 ㄌㄧㄥˊ
+欞 0 ㄌㄧㄥˊ
+睖 0 ㄌㄧㄥˊ
+砱 0 ㄌㄧㄥˊ
+詅 0 ㄌㄧㄥˊ
+輘 0 ㄌㄧㄥˊ
+霝 0 ㄌㄧㄥˊ
+鯪 0 ㄌㄧㄥˊ
+醽 0 ㄌㄧㄥˊ
+岭 0 ㄌㄧㄥˊ
+昤 0 ㄌㄧㄥˊ
+澪 0 ㄌㄧㄥˊ
+呬 0 ㄌㄧㄥˊ
+坽 0 ㄌㄧㄥˊ
+夌 0 ㄌㄧㄥˊ
+姈 0 ㄌㄧㄥˊ
+狑 0 ㄌㄧㄥˊ
+皊 0 ㄌㄧㄥˊ
+呤 0 ㄌㄧㄥˊ
+琌 0 ㄌㄧㄥˊ
+笭 0 ㄌㄧㄥˊ
+裬 0 ㄌㄧㄥˊ
+蘦 0 ㄌㄧㄥˊ
+怜 0 ㄌㄧㄥˊ
+婈 0 ㄌㄧㄥˊ
+駖 0 ㄌㄧㄥˊ
+蕶 0 ㄌㄧㄥˊ
+爧 0 ㄌㄧㄥˊ
+堎 0 ㄌㄧㄥˊ
+令 0 ㄌㄧㄥˊ
+稷 0 ㄌㄧㄥˊ
+蔆 0 ㄌㄧㄥˊ
+磷 0 ㄌㄧㄥˊ
+仱 0 ㄌㄧㄥˊ
+彾 0 ㄌㄧㄥˊ
+耹 0 ㄌㄧㄥˊ
+灵 0 ㄌㄧㄥˊ
+岺 0 ㄌㄧㄥˊ
+朎 0 ㄌㄧㄥˊ
+秢 0 ㄌㄧㄥˊ
+竛 0 ㄌㄧㄥˊ
+紷 0 ㄌㄧㄥˊ
+跉 0 ㄌㄧㄥˊ
+祾 0 ㄌㄧㄥˊ
+蓤 0 ㄌㄧㄥˊ
+䔖 0 ㄌㄧㄥˊ
+霊 0 ㄌㄧㄥˊ
+霗 0 ㄌㄧㄥˊ
+燯 0 ㄌㄧㄥˊ
+霛 0 ㄌㄧㄥˊ
+䕘 0 ㄌㄧㄥˊ
+麢 0 ㄌㄧㄥˊ
+龗 0 ㄌㄧㄥˊ
+刢 0 ㄌㄧㄥˊ
+掕 0 ㄌㄧㄥˊ
+衑 0 ㄌㄧㄥˊ
+閝 0 ㄌㄧㄥˊ
+魿 0 ㄌㄧㄥˊ
+孁 0 ㄌㄧㄥˊ
+䴇 0 ㄌㄧㄥˊ
+䖅 0 ㄌㄧㄥˊ
+鹷 0 ㄌㄧㄥˊ
+〇 0 ㄌㄧㄥˊ
+兩 0 ㄌㄧㄤˇ
+倆 0 ㄌㄧㄤˇ
+魎 0 ㄌㄧㄤˇ
+緉 0 ㄌㄧㄤˇ
+裲 0 ㄌㄧㄤˇ
+啢 0 ㄌㄧㄤˇ
+両 0 ㄌㄧㄤˇ
+两 0 ㄌㄧㄤˇ
+蜽 0 ㄌㄧㄤˇ
+魉 0 ㄌㄧㄤˇ
+俩 0 ㄌㄧㄤˇ
+掚 0 ㄌㄧㄤˇ
+脼 0 ㄌㄧㄤˇ
+量 0 ㄌㄧㄤˋ
+亮 0 ㄌㄧㄤˋ
+諒 0 ㄌㄧㄤˋ
+輛 0 ㄌㄧㄤˋ
+喨 0 ㄌㄧㄤˋ
+晾 0 ㄌㄧㄤˋ
+涼 0 ㄌㄧㄤˋ
+啢 0 ㄌㄧㄤˋ
+踉 0 ㄌㄧㄤˋ
+湸 0 ㄌㄧㄤˋ
+悢 0 ㄌㄧㄤˋ
+兩 0 ㄌㄧㄤˋ
+倞 0 ㄌㄧㄤˋ
+両 0 ㄌㄧㄤˋ
+两 0 ㄌㄧㄤˋ
+凉 0 ㄌㄧㄤˋ
+良 0 ㄌㄧㄤˊ
+梁 0 ㄌㄧㄤˊ
+量 0 ㄌㄧㄤˊ
+糧 0 ㄌㄧㄤˊ
+涼 0 ㄌㄧㄤˊ
+粱 0 ㄌㄧㄤˊ
+樑 0 ㄌㄧㄤˊ
+椋 0 ㄌㄧㄤˊ
+綡 0 ㄌㄧㄤˊ
+輬 0 ㄌㄧㄤˊ
+踉 0 ㄌㄧㄤˊ
+駺 0 ㄌㄧㄤˊ
+亮 0 ㄌㄧㄤˊ
+螂 0 ㄌㄧㄤˊ
+諒 0 ㄌㄧㄤˊ
+俍 0 ㄌㄧㄤˊ
+惊 0 ㄌㄧㄤˊ
+莨 0 ㄌㄧㄤˊ
+蜋 0 ㄌㄧㄤˊ
+凉 0 ㄌㄧㄤˊ
+粮 0 ㄌㄧㄤˊ
+槺 0 ㄌㄧㄤˊ
+墚 0 ㄌㄧㄤˊ
+臉 0 ㄌㄧㄢˇ
+鄻 0 ㄌㄧㄢˇ
+膦 0 ㄌㄧㄢˇ
+摙 0 ㄌㄧㄢˇ
+僆 0 ㄌㄧㄢˇ
+羷 0 ㄌㄧㄢˇ
+斂 0 ㄌㄧㄢˇ
+溓 0 ㄌㄧㄢˇ
+槤 0 ㄌㄧㄢˇ
+璉 0 ㄌㄧㄢˇ
+㯬 0 ㄌㄧㄢˇ
+稴 0 ㄌㄧㄢˇ
+醶 0 ㄌㄧㄢˇ
+練 0 ㄌㄧㄢˋ
+鍊 0 ㄌㄧㄢˋ
+戀 0 ㄌㄧㄢˋ
+煉 0 ㄌㄧㄢˋ
+鏈 0 ㄌㄧㄢˋ
+殮 0 ㄌㄧㄢˋ
+斂 0 ㄌㄧㄢˋ
+瀲 0 ㄌㄧㄢˋ
+楝 0 ㄌㄧㄢˋ
+襝 0 ㄌㄧㄢˋ
+湅 0 ㄌㄧㄢˋ
+澰 0 ㄌㄧㄢˋ
+蘞 0 ㄌㄧㄢˋ
+歛 0 ㄌㄧㄢˋ
+薟 0 ㄌㄧㄢˋ
+萰 0 ㄌㄧㄢˋ
+堜 0 ㄌㄧㄢˋ
+攣 0 ㄌㄧㄢˋ
+僆 0 ㄌㄧㄢˋ
+恋 0 ㄌㄧㄢˋ
+挛 0 ㄌㄧㄢˋ
+媡 0 ㄌㄧㄢˋ
+㜃 0 ㄌㄧㄢˋ
+瑓 0 ㄌㄧㄢˋ
+錬 0 ㄌㄧㄢˋ
+㶑 0 ㄌㄧㄢˋ
+鰊 0 ㄌㄧㄢˋ
+蘝 0 ㄌㄧㄢˋ
+纞 0 ㄌㄧㄢˋ
+稴 0 ㄌㄧㄢˋ
+連 0 ㄌㄧㄢˊ
+聯 0 ㄌㄧㄢˊ
+憐 0 ㄌㄧㄢˊ
+廉 0 ㄌㄧㄢˊ
+蓮 0 ㄌㄧㄢˊ
+漣 0 ㄌㄧㄢˊ
+簾 0 ㄌㄧㄢˊ
+鐮 0 ㄌㄧㄢˊ
+鰱 0 ㄌㄧㄢˊ
+奩 0 ㄌㄧㄢˊ
+璉 0 ㄌㄧㄢˊ
+帘 0 ㄌㄧㄢˊ
+褳 0 ㄌㄧㄢˊ
+嗹 0 ㄌㄧㄢˊ
+鎌 0 ㄌㄧㄢˊ
+鬑 0 ㄌㄧㄢˊ
+溓 0 ㄌㄧㄢˊ
+蠊 0 ㄌㄧㄢˊ
+槤 0 ㄌㄧㄢˊ
+縺 0 ㄌㄧㄢˊ
+謰 0 ㄌㄧㄢˊ
+覝 0 ㄌㄧㄢˊ
+磏 0 ㄌㄧㄢˊ
+鏀 0 ㄌㄧㄢˊ
+濂 0 ㄌㄧㄢˊ
+翴 0 ㄌㄧㄢˊ
+薕 0 ㄌㄧㄢˊ
+蹥 0 ㄌㄧㄢˊ
+譧 0 ㄌㄧㄢˊ
+奱 0 ㄌㄧㄢˊ
+嬚 0 ㄌㄧㄢˊ
+零 0 ㄌㄧㄢˊ
+殮 0 ㄌㄧㄢˊ
+瞼 0 ㄌㄧㄢˊ
+怜 0 ㄌㄧㄢˊ
+轋 0 ㄌㄧㄢˊ
+蘞 0 ㄌㄧㄢˊ
+亷 0 ㄌㄧㄢˊ
+匲 0 ㄌㄧㄢˊ
+慩 0 ㄌㄧㄢˊ
+熑 0 ㄌㄧㄢˊ
+劆 0 ㄌㄧㄢˊ
+匳 0 ㄌㄧㄢˊ
+嫾 0 ㄌㄧㄢˊ
+聨 0 ㄌㄧㄢˊ
+聫 0 ㄌㄧㄢˊ
+濓 0 ㄌㄧㄢˊ
+聮 0 ㄌㄧㄢˊ
+螊 0 ㄌㄧㄢˊ
+霗 0 ㄌㄧㄢˊ
+燫 0 ㄌㄧㄢˊ
+櫣 0 ㄌㄧㄢˊ
+蘝 0 ㄌㄧㄢˊ
+䥥 0 ㄌㄧㄢˊ
+籢 0 ㄌㄧㄢˊ
+䙺 0 ㄌㄧㄢˊ
+臁 0 ㄌㄧㄢˊ
+李 0 ㄌㄧˇ
+里 0 ㄌㄧˇ
+裡 0 ㄌㄧˇ
+理 0 ㄌㄧˇ
+禮 0 ㄌㄧˇ
+裏 0 ㄌㄧˇ
+哩 0 ㄌㄧˇ
+浬 0 ㄌㄧˇ
+鯉 0 ㄌㄧˇ
+娌 0 ㄌㄧˇ
+俚 0 ㄌㄧˇ
+澧 0 ㄌㄧˇ
+邐 0 ㄌㄧˇ
+醴 0 ㄌㄧˇ
+蠡 0 ㄌㄧˇ
+鱧 0 ㄌㄧˇ
+鋰 0 ㄌㄧˇ
+粴 0 ㄌㄧˇ
+豊 0 ㄌㄧˇ
+峛 0 ㄌㄧˇ
+欚 0 ㄌㄧˇ
+履 0 ㄌㄧˇ
+悝 0 ㄌㄧˇ
+捚 0 ㄌㄧˇ
+褁 0 ㄌㄧˇ
+礼 0 ㄌㄧˇ
+峢 0 ㄌㄧˇ
+蟸 0 ㄌㄧˇ
+峲 0 ㄌㄧˇ
+喱 0 ㄌㄧˇ
+力 0 ㄌㄧˋ
+立 0 ㄌㄧˋ
+利 0 ㄌㄧˋ
+麗 0 ㄌㄧˋ
+歷 0 ㄌㄧˋ
+壢 0 ㄌㄧˋ
+例 0 ㄌㄧˋ
+曆 0 ㄌㄧˋ
+莉 0 ㄌㄧˋ
+厲 0 ㄌㄧˋ
+勵 0 ㄌㄧˋ
+礪 0 ㄌㄧˋ
+粒 0 ㄌㄧˋ
+蒞 0 ㄌㄧˋ
+靂 0 ㄌㄧˋ
+瀝 0 ㄌㄧˋ
+儷 0 ㄌㄧˋ
+隸 0 ㄌㄧˋ
+礫 0 ㄌㄧˋ
+吏 0 ㄌㄧˋ
+荔 0 ㄌㄧˋ
+栗 0 ㄌㄧˋ
+慄 0 ㄌㄧˋ
+俐 0 ㄌㄧˋ
+痢 0 ㄌㄧˋ
+癘 0 ㄌㄧˋ
+笠 0 ㄌㄧˋ
+戾 0 ㄌㄧˋ
+唳 0 ㄌㄧˋ
+酈 0 ㄌㄧˋ
+琍 0 ㄌㄧˋ
+詈 0 ㄌㄧˋ
+嚦 0 ㄌㄧˋ
+溧 0 ㄌㄧˋ
+蠣 0 ㄌㄧˋ
+櫪 0 ㄌㄧˋ
+沴 0 ㄌㄧˋ
+糲 0 ㄌㄧˋ
+櫟 0 ㄌㄧˋ
+轢 0 ㄌㄧˋ
+瓅 0 ㄌㄧˋ
+鬁 0 ㄌㄧˋ
+猁 0 ㄌㄧˋ
+盭 0 ㄌㄧˋ
+篥 0 ㄌㄧˋ
+苙 0 ㄌㄧˋ
+唎 0 ㄌㄧˋ
+屴 0 ㄌㄧˋ
+躒 0 ㄌㄧˋ
+釙 0 ㄌㄧˋ
+鬲 0 ㄌㄧˋ
+皪 0 ㄌㄧˋ
+秝 0 ㄌㄧˋ
+瑮 0 ㄌㄧˋ
+轣 0 ㄌㄧˋ
+岦 0 ㄌㄧˋ
+朸 0 ㄌㄧˋ
+欐 0 ㄌㄧˋ
+禲 0 ㄌㄧˋ
+赲 0 ㄌㄧˋ
+鴗 0 ㄌㄧˋ
+砅 0 ㄌㄧˋ
+濿 0 ㄌㄧˋ
+砬 0 ㄌㄧˋ
+悷 0 ㄌㄧˋ
+蚸 0 ㄌㄧˋ
+厤 0 ㄌㄧˋ
+筣 0 ㄌㄧˋ
+綟 0 ㄌㄧˋ
+蜧 0 ㄌㄧˋ
+磿 0 ㄌㄧˋ
+犡 0 ㄌㄧˋ
+藶 0 ㄌㄧˋ
+蠫 0 ㄌㄧˋ
+鷅 0 ㄌㄧˋ
+麜 0 ㄌㄧˋ
+攦 0 ㄌㄧˋ
+觻 0 ㄌㄧˋ
+鷑 0 ㄌㄧˋ
+攭 0 ㄌㄧˋ
+鱳 0 ㄌㄧˋ
+靋 0 ㄌㄧˋ
+栵 0 ㄌㄧˋ
+浰 0 ㄌㄧˋ
+塛 0 ㄌㄧˋ
+搮 0 ㄌㄧˋ
+蝷 0 ㄌㄧˋ
+儮 0 ㄌㄧˋ
+曞 0 ㄌㄧˋ
+讈 0 ㄌㄧˋ
+瓥 0 ㄌㄧˋ
+鱱 0 ㄌㄧˋ
+娳 0 ㄌㄧˋ
+叻 0 ㄌㄧˋ
+捩 0 ㄌㄧˋ
+棣 0 ㄌㄧˋ
+蜊 0 ㄌㄧˋ
+罹 0 ㄌㄧˋ
+鎘 0 ㄌㄧˋ
+邐 0 ㄌㄧˋ
+仂 0 ㄌㄧˋ
+夯 0 ㄌㄧˋ
+牞 0 ㄌㄧˋ
+蒚 0 ㄌㄧˋ
+擽 0 ㄌㄧˋ
+齂 0 ㄌㄧˋ
+襹 0 ㄌㄧˋ
+鸝 0 ㄌㄧˋ
+历 0 ㄌㄧˋ
+厉 0 ㄌㄧˋ
+丽 0 ㄌㄧˋ
+㕸 0 ㄌㄧˋ
+悧 0 ㄌㄧˋ
+栛 0 ㄌㄧˋ
+涖 0 ㄌㄧˋ
+珕 0 ㄌㄧˋ
+茘 0 ㄌㄧˋ
+婯 0 ㄌㄧˋ
+莅 0 ㄌㄧˋ
+傈 0 ㄌㄧˋ
+凓 0 ㄌㄧˋ
+鉝 0 ㄌㄧˋ
+鳨 0 ㄌㄧˋ
+暦 0 ㄌㄧˋ
+歴 0 ㄌㄧˋ
+䔉 0 ㄌㄧˋ
+㷴 0 ㄌㄧˋ
+隷 0 ㄌㄧˋ
+檪 0 ㄌㄧˋ
+鬴 0 ㄌㄧˋ
+巁 0 ㄌㄧˋ
+攊 0 ㄌㄧˋ
+櫔 0 ㄌㄧˋ
+爄 0 ㄌㄧˋ
+蠇 0 ㄌㄧˋ
+爏 0 ㄌㄧˋ
+瓑 0 ㄌㄧˋ
+癧 0 ㄌㄧˋ
+礰 0 ㄌㄧˋ
+纅 0 ㄌㄧˋ
+囇 0 ㄌㄧˋ
+励 0 ㄌㄧˋ
+沵 0 ㄌㄧˋ
+㾐 0 ㄌㄧˋ
+粝 0 ㄌㄧˋ
+棙 0 ㄌㄧˋ
+䓞 0 ㄌㄧˋ
+蛠 0 ㄌㄧˋ
+厯 0 ㄌㄧˋ
+㻺 0 ㄌㄧˋ
+矖 0 ㄌㄧˋ
+離 0 ㄌㄧˊ
+璃 0 ㄌㄧˊ
+黎 0 ㄌㄧˊ
+梨 0 ㄌㄧˊ
+籬 0 ㄌㄧˊ
+釐 0 ㄌㄧˊ
+犛 0 ㄌㄧˊ
+罹 0 ㄌㄧˊ
+貍 0 ㄌㄧˊ
+驪 0 ㄌㄧˊ
+犁 0 ㄌㄧˊ
+漓 0 ㄌㄧˊ
+灕 0 ㄌㄧˊ
+狸 0 ㄌㄧˊ
+藜 0 ㄌㄧˊ
+蜊 0 ㄌㄧˊ
+蠡 0 ㄌㄧˊ
+鸝 0 ㄌㄧˊ
+釃 0 ㄌㄧˊ
+斄 0 ㄌㄧˊ
+嫠 0 ㄌㄧˊ
+褵 0 ㄌㄧˊ
+黧 0 ㄌㄧˊ
+梩 0 ㄌㄧˊ
+漦 0 ㄌㄧˊ
+縭 0 ㄌㄧˊ
+蔾 0 ㄌㄧˊ
+氂 0 ㄌㄧˊ
+厘 0 ㄌㄧˊ
+蘺 0 ㄌㄧˊ
+剺 0 ㄌㄧˊ
+喱 0 ㄌㄧˊ
+篱 0 ㄌㄧˊ
+醨 0 ㄌㄧˊ
+鱺 0 ㄌㄧˊ
+劙 0 ㄌㄧˊ
+孋 0 ㄌㄧˊ
+廲 0 ㄌㄧˊ
+騹 0 ㄌㄧˊ
+孷 0 ㄌㄧˊ
+樆 0 ㄌㄧˊ
+謧 0 ㄌㄧˊ
+鯬 0 ㄌㄧˊ
+鵹 0 ㄌㄧˊ
+攡 0 ㄌㄧˊ
+麗 0 ㄌㄧˊ
+菞 0 ㄌㄧˊ
+鑗 0 ㄌㄧˊ
+粍 0 ㄌㄧˊ
+麶 0 ㄌㄧˊ
+俚 0 ㄌㄧˊ
+魑 0 ㄌㄧˊ
+霾 0 ㄌㄧˊ
+离 0 ㄌㄧˊ
+詈 0 ㄌㄧˊ
+筣 0 ㄌㄧˊ
+螭 0 ㄌㄧˊ
+蠫 0 ㄌㄧˊ
+刕 0 ㄌㄧˊ
+丽 0 ㄌㄧˊ
+剓 0 ㄌㄧˊ
+婯 0 ㄌㄧˊ
+悡 0 ㄌㄧˊ
+梸 0 ㄌㄧˊ
+荲 0 ㄌㄧˊ
+棃 0 ㄌㄧˊ
+犂 0 ㄌㄧˊ
+㴝 0 ㄌㄧˊ
+睝 0 ㄌㄧˊ
+鋫 0 ㄌㄧˊ
+錅 0 ㄌㄧˊ
+蟍 0 ㄌㄧˊ
+嚟 0 ㄌㄧˊ
+瓈 0 ㄌㄧˊ
+蟸 0 ㄌㄧˊ
+鏫 0 ㄌㄧˊ
+彲 0 ㄌㄧˊ
+穲 0 ㄌㄧˊ
+卨 0 ㄌㄧˊ
+猍 0 ㄌㄧˊ
+艃 0 ㄌㄧˊ
+盠 0 ㄌㄧˊ
+邌 0 ㄌㄧˊ
+㦒 0 ㄌㄧˊ
+哩 0 ㄌㄧ˙
+裡 0 ㄌㄧ˙
+娌 0 ㄌㄧ˙
+倆 0 ㄌㄧㄚˇ
+俩 0 ㄌㄧㄚˇ
+撩 0 ㄌㄧㄠ
+了 0 ㄌㄧㄠˇ
+瞭 0 ㄌㄧㄠˇ
+蓼 0 ㄌㄧㄠˇ
+憭 0 ㄌㄧㄠˇ
+釕 0 ㄌㄧㄠˇ
+暸 0 ㄌㄧㄠˇ
+鄝 0 ㄌㄧㄠˇ
+蟟 0 ㄌㄧㄠˇ
+燎 0 ㄌㄧㄠˇ
+繚 0 ㄌㄧㄠˇ
+镽 0 ㄌㄧㄠˇ
+尞 0 ㄌㄧㄠˇ
+嘞 0 ㄌㄧㄠˇ
+爒 0 ㄌㄧㄠˇ
+廖 0 ㄌㄧㄠˋ
+料 0 ㄌㄧㄠˋ
+瞭 0 ㄌㄧㄠˋ
+燎 0 ㄌㄧㄠˋ
+尥 0 ㄌㄧㄠˋ
+撂 0 ㄌㄧㄠˋ
+炓 0 ㄌㄧㄠˋ
+蟉 0 ㄌㄧㄠˋ
+窲 0 ㄌㄧㄠˋ
+療 0 ㄌㄧㄠˋ
+釕 0 ㄌㄧㄠˋ
+鄝 0 ㄌㄧㄠˋ
+璆 0 ㄌㄧㄠˋ
+瘳 0 ㄌㄧㄠˋ
+鐐 0 ㄌㄧㄠˋ
+尞 0 ㄌㄧㄠˋ
+爒 0 ㄌㄧㄠˋ
+聊 0 ㄌㄧㄠˊ
+寮 0 ㄌㄧㄠˊ
+遼 0 ㄌㄧㄠˊ
+療 0 ㄌㄧㄠˊ
+寥 0 ㄌㄧㄠˊ
+撩 0 ㄌㄧㄠˊ
+僚 0 ㄌㄧㄠˊ
+燎 0 ㄌㄧㄠˊ
+潦 0 ㄌㄧㄠˊ
+嘹 0 ㄌㄧㄠˊ
+繚 0 ㄌㄧㄠˊ
+鐐 0 ㄌㄧㄠˊ
+嫽 0 ㄌㄧㄠˊ
+獠 0 ㄌㄧㄠˊ
+鷯 0 ㄌㄧㄠˊ
+屪 0 ㄌㄧㄠˊ
+膋 0 ㄌㄧㄠˊ
+漻 0 ㄌㄧㄠˊ
+摎 0 ㄌㄧㄠˊ
+豂 0 ㄌㄧㄠˊ
+嵺 0 ㄌㄧㄠˊ
+憀 0 ㄌㄧㄠˊ
+嶚 0 ㄌㄧㄠˊ
+敹 0 ㄌㄧㄠˊ
+窷 0 ㄌㄧㄠˊ
+膫 0 ㄌㄧㄠˊ
+簝 0 ㄌㄧㄠˊ
+镽 0 ㄌㄧㄠˊ
+飂 0 ㄌㄧㄠˊ
+飉 0 ㄌㄧㄠˊ
+顟 0 ㄌㄧㄠˊ
+佬 0 ㄌㄧㄠˊ
+窌 0 ㄌㄧㄠˊ
+翏 0 ㄌㄧㄠˊ
+憭 0 ㄌㄧㄠˊ
+蟟 0 ㄌㄧㄠˊ
+醪 0 ㄌㄧㄠˊ
+尞 0 ㄌㄧㄠˊ
+嶛 0 ㄌㄧㄠˊ
+熮 0 ㄌㄧㄠˊ
+竂 0 ㄌㄧㄠˊ
+蹘 0 ㄌㄧㄠˊ
+髎 0 ㄌㄧㄠˊ
+璙 0 ㄌㄧㄠˊ
+廫 0 ㄌㄧㄠˊ
+賿 0 ㄌㄧㄠˊ
+凜 0 ㄌㄧㄣˇ
+懍 0 ㄌㄧㄣˇ
+廩 0 ㄌㄧㄣˇ
+檁 0 ㄌㄧㄣˇ
+菻 0 ㄌㄧㄣˇ
+亃 0 ㄌㄧㄣˇ
+綝 0 ㄌㄧㄣˇ
+榃 0 ㄌㄧㄣˇ
+稟 0 ㄌㄧㄣˇ
+僯 0 ㄌㄧㄣˇ
+顲 0 ㄌㄧㄣˇ
+禀 0 ㄌㄧㄣˇ
+凛 0 ㄌㄧㄣˇ
+撛 0 ㄌㄧㄣˇ
+廪 0 ㄌㄧㄣˇ
+澟 0 ㄌㄧㄣˇ
+癛 0 ㄌㄧㄣˇ
+㨆 0 ㄌㄧㄣˇ
+吝 0 ㄌㄧㄣˋ
+躪 0 ㄌㄧㄣˋ
+藺 0 ㄌㄧㄣˋ
+賃 0 ㄌㄧㄣˋ
+橉 0 ㄌㄧㄣˋ
+閵 0 ㄌㄧㄣˋ
+焛 0 ㄌㄧㄣˋ
+淋 0 ㄌㄧㄣˋ
+痳 0 ㄌㄧㄣˋ
+遴 0 ㄌㄧㄣˋ
+磷 0 ㄌㄧㄣˋ
+臨 0 ㄌㄧㄣˋ
+甐 0 ㄌㄧㄣˋ
+鏻 0 ㄌㄧㄣˋ
+恡 0 ㄌㄧㄣˋ
+悋 0 ㄌㄧㄣˋ
+林 0 ㄌㄧㄣˊ
+臨 0 ㄌㄧㄣˊ
+鄰 0 ㄌㄧㄣˊ
+淋 0 ㄌㄧㄣˊ
+鱗 0 ㄌㄧㄣˊ
+麟 0 ㄌㄧㄣˊ
+霖 0 ㄌㄧㄣˊ
+磷 0 ㄌㄧㄣˊ
+琳 0 ㄌㄧㄣˊ
+遴 0 ㄌㄧㄣˊ
+嶙 0 ㄌㄧㄣˊ
+燐 0 ㄌㄧㄣˊ
+璘 0 ㄌㄧㄣˊ
+粼 0 ㄌㄧㄣˊ
+轔 0 ㄌㄧㄣˊ
+潾 0 ㄌㄧㄣˊ
+痳 0 ㄌㄧㄣˊ
+疄 0 ㄌㄧㄣˊ
+瞵 0 ㄌㄧㄣˊ
+惏 0 ㄌㄧㄣˊ
+暽 0 ㄌㄧㄣˊ
+罧 0 ㄌㄧㄣˊ
+驎 0 ㄌㄧㄣˊ
+碄 0 ㄌㄧㄣˊ
+箖 0 ㄌㄧㄣˊ
+甐 0 ㄌㄧㄣˊ
+繗 0 ㄌㄧㄣˊ
+僯 0 ㄌㄧㄣˊ
+翷 0 ㄌㄧㄣˊ
+蹸 0 ㄌㄧㄣˊ
+壣 0 ㄌㄧㄣˊ
+鏻 0 ㄌㄧㄣˊ
+藺 0 ㄌㄧㄣˊ
+亃 0 ㄌㄧㄣˊ
+榃 0 ㄌㄧㄣˊ
+吅 0 ㄌㄧㄣˊ
+玪 0 ㄌㄧㄣˊ
+崊 0 ㄌㄧㄣˊ
+晽 0 ㄌㄧㄣˊ
+粦 0 ㄌㄧㄣˊ
+隣 0 ㄌㄧㄣˊ
+麐 0 ㄌㄧㄣˊ
+瀶 0 ㄌㄧㄣˊ
+躙 0 ㄌㄧㄣˊ
+轥 0 ㄌㄧㄣˊ
+厸 0 ㄌㄧㄣˊ
+杮 0 ㄌㄧㄣˊ
+枾 0 ㄌㄧㄣˊ
+㔂 0 ㄌㄧㄣˊ
+獜 0 ㄌㄧㄣˊ
+斴 0 ㄌㄧㄣˊ
+魿 0 ㄌㄧㄣˊ
+資 0 ㄗ
+茲 0 ㄗ
+滋 0 ㄗ
+吱 0 ㄗ
+姿 0 ㄗ
+咨 0 ㄗ
+孜 0 ㄗ
+諮 0 ㄗ
+貲 0 ㄗ
+玆 0 ㄗ
+ㄗ 0 ㄗ
+輜 0 ㄗ
+淄 0 ㄗ
+齜 0 ㄗ
+緇 0 ㄗ
+孳 0 ㄗ
+粢 0 ㄗ
+髭 0 ㄗ
+嵫 0 ㄗ
+菑 0 ㄗ
+鎡 0 ㄗ
+鼒 0 ㄗ
+孖 0 ㄗ
+澬 0 ㄗ
+甾 0 ㄗ
+鄑 0 ㄗ
+鯔 0 ㄗ
+錙 0 ㄗ
+趑 0 ㄗ
+椔 0 ㄗ
+鈭 0 ㄗ
+鶅 0 ㄗ
+齍 0 ㄗ
+栥 0 ㄗ
+紎 0 ㄗ
+崰 0 ㄗ
+秶 0 ㄗ
+蠀 0 ㄗ
+仔 0 ㄗ
+次 0 ㄗ
+恣 0 ㄗ
+訾 0 ㄗ
+齊 0 ㄗ
+茬 0 ㄗ
+絘 0 ㄗ
+觜 0 ㄗ
+薋 0 ㄗ
+齐 0 ㄗ
+亝 0 ㄗ
+斉 0 ㄗ
+姕 0 ㄗ
+兹 0 ㄗ
+赼 0 ㄗ
+嗞 0 ㄗ
+孶 0 ㄗ
+葘 0 ㄗ
+趦 0 ㄗ
+鍿 0 ㄗ
+頿 0 ㄗ
+茊 0 ㄗ
+斊 0 ㄗ
+湽 0 ㄗ
+稵 0 ㄗ
+䨏 0 ㄗ
+頾 0 ㄗ
+鰦 0 ㄗ
+鷀 0 ㄗ
+禌 0 ㄗ
+輺 0 ㄗ
+鄒 0 ㄗㄡ
+謅 0 ㄗㄡ
+鄹 0 ㄗㄡ
+諏 0 ㄗㄡ
+啁 0 ㄗㄡ
+掫 0 ㄗㄡ
+菆 0 ㄗㄡ
+陬 0 ㄗㄡ
+騶 0 ㄗㄡ
+鯫 0 ㄗㄡ
+棸 0 ㄗㄡ
+緅 0 ㄗㄡ
+棷 0 ㄗㄡ
+郰 0 ㄗㄡ
+媰 0 ㄗㄡ
+黀 0 ㄗㄡ
+齱 0 ㄗㄡ
+齺 0 ㄗㄡ
+娵 0 ㄗㄡ
+邹 0 ㄗㄡ
+箃 0 ㄗㄡ
+走 0 ㄗㄡˇ
+赱 0 ㄗㄡˇ
+奏 0 ㄗㄡˋ
+驟 0 ㄗㄡˋ
+揍 0 ㄗㄡˋ
+楱 0 ㄗㄡˋ
+㵵 0 ㄗㄡˋ
+曾 0 ㄗㄥ
+增 0 ㄗㄥ
+憎 0 ㄗㄥ
+罾 0 ㄗㄥ
+繒 0 ㄗㄥ
+矰 0 ㄗㄥ
+橧 0 ㄗㄥ
+磳 0 ㄗㄥ
+驓 0 ㄗㄥ
+璔 0 ㄗㄥ
+僧 0 ㄗㄥ
+噌 0 ㄗㄥ
+潧 0 ㄗㄥ
+鬙 0 ㄗㄥ
+増 0 ㄗㄥ
+熷 0 ㄗㄥ
+譄 0 ㄗㄥ
+贈 0 ㄗㄥˋ
+甑 0 ㄗㄥˋ
+繒 0 ㄗㄥˋ
+罾 0 ㄗㄥˋ
+髒 0 ㄗㄤ
+贓 0 ㄗㄤ
+臢 0 ㄗㄤ
+牂 0 ㄗㄤ
+臧 0 ㄗㄤ
+賍 0 ㄗㄤ
+贜 0 ㄗㄤ
+匨 0 ㄗㄤ
+羘 0 ㄗㄤ
+駔 0 ㄗㄤˇ
+髒 0 ㄗㄤˇ
+驡 0 ㄗㄤˇ
+藏 0 ㄗㄤˋ
+臟 0 ㄗㄤˋ
+葬 0 ㄗㄤˋ
+奘 0 ㄗㄤˋ
+塟 0 ㄗㄤˋ
+蔵 0 ㄗㄤˋ
+銺 0 ㄗㄤˋ
+簪 0 ㄗㄢ
+鐕 0 ㄗㄢ
+撍 0 ㄗㄢ
+簮 0 ㄗㄢ
+鐟 0 ㄗㄢ
+兂 0 ㄗㄢ
+䐶 0 ㄗㄢ
+拶 0 ㄗㄢˇ
+攢 0 ㄗㄢˇ
+寁 0 ㄗㄢˇ
+昝 0 ㄗㄢˇ
+禶 0 ㄗㄢˇ
+喒 0 ㄗㄢˇ
+儹 0 ㄗㄢˇ
+揝 0 ㄗㄢˇ
+礸 0 ㄗㄢˇ
+噆 0 ㄗㄢˇ
+趲 0 ㄗㄢˇ
+㳫 0 ㄗㄢˇ
+撍 0 ㄗㄢˇ
+儧 0 ㄗㄢˇ
+攅 0 ㄗㄢˇ
+贊 0 ㄗㄢˋ
+暫 0 ㄗㄢˋ
+讚 0 ㄗㄢˋ
+鏨 0 ㄗㄢˋ
+瓚 0 ㄗㄢˋ
+酇 0 ㄗㄢˋ
+灒 0 ㄗㄢˋ
+囋 0 ㄗㄢˋ
+臢 0 ㄗㄢˋ
+劗 0 ㄗㄢˋ
+禶 0 ㄗㄢˋ
+賛 0 ㄗㄢˋ
+濽 0 ㄗㄢˋ
+鄼 0 ㄗㄢˋ
+櫕 0 ㄗㄢˋ
+瓉 0 ㄗㄢˋ
+鏩 0 ㄗㄢˋ
+讃 0 ㄗㄢˋ
+穳 0 ㄗㄢˋ
+襸 0 ㄗㄢˋ
+㔆 0 ㄗㄢˋ
+㜺 0 ㄗㄢˋ
+咱 0 ㄗㄢˊ
+偺 0 ㄗㄢˊ
+糌 0 ㄗㄢˊ
+喒 0 ㄗㄢˊ
+㑑 0 ㄗㄢˊ
+子 0 ㄗˇ
+仔 0 ㄗˇ
+紫 0 ㄗˇ
+梓 0 ㄗˇ
+籽 0 ㄗˇ
+滓 0 ㄗˇ
+耔 0 ㄗˇ
+訾 0 ㄗˇ
+笫 0 ㄗˇ
+秭 0 ㄗˇ
+胏 0 ㄗˇ
+茈 0 ㄗˇ
+吇 0 ㄗˇ
+杍 0 ㄗˇ
+芓 0 ㄗˇ
+呰 0 ㄗˇ
+矷 0 ㄗˇ
+釨 0 ㄗˇ
+訿 0 ㄗˇ
+姊 0 ㄗˇ
+㺭 0 ㄗˇ
+姉 0 ㄗˇ
+秄 0 ㄗˇ
+虸 0 ㄗˇ
+啙 0 ㄗˇ
+榟 0 ㄗˇ
+自 0 ㄗˋ
+字 0 ㄗˋ
+恣 0 ㄗˋ
+漬 0 ㄗˋ
+眥 0 ㄗˋ
+孳 0 ㄗˋ
+剚 0 ㄗˋ
+胔 0 ㄗˋ
+胾 0 ㄗˋ
+扻 0 ㄗˋ
+倳 0 ㄗˋ
+牸 0 ㄗˋ
+磧 0 ㄗˋ
+芓 0 ㄗˋ
+絘 0 ㄗˋ
+茡 0 ㄗˋ
+㹀 0 ㄗˋ
+眦 0 ㄗˋ
+髊 0 ㄗˋ
+子 0 ㄗ˙
+紮 0 ㄗㄚ
+匝 0 ㄗㄚ
+咂 0 ㄗㄚ
+唼 0 ㄗㄚ
+嘁 0 ㄗㄚ
+抸 0 ㄗㄚ
+鉔 0 ㄗㄚ
+臢 0 ㄗㄚ
+帀 0 ㄗㄚ
+沞 0 ㄗㄚ
+迊 0 ㄗㄚ
+紥 0 ㄗㄚ
+鮺 0 ㄗㄚˇ
+雜 0 ㄗㄚˊ
+咱 0 ㄗㄚˊ
+砸 0 ㄗㄚˊ
+偺 0 ㄗㄚˊ
+雥 0 ㄗㄚˊ
+磼 0 ㄗㄚˊ
+拶 0 ㄗㄚˊ
+喒 0 ㄗㄚˊ
+嘁 0 ㄗㄚˊ
+巀 0 ㄗㄚˊ
+㑑 0 ㄗㄚˊ
+雑 0 ㄗㄚˊ
+嶻 0 ㄗㄚˊ
+襍 0 ㄗㄚˊ
+韴 0 ㄗㄚˊ
+囐 0 ㄗㄚˊ
+災 0 ㄗㄞ
+栽 0 ㄗㄞ
+哉 0 ㄗㄞ
+渽 0 ㄗㄞ
+賳 0 ㄗㄞ
+菑 0 ㄗㄞ
+灾 0 ㄗㄞ
+烖 0 ㄗㄞ
+睵 0 ㄗㄞ
+仔 0 ㄗㄞˇ
+宰 0 ㄗㄞˇ
+崽 0 ㄗㄞˇ
+載 0 ㄗㄞˇ
+縡 0 ㄗㄞˇ
+滓 0 ㄗㄞˇ
+儎 0 ㄗㄞˇ
+䏁 0 ㄗㄞˇ
+在 0 ㄗㄞˋ
+再 0 ㄗㄞˋ
+載 0 ㄗㄞˋ
+饡 0 ㄗㄞˋ
+扗 0 ㄗㄞˋ
+洅 0 ㄗㄞˋ
+儎 0 ㄗㄞˋ
+在 0 ㄗㄞ˙
+租 0 ㄗㄨ
+蒩 0 ㄗㄨ
+宗 0 ㄗㄨㄥ
+蹤 0 ㄗㄨㄥ
+縱 0 ㄗㄨㄥ
+綜 0 ㄗㄨㄥ
+棕 0 ㄗㄨㄥ
+鬃 0 ㄗㄨㄥ
+豵 0 ㄗㄨㄥ
+騣 0 ㄗㄨㄥ
+鬷 0 ㄗㄨㄥ
+翪 0 ㄗㄨㄥ
+熧 0 ㄗㄨㄥ
+倧 0 ㄗㄨㄥ
+惾 0 ㄗㄨㄥ
+猣 0 ㄗㄨㄥ
+稯 0 ㄗㄨㄥ
+艐 0 ㄗㄨㄥ
+嵕 0 ㄗㄨㄥ
+蝬 0 ㄗㄨㄥ
+從 0 ㄗㄨㄥ
+淙 0 ㄗㄨㄥ
+琮 0 ㄗㄨㄥ
+朡 0 ㄗㄨㄥ
+嵷 0 ㄗㄨㄥ
+賨 0 ㄗㄨㄥ
+鍐 0 ㄗㄨㄥ
+从 0 ㄗㄨㄥ
+従 0 ㄗㄨㄥ
+嵏 0 ㄗㄨㄥ
+椶 0 ㄗㄨㄥ
+嵸 0 ㄗㄨㄥ
+賩 0 ㄗㄨㄥ
+踪 0 ㄗㄨㄥ
+踨 0 ㄗㄨㄥ
+磫 0 ㄗㄨㄥ
+縦 0 ㄗㄨㄥ
+騌 0 ㄗㄨㄥ
+鬉 0 ㄗㄨㄥ
+鯮 0 ㄗㄨㄥ
+鯼 0 ㄗㄨㄥ
+苁 0 ㄗㄨㄥ
+㚇 0 ㄗㄨㄥ
+堫 0 ㄗㄨㄥ
+葼 0 ㄗㄨㄥ
+㙡 0 ㄗㄨㄥ
+䁓 0 ㄗㄨㄥ
+緃 0 ㄗㄨㄥ
+總 0 ㄗㄨㄥˇ
+摠 0 ㄗㄨㄥˇ
+傯 0 ㄗㄨㄥˇ
+熜 0 ㄗㄨㄥˇ
+朡 0 ㄗㄨㄥˇ
+蓗 0 ㄗㄨㄥˇ
+縱 0 ㄗㄨㄥˇ
+偬 0 ㄗㄨㄥˇ
+捴 0 ㄗㄨㄥˇ
+惣 0 ㄗㄨㄥˇ
+愡 0 ㄗㄨㄥˇ
+焧 0 ㄗㄨㄥˇ
+㷓 0 ㄗㄨㄥˇ
+憁 0 ㄗㄨㄥˇ
+総 0 ㄗㄨㄥˇ
+縂 0 ㄗㄨㄥˇ
+縦 0 ㄗㄨㄥˇ
+燪 0 ㄗㄨㄥˇ
+㧾 0 ㄗㄨㄥˇ
+揔 0 ㄗㄨㄥˇ
+縱 0 ㄗㄨㄥˋ
+粽 0 ㄗㄨㄥˋ
+綜 0 ㄗㄨㄥˋ
+從 0 ㄗㄨㄥˋ
+瘲 0 ㄗㄨㄥˋ
+昮 0 ㄗㄨㄥˋ
+錝 0 ㄗㄨㄥˋ
+从 0 ㄗㄨㄥˋ
+従 0 ㄗㄨㄥˋ
+碂 0 ㄗㄨㄥˋ
+糉 0 ㄗㄨㄥˋ
+縦 0 ㄗㄨㄥˋ
+苁 0 ㄗㄨㄥˋ
+倊 0 ㄗㄨㄥˋ
+猔 0 ㄗㄨㄥˋ
+䝋 0 ㄗㄨㄥˋ
+鑽 0 ㄗㄨㄢ
+躦 0 ㄗㄨㄢ
+劗 0 ㄗㄨㄢ
+鑚 0 ㄗㄨㄢ
+纂 0 ㄗㄨㄢˇ
+鑽 0 ㄗㄨㄢˇ
+纘 0 ㄗㄨㄢˇ
+籫 0 ㄗㄨㄢˇ
+篹 0 ㄗㄨㄢˇ
+纉 0 ㄗㄨㄢˇ
+鑚 0 ㄗㄨㄢˇ
+賺 0 ㄗㄨㄢˋ
+鑽 0 ㄗㄨㄢˋ
+攥 0 ㄗㄨㄢˋ
+揝 0 ㄗㄨㄢˋ
+櫕 0 ㄗㄨㄢˋ
+鑚 0 ㄗㄨㄢˋ
+組 0 ㄗㄨˇ
+祖 0 ㄗㄨˇ
+阻 0 ㄗㄨˇ
+俎 0 ㄗㄨˇ
+詛 0 ㄗㄨˇ
+珇 0 ㄗㄨˇ
+靻 0 ㄗㄨˇ
+咀 0 ㄗㄨˇ
+沮 0 ㄗㄨˇ
+狙 0 ㄗㄨˇ
+砠 0 ㄗㄨˇ
+齟 0 ㄗㄨˇ
+岨 0 ㄗㄨˇ
+抯 0 ㄗㄨˇ
+柤 0 ㄗㄨˇ
+苴 0 ㄗㄨˇ
+袓 0 ㄗㄨˇ
+菹 0 ㄗㄨˇ
+跙 0 ㄗㄨˇ
+麆 0 ㄗㄨˇ
+爼 0 ㄗㄨˇ
+䔃 0 ㄗㄨˇ
+駔 0 ㄗㄨˋ
+錊 0 ㄗㄨˋ
+足 0 ㄗㄨˊ
+族 0 ㄗㄨˊ
+卒 0 ㄗㄨˊ
+嗾 0 ㄗㄨˊ
+捽 0 ㄗㄨˊ
+崒 0 ㄗㄨˊ
+踿 0 ㄗㄨˊ
+哫 0 ㄗㄨˊ
+傶 0 ㄗㄨˊ
+踤 0 ㄗㄨˊ
+鏃 0 ㄗㄨˊ
+娖 0 ㄗㄨˊ
+珿 0 ㄗㄨˊ
+蓗 0 ㄗㄨˊ
+踀 0 ㄗㄨˊ
+鷟 0 ㄗㄨˊ
+卆 0 ㄗㄨˊ
+崪 0 ㄗㄨˊ
+鎐 0 ㄗㄨˊ
+稡 0 ㄗㄨˊ
+鉃 0 ㄗㄨˊ
+左 0 ㄗㄨㄛˇ
+佐 0 ㄗㄨㄛˇ
+繓 0 ㄗㄨㄛˇ
+撮 0 ㄗㄨㄛˇ
+做 0 ㄗㄨㄛˋ
+作 0 ㄗㄨㄛˋ
+嘬 0 ㄗㄨㄛˋ
+坐 0 ㄗㄨㄛˋ
+座 0 ㄗㄨㄛˋ
+酢 0 ㄗㄨㄛˋ
+祚 0 ㄗㄨㄛˋ
+鑿 0 ㄗㄨㄛˋ
+柞 0 ㄗㄨㄛˋ
+怍 0 ㄗㄨㄛˋ
+胙 0 ㄗㄨㄛˋ
+阼 0 ㄗㄨㄛˋ
+葄 0 ㄗㄨㄛˋ
+夎 0 ㄗㄨㄛˋ
+醋 0 ㄗㄨㄛˋ
+迮 0 ㄗㄨㄛˋ
+袏 0 ㄗㄨㄛˋ
+飵 0 ㄗㄨㄛˋ
+糳 0 ㄗㄨㄛˋ
+䟭 0 ㄗㄨㄛˋ
+昨 0 ㄗㄨㄛˊ
+作 0 ㄗㄨㄛˊ
+椊 0 ㄗㄨㄛˊ
+筰 0 ㄗㄨㄛˊ
+稓 0 ㄗㄨㄛˊ
+葃 0 ㄗㄨㄛˊ
+撮 0 ㄗㄨㄛˊ
+岝 0 ㄗㄨㄛˊ
+苲 0 ㄗㄨㄛˊ
+捽 0 ㄗㄨㄛˊ
+莋 0 ㄗㄨㄛˊ
+繓 0 ㄗㄨㄛˊ
+岞 0 ㄗㄨㄛˊ
+秨 0 ㄗㄨㄛˊ
+鈼 0 ㄗㄨㄛˊ
+嘬 0 ㄗㄨㄛ
+作 0 ㄗㄨㄛ
+厜 0 ㄗㄨㄟ
+羧 0 ㄗㄨㄟ
+嶉 0 ㄗㄨㄟ
+纗 0 ㄗㄨㄟ
+朘 0 ㄗㄨㄟ
+脧 0 ㄗㄨㄟ
+嗺 0 ㄗㄨㄟ
+欈 0 ㄗㄨㄟ
+垖 0 ㄗㄨㄟ
+塠 0 ㄗㄨㄟ
+樶 0 ㄗㄨㄟ
+蟕 0 ㄗㄨㄟ
+嘴 0 ㄗㄨㄟˇ
+璻 0 ㄗㄨㄟˇ
+觜 0 ㄗㄨㄟˇ
+嶊 0 ㄗㄨㄟˇ
+噿 0 ㄗㄨㄟˇ
+濢 0 ㄗㄨㄟˇ
+嶉 0 ㄗㄨㄟˇ
+臎 0 ㄗㄨㄟˇ
+最 0 ㄗㄨㄟˋ
+罪 0 ㄗㄨㄟˋ
+醉 0 ㄗㄨㄟˋ
+檇 0 ㄗㄨㄟˋ
+蕞 0 ㄗㄨㄟˋ
+晬 0 ㄗㄨㄟˋ
+檌 0 ㄗㄨㄟˋ
+絊 0 ㄗㄨㄟˋ
+祽 0 ㄗㄨㄟˋ
+鋷 0 ㄗㄨㄟˋ
+墬 0 ㄗㄨㄟˋ
+嶵 0 ㄗㄨㄟˋ
+撮 0 ㄗㄨㄟˋ
+嘬 0 ㄗㄨㄟˋ
+蕝 0 ㄗㄨㄟˋ
+繓 0 ㄗㄨㄟˋ
+欈 0 ㄗㄨㄟˋ
+栬 0 ㄗㄨㄟˋ
+酔 0 ㄗㄨㄟˋ
+辠 0 ㄗㄨㄟˋ
+酻 0 ㄗㄨㄟˋ
+錊 0 ㄗㄨㄟˋ
+尊 0 ㄗㄨㄣ
+遵 0 ㄗㄨㄣ
+樽 0 ㄗㄨㄣ
+墫 0 ㄗㄨㄣ
+鐏 0 ㄗㄨㄣ
+嶟 0 ㄗㄨㄣ
+繜 0 ㄗㄨㄣ
+鷷 0 ㄗㄨㄣ
+壿 0 ㄗㄨㄣ
+燇 0 ㄗㄨㄣ
+譐 0 ㄗㄨㄣ
+鱒 0 ㄗㄨㄣ
+罇 0 ㄗㄨㄣ
+撙 0 ㄗㄨㄣˇ
+噂 0 ㄗㄨㄣˇ
+墫 0 ㄗㄨㄣˇ
+僔 0 ㄗㄨㄣˇ
+譐 0 ㄗㄨㄣˇ
+䔿 0 ㄗㄨㄣˇ
+俊 0 ㄗㄨㄣˋ
+圳 0 ㄗㄨㄣˋ
+捘 0 ㄗㄨㄣˋ
+鱒 0 ㄗㄨㄣˋ
+銌 0 ㄗㄨㄣˋ
+燇 0 ㄗㄨㄣˋ
+甽 0 ㄗㄨㄣˋ
+晙 0 ㄗㄨㄣˋ
+焌 0 ㄗㄨㄣˋ
+畯 0 ㄗㄨㄣˋ
+餕 0 ㄗㄨㄣˋ
+㑺 0 ㄗㄨㄣˋ
+儁 0 ㄗㄨㄣˋ
+鵕 0 ㄗㄨㄣˋ
+怎 0 ㄗㄜˇ
+仄 0 ㄗㄜˋ
+側 0 ㄗㄜˋ
+昃 0 ㄗㄜˋ
+庂 0 ㄗㄜˋ
+稄 0 ㄗㄜˋ
+唶 0 ㄗㄜˋ
+崱 0 ㄗㄜˋ
+汄 0 ㄗㄜˋ
+昗 0 ㄗㄜˋ
+諎 0 ㄗㄜˋ
+夨 0 ㄗㄜˋ
+歵 0 ㄗㄜˋ
+則 0 ㄗㄜˊ
+責 0 ㄗㄜˊ
+擇 0 ㄗㄜˊ
+澤 0 ㄗㄜˊ
+嘖 0 ㄗㄜˊ
+窄 0 ㄗㄜˊ
+舴 0 ㄗㄜˊ
+咋 0 ㄗㄜˊ
+幘 0 ㄗㄜˊ
+笮 0 ㄗㄜˊ
+賾 0 ㄗㄜˊ
+迮 0 ㄗㄜˊ
+齰 0 ㄗㄜˊ
+崱 0 ㄗㄜˊ
+萴 0 ㄗㄜˊ
+謮 0 ㄗㄜˊ
+蠌 0 ㄗㄜˊ
+賊 0 ㄗㄜˊ
+蠈 0 ㄗㄜˊ
+柞 0 ㄗㄜˊ
+磧 0 ㄗㄜˊ
+伬 0 ㄗㄜˊ
+岝 0 ㄗㄜˊ
+捑 0 ㄗㄜˊ
+樍 0 ㄗㄜˊ
+檡 0 ㄗㄜˊ
+簀 0 ㄗㄜˊ
+鍘 0 ㄗㄜˊ
+鸅 0 ㄗㄜˊ
+岅 0 ㄗㄜˊ
+択 0 ㄗㄜˊ
+沢 0 ㄗㄜˊ
+岞 0 ㄗㄜˊ
+飵 0 ㄗㄜˊ
+嫧 0 ㄗㄜˊ
+耫 0 ㄗㄜˊ
+鰂 0 ㄗㄜˊ
+鱡 0 ㄗㄜˊ
+戝 0 ㄗㄜˊ
+溭 0 ㄗㄜˊ
+皟 0 ㄗㄜˊ
+瞔 0 ㄗㄜˊ
+襗 0 ㄗㄜˊ
+遭 0 ㄗㄠ
+糟 0 ㄗㄠ
+蹧 0 ㄗㄠ
+傮 0 ㄗㄠ
+慒 0 ㄗㄠ
+鰽 0 ㄗㄠ
+㷮 0 ㄗㄠ
+醩 0 ㄗㄠ
+早 0 ㄗㄠˇ
+棗 0 ㄗㄠˇ
+澡 0 ㄗㄠˇ
+藻 0 ㄗㄠˇ
+蚤 0 ㄗㄠˇ
+璪 0 ㄗㄠˇ
+繰 0 ㄗㄠˇ
+慅 0 ㄗㄠˇ
+溞 0 ㄗㄠˇ
+瑵 0 ㄗㄠˇ
+璅 0 ㄗㄠˇ
+瘙 0 ㄗㄠˇ
+糔 0 ㄗㄠˇ
+鄵 0 ㄗㄠˇ
+枣 0 ㄗㄠˇ
+薻 0 ㄗㄠˇ
+造 0 ㄗㄠˋ
+皂 0 ㄗㄠˋ
+燥 0 ㄗㄠˋ
+噪 0 ㄗㄠˋ
+慥 0 ㄗㄠˋ
+譟 0 ㄗㄠˋ
+灶 0 ㄗㄠˋ
+躁 0 ㄗㄠˋ
+皁 0 ㄗㄠˋ
+趮 0 ㄗㄠˋ
+矂 0 ㄗㄠˋ
+漕 0 ㄗㄠˋ
+糙 0 ㄗㄠˋ
+喿 0 ㄗㄠˋ
+劋 0 ㄗㄠˋ
+幧 0 ㄗㄠˋ
+懆 0 ㄗㄠˋ
+氉 0 ㄗㄠˋ
+簉 0 ㄗㄠˋ
+鐰 0 ㄗㄠˋ
+艁 0 ㄗㄠˋ
+謲 0 ㄗㄠˋ
+竈 0 ㄗㄠˋ
+唕 0 ㄗㄠˋ
+鑿 0 ㄗㄠˊ
+賊 0 ㄗㄟˊ
+戝 0 ㄗㄟˊ
+怎 0 ㄗㄣˇ
+譖 0 ㄗㄣˋ
+ㄈ 0 ㄈ
+不 0 ㄈㄡ
+否 0 ㄈㄡˇ
+缶 0 ㄈㄡˇ
+殕 0 ㄈㄡˇ
+缹 0 ㄈㄡˇ
+鴀 0 ㄈㄡˇ
+不 0 ㄈㄡˇ
+缻 0 ㄈㄡˇ
+雬 0 ㄈㄡˇ
+復 0 ㄈㄡˋ
+复 0 ㄈㄡˋ
+罘 0 ㄈㄡˊ
+芣 0 ㄈㄡˊ
+紑 0 ㄈㄡˊ
+剻 0 ㄈㄡˊ
+浮 0 ㄈㄡˊ
+鴀 0 ㄈㄡˊ
+風 0 ㄈㄥ
+蜂 0 ㄈㄥ
+封 0 ㄈㄥ
+豐 0 ㄈㄥ
+瘋 0 ㄈㄥ
+峰 0 ㄈㄥ
+鋒 0 ㄈㄥ
+丰 0 ㄈㄥ
+烽 0 ㄈㄥ
+楓 0 ㄈㄥ
+諷 0 ㄈㄥ
+酆 0 ㄈㄥ
+葑 0 ㄈㄥ
+灃 0 ㄈㄥ
+犎 0 ㄈㄥ
+捀 0 ㄈㄥ
+桻 0 ㄈㄥ
+妦 0 ㄈㄥ
+檒 0 ㄈㄥ
+偑 0 ㄈㄥ
+崶 0 ㄈㄥ
+蘴 0 ㄈㄥ
+飌 0 ㄈㄥ
+麷 0 ㄈㄥ
+猦 0 ㄈㄥ
+豊 0 ㄈㄥ
+仹 0 ㄈㄥ
+凨 0 ㄈㄥ
+凬 0 ㄈㄥ
+盽 0 ㄈㄥ
+㛔 0 ㄈㄥ
+峯 0 ㄈㄥ
+堼 0 ㄈㄥ
+湗 0 ㄈㄥ
+碸 0 ㄈㄥ
+僼 0 ㄈㄥ
+熢 0 ㄈㄥ
+鄷 0 ㄈㄥ
+鏠 0 ㄈㄥ
+㒥 0 ㄈㄥ
+寷 0 ㄈㄥ
+蠭 0 ㄈㄥ
+凮 0 ㄈㄥ
+䒠 0 ㄈㄥ
+篈 0 ㄈㄥ
+靊 0 ㄈㄥ
+唪 0 ㄈㄥˇ
+覂 0 ㄈㄥˇ
+泛 0 ㄈㄥˇ
+諷 0 ㄈㄥˇ
+奉 0 ㄈㄥˋ
+鳳 0 ㄈㄥˋ
+俸 0 ㄈㄥˋ
+諷 0 ㄈㄥˋ
+縫 0 ㄈㄥˋ
+賵 0 ㄈㄥˋ
+焨 0 ㄈㄥˋ
+風 0 ㄈㄥˋ
+凤 0 ㄈㄥˋ
+凨 0 ㄈㄥˋ
+凬 0 ㄈㄥˋ
+煈 0 ㄈㄥˋ
+綘 0 ㄈㄥˋ
+鳯 0 ㄈㄥˋ
+鴌 0 ㄈㄥˋ
+凮 0 ㄈㄥˋ
+逢 0 ㄈㄥˊ
+縫 0 ㄈㄥˊ
+馮 0 ㄈㄥˊ
+夆 0 ㄈㄥˊ
+渢 0 ㄈㄥˊ
+堸 0 ㄈㄥˊ
+艂 0 ㄈㄥˊ
+摓 0 ㄈㄥˊ
+捀 0 ㄈㄥˊ
+浲 0 ㄈㄥˊ
+莑 0 ㄈㄥˊ
+綘 0 ㄈㄥˊ
+葻 0 ㄈㄥˊ
+漨 0 ㄈㄥˊ
+㵯 0 ㄈㄥˊ
+方 0 ㄈㄤ
+芳 0 ㄈㄤ
+坊 0 ㄈㄤ
+枋 0 ㄈㄤ
+邡 0 ㄈㄤ
+淓 0 ㄈㄤ
+鈁 0 ㄈㄤ
+匚 0 ㄈㄤ
+汸 0 ㄈㄤ
+妨 0 ㄈㄤ
+肪 0 ㄈㄤ
+舫 0 ㄈㄤ
+閍 0 ㄈㄤ
+牥 0 ㄈㄤ
+蚄 0 ㄈㄤ
+趽 0 ㄈㄤ
+訪 0 ㄈㄤˇ
+彷 0 ㄈㄤˇ
+仿 0 ㄈㄤˇ
+紡 0 ㄈㄤˇ
+倣 0 ㄈㄤˇ
+舫 0 ㄈㄤˇ
+昉 0 ㄈㄤˇ
+瓬 0 ㄈㄤˇ
+髣 0 ㄈㄤˇ
+鶭 0 ㄈㄤˇ
+坊 0 ㄈㄤˇ
+妨 0 ㄈㄤˇ
+放 0 ㄈㄤˇ
+㕫 0 ㄈㄤˇ
+昘 0 ㄈㄤˇ
+旊 0 ㄈㄤˇ
+眆 0 ㄈㄤˇ
+鴋 0 ㄈㄤˇ
+放 0 ㄈㄤˋ
+房 0 ㄈㄤˊ
+防 0 ㄈㄤˊ
+妨 0 ㄈㄤˊ
+肪 0 ㄈㄤˊ
+坊 0 ㄈㄤˊ
+魴 0 ㄈㄤˊ
+埅 0 ㄈㄤˊ
+鰟 0 ㄈㄤˊ
+坊 0 ㄈㄤ˙
+番 0 ㄈㄢ
+翻 0 ㄈㄢ
+蕃 0 ㄈㄢ
+繙 0 ㄈㄢ
+幡 0 ㄈㄢ
+帆 0 ㄈㄢ
+旛 0 ㄈㄢ
+籓 0 ㄈㄢ
+僠 0 ㄈㄢ
+嬏 0 ㄈㄢ
+轓 0 ㄈㄢ
+鱕 0 ㄈㄢ
+反 0 ㄈㄢ
+藩 0 ㄈㄢ
+柉 0 ㄈㄢ
+皤 0 ㄈㄢ
+仮 0 ㄈㄢ
+㠶 0 ㄈㄢ
+忛 0 ㄈㄢ
+畨 0 ㄈㄢ
+憣 0 ㄈㄢ
+飜 0 ㄈㄢ
+噃 0 ㄈㄢ
+䑺 0 ㄈㄢ
+反 0 ㄈㄢˇ
+返 0 ㄈㄢˇ
+魬 0 ㄈㄢˇ
+皈 0 ㄈㄢˇ
+橎 0 ㄈㄢˇ
+仮 0 ㄈㄢˇ
+㽹 0 ㄈㄢˇ
+範 0 ㄈㄢˋ
+范 0 ㄈㄢˋ
+犯 0 ㄈㄢˋ
+氾 0 ㄈㄢˋ
+汎 0 ㄈㄢˋ
+飯 0 ㄈㄢˋ
+販 0 ㄈㄢˋ
+泛 0 ㄈㄢˋ
+梵 0 ㄈㄢˋ
+畈 0 ㄈㄢˋ
+笵 0 ㄈㄢˋ
+鄤 0 ㄈㄢˋ
+奿 0 ㄈㄢˋ
+軓 0 ㄈㄢˋ
+軬 0 ㄈㄢˋ
+滼 0 ㄈㄢˋ
+嬔 0 ㄈㄢˋ
+反 0 ㄈㄢˋ
+汛 0 ㄈㄢˋ
+皈 0 ㄈㄢˋ
+汳 0 ㄈㄢˋ
+仮 0 ㄈㄢˋ
+盕 0 ㄈㄢˋ
+飰 0 ㄈㄢˋ
+輽 0 ㄈㄢˋ
+㽹 0 ㄈㄢˋ
+訉 0 ㄈㄢˋ
+凡 0 ㄈㄢˊ
+煩 0 ㄈㄢˊ
+繁 0 ㄈㄢˊ
+帆 0 ㄈㄢˊ
+蕃 0 ㄈㄢˊ
+礬 0 ㄈㄢˊ
+藩 0 ㄈㄢˊ
+樊 0 ㄈㄢˊ
+蘩 0 ㄈㄢˊ
+璠 0 ㄈㄢˊ
+籵 0 ㄈㄢˊ
+墦 0 ㄈㄢˊ
+燔 0 ㄈㄢˊ
+膰 0 ㄈㄢˊ
+蠜 0 ㄈㄢˊ
+蹯 0 ㄈㄢˊ
+颿 0 ㄈㄢˊ
+笲 0 ㄈㄢˊ
+釩 0 ㄈㄢˊ
+瀿 0 ㄈㄢˊ
+鐇 0 ㄈㄢˊ
+勫 0 ㄈㄢˊ
+橎 0 ㄈㄢˊ
+薠 0 ㄈㄢˊ
+羳 0 ㄈㄢˊ
+鷭 0 ㄈㄢˊ
+杋 0 ㄈㄢˊ
+柉 0 ㄈㄢˊ
+瀪 0 ㄈㄢˊ
+氾 0 ㄈㄢˊ
+梵 0 ㄈㄢˊ
+幡 0 ㄈㄢˊ
+芃 0 ㄈㄢˊ
+袢 0 ㄈㄢˊ
+旛 0 ㄈㄢˊ
+凢 0 ㄈㄢˊ
+凣 0 ㄈㄢˊ
+㠶 0 ㄈㄢˊ
+忛 0 ㄈㄢˊ
+匥 0 ㄈㄢˊ
+舤 0 ㄈㄢˊ
+舧 0 ㄈㄢˊ
+棥 0 ㄈㄢˊ
+襎 0 ㄈㄢˊ
+䑺 0 ㄈㄢˊ
+䪤 0 ㄈㄢˊ
+發 0 ㄈㄚ
+伐 0 ㄈㄚ
+瞂 0 ㄈㄚ
+法 0 ㄈㄚ
+筏 0 ㄈㄚ
+閥 0 ㄈㄚ
+栰 0 ㄈㄚ
+彂 0 ㄈㄚ
+灋 0 ㄈㄚ
+佱 0 ㄈㄚ
+傠 0 ㄈㄚ
+法 0 ㄈㄚˇ
+髮 0 ㄈㄚˇ
+砝 0 ㄈㄚˇ
+琺 0 ㄈㄚˇ
+珐 0 ㄈㄚˇ
+髪 0 ㄈㄚˇ
+鍅 0 ㄈㄚˇ
+灋 0 ㄈㄚˇ
+佱 0 ㄈㄚˇ
+法 0 ㄈㄚˋ
+琺 0 ㄈㄚˋ
+珐 0 ㄈㄚˋ
+灋 0 ㄈㄚˋ
+佱 0 ㄈㄚˋ
+乏 0 ㄈㄚˊ
+伐 0 ㄈㄚˊ
+罰 0 ㄈㄚˊ
+閥 0 ㄈㄚˊ
+筏 0 ㄈㄚˊ
+砝 0 ㄈㄚˊ
+茷 0 ㄈㄚˊ
+法 0 ㄈㄚˊ
+疺 0 ㄈㄚˊ
+藅 0 ㄈㄚˊ
+眨 0 ㄈㄚˊ
+窆 0 ㄈㄚˊ
+瞂 0 ㄈㄚˊ
+姂 0 ㄈㄚˊ
+垡 0 ㄈㄚˊ
+栰 0 ㄈㄚˊ
+罸 0 ㄈㄚˊ
+橃 0 ㄈㄚˊ
+灋 0 ㄈㄚˊ
+佱 0 ㄈㄚˊ
+坺 0 ㄈㄚˊ
+佛 0 ㄈㄛˊ
+坲 0 ㄈㄛˊ
+仏 0 ㄈㄛˊ
+夫 0 ㄈㄨ
+膚 0 ㄈㄨ
+敷 0 ㄈㄨ
+孵 0 ㄈㄨ
+伕 0 ㄈㄨ
+麩 0 ㄈㄨ
+跗 0 ㄈㄨ
+趺 0 ㄈㄨ
+柎 0 ㄈㄨ
+砆 0 ㄈㄨ
+鄜 0 ㄈㄨ
+鈇 0 ㄈㄨ
+箙 0 ㄈㄨ
+罦 0 ㄈㄨ
+衭 0 ㄈㄨ
+稃 0 ㄈㄨ
+邞 0 ㄈㄨ
+泭 0 ㄈㄨ
+怤 0 ㄈㄨ
+尃 0 ㄈㄨ
+荴 0 ㄈㄨ
+綒 0 ㄈㄨ
+鳺 0 ㄈㄨ
+姇 0 ㄈㄨ
+糐 0 ㄈㄨ
+璷 0 ㄈㄨ
+紨 0 ㄈㄨ
+不 0 ㄈㄨ
+孚 0 ㄈㄨ
+芙 0 ㄈㄨ
+枹 0 ㄈㄨ
+胕 0 ㄈㄨ
+荂 0 ㄈㄨ
+蚨 0 ㄈㄨ
+呋 0 ㄈㄨ
+玞 0 ㄈㄨ
+肤 0 ㄈㄨ
+旉 0 ㄈㄨ
+粰 0 ㄈㄨ
+麬 0 ㄈㄨ
+麱 0 ㄈㄨ
+妋 0 ㄈㄨ
+㠸 0 ㄈㄨ
+娐 0 ㄈㄨ
+筟 0 ㄈㄨ
+懯 0 ㄈㄨ
+甮 0 ㄈㄨㄥˋ
+府 0 ㄈㄨˇ
+腐 0 ㄈㄨˇ
+撫 0 ㄈㄨˇ
+輔 0 ㄈㄨˇ
+甫 0 ㄈㄨˇ
+斧 0 ㄈㄨˇ
+俯 0 ㄈㄨˇ
+釜 0 ㄈㄨˇ
+脯 0 ㄈㄨˇ
+腑 0 ㄈㄨˇ
+莆 0 ㄈㄨˇ
+滏 0 ㄈㄨˇ
+嘸 0 ㄈㄨˇ
+拊 0 ㄈㄨˇ
+黼 0 ㄈㄨˇ
+簠 0 ㄈㄨˇ
+頫 0 ㄈㄨˇ
+郙 0 ㄈㄨˇ
+弣 0 ㄈㄨˇ
+鯆 0 ㄈㄨˇ
+暊 0 ㄈㄨˇ
+冹 0 ㄈㄨˇ
+蜅 0 ㄈㄨˇ
+蚥 0 ㄈㄨˇ
+軵 0 ㄈㄨˇ
+父 0 ㄈㄨˇ
+阜 0 ㄈㄨˇ
+哺 0 ㄈㄨˇ
+腹 0 ㄈㄨˇ
+嫵 0 ㄈㄨˇ
+膚 0 ㄈㄨˇ
+俛 0 ㄈㄨˇ
+逋 0 ㄈㄨˇ
+幠 0 ㄈㄨˇ
+黻 0 ㄈㄨˇ
+㕶 0 ㄈㄨˇ
+肤 0 ㄈㄨˇ
+俌 0 ㄈㄨˇ
+凂 0 ㄈㄨˇ
+娬 0 ㄈㄨˇ
+捬 0 ㄈㄨˇ
+焤 0 ㄈㄨˇ
+盙 0 ㄈㄨˇ
+秿 0 ㄈㄨˇ
+跔 0 ㄈㄨˇ
+抚 0 ㄈㄨˇ
+呒 0 ㄈㄨˇ
+父 0 ㄈㄨˋ
+負 0 ㄈㄨˋ
+婦 0 ㄈㄨˋ
+付 0 ㄈㄨˋ
+附 0 ㄈㄨˋ
+富 0 ㄈㄨˋ
+復 0 ㄈㄨˋ
+副 0 ㄈㄨˋ
+傅 0 ㄈㄨˋ
+覆 0 ㄈㄨˋ
+複 0 ㄈㄨˋ
+腹 0 ㄈㄨˋ
+咐 0 ㄈㄨˋ
+赴 0 ㄈㄨˋ
+賦 0 ㄈㄨˋ
+駙 0 ㄈㄨˋ
+阜 0 ㄈㄨˋ
+訃 0 ㄈㄨˋ
+馥 0 ㄈㄨˋ
+賻 0 ㄈㄨˋ
+蝮 0 ㄈㄨˋ
+鮒 0 ㄈㄨˋ
+祔 0 ㄈㄨˋ
+偩 0 ㄈㄨˋ
+輹 0 ㄈㄨˋ
+鰒 0 ㄈㄨˋ
+鍑 0 ㄈㄨˋ
+榑 0 ㄈㄨˋ
+复 0 ㄈㄨˋ
+胕 0 ㄈㄨˋ
+蚹 0 ㄈㄨˋ
+萯 0 ㄈㄨˋ
+蝜 0 ㄈㄨˋ
+褔 0 ㄈㄨˋ
+姇 0 ㄈㄨˋ
+峊 0 ㄈㄨˋ
+蛗 0 ㄈㄨˋ
+緮 0 ㄈㄨˋ
+蕧 0 ㄈㄨˋ
+仆 0 ㄈㄨˋ
+愎 0 ㄈㄨˋ
+怀 0 ㄈㄨˋ
+洑 0 ㄈㄨˋ
+紨 0 ㄈㄨˋ
+嬔 0 ㄈㄨˋ
+仅 0 ㄈㄨˋ
+坿 0 ㄈㄨˋ
+冨 0 ㄈㄨˋ
+婏 0 ㄈㄨˋ
+陚 0 ㄈㄨˋ
+媍 0 ㄈㄨˋ
+詂 0 ㄈㄨˋ
+雬 0 ㄈㄨˋ
+椱 0 ㄈㄨˋ
+稪 0 ㄈㄨˋ
+嬎 0 ㄈㄨˋ
+鍢 0 ㄈㄨˋ
+㤔 0 ㄈㄨˋ
+竎 0 ㄈㄨˋ
+袝 0 ㄈㄨˋ
+㷆 0 ㄈㄨˋ
+圑 0 ㄈㄨˋ
+癁 0 ㄈㄨˋ
+疈 0 ㄈㄨˋ
+䪖 0 ㄈㄨˋ
+服 0 ㄈㄨˊ
+福 0 ㄈㄨˊ
+扶 0 ㄈㄨˊ
+浮 0 ㄈㄨˊ
+符 0 ㄈㄨˊ
+伏 0 ㄈㄨˊ
+彿 0 ㄈㄨˊ
+縛 0 ㄈㄨˊ
+幅 0 ㄈㄨˊ
+俘 0 ㄈㄨˊ
+拂 0 ㄈㄨˊ
+苻 0 ㄈㄨˊ
+弗 0 ㄈㄨˊ
+孚 0 ㄈㄨˊ
+袱 0 ㄈㄨˊ
+芙 0 ㄈㄨˊ
+輻 0 ㄈㄨˊ
+蝠 0 ㄈㄨˊ
+匐 0 ㄈㄨˊ
+蜉 0 ㄈㄨˊ
+罘 0 ㄈㄨˊ
+涪 0 ㄈㄨˊ
+夫 0 ㄈㄨˊ
+郛 0 ㄈㄨˊ
+莩 0 ㄈㄨˊ
+怫 0 ㄈㄨˊ
+蚨 0 ㄈㄨˊ
+桴 0 ㄈㄨˊ
+紼 0 ㄈㄨˊ
+茯 0 ㄈㄨˊ
+菔 0 ㄈㄨˊ
+紱 0 ㄈㄨˊ
+咈 0 ㄈㄨˊ
+洑 0 ㄈㄨˊ
+綍 0 ㄈㄨˊ
+艴 0 ㄈㄨˊ
+芾 0 ㄈㄨˊ
+茀 0 ㄈㄨˊ
+艀 0 ㄈㄨˊ
+刜 0 ㄈㄨˊ
+帗 0 ㄈㄨˊ
+笰 0 ㄈㄨˊ
+葍 0 ㄈㄨˊ
+袚 0 ㄈㄨˊ
+氟 0 ㄈㄨˊ
+棴 0 ㄈㄨˊ
+澓 0 ㄈㄨˊ
+烰 0 ㄈㄨˊ
+枹 0 ㄈㄨˊ
+玸 0 ㄈㄨˊ
+岪 0 ㄈㄨˊ
+枎 0 ㄈㄨˊ
+垘 0 ㄈㄨˊ
+昲 0 ㄈㄨˊ
+柫 0 ㄈㄨˊ
+琈 0 ㄈㄨˊ
+虙 0 ㄈㄨˊ
+踾 0 ㄈㄨˊ
+鳧 0 ㄈㄨˊ
+巿 0 ㄈㄨˊ
+沷 0 ㄈㄨˊ
+祓 0 ㄈㄨˊ
+翇 0 ㄈㄨˊ
+韍 0 ㄈㄨˊ
+諨 0 ㄈㄨˊ
+鴔 0 ㄈㄨˊ
+黻 0 ㄈㄨˊ
+鵩 0 ㄈㄨˊ
+鶝 0 ㄈㄨˊ
+佛 0 ㄈㄨˊ
+沸 0 ㄈㄨˊ
+趺 0 ㄈㄨˊ
+孵 0 ㄈㄨˊ
+敷 0 ㄈㄨˊ
+冹 0 ㄈㄨˊ
+坲 0 ㄈㄨˊ
+宓 0 ㄈㄨˊ
+泭 0 ㄈㄨˊ
+狒 0 ㄈㄨˊ
+垺 0 ㄈㄨˊ
+罦 0 ㄈㄨˊ
+萉 0 ㄈㄨˊ
+榑 0 ㄈㄨˊ
+箙 0 ㄈㄨˊ
+仏 0 ㄈㄨˊ
+呋 0 ㄈㄨˊ
+炥 0 ㄈㄨˊ
+畉 0 ㄈㄨˊ
+畐 0 ㄈㄨˊ
+郍 0 ㄈㄨˊ
+鳬 0 ㄈㄨˊ
+哹 0 ㄈㄨˊ
+畗 0 ㄈㄨˊ
+旉 0 ㄈㄨˊ
+鉜 0 ㄈㄨˊ
+箁 0 ㄈㄨˊ
+酻 0 ㄈㄨˊ
+髴 0 ㄈㄨˊ
+鮄 0 ㄈㄨˊ
+鞴 0 ㄈㄨˊ
+乀 0 ㄈㄨˊ
+甶 0 ㄈㄨˊ
+栿 0 ㄈㄨˊ
+絥 0 ㄈㄨˊ
+鉘 0 ㄈㄨˊ
+颫 0 ㄈㄨˊ
+韛 0 ㄈㄨˊ
+非 0 ㄈㄟ
+飛 0 ㄈㄟ
+菲 0 ㄈㄟ
+扉 0 ㄈㄟ
+啡 0 ㄈㄟ
+妃 0 ㄈㄟ
+緋 0 ㄈㄟ
+霏 0 ㄈㄟ
+馡 0 ㄈㄟ
+騑 0 ㄈㄟ
+騛 0 ㄈㄟ
+婓 0 ㄈㄟ
+裶 0 ㄈㄟ
+斐 0 ㄈㄟ
+腓 0 ㄈㄟ
+蜚 0 ㄈㄟ
+餥 0 ㄈㄟ
+婔 0 ㄈㄟ
+渄 0 ㄈㄟ
+猆 0 ㄈㄟ
+靟 0 ㄈㄟ
+䬠 0 ㄈㄟ
+飝 0 ㄈㄟ
+匪 0 ㄈㄟˇ
+翡 0 ㄈㄟˇ
+斐 0 ㄈㄟˇ
+蜚 0 ㄈㄟˇ
+誹 0 ㄈㄟˇ
+悱 0 ㄈㄟˇ
+菲 0 ㄈㄟˇ
+朏 0 ㄈㄟˇ
+棐 0 ㄈㄟˇ
+榧 0 ㄈㄟˇ
+篚 0 ㄈㄟˇ
+奜 0 ㄈㄟˇ
+餥 0 ㄈㄟˇ
+非 0 ㄈㄟˇ
+扉 0 ㄈㄟˇ
+裴 0 ㄈㄟˇ
+昢 0 ㄈㄟˇ
+棑 0 ㄈㄟˇ
+緋 0 ㄈㄟˇ
+裵 0 ㄈㄟˇ
+蕜 0 ㄈㄟˇ
+廢 0 ㄈㄟˋ
+費 0 ㄈㄟˋ
+肺 0 ㄈㄟˋ
+沸 0 ㄈㄟˋ
+吠 0 ㄈㄟˋ
+痱 0 ㄈㄟˋ
+怫 0 ㄈㄟˋ
+疿 0 ㄈㄟˋ
+芾 0 ㄈㄟˋ
+屝 0 ㄈㄟˋ
+剕 0 ㄈㄟˋ
+狒 0 ㄈㄟˋ
+砩 0 ㄈㄟˋ
+濷 0 ㄈㄟˋ
+癈 0 ㄈㄟˋ
+昲 0 ㄈㄟˋ
+胇 0 ㄈㄟˋ
+俷 0 ㄈㄟˋ
+厞 0 ㄈㄟˋ
+曊 0 ㄈㄟˋ
+鼣 0 ㄈㄟˋ
+櫠 0 ㄈㄟˋ
+蟦 0 ㄈㄟˋ
+鐨 0 ㄈㄟˋ
+菲 0 ㄈㄟˋ
+陫 0 ㄈㄟˋ
+琲 0 ㄈㄟˋ
+鯡 0 ㄈㄟˋ
+黂 0 ㄈㄟˋ
+㻗 0 ㄈㄟˋ
+墢 0 ㄈㄟˋ
+橃 0 ㄈㄟˋ
+蕟 0 ㄈㄟˋ
+靅 0 ㄈㄟˋ
+䀟 0 ㄈㄟˋ
+㹃 0 ㄈㄟˋ
+䤵 0 ㄈㄟˋ
+廃 0 ㄈㄟˋ
+肥 0 ㄈㄟˊ
+淝 0 ㄈㄟˊ
+腓 0 ㄈㄟˊ
+萉 0 ㄈㄟˊ
+蜰 0 ㄈㄟˊ
+分 0 ㄈㄣ
+紛 0 ㄈㄣ
+芬 0 ㄈㄣ
+氛 0 ㄈㄣ
+吩 0 ㄈㄣ
+棻 0 ㄈㄣ
+玢 0 ㄈㄣ
+酚 0 ㄈㄣ
+雰 0 ㄈㄣ
+昐 0 ㄈㄣ
+鈖 0 ㄈㄣ
+砏 0 ㄈㄣ
+翂 0 ㄈㄣ
+衯 0 ㄈㄣ
+饙 0 ㄈㄣ
+梤 0 ㄈㄣ
+鳻 0 ㄈㄣ
+汾 0 ㄈㄣ
+邠 0 ㄈㄣ
+錀 0 ㄈㄣ
+岎 0 ㄈㄣ
+帉 0 ㄈㄣ
+㤋 0 ㄈㄣ
+訜 0 ㄈㄣ
+䭻 0 ㄈㄣ
+朆 0 ㄈㄣ
+餴 0 ㄈㄣ
+粉 0 ㄈㄣˇ
+黺 0 ㄈㄣˇ
+份 0 ㄈㄣˋ
+忿 0 ㄈㄣˋ
+奮 0 ㄈㄣˋ
+憤 0 ㄈㄣˋ
+分 0 ㄈㄣˋ
+糞 0 ㄈㄣˋ
+僨 0 ㄈㄣˋ
+瀵 0 ㄈㄣˋ
+坋 0 ㄈㄣˋ
+秎 0 ㄈㄣˋ
+魵 0 ㄈㄣˋ
+橨 0 ㄈㄣˋ
+膹 0 ㄈㄣˋ
+羵 0 ㄈㄣˋ
+拚 0 ㄈㄣˋ
+氛 0 ㄈㄣˋ
+焚 0 ㄈㄣˋ
+噴 0 ㄈㄣˋ
+墳 0 ㄈㄣˋ
+弅 0 ㄈㄣˋ
+幩 0 ㄈㄣˋ
+歕 0 ㄈㄣˋ
+坟 0 ㄈㄣˋ
+坆 0 ㄈㄣˋ
+奋 0 ㄈㄣˋ
+喯 0 ㄈㄣˋ
+燌 0 ㄈㄣˋ
+燓 0 ㄈㄣˋ
+隫 0 ㄈㄣˋ
+鱝 0 ㄈㄣˋ
+獖 0 ㄈㄣˋ
+墳 0 ㄈㄣˊ
+焚 0 ㄈㄣˊ
+汾 0 ㄈㄣˊ
+枌 0 ㄈㄣˊ
+棼 0 ㄈㄣˊ
+蚡 0 ㄈㄣˊ
+豶 0 ㄈㄣˊ
+鼖 0 ㄈㄣˊ
+幩 0 ㄈㄣˊ
+濆 0 ㄈㄣˊ
+轒 0 ㄈㄣˊ
+鼢 0 ㄈㄣˊ
+妢 0 ㄈㄣˊ
+炃 0 ㄈㄣˊ
+羒 0 ㄈㄣˊ
+蒶 0 ㄈㄣˊ
+黂 0 ㄈㄣˊ
+弅 0 ㄈㄣˊ
+蕡 0 ㄈㄣˊ
+鐼 0 ㄈㄣˊ
+秎 0 ㄈㄣˊ
+梤 0 ㄈㄣˊ
+僨 0 ㄈㄣˊ
+鳻 0 ㄈㄣˊ
+橨 0 ㄈㄣˊ
+羵 0 ㄈㄣˊ
+坟 0 ㄈㄣˊ
+坆 0 ㄈㄣˊ
+蚠 0 ㄈㄣˊ
+馚 0 ㄈㄣˊ
+燌 0 ㄈㄣˊ
+燓 0 ㄈㄣˊ
+隫 0 ㄈㄣˊ
+馩 0 ㄈㄣˊ
+覅 0 ㄈㄧㄠˋ
diff --git a/include/internal/bopomofo-private.h b/include/internal/bopomofo-private.h
index 966c06d..7a06686 100644
--- a/include/internal/bopomofo-private.h
+++ b/include/internal/bopomofo-private.h
@@ -48,6 +48,10 @@ int BopomofoPhoInput(ChewingData *, int key); /* assume `key' is "ascii" c
int BopomofoRemoveLast(BopomofoData *);
int BopomofoRemoveAll(BopomofoData *);
int BopomofoIsEntering(BopomofoData *);
+int BopomofoKeyseq(BopomofoData *, char key_seq[10]);
+int BopomofoSyllableIndex(BopomofoData *);
+int BopomofoSyllableIndexAlt(BopomofoData *);
+int BopomofoKbType(BopomofoData *);
/* *INDENT-OFF* */
#endif
diff --git a/include/internal/chewing-private.h b/include/internal/chewing-private.h
index 2c3a7ab..334dd50 100644
--- a/include/internal/chewing-private.h
+++ b/include/internal/chewing-private.h
@@ -34,14 +34,14 @@ typedef SSIZE_T ssize_t;
# include "chewing_internal.h"
#else
# include "global.h"
+# include "plat_mmap.h"
+# include "userphrase-private.h"
+# if WITH_SQLITE3
+# include "sqlite3.h"
+# include "chewing-sql.h"
+# endif
#endif
-#include "plat_mmap.h"
-#include "userphrase-private.h"
-#if WITH_SQLITE3
-# include "sqlite3.h"
-# include "chewing-sql.h"
-#endif
#define MAX_UTF8_SIZE 4
#define BOPOMOFO_SIZE 4
@@ -78,6 +78,7 @@ static inline int min(int a, int b)
}
#endif
+#ifndef WITH_RUST
/**
* @struct TreeType
* @brief node type of the system index tree
@@ -204,11 +205,11 @@ typedef struct ChewingStaticData {
struct HASH_ITEM *userphrase_enum; /* FIXME: Shall be in ChewingData? */
#endif
- unsigned int n_symbol_entry;
- SymbolEntry **symbol_table;
+ unsigned int nSymbolEntry;
+ SymbolEntry **symbolTable;
- char *g_easy_symbol_value[EASY_SYMBOL_KEY_TAB_LEN];
- int g_easy_symbol_num[EASY_SYMBOL_KEY_TAB_LEN];
+ char *gEasySymbolValue[EASY_SYMBOL_KEY_TAB_LEN];
+ int gEasySymbolNum[EASY_SYMBOL_KEY_TAB_LEN];
struct keymap *hanyuInitialsMap;
struct keymap *hanyuFinalsMap;
@@ -237,8 +238,8 @@ typedef struct ChewingData {
PreeditBuf preeditBuf[MAX_PHONE_SEQ_LEN];
int chiSymbolCursor;
int chiSymbolBufLen;
- int PointStart;
- int PointEnd;
+ int pointStart;
+ int pointEnd;
int bShowMsg;
char showMsg[MAX_UTF8_SIZE * (MAX_PHRASE_LEN + AUX_PREFIX_LEN) + 1];
@@ -267,7 +268,7 @@ typedef struct ChewingData {
struct HASH_ITEM *prev_userphrase;
#endif
- ChewingStaticData static_data;
+ ChewingStaticData staticData;
void (*logger) (void *data, int level, const char *fmt, ...);
void *loggerData;
} ChewingData;
@@ -284,8 +285,8 @@ typedef struct ChewingOutput {
int chiSymbolBufLen;
/** @brief current position of the cursor. */
long chiSymbolCursor;
- long PointStart;
- long PointEnd;
+ long pointStart;
+ long pointEnd;
char bopomofoBuf[BOPOMOFO_SIZE * MAX_UTF8_SIZE + 1];
/** @brief indicate the method of showing sentence break. */
IntervalType dispInterval[MAX_INTERVAL]; /* from prefer, considering symbol */
@@ -323,6 +324,7 @@ typedef struct Phrase {
char phrase[MAX_PHRASE_LEN * MAX_UTF8_SIZE + 1];
int freq;
} Phrase;
+#endif
/* *INDENT-OFF* */
#endif
diff --git a/src/bopomofo.c b/src/bopomofo.c
index d519e3c..726aa2d 100644
--- a/src/bopomofo.c
+++ b/src/bopomofo.c
@@ -700,3 +700,24 @@ int BopomofoIsEntering(BopomofoData *pBopomofo)
}
return 0;
}
+
+int BopomofoKeyseq(BopomofoData *pBopomofo, char key_seq[10])
+{
+ strcpy(key_seq, pBopomofo->pinYinData.keySeq);
+ return 1;
+}
+
+int BopomofoSyllableIndex(BopomofoData *pBopomofo)
+{
+ return pBopomofo->phone;
+}
+
+int BopomofoSyllableIndexAlt(BopomofoData *pBopomofo)
+{
+ return pBopomofo->phoneAlt;
+}
+
+int BopomofoKbType(BopomofoData *pBopomofo)
+{
+ return pBopomofo->kbtype;
+}
\ No newline at end of file
diff --git a/src/chewing-sql.c b/src/chewing-sql.c
index 7c9677a..bf77b73 100644
--- a/src/chewing-sql.c
+++ b/src/chewing-sql.c
@@ -116,7 +116,7 @@ static int CreateTable(ChewingData *pgdata)
STATIC_ASSERT(MAX_PHRASE_LEN == 11);
- ret = sqlite3_exec(pgdata->static_data.db,
+ ret = sqlite3_exec(pgdata->staticData.db,
"CREATE TABLE IF NOT EXISTS userphrase_v1 ("
"time INTEGER,"
"user_freq INTEGER,"
@@ -153,7 +153,7 @@ static int CreateTable(ChewingData *pgdata)
return -1;
}
- ret = sqlite3_exec(pgdata->static_data.db,
+ ret = sqlite3_exec(pgdata->staticData.db,
"CREATE TABLE IF NOT EXISTS config_v1 ("
"id INTEGER,"
"value INTEGER,"
@@ -170,55 +170,55 @@ static int SetupUserphraseLifeTime(ChewingData *pgdata)
{
int ret;
- assert(pgdata->static_data.stmt_config[STMT_CONFIG_INSERT]);
+ assert(pgdata->staticData.stmt_config[STMT_CONFIG_INSERT]);
- ret = sqlite3_bind_int(pgdata->static_data.stmt_config[STMT_CONFIG_INSERT], BIND_CONFIG_ID, CONFIG_ID_LIFETIME);
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_config[STMT_CONFIG_INSERT], BIND_CONFIG_ID, CONFIG_ID_LIFETIME);
if (ret != SQLITE_OK) {
LOG_ERROR("Cannot bind ?%d to %d in stmt %s, error = %d",
BIND_CONFIG_ID, CONFIG_ID_LIFETIME, SQL_STMT_CONFIG[STMT_CONFIG_INSERT].stmt, ret);
return -1;
}
- ret = sqlite3_bind_int(pgdata->static_data.stmt_config[STMT_CONFIG_INSERT], BIND_CONFIG_VALUE, 0);
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_config[STMT_CONFIG_INSERT], BIND_CONFIG_VALUE, 0);
if (ret != SQLITE_OK) {
LOG_ERROR("Cannot bind ?%d to %d in stmt %s, error = %d",
BIND_CONFIG_VALUE, 0, SQL_STMT_CONFIG[STMT_CONFIG_INSERT].stmt, ret);
return -1;
}
- ret = sqlite3_step(pgdata->static_data.stmt_config[STMT_CONFIG_INSERT]);
+ ret = sqlite3_step(pgdata->staticData.stmt_config[STMT_CONFIG_INSERT]);
if (ret != SQLITE_DONE) {
LOG_ERROR("sqlite3_step returns %d", ret);
return -1;
}
- ret = sqlite3_reset(pgdata->static_data.stmt_config[STMT_CONFIG_INSERT]);
+ ret = sqlite3_reset(pgdata->staticData.stmt_config[STMT_CONFIG_INSERT]);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_reset returns %d", ret);
return -1;
}
- assert(pgdata->static_data.stmt_config[STMT_CONFIG_SELECT]);
+ assert(pgdata->staticData.stmt_config[STMT_CONFIG_SELECT]);
- ret = sqlite3_bind_int(pgdata->static_data.stmt_config[STMT_CONFIG_SELECT], BIND_CONFIG_ID, CONFIG_ID_LIFETIME);
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_config[STMT_CONFIG_SELECT], BIND_CONFIG_ID, CONFIG_ID_LIFETIME);
if (ret != SQLITE_OK) {
LOG_ERROR("Cannot bind ?%d to %d in stmt %s, error = %d",
BIND_CONFIG_ID, CONFIG_ID_LIFETIME, SQL_STMT_CONFIG[STMT_CONFIG_SELECT].stmt, ret);
return -1;
}
- ret = sqlite3_step(pgdata->static_data.stmt_config[STMT_CONFIG_SELECT]);
+ ret = sqlite3_step(pgdata->staticData.stmt_config[STMT_CONFIG_SELECT]);
if (ret != SQLITE_ROW) {
LOG_ERROR("sqlite3_step returns %d", ret);
return -1;
}
- pgdata->static_data.original_lifetime = sqlite3_column_int(pgdata->static_data.stmt_config[STMT_CONFIG_SELECT],
+ pgdata->staticData.original_lifetime = sqlite3_column_int(pgdata->staticData.stmt_config[STMT_CONFIG_SELECT],
SQL_STMT_CONFIG[STMT_CONFIG_SELECT].column
[COLUMN_CONFIG_VALUE]);
- pgdata->static_data.new_lifetime = pgdata->static_data.original_lifetime;
+ pgdata->staticData.new_lifetime = pgdata->staticData.original_lifetime;
- ret = sqlite3_reset(pgdata->static_data.stmt_config[STMT_CONFIG_SELECT]);
+ ret = sqlite3_reset(pgdata->staticData.stmt_config[STMT_CONFIG_SELECT]);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_reset returns %d", ret);
return -1;
@@ -232,20 +232,20 @@ static int UpdateLifeTime(ChewingData *pgdata)
int ret;
int result = 0;
- if (!pgdata->static_data.stmt_config[STMT_CONFIG_INCREASE]) {
- LOG_ERROR("pgdata->static_data.stmt_config[STMT_CONFIG_INCREASE] is NULL");
+ if (!pgdata->staticData.stmt_config[STMT_CONFIG_INCREASE]) {
+ LOG_ERROR("pgdata->staticData.stmt_config[STMT_CONFIG_INCREASE] is NULL");
result = -1;
goto end;
}
- ret = sqlite3_clear_bindings(pgdata->static_data.stmt_config[STMT_CONFIG_INCREASE]);
+ ret = sqlite3_clear_bindings(pgdata->staticData.stmt_config[STMT_CONFIG_INCREASE]);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_clear_bindings returns %d", ret);
result = -1;
goto end;
}
- ret = sqlite3_bind_int(pgdata->static_data.stmt_config[STMT_CONFIG_INCREASE], BIND_CONFIG_ID, CONFIG_ID_LIFETIME);
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_config[STMT_CONFIG_INCREASE], BIND_CONFIG_ID, CONFIG_ID_LIFETIME);
if (ret != SQLITE_OK) {
LOG_ERROR("Cannot bind ?%d to %d in stmt %s, error = %d",
BIND_CONFIG_ID, CONFIG_ID_LIFETIME, SQL_STMT_CONFIG[STMT_CONFIG_INCREASE].stmt, ret);
@@ -253,18 +253,18 @@ static int UpdateLifeTime(ChewingData *pgdata)
goto end;
}
- ret = sqlite3_bind_int(pgdata->static_data.stmt_config[STMT_CONFIG_INCREASE],
- BIND_CONFIG_VALUE, pgdata->static_data.new_lifetime - pgdata->static_data.original_lifetime);
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_config[STMT_CONFIG_INCREASE],
+ BIND_CONFIG_VALUE, pgdata->staticData.new_lifetime - pgdata->staticData.original_lifetime);
if (ret != SQLITE_OK) {
LOG_ERROR("Cannot bind ?%d to %d in stmt %s, error = %d",
BIND_CONFIG_VALUE,
- pgdata->static_data.new_lifetime - pgdata->static_data.original_lifetime,
+ pgdata->staticData.new_lifetime - pgdata->staticData.original_lifetime,
SQL_STMT_CONFIG[STMT_CONFIG_INCREASE].stmt, ret);
result = -1;
goto end;
}
- ret = sqlite3_step(pgdata->static_data.stmt_config[STMT_CONFIG_INCREASE]);
+ ret = sqlite3_step(pgdata->staticData.stmt_config[STMT_CONFIG_INCREASE]);
if (ret != SQLITE_DONE) {
LOG_ERROR("sqlite3_step returns %d", ret);
result = -1;
@@ -272,7 +272,7 @@ static int UpdateLifeTime(ChewingData *pgdata)
}
end:
- ret = sqlite3_reset(pgdata->static_data.stmt_config[STMT_CONFIG_INCREASE]);
+ ret = sqlite3_reset(pgdata->staticData.stmt_config[STMT_CONFIG_INCREASE]);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_reset returns %d", ret);
result = -1;
@@ -286,9 +286,9 @@ static int ConfigDatabase(ChewingData *pgdata)
int ret;
assert(pgdata);
- assert(pgdata->static_data.db);
+ assert(pgdata->staticData.db);
- ret = sqlite3_exec(pgdata->static_data.db, "PRAGMA synchronous=OFF", NULL, NULL, NULL);
+ ret = sqlite3_exec(pgdata->staticData.db, "PRAGMA synchronous=OFF", NULL, NULL, NULL);
if (ret != SQLITE_OK) {
LOG_ERROR("Cannot set synchronous=OFF, error = %d", ret);
return -1;
@@ -304,12 +304,12 @@ static int CreateStmt(ChewingData *pgdata)
assert(pgdata);
- STATIC_ASSERT(ARRAY_SIZE(SQL_STMT_CONFIG) == ARRAY_SIZE(pgdata->static_data.stmt_config));
- STATIC_ASSERT(ARRAY_SIZE(SQL_STMT_USERPHRASE) == ARRAY_SIZE(pgdata->static_data.stmt_userphrase));
+ STATIC_ASSERT(ARRAY_SIZE(SQL_STMT_CONFIG) == ARRAY_SIZE(pgdata->staticData.stmt_config));
+ STATIC_ASSERT(ARRAY_SIZE(SQL_STMT_USERPHRASE) == ARRAY_SIZE(pgdata->staticData.stmt_userphrase));
for (i = 0; i < ARRAY_SIZE(SQL_STMT_CONFIG); ++i) {
- ret = sqlite3_prepare_v2(pgdata->static_data.db,
- SQL_STMT_CONFIG[i].stmt, -1, &pgdata->static_data.stmt_config[i], NULL);
+ ret = sqlite3_prepare_v2(pgdata->staticData.db,
+ SQL_STMT_CONFIG[i].stmt, -1, &pgdata->staticData.stmt_config[i], NULL);
if (ret != SQLITE_OK) {
LOG_ERROR("Cannot create stmt %s", SQL_STMT_CONFIG[i].stmt);
return -1;
@@ -317,8 +317,8 @@ static int CreateStmt(ChewingData *pgdata)
}
for (i = 0; i < ARRAY_SIZE(SQL_STMT_USERPHRASE); ++i) {
- ret = sqlite3_prepare_v2(pgdata->static_data.db,
- SQL_STMT_USERPHRASE[i].stmt, -1, &pgdata->static_data.stmt_userphrase[i], NULL);
+ ret = sqlite3_prepare_v2(pgdata->staticData.db,
+ SQL_STMT_USERPHRASE[i].stmt, -1, &pgdata->staticData.stmt_userphrase[i], NULL);
if (ret != SQLITE_OK) {
LOG_ERROR("Cannot create stmt %s", SQL_STMT_USERPHRASE[i].stmt);
return -1;
@@ -432,11 +432,11 @@ int InitUserphrase(ChewingData *pgdata, const char *path)
{
int ret;
- assert(!pgdata->static_data.db);
+ assert(!pgdata->staticData.db);
assert(path);
- pgdata->static_data.db = GetSQLiteInstance(pgdata, path);
- if (!pgdata->static_data.db) {
+ pgdata->staticData.db = GetSQLiteInstance(pgdata, path);
+ if (!pgdata->staticData.db) {
LOG_ERROR("GetSQLiteInstance fails");
goto error;
}
@@ -483,17 +483,17 @@ void TerminateUserphrase(ChewingData *pgdata)
UpdateLifeTime(pgdata);
- for (i = 0; i < ARRAY_SIZE(pgdata->static_data.stmt_config); ++i) {
- sqlite3_finalize(pgdata->static_data.stmt_config[i]);
- pgdata->static_data.stmt_config[i] = NULL;
+ for (i = 0; i < ARRAY_SIZE(pgdata->staticData.stmt_config); ++i) {
+ sqlite3_finalize(pgdata->staticData.stmt_config[i]);
+ pgdata->staticData.stmt_config[i] = NULL;
}
- for (i = 0; i < ARRAY_SIZE(pgdata->static_data.stmt_userphrase); ++i) {
- sqlite3_finalize(pgdata->static_data.stmt_userphrase[i]);
- pgdata->static_data.stmt_userphrase[i] = NULL;
+ for (i = 0; i < ARRAY_SIZE(pgdata->staticData.stmt_userphrase); ++i) {
+ sqlite3_finalize(pgdata->staticData.stmt_userphrase[i]);
+ pgdata->staticData.stmt_userphrase[i] = NULL;
}
- ret = sqlite3_close(pgdata->static_data.db);
+ ret = sqlite3_close(pgdata->staticData.db);
assert(SQLITE_OK == ret);
- pgdata->static_data.db = NULL;
+ pgdata->staticData.db = NULL;
}
diff --git a/src/chewing.c b/src/chewing.c
new file mode 100644
index 0000000..e69de29
diff --git a/src/chewingio.c b/src/chewingio.c
index 3e37122..c6210b4 100644
--- a/src/chewingio.c
+++ b/src/chewingio.c
@@ -26,27 +26,33 @@
#include <stdlib.h>
#include <stdio.h>
-#include "chewing-utf8-util.h"
-#include "bopomofo-private.h"
#include "chewingutil.h"
-#include "userphrase-private.h"
#include "choice-private.h"
-#include "dict-private.h"
-#include "tree-private.h"
-#include "pinyin-private.h"
#include "private.h"
#include "chewingio.h"
#include "mod_aux.h"
#include "global-private.h"
+
+#ifdef WITH_RUST
+# include "chewing_rs.h"
+# include "chewing_internal.h"
+#else
+#include "global.h"
+#include "bopomofo-private.h"
+#include "chewing-utf8-util.h"
+#include "dict-private.h"
+#include "key2pho-private.h"
+#include "pinyin-private.h"
#include "plat_path.h"
+#include "tree-private.h"
+#include "userphrase-private.h"
#include "chewing-private.h"
-#include "key2pho-private.h"
-
#if WITH_SQLITE3
# include "chewing-sql.h"
#else
# include "hash-private.h"
#endif
+#endif
const char *const kb_type_str[] = {
"KB_DEFAULT",
@@ -64,11 +70,19 @@ const char *const kb_type_str[] = {
"KB_CARPALX"
};
+#ifdef WITH_RUST
+const char *const DICT_FILES[] = {
+ "tsi.dat",
+ "word.dat",
+ NULL,
+};
+#else
const char *const DICT_FILES[] = {
DICT_FILE,
PHONE_TREE_FILE,
NULL,
};
+#endif
const char *const SYMBOL_TABLE_FILES[] = {
SYMBOL_TABLE_FILE,
@@ -291,10 +305,15 @@ CHEWING_API ChewingContext *chewing_new()
CHEWING_API int chewing_Reset(ChewingContext *ctx)
{
ChewingData *pgdata;
- ChewingStaticData static_data;
+ ChewingStaticData staticData;
ChewingConfigData old_config;
void (*logger) (void *data, int level, const char *fmt, ...);
void *loggerData;
+#ifdef WITH_RUST
+ const void *dict;
+ void *ce;
+ void *ue;
+#endif
if (!ctx) {
return -1;
@@ -305,17 +324,32 @@ CHEWING_API int chewing_Reset(ChewingContext *ctx)
/* Backup old config and restore it after clearing pgdata structure. */
old_config = pgdata->config;
- static_data = pgdata->static_data;
+ staticData = pgdata->staticData;
logger = pgdata->logger;
loggerData = pgdata->loggerData;
+#ifdef WITH_RUST
+ dict = pgdata->dict;
+ ce = pgdata->ce;
+ ue = pgdata->ue;
+ if (pgdata->bopomofoData.editorWithKeymap != 0) {
+ FreePhoneticEditor(pgdata->bopomofoData.editorWithKeymap);
+ }
+#endif
memset(pgdata, 0, sizeof(ChewingData));
pgdata->config = old_config;
- pgdata->static_data = static_data;
+ pgdata->staticData = staticData;
pgdata->logger = logger;
pgdata->loggerData = loggerData;
+#ifdef WITH_RUST
+ pgdata->dict = dict;
+ pgdata->ce = ce;
+ pgdata->ue = ue;
+ chewing_set_KBType(ctx, KB_DEFAULT);
+#else
/* bopomofoData */
memset(&(pgdata->bopomofoData), 0, sizeof(BopomofoData));
+#endif
/* choiceInfo */
memset(&(pgdata->choiceInfo), 0, sizeof(ChoiceInfo));
@@ -329,8 +363,8 @@ CHEWING_API int chewing_Reset(ChewingContext *ctx)
pgdata->bFullShape = HALFSHAPE_MODE;
pgdata->bSelect = 0;
pgdata->nSelect = 0;
- pgdata->PointStart = -1;
- pgdata->PointEnd = 0;
+ pgdata->pointStart = -1;
+ pgdata->pointEnd = 0;
pgdata->phrOut.nNumCut = 0;
return 0;
}
@@ -346,6 +380,18 @@ CHEWING_API int chewing_set_KBType(ChewingContext *ctx, int kbtype)
LOG_API("kbtype = %d", kbtype);
+#ifdef WITH_RUST
+ if (pgdata->bopomofoData.editorWithKeymap != 0) {
+ FreePhoneticEditor(pgdata->bopomofoData.editorWithKeymap);
+ }
+ if (kbtype < KB_TYPE_NUM && kbtype >= 0) {
+ pgdata->bopomofoData.editorWithKeymap = NewPhoneticEditor(kbtype);
+ return 0;
+ } else {
+ pgdata->bopomofoData.editorWithKeymap = NewPhoneticEditor(KB_DEFAULT);
+ return -1;
+ }
+#else
if (kbtype < KB_TYPE_NUM && kbtype >= 0) {
ctx->data->bopomofoData.kbtype = kbtype;
return 0;
@@ -353,6 +399,7 @@ CHEWING_API int chewing_set_KBType(ChewingContext *ctx, int kbtype)
ctx->data->bopomofoData.kbtype = KB_DEFAULT;
return -1;
}
+#endif
}
CHEWING_API int chewing_get_KBType(const ChewingContext *ctx)
@@ -364,9 +411,11 @@ CHEWING_API int chewing_get_KBType(const ChewingContext *ctx)
}
pgdata = ctx->data;
- LOG_API("kbtype = %d", ctx->data->bopomofoData.kbtype);
+ int kbtype = BopomofoKbType(&ctx->data->bopomofoData);
- return ctx->data->bopomofoData.kbtype;
+ LOG_API("kbtype = %d", kbtype);
+
+ return kbtype;
}
CHEWING_API char *chewing_get_KBString(const ChewingContext *ctx)
@@ -378,18 +427,27 @@ CHEWING_API char *chewing_get_KBString(const ChewingContext *ctx)
}
pgdata = ctx->data;
- LOG_API("KBString = %s", kb_type_str[ctx->data->bopomofoData.kbtype]);
+ int kbtype = BopomofoKbType(&ctx->data->bopomofoData);
+
+ LOG_API("KBString = %s", kb_type_str[kbtype]);
- return strdup(kb_type_str[ctx->data->bopomofoData.kbtype]);
+ return strdup(kb_type_str[kbtype]);
}
CHEWING_API void chewing_delete(ChewingContext *ctx)
{
if (ctx) {
if (ctx->data) {
+ if (ctx->data->bSelect) {
+ chewing_cand_close(ctx);
+ }
TerminatePinyin(ctx->data);
TerminateEasySymbolTable(ctx->data);
TerminateSymbolTable(ctx->data);
+#ifdef WITH_RUST
+ FreePhoneticEditor(ctx->data->bopomofoData.editorWithKeymap);
+ UserGetPhraseEnd(ctx->data, NULL);
+#endif
TerminateUserphrase(ctx->data);
TerminateTree(ctx->data);
TerminateDict(ctx->data);
@@ -772,9 +830,9 @@ CHEWING_API int chewing_get_autoLearn(const ChewingContext *ctx)
static void CheckAndResetRange(ChewingData *pgdata)
{
- if (pgdata->PointStart > -1) {
- pgdata->PointStart = -1;
- pgdata->PointEnd = 0;
+ if (pgdata->pointStart > -1) {
+ pgdata->pointStart = -1;
+ pgdata->pointEnd = 0;
}
}
@@ -906,26 +964,26 @@ CHEWING_API int chewing_handle_Enter(ChewingContext *ctx)
keystrokeRtn = KEYSTROKE_IGNORE;
} else if (pgdata->bSelect) {
keystrokeRtn = KEYSTROKE_ABSORB | KEYSTROKE_BELL;
- } else if (pgdata->PointStart > -1) {
+ } else if (pgdata->pointStart > -1) {
int buf = pgdata->chiSymbolCursor;
int key = '0';
- if (pgdata->PointEnd > 1) {
+ if (pgdata->pointEnd > 1) {
if (!pgdata->config.bAddPhraseForward) {
- pgdata->chiSymbolCursor = pgdata->PointStart;
+ pgdata->chiSymbolCursor = pgdata->pointStart;
} else {
- pgdata->chiSymbolCursor = pgdata->PointStart + pgdata->PointEnd;
+ pgdata->chiSymbolCursor = pgdata->pointStart + pgdata->pointEnd;
}
- key = '0' + pgdata->PointEnd;
- } else if (pgdata->PointEnd < 1) {
+ key = '0' + pgdata->pointEnd;
+ } else if (pgdata->pointEnd < 1) {
if (pgdata->config.bAddPhraseForward)
- pgdata->chiSymbolCursor = buf - pgdata->PointEnd;
- key = '0' - pgdata->PointEnd;
+ pgdata->chiSymbolCursor = buf - pgdata->pointEnd;
+ key = '0' - pgdata->pointEnd;
}
chewing_handle_CtrlNum(ctx, key);
pgdata->chiSymbolCursor = buf;
- pgdata->PointStart = -1;
- pgdata->PointEnd = 0;
+ pgdata->pointStart = -1;
+ pgdata->pointEnd = 0;
MakeOutputWithRtn(pgo, pgdata, keystrokeRtn);
MakeOutputAddMsgAndCleanInterval(pgo, pgdata);
return 0;
@@ -1098,16 +1156,16 @@ CHEWING_API int chewing_handle_ShiftLeft(ChewingContext *ctx)
keystrokeRtn = KEYSTROKE_IGNORE;
}
if (!pgdata->bSelect) {
- /* PointEnd locates (-9, +9) */
- if (!BopomofoIsEntering(&(pgdata->bopomofoData)) && pgdata->chiSymbolCursor > 0 && pgdata->PointEnd > -9) {
- if (pgdata->PointStart == -1)
- pgdata->PointStart = pgdata->chiSymbolCursor;
+ /* pointEnd locates (-9, +9) */
+ if (!BopomofoIsEntering(&(pgdata->bopomofoData)) && pgdata->chiSymbolCursor > 0 && pgdata->pointEnd > -9) {
+ if (pgdata->pointStart == -1)
+ pgdata->pointStart = pgdata->chiSymbolCursor;
pgdata->chiSymbolCursor--;
if (ChewingIsChiAt(pgdata->chiSymbolCursor, pgdata)) {
- pgdata->PointEnd--;
+ pgdata->pointEnd--;
}
- if (pgdata->PointEnd == 0)
- pgdata->PointStart = -1;
+ if (pgdata->pointEnd == 0)
+ pgdata->pointStart = -1;
}
}
@@ -1169,17 +1227,17 @@ CHEWING_API int chewing_handle_ShiftRight(ChewingContext *ctx)
}
if (!pgdata->bSelect) {
- /* PointEnd locates (-9, +9) */
+ /* pointEnd locates (-9, +9) */
if (!BopomofoIsEntering(&(pgdata->bopomofoData)) &&
- pgdata->chiSymbolCursor < pgdata->chiSymbolBufLen && pgdata->PointEnd < 9) {
- if (pgdata->PointStart == -1)
- pgdata->PointStart = pgdata->chiSymbolCursor;
+ pgdata->chiSymbolCursor < pgdata->chiSymbolBufLen && pgdata->pointEnd < 9) {
+ if (pgdata->pointStart == -1)
+ pgdata->pointStart = pgdata->chiSymbolCursor;
if (ChewingIsChiAt(pgdata->chiSymbolCursor, pgdata)) {
- pgdata->PointEnd++;
+ pgdata->pointEnd++;
}
pgdata->chiSymbolCursor++;
- if (pgdata->PointEnd == 0)
- pgdata->PointStart = -1;
+ if (pgdata->pointEnd == 0)
+ pgdata->pointStart = -1;
}
}
@@ -1495,7 +1553,7 @@ CHEWING_API int chewing_handle_Default(ChewingContext *ctx, int key)
DEBUG_OUT(" key=%d", key);
/* Dvorak Hsu */
- if (pgdata->bopomofoData.kbtype == KB_DVORAK_HSU) {
+ if (BopomofoKbType(&pgdata->bopomofoData) == KB_DVORAK_HSU) {
key = dvorak_convert(key);
}
@@ -1564,7 +1622,8 @@ CHEWING_API int chewing_handle_Default(ChewingContext *ctx, int key)
keystrokeRtn = KEYSTROKE_ABSORB;
break;
case BOPOMOFO_COMMIT:
- AddChi(pgdata->bopomofoData.phone, pgdata->bopomofoData.phoneAlt, pgdata);
+ AddChi(BopomofoSyllableIndex(&pgdata->bopomofoData), BopomofoSyllableIndexAlt(&pgdata->bopomofoData), pgdata);
+ BopomofoRemoveAll(&pgdata->bopomofoData);
break;
case BOPOMOFO_NO_WORD:
keystrokeRtn = KEYSTROKE_BELL | KEYSTROKE_ABSORB;
@@ -1887,27 +1946,32 @@ CHEWING_API int chewing_userphrase_enumerate(ChewingContext *ctx)
{
ChewingData *pgdata;
-#if WITH_SQLITE3
- int ret;
-#endif
-
if (!ctx) {
return -1;
}
+#ifdef WITH_RUST
+ UserGetPhraseEnd(ctx->data, NULL);
+ ctx->data->phraseIter = UserEnumeratePhrase(ctx->data->ue);
+#else
+#if WITH_SQLITE3
+ int ret;
+#endif
+
pgdata = ctx->data;
LOG_API("");
#if WITH_SQLITE3
- assert(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT]);
- ret = sqlite3_reset(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT]);
+ assert(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT]);
+ ret = sqlite3_reset(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT]);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_reset returns %d", ret);
return -1;
}
#else
- pgdata->static_data.userphrase_enum = FindNextHash(pgdata, NULL);
+ pgdata->staticData.userphrase_enum = FindNextHash(pgdata, NULL);
+#endif
#endif
return 0;
}
@@ -1916,19 +1980,23 @@ CHEWING_API int chewing_userphrase_has_next(ChewingContext *ctx, unsigned int *p
{
ChewingData *pgdata;
+ if (!ctx || !phrase_len || !bopomofo_len) {
+ return 0;
+ }
+
+#ifdef WITH_RUST
+ return UserEnumerateHasNext(ctx->data->phraseIter, phrase_len, bopomofo_len);
+#else
#if WITH_SQLITE3
int ret;
#endif
- if (!ctx || !phrase_len || !bopomofo_len) {
- return 0;
- }
pgdata = ctx->data;
LOG_API("");
#if WITH_SQLITE3
- ret = sqlite3_step(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT]);
+ ret = sqlite3_step(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT]);
if (ret != SQLITE_ROW) {
if (ret != SQLITE_DONE) {
LOG_ERROR("sqlite3_step returns %d", ret);
@@ -1936,24 +2004,26 @@ CHEWING_API int chewing_userphrase_has_next(ChewingContext *ctx, unsigned int *p
return 0;
}
- *phrase_len = strlen((const char *) sqlite3_column_text(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT],
+ *phrase_len = strlen((const char *) sqlite3_column_text(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT].column
[COLUMN_USERPHRASE_PHRASE])) + 1;
- *bopomofo_len = GetBopomofoBufLen(sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT],
+ *bopomofo_len = GetBopomofoBufLen(sqlite3_column_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT].column
[COLUMN_USERPHRASE_LENGTH]));
return 1;
#else
- if (pgdata->static_data.userphrase_enum) {
- *phrase_len = strlen(pgdata->static_data.userphrase_enum->data.wordSeq) + 1;
- *bopomofo_len = BopomofoFromUintArray(NULL, 0, pgdata->static_data.userphrase_enum->data.phoneSeq);
+ if (pgdata->staticData.userphrase_enum) {
+ *phrase_len = strlen(pgdata->staticData.userphrase_enum->data.wordSeq) + 1;
+ *bopomofo_len = BopomofoFromUintArray(NULL, 0, pgdata->staticData.userphrase_enum->data.phoneSeq);
return 1;
}
return 0;
#endif
+#endif
+ return 0;
}
CHEWING_API int chewing_userphrase_get(ChewingContext *ctx,
@@ -1962,6 +2032,13 @@ CHEWING_API int chewing_userphrase_get(ChewingContext *ctx,
{
ChewingData *pgdata;
+ if (!ctx || !phrase_buf || !phrase_len || !bopomofo_buf || !bopomofo_len) {
+ return -1;
+ }
+
+#ifdef WITH_RUST
+ return UserEnumerateGet(ctx->data->phraseIter, phrase_buf, phrase_len, bopomofo_buf, bopomofo_len);
+#else
#if WITH_SQLITE3
const char *phrase;
int length;
@@ -1969,19 +2046,16 @@ CHEWING_API int chewing_userphrase_get(ChewingContext *ctx,
uint16_t phone_array[MAX_PHRASE_LEN + 1] = { 0 };
#endif
- if (!ctx || !phrase_buf || !phrase_len || !bopomofo_buf || !bopomofo_len) {
- return -1;
- }
pgdata = ctx->data;
LOG_API("");
#if WITH_SQLITE3
- phrase = (const char *) sqlite3_column_text(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT],
+ phrase = (const char *) sqlite3_column_text(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT].column
[COLUMN_USERPHRASE_PHRASE]);
length =
- sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT],
+ sqlite3_column_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT].column[COLUMN_USERPHRASE_LENGTH]);
if (phrase_len < strlen(phrase) + 1) {
@@ -1995,7 +2069,7 @@ CHEWING_API int chewing_userphrase_get(ChewingContext *ctx,
}
for (i = 0; i < length && i < MAX_PHRASE_LEN; ++i) {
- phone_array[i] = sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT],
+ phone_array[i] = sqlite3_column_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT].column[COLUMN_USERPHRASE_PHONE_0
+ i]);
}
@@ -2005,20 +2079,22 @@ CHEWING_API int chewing_userphrase_get(ChewingContext *ctx,
return 0;
#else
- if (pgdata->static_data.userphrase_enum) {
- strncpy(phrase_buf, pgdata->static_data.userphrase_enum->data.wordSeq, phrase_len);
+ if (pgdata->staticData.userphrase_enum) {
+ strncpy(phrase_buf, pgdata->staticData.userphrase_enum->data.wordSeq, phrase_len);
phrase_buf[phrase_len - 1] = 0;
- BopomofoFromUintArray(bopomofo_buf, bopomofo_len, pgdata->static_data.userphrase_enum->data.phoneSeq);
+ BopomofoFromUintArray(bopomofo_buf, bopomofo_len, pgdata->staticData.userphrase_enum->data.phoneSeq);
bopomofo_buf[bopomofo_len - 1] = 0;
- pgdata->static_data.userphrase_enum = FindNextHash(pgdata, pgdata->static_data.userphrase_enum);
+ pgdata->staticData.userphrase_enum = FindNextHash(pgdata, pgdata->staticData.userphrase_enum);
return 0;
}
return -1;
#endif
+#endif
+ return -1;
}
CHEWING_API int chewing_userphrase_add(ChewingContext *ctx, const char *phrase_buf, const char *bopomofo_buf)
@@ -2097,7 +2173,7 @@ CHEWING_API int chewing_userphrase_lookup(ChewingContext *ctx, const char *phras
ssize_t phone_len;
uint16_t *phone_buf = 0;
int ret;
- UserPhraseData *user_phrase_data;
+ UserPhraseData *user_phrase_data = NULL;
if (!ctx || !bopomofo_buf) {
return 0;
diff --git a/src/chewingutil.c b/src/chewingutil.c
index 8344285..fb429ed 100644
--- a/src/chewingutil.c
+++ b/src/chewingutil.c
@@ -23,15 +23,18 @@
#include <stdlib.h>
#include <stdio.h>
-#include "chewing-utf8-util.h"
#include "global-private.h"
#include "chewingutil.h"
-#include "bopomofo-private.h"
#include "choice-private.h"
-#include "tree-private.h"
-#include "userphrase-private.h"
#include "private.h"
+#ifndef WITH_RUST
+
+#include "global.h"
+#include "bopomofo-private.h"
+#include "chewing-utf8-util.h"
+#include "tree-private.h"
+#include "userphrase-private.h"
#ifdef HAVE_ASPRINTF
/* asprintf is provided by GNU extensions and *BSD */
# ifndef _GNU_SOURCE
@@ -42,6 +45,8 @@
# include "plat_path.h"
#endif
+#endif
+
extern const char *const zhuin_tab[];
static void MakePreferInterval(ChewingData *pgdata);
static void ShiftInterval(ChewingOutput *pgo, ChewingData *pgdata);
@@ -117,14 +122,26 @@ int HaninSymbolInput(ChewingData *pgdata)
AvailInfo *pai = &(pgdata->availInfo);
/* No available symbol table */
- if (!pgdata->static_data.symbol_table)
+ if (!pgdata->staticData.symbolTable)
return BOPOMOFO_ABSORB;
pci->nTotalChoice = 0;
- for (i = 0; i < pgdata->static_data.n_symbol_entry; i++) {
- strcpy(pci->totalChoiceStr[pci->nTotalChoice], pgdata->static_data.symbol_table[i]->category);
+ for (i = 0; i < pgdata->staticData.nSymbolEntry; i++) {
+ strcpy(pci->totalChoiceStr[pci->nTotalChoice], pgdata->staticData.symbolTable[i]->category);
pci->nTotalChoice++;
}
+
+#ifdef WITH_RUST
+ if (pgdata->availInfo.nAvail) {
+ for (int i = 0; i < pgdata->availInfo.nAvail; ++i) {
+ if (pgdata->availInfo.avail[i].id) {
+ FreeTreePhrase(pgdata->availInfo.avail[i].id);
+ }
+ }
+ }
+ pgdata->availInfo.nAvail = 0;
+#endif
+
pai->avail[0].len = 1;
pai->avail[0].id = NULL;
pai->nAvail = 1;
@@ -139,7 +156,9 @@ int HaninSymbolInput(ChewingData *pgdata)
static int _Inner_InternalSpecialSymbol(int key, ChewingData *pgdata, char symkey, const char *const chibuf)
{
+#ifndef WITH_RUST
int kbtype;
+#endif
PreeditBuf *buf;
if (key == symkey && NULL != chibuf) {
@@ -162,11 +181,15 @@ static int _Inner_InternalSpecialSymbol(int key, ChewingData *pgdata, char symke
pgdata->bUserArrCnnct[PhoneSeqCursor(pgdata)] = 0;
pgdata->chiSymbolCursor++;
pgdata->chiSymbolBufLen++;
+#ifdef WITH_RUST
+ BopomofoRemoveAll(&pgdata->bopomofoData);
+#else
/* reset Bopomofo data */
/* Don't forget the kbtype */
kbtype = pgdata->bopomofoData.kbtype;
memset(&(pgdata->bopomofoData), 0, sizeof(BopomofoData));
pgdata->bopomofoData.kbtype = kbtype;
+#endif
return 1;
}
return 0;
@@ -289,15 +312,15 @@ int EasySymbolInput(int key, ChewingData *pgdata)
_index = FindEasySymbolIndex(key);
if (-1 != _index) {
- for (loop = 0; loop < pgdata->static_data.g_easy_symbol_num[_index]; ++loop) {
- ueStrNCpy(wordbuf, ueStrSeek(pgdata->static_data.g_easy_symbol_value[_index], loop), 1, 1);
+ for (loop = 0; loop < pgdata->staticData.gEasySymbolNum[_index]; ++loop) {
+ ueStrNCpy(wordbuf, ueStrSeek(pgdata->staticData.gEasySymbolValue[_index], loop), 1, 1);
(void) _Inner_InternalSpecialSymbol(key, pgdata, key, wordbuf);
}
return SYMBOL_KEY_OK;
}
rtn = InternalSpecialSymbol(key, pgdata, nSpecial,
- G_EASY_SYMBOL_KEY, (const char **) pgdata->static_data.g_easy_symbol_value);
+ G_EASY_SYMBOL_KEY, (const char **) pgdata->staticData.gEasySymbolValue);
if (rtn == BOPOMOFO_IGNORE)
rtn = SpecialSymbolInput(key, pgdata);
return (rtn == BOPOMOFO_IGNORE ? SYMBOL_KEY_ERROR : SYMBOL_KEY_OK);
@@ -305,15 +328,14 @@ int EasySymbolInput(int key, ChewingData *pgdata)
int SymbolChoice(ChewingData *pgdata, int sel_i)
{
- int kbtype;
int i;
int symbol_type;
int key;
- if (!pgdata->static_data.symbol_table && pgdata->choiceInfo.isSymbol != SYMBOL_CHOICE_UPDATE)
+ if (!pgdata->staticData.symbolTable && pgdata->choiceInfo.isSymbol != SYMBOL_CHOICE_UPDATE)
return BOPOMOFO_ABSORB;
- if (pgdata->choiceInfo.isSymbol == SYMBOL_CATEGORY_CHOICE && 0 == pgdata->static_data.symbol_table[sel_i]->nSymbols)
+ if (pgdata->choiceInfo.isSymbol == SYMBOL_CATEGORY_CHOICE && 0 == pgdata->staticData.symbolTable[sel_i]->nSymbols)
symbol_type = SYMBOL_CHOICE_INSERT;
else
symbol_type = pgdata->choiceInfo.isSymbol;
@@ -325,11 +347,21 @@ int SymbolChoice(ChewingData *pgdata, int sel_i)
/* Display all symbols in this category */
pci->nTotalChoice = 0;
- for (i = 0; i < pgdata->static_data.symbol_table[sel_i]->nSymbols; i++) {
+ for (i = 0; i < pgdata->staticData.symbolTable[sel_i]->nSymbols; i++) {
ueStrNCpy(pci->totalChoiceStr[pci->nTotalChoice],
- pgdata->static_data.symbol_table[sel_i]->symbols[i], 1, 1);
+ pgdata->staticData.symbolTable[sel_i]->symbols[i], 1, 1);
pci->nTotalChoice++;
}
+#ifdef WITH_RUST
+ if (pgdata->availInfo.nAvail) {
+ for (int i = 0; i < pgdata->availInfo.nAvail; ++i) {
+ if (pgdata->availInfo.avail[i].id) {
+ FreeTreePhrase(pgdata->availInfo.avail[i].id);
+ }
+ }
+ }
+ pgdata->availInfo.nAvail = 0;
+#endif
pai->avail[0].len = 1;
pai->avail[0].id = NULL;
pai->nAvail = 1;
@@ -364,10 +396,15 @@ int SymbolChoice(ChewingData *pgdata, int sel_i)
pgdata->bUserArrCnnct[PhoneSeqCursor(pgdata)] = 0;
ChoiceEndChoice(pgdata);
- /* Don't forget the kbtype */
- kbtype = pgdata->bopomofoData.kbtype;
- memset(&(pgdata->bopomofoData), 0, sizeof(BopomofoData));
- pgdata->bopomofoData.kbtype = kbtype;
+
+#ifdef WITH_RUST
+ BopomofoRemoveAll(&pgdata->bopomofoData);
+#else
+ memset(&pgdata->bopomofoData.pho_inx, 0, sizeof(pgdata->bopomofoData.pho_inx));
+ memset(&pgdata->bopomofoData.pho_inx_alt, 0, sizeof(pgdata->bopomofoData.pho_inx_alt));
+ pgdata->bopomofoData.phone = 0;
+ pgdata->bopomofoData.phoneAlt = 0;
+#endif
if (symbol_type == SYMBOL_CHOICE_INSERT) {
pgdata->chiSymbolBufLen++;
@@ -849,17 +886,27 @@ int MakeOutput(ChewingOutput *pgo, ChewingData *pgdata)
}
/* fill point */
- pgo->PointStart = pgdata->PointStart;
- pgo->PointEnd = pgdata->PointEnd;
+ pgo->pointStart = pgdata->pointStart;
+ pgo->pointEnd = pgdata->pointEnd;
/* fill other fields */
pgo->chiSymbolBufLen = pgdata->chiSymbolBufLen;
pgo->chiSymbolCursor = pgdata->chiSymbolCursor;
/* fill bopomofoBuf */
- if (pgdata->bopomofoData.kbtype >= KB_HANYU_PINYIN) {
- strcpy(pgo->bopomofoBuf, pgdata->bopomofoData.pinYinData.keySeq);
+ if (BopomofoKbType(&pgdata->bopomofoData) >= KB_HANYU_PINYIN) {
+ char key_seq[10];
+ BopomofoKeyseq(&pgdata->bopomofoData, key_seq);
+ strcpy(pgo->bopomofoBuf, key_seq);
} else {
+#if WITH_RUST
+ int pho_inx[4];
+ BopomofoPhoInx(&pgdata->bopomofoData, pho_inx);
+ uint16_t pho_num = UintFromPhoneInx(&pho_inx);
+ PhoneFromUint(pgo->bopomofoBuf,
+ sizeof(pgo->bopomofoBuf),
+ pho_num);
+#else
for (i = 0; i < BOPOMOFO_SIZE; i++) {
inx = pgdata->bopomofoData.pho_inx[i];
if (inx != 0) {
@@ -868,6 +915,7 @@ int MakeOutput(ChewingOutput *pgo, ChewingData *pgdata)
1, STRNCPY_CLOSE);
}
}
+#endif
}
ShiftInterval(pgo, pgdata);
@@ -1239,6 +1287,17 @@ int OpenSymbolChoice(ChewingData *pgdata)
pci->pageNo = 0;
pci->isSymbol = SYMBOL_CHOICE_UPDATE;
+#ifdef WITH_RUST
+ if (pgdata->availInfo.nAvail) {
+ for (int i = 0; i < pgdata->availInfo.nAvail; ++i) {
+ if (pgdata->availInfo.avail[i].id) {
+ FreeTreePhrase(pgdata->availInfo.avail[i].id);
+ }
+ }
+ }
+ pgdata->availInfo.nAvail = 0;
+#endif
+
pgdata->bSelect = 1;
pgdata->availInfo.nAvail = 1;
pgdata->availInfo.currentAvail = 0;
@@ -1265,8 +1324,8 @@ int InitSymbolTable(ChewingData *pgdata, const char *prefix)
size_t size;
int ret = -1;
- pgdata->static_data.n_symbol_entry = 0;
- pgdata->static_data.symbol_table = NULL;
+ pgdata->staticData.nSymbolEntry = 0;
+ pgdata->staticData.symbolTable = NULL;
ret = asprintf(&filename, "%s" PLAT_SEPARATOR "%s", prefix, SYMBOL_TABLE_FILE);
if (ret == -1)
@@ -1286,7 +1345,7 @@ int InitSymbolTable(ChewingData *pgdata, const char *prefix)
if (!entry)
goto error;
- while (fgets(line, LINE_LEN, file) && pgdata->static_data.n_symbol_entry < MAX_SYMBOL_ENTRY) {
+ while (fgets(line, LINE_LEN, file) && pgdata->staticData.nSymbolEntry < MAX_SYMBOL_ENTRY) {
category_end = strpbrk(line, "=\r\n");
if (!category_end)
@@ -1298,44 +1357,44 @@ int InitSymbolTable(ChewingData *pgdata, const char *prefix)
*symbols_end = 0;
len = ueStrLen(symbols);
- entry[pgdata->static_data.n_symbol_entry] =
+ entry[pgdata->staticData.nSymbolEntry] =
(SymbolEntry *) malloc(sizeof(entry[0][0]) + sizeof(entry[0][0].symbols[0]) * len);
- if (!entry[pgdata->static_data.n_symbol_entry])
+ if (!entry[pgdata->staticData.nSymbolEntry])
goto error;
- entry[pgdata->static_data.n_symbol_entry]
+ entry[pgdata->staticData.nSymbolEntry]
->nSymbols = len;
symbol = symbols;
for (i = 0; i < len; ++i) {
- ueStrNCpy(entry[pgdata->static_data.n_symbol_entry]->symbols[i], symbol, 1, 1);
+ ueStrNCpy(entry[pgdata->staticData.nSymbolEntry]->symbols[i], symbol, 1, 1);
// FIXME: What if symbol is combining sequences.
symbol += ueBytesFromChar(symbol[0]);
}
} else {
- entry[pgdata->static_data.n_symbol_entry] = (SymbolEntry *) malloc(sizeof(entry[0][0]));
- if (!entry[pgdata->static_data.n_symbol_entry])
+ entry[pgdata->staticData.nSymbolEntry] = (SymbolEntry *) malloc(sizeof(entry[0][0]));
+ if (!entry[pgdata->staticData.nSymbolEntry])
goto error;
- entry[pgdata->static_data.n_symbol_entry]
+ entry[pgdata->staticData.nSymbolEntry]
->nSymbols = 0;
}
*category_end = 0;
- ueStrNCpy(entry[pgdata->static_data.n_symbol_entry]->category, line, MAX_PHRASE_LEN, 1);
+ ueStrNCpy(entry[pgdata->staticData.nSymbolEntry]->category, line, MAX_PHRASE_LEN, 1);
- ++pgdata->static_data.n_symbol_entry;
+ ++pgdata->staticData.nSymbolEntry;
}
- size = sizeof(*pgdata->static_data.symbol_table) * pgdata->static_data.n_symbol_entry;
+ size = sizeof(*pgdata->staticData.symbolTable) * pgdata->staticData.nSymbolEntry;
if (!size)
goto end;
- pgdata->static_data.symbol_table = (SymbolEntry **) malloc(size);
- if (!pgdata->static_data.symbol_table)
+ pgdata->staticData.symbolTable = (SymbolEntry **) malloc(size);
+ if (!pgdata->staticData.symbolTable)
goto error;
- memcpy(pgdata->static_data.symbol_table, entry, size);
+ memcpy(pgdata->staticData.symbolTable, entry, size);
ret = 0;
end:
@@ -1346,7 +1405,7 @@ int InitSymbolTable(ChewingData *pgdata, const char *prefix)
return ret;
error:
- for (i = 0; i < pgdata->static_data.n_symbol_entry; ++i) {
+ for (i = 0; i < pgdata->staticData.nSymbolEntry; ++i) {
free(entry[i]);
}
goto end;
@@ -1356,12 +1415,12 @@ void TerminateSymbolTable(ChewingData *pgdata)
{
unsigned int i;
- if (pgdata->static_data.symbol_table) {
- for (i = 0; i < pgdata->static_data.n_symbol_entry; ++i)
- free(pgdata->static_data.symbol_table[i]);
- free(pgdata->static_data.symbol_table);
- pgdata->static_data.n_symbol_entry = 0;
- pgdata->static_data.symbol_table = NULL;
+ if (pgdata->staticData.symbolTable) {
+ for (i = 0; i < pgdata->staticData.nSymbolEntry; ++i)
+ free(pgdata->staticData.symbolTable[i]);
+ free(pgdata->staticData.symbolTable);
+ pgdata->staticData.nSymbolEntry = 0;
+ pgdata->staticData.symbolTable = NULL;
}
}
@@ -1413,9 +1472,9 @@ int InitEasySymbolInput(ChewingData *pgdata, const char *prefix)
ueStrNCpy(symbol, &line[2], len, 1);
- free(pgdata->static_data.g_easy_symbol_value[_index]);
- pgdata->static_data.g_easy_symbol_value[_index] = symbol;
- pgdata->static_data.g_easy_symbol_num[_index] = len;
+ free(pgdata->staticData.gEasySymbolValue[_index]);
+ pgdata->staticData.gEasySymbolValue[_index] = symbol;
+ pgdata->staticData.gEasySymbolNum[_index] = len;
}
ret = 0;
@@ -1437,11 +1496,11 @@ void TerminateEasySymbolTable(ChewingData *pgdata)
unsigned int i;
for (i = 0; i < EASY_SYMBOL_KEY_TAB_LEN; ++i) {
- if (NULL != pgdata->static_data.g_easy_symbol_value[i]) {
- free(pgdata->static_data.g_easy_symbol_value[i]);
- pgdata->static_data.g_easy_symbol_value[i] = NULL;
+ if (NULL != pgdata->staticData.gEasySymbolValue[i]) {
+ free(pgdata->staticData.gEasySymbolValue[i]);
+ pgdata->staticData.gEasySymbolValue[i] = NULL;
}
- pgdata->static_data.g_easy_symbol_num[i] = 0;
+ pgdata->staticData.gEasySymbolNum[i] = 0;
}
}
diff --git a/src/choice.c b/src/choice.c
index 7759ab2..296bde7 100644
--- a/src/choice.c
+++ b/src/choice.c
@@ -20,16 +20,20 @@
#include <string.h>
#include <assert.h>
+#include "chewingutil.h"
+#include "choice-private.h"
+#include "private.h"
+
+#ifndef WITH_RUST
+#include "global.h"
+#include "bopomofo-private.h"
#include "chewing-utf8-util.h"
#include "dict-private.h"
-#include "chewingutil.h"
#include "tree-private.h"
#include "userphrase-private.h"
-#include "choice-private.h"
-#include "bopomofo-private.h"
-#include "private.h"
+#endif
-static void ChangeSelectIntervalAndBreakpoint(ChewingData *pgdata, int from, int to, const char *str)
+void ChangeSelectIntervalAndBreakpoint(ChewingData *pgdata, int from, int to, const char *str)
{
int i;
int user_alloc;
@@ -70,7 +74,11 @@ static void SetAvailInfo(ChewingData *pgdata, int begin, int end)
const int *bSymbolArrBrkpt = pgdata->bSymbolArrBrkpt;
int symbolArrBrkpt[ARRAY_SIZE(pgdata->bSymbolArrBrkpt)] = { 0 };
+#ifdef WITH_RUST
+ const void* tree_pos;
+#else
const TreeType *tree_pos;
+#endif
int diff;
uint16_t userPhoneSeq[MAX_PHONE_SEQ_LEN];
@@ -80,6 +88,17 @@ static void SetAvailInfo(ChewingData *pgdata, int begin, int end)
head = tail = 0;
+#ifdef WITH_RUST
+ if (pgdata->availInfo.nAvail) {
+ for (int i = 0; i < pgdata->availInfo.nAvail; ++i) {
+ if (pgdata->availInfo.avail[i].id) {
+ FreeTreePhrase(pgdata->availInfo.avail[i].id);
+ }
+ }
+ }
+ pgdata->availInfo.nAvail = 0;
+#endif
+
pai->nAvail = 0;
/*
@@ -220,7 +239,7 @@ static void SetChoiceInfo(ChewingData *pgdata)
ChoiceInfoAppendChi(pgdata, pci, phoneSeqAlt[cursor]);
}
- if (pgdata->bopomofoData.kbtype == KB_HSU || pgdata->bopomofoData.kbtype == KB_DVORAK_HSU) {
+ if (BopomofoKbType(&pgdata->bopomofoData) == KB_HSU || BopomofoKbType(&pgdata->bopomofoData) == KB_DVORAK_HSU) {
switch (phoneSeq[cursor]) {
case 0x2800: /* 'ㄘ' */
ChoiceInfoAppendChi(pgdata, pci, 0x30); /* 'ㄟ' */
@@ -271,7 +290,7 @@ static void SetChoiceInfo(ChewingData *pgdata)
}
}
- if (pgdata->bopomofoData.kbtype == KB_ET26) {
+ if (BopomofoKbType(&pgdata->bopomofoData) == KB_ET26) {
switch (phoneSeq[cursor]) {
case 0x40: /* 'ㄡ' */
ChoiceInfoAppendChi(pgdata, pci, 0x400); /* 'ㄆ' */
@@ -525,6 +544,15 @@ int ChoiceEndChoice(ChewingData *pgdata)
pgdata->chiSymbolCursor = pgdata->choiceInfo.oldChiSymbolCursor;
assert(pgdata->chiSymbolCursor <= pgdata->chiSymbolBufLen);
+#ifdef WITH_RUST
+ for (int i = 0; i < pgdata->availInfo.nAvail; ++i) {
+ if (pgdata->availInfo.avail[i].id) {
+ FreeTreePhrase(pgdata->availInfo.avail[i].id);
+ }
+ }
+ pgdata->availInfo.nAvail = 0;
+#endif
+
pgdata->choiceInfo.isSymbol = WORD_CHOICE;
return 0;
}
diff --git a/src/
conversion.rs b/src/
conversion.rs
new file mode 100644
index 0000000..141a9f6
--- /dev/null
+++ b/src/
conversion.rs
@@ -0,0 +1,38 @@
+use crate::zhuyin::Syllable;
+
+#[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash, Clone)]
+pub struct Interval {
+ pub start: usize,
+ pub end: usize,
+ pub phrase: String,
+}
+
+impl Interval {
+ pub fn contains(&self, other: &Interval) -> bool {
+ self.start <= other.start && self.end >= other.end
+ }
+ pub fn len(&self) -> usize {
+ self.end - self.start
+ }
+ pub fn is_empty(&self) -> bool {
+ self.len() == 0
+ }
+}
+
+#[derive(Debug)]
+pub struct Break(pub usize);
+
+#[derive(Debug)]
+pub struct ChineseSequence {
+ pub syllables: Vec<Syllable>,
+ pub selections: Vec<Interval>,
+ pub breaks: Vec<Break>,
+}
+
+pub trait ConversionEngine {
+ fn convert(&self, segment: &ChineseSequence) -> Vec<Interval>;
+ fn convert_next(&self, segment: &ChineseSequence, next: usize) -> Vec<Interval>;
+}
+
+mod chewing_conversion;
+pub use chewing_conversion::ChewingConversionEngine;
diff --git a/src/conversion/
chewing_conversion.rs b/src/conversion/
chewing_conversion.rs
new file mode 100644
index 0000000..e45aa19
--- /dev/null
+++ b/src/conversion/
chewing_conversion.rs
@@ -0,0 +1,698 @@
+use std::{
+ collections::HashMap,
+ fmt::{Debug, Display},
+ ops::Neg,
+ rc::Rc,
+};
+
+use tracing::trace;
+
+use crate::{
+ dictionary::{Dictionary, Phrase},
+ zhuyin::Syllable,
+};
+
+use super::{Break, ChineseSequence, ConversionEngine, Interval};
+
+#[derive(Debug)]
+pub struct ChewingConversionEngine {
+ dict: Rc<dyn Dictionary>,
+}
+
+impl ConversionEngine for ChewingConversionEngine {
+ fn convert(&self, segment: &ChineseSequence) -> Vec<Interval> {
+ if segment.syllables.is_empty() {
+ return vec![];
+ }
+ let intervals = self.find_intervals(segment);
+ self.find_best_path(segment.syllables.len(), intervals)
+ }
+
+ fn convert_next(&self, segment: &ChineseSequence, next: usize) -> Vec<Interval> {
+ if segment.syllables.is_empty() {
+ return vec![];
+ }
+ let mut graph = Graph::default();
+ let paths = self.find_all_paths(&mut graph, segment, 0, segment.syllables.len(), None);
+ let mut trimmed_paths = self.trim_paths(paths);
+ trimmed_paths.sort();
+ trimmed_paths
+ .into_iter()
+ .rev()
+ .cycle()
+ .nth(next)
+ .map(|p| p.intervals)
+ .expect("should have path")
+ .into_iter()
+ .map(|it| it.into())
+ .collect()
+ }
+}
+
+impl ChewingConversionEngine {
+ pub fn new(dict: Rc<dyn Dictionary>) -> ChewingConversionEngine {
+ ChewingConversionEngine { dict }
+ }
+
+ fn find_best_phrase(
+ &self,
+ start: usize,
+ syllables: &[Syllable],
+ selections: &[Interval],
+ breaks: &[Break],
+ ) -> Option<Rc<Phrase>> {
+ let end = start + syllables.len();
+
+ for br in breaks.iter() {
+ if br.0 > start && br.0 < end {
+ // There exists a break point that forbids connecting these
+ // syllables.
+ return None;
+ }
+ }
+
+ let mut max_freq = 0;
+ let mut best_phrase = None;
+ 'next_phrase: for phrase in self.dict.lookup_phrase(syllables) {
+ // If there exists a user selected interval which is a
+ // sub-interval of this phrase but the substring is
+ // different then we can skip this phrase.
+ for selection in selections.iter() {
+ debug_assert!(!selection.phrase.is_empty());
+ if start <= selection.start && end >= selection.end {
+ let offset = selection.start - start;
+ let len = selection.end - selection.start;
+ let substring: String =
+ phrase.as_str().chars().skip(offset).take(len).collect();
+ if substring != selection.phrase {
+ continue 'next_phrase;
+ }
+ }
+ }
+
+ // If there are phrases that can satisfy all the constraints
+ // then pick the one with highest frequency.
+ if best_phrase.is_none() || phrase.freq() > max_freq {
+ max_freq = phrase.freq();
+ best_phrase = Some(Rc::new(phrase));
+ }
+ }
+
+ best_phrase
+ }
+ fn find_intervals(&self, seq: &ChineseSequence) -> Vec<PossibleInterval> {
+ let mut intervals = vec![];
+ for begin in 0..seq.syllables.len() {
+ for end in begin..=seq.syllables.len() {
+ if let Some(phrase) = self.find_best_phrase(
+ begin,
+ &seq.syllables[begin..end],
+ &seq.selections,
+ &seq.breaks,
+ ) {
+ intervals.push(PossibleInterval {
+ start: begin,
+ end,
+ phrase,
+ });
+ }
+ }
+ }
+ intervals
+ }
+ /// Calculate the best path with dynamic programming.
+ ///
+ /// Assume P(x,y) is the highest score phrasing result from x to y. The
+ /// following is formula for P(x,y):
+ ///
+ /// P(x,y) = MAX( P(x,y-1)+P(y-1,y), P(x,y-2)+P(y-2,y), ... )
+ ///
+ /// While P(x,y-1) is stored in highest_score array, and P(y-1,y) is
+ /// interval end at y. In this formula, x is always 0.
+ ///
+ /// The format of highest_score array is described as following:
+ ///
+ /// highest_score[0] = P(0,0)
+ /// highest_score[1] = P(0,1)
+ /// ...
+ /// highest_score[y-1] = P(0,y-1)
+ fn find_best_path(&self, len: usize, mut intervals: Vec<PossibleInterval>) -> Vec<Interval> {
+ let mut highest_score = vec![PossiblePath::default(); len + 1];
+
+ // The interval shall be sorted by the increase order of end.
+ intervals.sort_by(|a, b| a.end.cmp(&b.end));
+
+ for interval in intervals.into_iter() {
+ let start = interval.start;
+ let end = interval.end;
+
+ let mut candidate_path = highest_score[start].clone();
+ candidate_path.intervals.push(interval);
+
+ if highest_score[end].score() < candidate_path.score() {
+ highest_score[end] = candidate_path;
+ }
+ }
+
+ highest_score
+ .pop()
+ .expect("highest_score has at least one element")
+ .intervals
+ .into_iter()
+ .map(|interval| interval.into())
+ .collect()
+ }
+
+ fn find_all_paths<'g, 's: 'g, 'b: 'g>(
+ &'s self,
+ graph: &mut Graph<'g>,
+ sequence: &ChineseSequence,
+ start: usize,
+ target: usize,
+ prefix: Option<PossiblePath<'b>>,
+ ) -> Vec<PossiblePath<'g>> {
+ if start == target {
+ return vec![prefix.expect("should have prefix")];
+ }
+ let mut result = vec![];
+ for end in start..=target {
+ let entry = graph.entry((start, end));
+ if let Some(phrase) = entry.or_insert_with(|| {
+ self.find_best_phrase(
+ start,
+ &sequence.syllables[start..end],
+ &sequence.selections,
+ &sequence.breaks,
+ )
+ }) {
+ let mut prefix = prefix.clone().unwrap_or_default();
+ prefix.intervals.push(PossibleInterval {
+ start,
+ end,
+ phrase: phrase.clone(),
+ });
+ result.append(&mut self.find_all_paths(graph, sequence, end, target, Some(prefix)));
+ }
+ }
+ result
+ }
+
+ /// Trim some paths that were part of other paths
+ ///
+ /// Ported from original C implementation, but the original algorithm seems wrong.
+ fn trim_paths<'a>(&self, paths: Vec<PossiblePath<'a>>) -> Vec<PossiblePath<'a>> {
+ let mut trimmed_paths: Vec<PossiblePath> = vec![];
+ for candidate in paths.into_iter() {
+ trace!("Trim check {}", candidate);
+ let mut drop_candidate = false;
+ let mut keeper = vec![];
+ for p in trimmed_paths.into_iter() {
+ if drop_candidate || p.contains(&candidate) {
+ drop_candidate = true;
+ trace!(" Keep {}", p);
+ keeper.push(p);
+ continue;
+ }
+ if candidate.contains(&p) {
+ trace!(" Drop {}", p);
+ continue;
+ }
+ trace!(" Keep {}", p);
+ keeper.push(p);
+ }
+ if !drop_candidate {
+ trace!(" Keep {}", candidate);
+ keeper.push(candidate);
+ }
+ trimmed_paths = keeper;
+ }
+ trimmed_paths
+ }
+}
+
+#[derive(Clone, Debug, PartialEq, Eq)]
+struct PossibleInterval<'a> {
+ start: usize,
+ end: usize,
+ phrase: Rc<Phrase<'a>>,
+}
+
+impl PossibleInterval<'_> {
+ pub fn contains(&self, other: &PossibleInterval) -> bool {
+ self.start <= other.start && self.end >= other.end
+ }
+ pub fn len(&self) -> usize {
+ self.end - self.start
+ }
+}
+
+impl From<PossibleInterval<'_>> for Interval {
+ fn from(value: PossibleInterval) -> Self {
+ Interval {
+ start: value.start,
+ end: value.end,
+ phrase: value.phrase.to_string(),
+ }
+ }
+}
+
+#[derive(Default, Clone, Eq)]
+struct PossiblePath<'a> {
+ intervals: Vec<PossibleInterval<'a>>,
+}
+
+impl Debug for PossiblePath<'_> {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ f.debug_struct("PossiblePath")
+ .field("score()", &self.score())
+ .field("intervals", &self.intervals)
+ .finish()
+ }
+}
+
+impl PossiblePath<'_> {
+ fn score(&self) -> i32 {
+ let mut score = 0;
+ score += 1000 * self.rule_largest_sum();
+ score += 1000 * self.rule_largest_avgwordlen();
+ score += 100 * self.rule_smallest_lenvariance();
+ score += self.rule_largest_freqsum();
+ score
+ }
+
+ /// Copied from IsRecContain to trim some paths
+ fn contains(&self, other: &Self) -> bool {
+ let mut big = 0;
+ for sml in 0..other.intervals.len() {
+ loop {
+ if big < self.intervals.len()
+ && self.intervals[big].start < other.intervals[sml].end
+ {
+ if self.intervals[big].contains(&other.intervals[sml]) {
+ break;
+ }
+ } else {
+ return false;
+ }
+ big += 1;
+ }
+ }
+ true
+ }
+
+ fn rule_largest_sum(&self) -> i32 {
+ let mut score = 0;
+ for interval in &self.intervals {
+ score += interval.end - interval.start;
+ }
+ score as i32
+ }
+
+ fn rule_largest_avgwordlen(&self) -> i32 {
+ if self.intervals.is_empty() {
+ return 0;
+ }
+ // Constant factor 6=1*2*3, to keep value as integer
+ 6 * self.rule_largest_sum()
+ / i32::try_from(self.intervals.len()).expect("number of intervals should be small")
+ }
+
+ fn rule_smallest_lenvariance(&self) -> i32 {
+ let len = self.intervals.len();
+ let mut score = 0;
+ // kcwu: heuristic? why variance no square function?
+ for i in 0..len {
+ for j in i + 1..len {
+ let interval_1 = &self.intervals[i];
+ let interval_2 = &self.intervals[j];
+ score += interval_1.len().abs_diff(interval_2.len());
+ }
+ }
+ i32::try_from(score).expect("score should fit in i32").neg()
+ }
+
+ fn rule_largest_freqsum(&self) -> i32 {
+ let mut score = 0;
+ for interval in &self.intervals {
+ let reduction_factor = if interval.len() == 1 { 512 } else { 1 };
+ score += interval.phrase.freq() / reduction_factor;
+ }
+ i32::try_from(score).expect("score should fit in i32")
+ }
+}
+
+impl PartialEq for PossiblePath<'_> {
+ fn eq(&self, other: &Self) -> bool {
+ self.score() == other.score()
+ }
+}
+
+impl PartialOrd for PossiblePath<'_> {
+ fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
+ self.score().partial_cmp(&other.score())
+ }
+}
+
+impl Ord for PossiblePath<'_> {
+ fn cmp(&self, other: &Self) -> std::cmp::Ordering {
+ self.score().cmp(&other.score())
+ }
+}
+
+impl Display for PossiblePath<'_> {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ write!(f, "#PossiblePath({}", self.score())?;
+ for interval in &self.intervals {
+ write!(
+ f,
+ " ({} {} '{})",
+ interval.start, interval.end, interval.phrase
+ )?;
+ }
+ write!(f, ")")?;
+ Ok(())
+ }
+}
+
+type Graph<'a> = HashMap<(usize, usize), Option<Rc<Phrase<'a>>>>;
+
+#[cfg(test)]
+mod tests {
+ use std::{collections::HashMap, rc::Rc};
+
+ use crate::{
+ conversion::{Break, ChineseSequence, ConversionEngine, Interval},
+ dictionary::{Dictionary, Phrase},
+ syl,
+ zhuyin::Bopomofo::*,
+ };
+
+ use super::{ChewingConversionEngine, PossibleInterval, PossiblePath};
+
+ fn test_dictionary() -> Rc<dyn Dictionary> {
+ Rc::new(HashMap::from([
+ (vec![syl![G, U, O, TONE2]], vec![("國", 1).into()]),
+ (vec![syl![M, I, EN, TONE2]], vec![("民", 1).into()]),
+ (vec![syl![D, A, TONE4]], vec![("大", 1).into()]),
+ (vec![syl![H, U, EI, TONE4]], vec![("會", 1).into()]),
+ (vec![syl![D, AI, TONE4]], vec![("代", 1).into()]),
+ (vec![syl![B, I, AU, TONE3]], vec![("表", 1).into()]),
+ (
+ vec![syl![G, U, O, TONE2], syl![M, I, EN, TONE2]],
+ vec![("國民", 200).into()],
+ ),
+ (
+ vec![syl![D, A, TONE4], syl![H, U, EI, TONE4]],
+ vec![("大會", 200).into()],
+ ),
+ (
+ vec![syl![D, AI, TONE4], syl![B, I, AU, TONE3]],
+ vec![("代表", 200).into(), ("戴錶", 100).into()],
+ ),
+ (vec![syl![X, I, EN]], vec![("心", 1).into()]),
+ (
+ vec![syl![K, U, TONE4], syl![I, EN]],
+ vec![("庫音", 300).into()],
+ ),
+ (
+ vec![syl![X, I, EN], syl![K, U, TONE4], syl![I, EN]],
+ vec![("新酷音", 200).into()],
+ ),
+ (
+ vec![syl![C, E, TONE4], syl![SH, TONE4], syl![I, TONE2]],
+ vec![("測試儀", 42).into()],
+ ),
+ (
+ vec![syl![C, E, TONE4], syl![SH, TONE4]],
+ vec![("測試", 9318).into()],
+ ),
+ (
+ vec![syl![I, TONE2], syl![X, I, A, TONE4]],
+ vec![("一下", 10576).into()],
+ ),
+ (vec![syl![X, I, A, TONE4]], vec![("下", 10576).into()]),
+ ]))
+ }
+
+ #[test]
+ fn convert_empty_sequence() {
+ let dict = test_dictionary();
+ let engine = ChewingConversionEngine::new(dict);
+ let sequence = ChineseSequence {
+ syllables: vec![],
+ selections: vec![],
+ breaks: vec![],
+ };
+ assert_eq!(Vec::<Interval>::new(), engine.convert(&sequence));
+ }
+
+ #[test]
+ fn convert_simple_chinese_sequence() {
+ let dict = test_dictionary();
+ let engine = ChewingConversionEngine::new(dict);
+ let sequence = ChineseSequence {
+ syllables: vec![
+ syl![G, U, O, TONE2],
+ syl![M, I, EN, TONE2],
+ syl![D, A, TONE4],
+ syl![H, U, EI, TONE4],
+ syl![D, AI, TONE4],
+ syl![B, I, AU, TONE3],
+ ],
+ selections: vec![],
+ breaks: vec![],
+ };
+ assert_eq!(
+ vec![
+ Interval {
+ start: 0,
+ end: 2,
+ phrase: "國民".to_string()
+ },
+ Interval {
+ start: 2,
+ end: 4,
+ phrase: "大會".to_string()
+ },
+ Interval {
+ start: 4,
+ end: 6,
+ phrase: "代表".to_string()
+ },
+ ],
+ engine.convert(&sequence)
+ );
+ }
+
+ #[test]
+ fn convert_chinese_sequence_with_breaks() {
+ let dict = test_dictionary();
+ let engine = ChewingConversionEngine::new(dict);
+ let sequence = ChineseSequence {
+ syllables: vec![
+ syl![G, U, O, TONE2],
+ syl![M, I, EN, TONE2],
+ syl![D, A, TONE4],
+ syl![H, U, EI, TONE4],
+ syl![D, AI, TONE4],
+ syl![B, I, AU, TONE3],
+ ],
+ selections: vec![],
+ breaks: vec![Break(1), Break(5)],
+ };
+ assert_eq!(
+ vec![
+ Interval {
+ start: 0,
+ end: 1,
+ phrase: "國".to_string()
+ },
+ Interval {
+ start: 1,
+ end: 2,
+ phrase: "民".to_string()
+ },
+ Interval {
+ start: 2,
+ end: 4,
+ phrase: "大會".to_string()
+ },
+ Interval {
+ start: 4,
+ end: 5,
+ phrase: "代".to_string()
+ },
+ Interval {
+ start: 5,
+ end: 6,
+ phrase: "表".to_string()
+ },
+ ],
+ engine.convert(&sequence)
+ );
+ }
+
+ #[test]
+ fn convert_chinese_sequence_with_good_selection() {
+ let dict = test_dictionary();
+ let engine = ChewingConversionEngine::new(dict);
+ let sequence = ChineseSequence {
+ syllables: vec![
+ syl![G, U, O, TONE2],
+ syl![M, I, EN, TONE2],
+ syl![D, A, TONE4],
+ syl![H, U, EI, TONE4],
+ syl![D, AI, TONE4],
+ syl![B, I, AU, TONE3],
+ ],
+ selections: vec![Interval {
+ start: 4,
+ end: 6,
+ phrase: "戴錶".to_string(),
+ }],
+ breaks: vec![],
+ };
+ assert_eq!(
+ vec![
+ Interval {
+ start: 0,
+ end: 2,
+ phrase: "國民".to_string()
+ },
+ Interval {
+ start: 2,
+ end: 4,
+ phrase: "大會".to_string()
+ },
+ Interval {
+ start: 4,
+ end: 6,
+ phrase: "戴錶".to_string()
+ },
+ ],
+ engine.convert(&sequence)
+ );
+ }
+
+ #[test]
+ fn convert_chinese_sequence_with_substring_selection() {
+ let dict = test_dictionary();
+ let engine = ChewingConversionEngine::new(dict);
+ let sequence = ChineseSequence {
+ syllables: vec![syl![X, I, EN], syl![K, U, TONE4], syl![I, EN]],
+ selections: vec![Interval {
+ start: 1,
+ end: 3,
+ phrase: "酷音".to_string(),
+ }],
+ breaks: vec![],
+ };
+ assert_eq!(
+ vec![Interval {
+ start: 0,
+ end: 3,
+ phrase: "新酷音".to_string()
+ },],
+ engine.convert(&sequence)
+ );
+ }
+
+ #[test]
+ fn convert_cycle_alternatives() {
+ let dict = test_dictionary();
+ let engine = ChewingConversionEngine::new(dict);
+ let sequence = ChineseSequence {
+ syllables: vec![
+ syl![C, E, TONE4],
+ syl![SH, TONE4],
+ syl![I, TONE2],
+ syl![X, I, A, TONE4],
+ ],
+ selections: vec![],
+ breaks: vec![],
+ };
+ assert_eq!(
+ vec![
+ Interval {
+ start: 0,
+ end: 2,
+ phrase: "測試".to_string()
+ },
+ Interval {
+ start: 2,
+ end: 4,
+ phrase: "一下".to_string()
+ }
+ ],
+ engine.convert_next(&sequence, 0)
+ );
+ assert_eq!(
+ vec![
+ Interval {
+ start: 0,
+ end: 3,
+ phrase: "測試儀".to_string()
+ },
+ Interval {
+ start: 3,
+ end: 4,
+ phrase: "下".to_string()
+ }
+ ],
+ engine.convert_next(&sequence, 1)
+ );
+ assert_eq!(
+ vec![
+ Interval {
+ start: 0,
+ end: 2,
+ phrase: "測試".to_string()
+ },
+ Interval {
+ start: 2,
+ end: 4,
+ phrase: "一下".to_string()
+ }
+ ],
+ engine.convert_next(&sequence, 2)
+ );
+ }
+
+ #[test]
+ fn possible_path_contains() {
+ let path_1 = PossiblePath {
+ intervals: vec![
+ PossibleInterval {
+ start: 0,
+ end: 2,
+ phrase: Phrase::new("測試", 0).into(),
+ },
+ PossibleInterval {
+ start: 2,
+ end: 4,
+ phrase: Phrase::new("一下", 0).into(),
+ },
+ ],
+ };
+ let path_2 = PossiblePath {
+ intervals: vec![
+ PossibleInterval {
+ start: 0,
+ end: 2,
+ phrase: Phrase::new("測試", 0).into(),
+ },
+ PossibleInterval {
+ start: 2,
+ end: 3,
+ phrase: Phrase::new("遺", 0).into(),
+ },
+ PossibleInterval {
+ start: 3,
+ end: 4,
+ phrase: Phrase::new("下", 0).into(),
+ },
+ ],
+ };
+ assert!(path_1.contains(&path_2));
+ }
+}
diff --git a/src/dict.c b/src/dict.c
index ef9b683..6d03457 100644
--- a/src/dict.c
+++ b/src/dict.c
@@ -29,7 +29,7 @@
void TerminateDict(ChewingData *pgdata)
{
- plat_mmap_close(&pgdata->static_data.dict_mmap);
+ plat_mmap_close(&pgdata->staticData.dict_mmap);
}
int InitDict(ChewingData *pgdata, const char *prefix)
@@ -44,15 +44,15 @@ int InitDict(ChewingData *pgdata, const char *prefix)
if (len + 1 > sizeof(filename))
return -1;
- plat_mmap_set_invalid(&pgdata->static_data.dict_mmap);
- file_size = plat_mmap_create(&pgdata->static_data.dict_mmap, filename, FLAG_ATTRIBUTE_READ);
+ plat_mmap_set_invalid(&pgdata->staticData.dict_mmap);
+ file_size = plat_mmap_create(&pgdata->staticData.dict_mmap, filename, FLAG_ATTRIBUTE_READ);
if (file_size <= 0)
return -1;
offset = 0;
csize = file_size;
- pgdata->static_data.dict = (const char *) plat_mmap_set_view(&pgdata->static_data.dict_mmap, &offset, &csize);
- if (!pgdata->static_data.dict)
+ pgdata->staticData.dict = (const char *) plat_mmap_set_view(&pgdata->staticData.dict_mmap, &offset, &csize);
+ if (!pgdata->staticData.dict)
return -1;
return 0;
@@ -64,9 +64,9 @@ int InitDict(ChewingData *pgdata, const char *prefix)
*/
static void GetVocabFromDict(ChewingData *pgdata, Phrase *phr_ptr)
{
- snprintf(phr_ptr->phrase, sizeof(phr_ptr->phrase), "%s", pgdata->static_data.dict + GetUint24(pgdata->static_data.tree_cur_pos->phrase.pos));
- phr_ptr->freq = GetUint24(pgdata->static_data.tree_cur_pos->phrase.freq);
- pgdata->static_data.tree_cur_pos++;
+ snprintf(phr_ptr->phrase, sizeof(phr_ptr->phrase), "%s", pgdata->staticData.dict + GetUint24(pgdata->staticData.tree_cur_pos->phrase.pos));
+ phr_ptr->freq = GetUint24(pgdata->staticData.tree_cur_pos->phrase.freq);
+ pgdata->staticData.tree_cur_pos++;
}
int GetCharFirst(ChewingData *pgdata, Phrase *wrd_ptr, uint16_t key)
@@ -97,8 +97,8 @@ int GetPhraseFirst(ChewingData *pgdata, Phrase *phr_ptr, const TreeType *phrase_
int GetVocabNext(ChewingData *pgdata, Phrase *phr_ptr)
{
- if (pgdata->static_data.tree_cur_pos >= pgdata->static_data.tree_end_pos
- || GetUint16(pgdata->static_data.tree_cur_pos->key) != 0)
+ if (pgdata->staticData.tree_cur_pos >= pgdata->staticData.tree_end_pos
+ || GetUint16(pgdata->staticData.tree_cur_pos->key) != 0)
return 0;
GetVocabFromDict(pgdata, phr_ptr);
return 1;
diff --git a/src/
dictionary.rs b/src/
dictionary.rs
new file mode 100644
index 0000000..b81a014
--- /dev/null
+++ b/src/
dictionary.rs
@@ -0,0 +1,445 @@
+//! Dictionaries for looking up phrases.
+
+use std::{
+ borrow::{Borrow, Cow},
+ cmp::Ordering,
+ collections::{HashMap, HashSet},
+ fmt::{Debug, Display},
+ path::Path,
+};
+
+use thiserror::Error;
+
+use crate::zhuyin::Syllable;
+
+pub use layered::LayeredDictionary;
+pub use sqlite::{SqliteDictionary, SqliteDictionaryBuilder, SqliteDictionaryError};
+pub use trie::{TrieDictionary, TrieDictionaryBuilder, TrieDictionaryStatistics};
+
+mod layered;
+mod sqlite;
+mod trie;
+
+/// The error type which is returned from updating a dictionary.
+#[derive(Error, Debug)]
+#[error("update dictionary failed")]
+pub struct DictionaryUpdateError {
+ #[from]
+ pub source: Box<dyn std::error::Error + Send + Sync>,
+}
+
+/// The error type which is returned from building or updating a dictionary.
+#[derive(Error, Debug)]
+#[error("found duplicated phrases")]
+pub struct DuplicatePhraseError;
+
+/// A collection of metadata of a dictionary.
+///
+/// The dictionary version and copyright information can be used in
+/// configuration application.
+///
+/// # Examples
+///
+/// ```no_run
+/// # use std::collections::HashMap;
+/// # use chewing::dictionary::Dictionary;
+/// # let dictionary = HashMap::new();
+/// let about = dictionary.about();
+/// assert_eq!("libchewing default", about.name.unwrap());
+/// assert_eq!("Copyright (c) 2022 libchewing Core Team", about.copyright.unwrap());
+/// assert_eq!("LGPL-2.1-or-later", about.license.unwrap());
+/// assert_eq!("init_database 0.5.1", about.software.unwrap());
+/// ```
+#[derive(Debug, Clone, Default)]
+pub struct DictionaryInfo {
+ /// The name of the dictionary.
+ pub name: Option<String>,
+ /// The copyright information of the dictionary.
+ ///
+ /// It's recommended to include the copyright holders' names and email
+ /// addresses, separated by semicolons.
+ pub copyright: Option<String>,
+ /// The license information of the dictionary.
+ ///
+ /// It's recommended to use the [SPDX license identifier](
https://spdx.org/licenses/).
+ pub license: Option<String>,
+ /// The version of the dictionary.
+ ///
+ /// It's recommended to use the commit hash or revision if the dictionary is
+ /// managed in a source control repository.
+ pub version: Option<String>,
+ /// The name of the software used to generate the dictionary.
+ ///
+ /// It's recommended to include the name and the version number.
+ pub software: Option<String>,
+}
+
+/// A type containing a phrase string and its frequency.
+///
+/// # Examples
+///
+/// A `Phrase` can be created from/to a tuple.
+///
+/// ```
+/// use chewing::dictionary::Phrase;
+///
+/// let phrase = Phrase::new("測", 1);
+/// assert_eq!(phrase, ("測", 1).into());
+/// assert_eq!(("測".to_string(), 1u32), phrase.into());
+/// ```
+///
+/// Phrases are ordered by their frequency.
+///
+/// ```
+/// use chewing::dictionary::Phrase;
+///
+/// assert!(Phrase::new("測", 100) > Phrase::new("冊", 1));
+/// ```
+#[derive(Clone, PartialEq, Eq, Hash, Debug)]
+pub struct Phrase<'a> {
+ phrase: Cow<'a, str>,
+ freq: u32,
+ last_used: Option<u64>,
+}
+
+impl<'a> Phrase<'a> {
+ /// Creates a new `Phrase`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use chewing::dictionary::Phrase;
+ ///
+ /// let phrase = Phrase::new("新", 1);
+ /// ```
+ pub fn new<S>(phrase: S, freq: u32) -> Phrase<'a>
+ where
+ S: Into<Cow<'a, str>>,
+ {
+ Phrase {
+ phrase: phrase.into(),
+ freq,
+ last_used: None,
+ }
+ }
+ /// Sets the last used time of the phrase.
+ pub fn with_time(mut self, last_used: u64) -> Phrase<'a> {
+ self.last_used = Some(last_used);
+ self
+ }
+ /// Returns the frequency of the phrase.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use chewing::dictionary::Phrase;
+ ///
+ /// let phrase = Phrase::new("詞頻", 100);
+ ///
+ /// assert_eq!(100, phrase.freq());
+ /// ```
+ pub fn freq(&self) -> u32 {
+ self.freq
+ }
+ /// Returns the last time this phrase was selected as user phrase.
+ ///
+ /// The time is a counter increased by one for each keystroke.
+ pub fn last_used(&self) -> Option<u64> {
+ self.last_used
+ }
+ /// Returns the inner str of the phrase.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use chewing::dictionary::Phrase;
+ ///
+ /// let phrase = Phrase::new("詞", 100);
+ ///
+ /// assert_eq!("詞", phrase.as_str());
+ /// ```
+ pub fn as_str(&self) -> &str {
+ self.phrase.borrow()
+ }
+}
+
+/// Phrases are compared by their frequency first, followed by their phrase
+/// string.
+impl PartialOrd for Phrase<'_> {
+ fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+ match self.freq.partial_cmp(&other.freq) {
+ Some(Ordering::Equal) => {}
+ ord => return ord,
+ }
+ self.phrase.partial_cmp(&other.phrase)
+ }
+}
+
+/// Phrases are compared by their frequency first, followed by their phrase
+/// string.
+impl Ord for Phrase<'_> {
+ fn cmp(&self, other: &Self) -> Ordering {
+ self.partial_cmp(other).unwrap()
+ }
+}
+
+impl AsRef<str> for Phrase<'_> {
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl From<Phrase<'_>> for String {
+ fn from(phrase: Phrase) -> Self {
+ phrase.phrase.into_owned()
+ }
+}
+
+impl From<Phrase<'_>> for (String, u32) {
+ fn from(phrase: Phrase) -> Self {
+ (phrase.phrase.into_owned(), phrase.freq)
+ }
+}
+
+impl<'a, S> From<(S, u32)> for Phrase<'a>
+where
+ S: Into<Cow<'a, str>>,
+{
+ fn from(tuple: (S, u32)) -> Self {
+ Phrase::new(tuple.0, tuple.1)
+ }
+}
+
+impl<'a, S> From<(S, u32, u64)> for Phrase<'a>
+where
+ S: Into<Cow<'a, str>>,
+{
+ fn from(tuple: (S, u32, u64)) -> Self {
+ Phrase::new(tuple.0, tuple.1).with_time(tuple.2)
+ }
+}
+
+impl Display for Phrase<'_> {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ f.write_str(self.as_str())
+ }
+}
+
+/// A generic iterator over the phrases and their frequency in a dictionary.
+///
+/// # Examples
+///
+/// ```
+/// use std::collections::HashMap;
+///
+/// use chewing::{dictionary::Dictionary, syl, zhuyin::Bopomofo};
+///
+/// let dict = HashMap::from([
+/// (vec![syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]], vec![("測", 100).into()]),
+/// ]);
+///
+/// for phrase in dict.lookup_word(
+/// syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]
+/// ) {
+/// assert_eq!("測", phrase.as_str());
+/// assert_eq!(100, phrase.freq());
+/// }
+/// ```
+pub type Phrases<'a, 'p> = Box<dyn Iterator<Item = Phrase<'p>> + 'a>;
+
+pub type DictEntries<'a, 'p> = Box<dyn Iterator<Item = (Vec<Syllable>, Phrase<'p>)> + 'a>;
+
+/// An interface for looking up dictionaries.
+///
+/// This is the main dictionary trait. For more about the concept of
+/// dictionaries generally, please see the [module-level
+/// documentation][crate::dictionary].
+///
+/// # Examples
+///
+/// The std [`HashMap`] implements the `Dictionary` trait so it can be used in
+/// tests.
+///
+/// ```
+/// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+/// use std::collections::HashMap;
+///
+/// use chewing::{dictionary::Dictionary, syl, zhuyin::Bopomofo};
+///
+/// let mut dict = HashMap::new();
+/// let dict_mut = dict.as_mut_dict().unwrap();
+/// dict_mut.insert(&[syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]], ("測", 100).into())?;
+///
+/// for phrase in dict.lookup_word(
+/// syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]
+/// ) {
+/// assert_eq!("測", phrase.as_str());
+/// assert_eq!(100, phrase.freq());
+/// }
+/// # Ok(())
+/// # }
+/// ```
+pub trait Dictionary: Debug {
+ /// Returns an iterator to all single syllable words matched by the
+ /// syllable, if any. The result should use a stable order each time for the
+ /// same input.
+ fn lookup_word(&self, syllable: Syllable) -> Phrases {
+ self.lookup_phrase(&[syllable])
+ }
+ /// Returns an iterator to all phrases matched by the syllables, if any. The
+ /// result should use a stable order each time for the same input.
+ fn lookup_phrase(&self, syllables: &[Syllable]) -> Phrases;
+ /// Returns an iterator to all phrases in the dictionary.
+ fn entries(&self) -> DictEntries;
+ /// Returns information about the dictionary instance.
+ fn about(&self) -> DictionaryInfo;
+ /// Returns a mutable reference to the dictionary if the underlying
+ /// implementation allows update.
+ fn as_mut_dict(&mut self) -> Option<&mut dyn DictionaryMut>;
+}
+
+/// An interface for updating dictionaries.
+///
+/// For more about the concept of dictionaries generally, please see the
+/// [module-level documentation][crate::dictionary].
+///
+/// # Examples
+///
+/// The std [`HashMap`] implements the `DictionaryMut` trait so it can be used in
+/// tests.
+///
+/// ```
+/// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+/// use std::collections::HashMap;
+///
+/// use chewing::{dictionary::Dictionary, syl, zhuyin::Bopomofo};
+///
+/// let mut dict = HashMap::new();
+/// let dict_mut = dict.as_mut_dict().unwrap();
+/// dict_mut.insert(&[syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]], ("測", 100).into())?;
+/// # Ok(())
+/// # }
+/// ```
+pub trait DictionaryMut {
+ fn insert(
+ &mut self,
+ syllables: &[Syllable],
+ phrase: Phrase<'static>,
+ ) -> Result<(), DictionaryUpdateError>;
+
+ fn update(
+ &mut self,
+ syllables: &[Syllable],
+ phrase: Phrase,
+ user_freq: u32,
+ time: u64,
+ ) -> Result<(), DictionaryUpdateError>;
+
+ fn remove(
+ &mut self,
+ syllables: &[Syllable],
+ phrase_str: &str,
+ ) -> Result<(), DictionaryUpdateError>;
+}
+
+#[derive(Error, Debug)]
+#[error("build dictionary error")]
+pub struct BuildDictionaryError {
+ #[from]
+ source: Box<dyn std::error::Error + Send + Sync>,
+}
+
+impl From<std::io::Error> for BuildDictionaryError {
+ fn from(source: std::io::Error) -> Self {
+ BuildDictionaryError {
+ source: Box::new(source),
+ }
+ }
+}
+
+pub trait DictionaryBuilder {
+ fn set_info(&mut self, info: DictionaryInfo) -> Result<(), BuildDictionaryError>;
+ fn insert(
+ &mut self,
+ syllables: &[Syllable],
+ phrase: Phrase,
+ ) -> Result<(), BuildDictionaryError>;
+ fn build(&mut self, path: &Path) -> Result<(), BuildDictionaryError>;
+}
+
+impl Dictionary for HashMap<Vec<Syllable>, Vec<Phrase<'static>>> {
+ fn lookup_phrase(&self, syllables: &[Syllable]) -> Phrases {
+ self.get(syllables)
+ .cloned()
+ .map(|v| Box::new(v.into_iter()) as Phrases)
+ .unwrap_or_else(|| Box::new(std::iter::empty()))
+ }
+
+ fn entries(&self) -> DictEntries {
+ Box::new(
+ self.iter()
+ .flat_map(|(k, v)| v.iter().map(|phrase| (k.clone(), phrase.clone()))),
+ )
+ }
+
+ fn about(&self) -> DictionaryInfo {
+ Default::default()
+ }
+
+ fn as_mut_dict(&mut self) -> Option<&mut dyn DictionaryMut> {
+ Some(self)
+ }
+}
+
+impl DictionaryMut for HashMap<Vec<Syllable>, Vec<Phrase<'static>>> {
+ fn insert(
+ &mut self,
+ syllables: &[Syllable],
+ phrase: Phrase<'static>,
+ ) -> Result<(), DictionaryUpdateError> {
+ let vec = self.entry(syllables.to_vec()).or_default();
+ if vec.iter().any(|it| it.as_str() == phrase.as_str()) {
+ return Err(DictionaryUpdateError {
+ source: Box::new(DuplicatePhraseError),
+ });
+ }
+ vec.push(phrase);
+ Ok(())
+ }
+
+ fn update(
+ &mut self,
+ _syllables: &[Syllable],
+ _phrase: Phrase,
+ _user_freq: u32,
+ _time: u64,
+ ) -> Result<(), DictionaryUpdateError> {
+ Ok(())
+ }
+
+ fn remove(
+ &mut self,
+ syllables: &[Syllable],
+ phrase_str: &str,
+ ) -> Result<(), DictionaryUpdateError> {
+ let vec = self.entry(syllables.to_vec()).or_default();
+ *vec = vec
+ .iter()
+ .cloned()
+ .filter(|p| p.as_str() != phrase_str)
+ .collect::<Vec<_>>();
+ Ok(())
+ }
+}
+
+/// A block list contains unwanted phrases.
+pub trait BlockList: Debug {
+ /// Returns if whether a phrase is in the block list.
+ fn is_blocked(&self, phrase: &str) -> bool;
+}
+
+impl BlockList for HashSet<String> {
+ fn is_blocked(&self, phrase: &str) -> bool {
+ self.contains(phrase)
+ }
+}
diff --git a/src/dictionary/
layered.rs b/src/dictionary/
layered.rs
new file mode 100644
index 0000000..f24c89d
--- /dev/null
+++ b/src/dictionary/
layered.rs
@@ -0,0 +1,188 @@
+use std::hash::{Hash, Hasher};
+
+use indexmap::IndexSet;
+
+use crate::zhuyin::Syllable;
+
+use super::{
+ BlockList, DictEntries, Dictionary, DictionaryInfo, DictionaryMut, DictionaryUpdateError,
+ Phrase, Phrases,
+};
+
+/// A collection of dictionaries that returns the union of the lookup results.
+/// # Examples
+///
+/// ```
+/// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+/// use std::collections::{HashMap, HashSet};
+///
+/// use chewing::{dictionary::{LayeredDictionary, Dictionary}, syl, zhuyin::Bopomofo};
+///
+/// let mut sys_dict = Box::new(HashMap::new());
+/// let mut user_dict = Box::new(HashMap::new());
+/// sys_dict.insert(
+/// vec![syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]],
+/// vec![("測", 1).into(), ("冊", 1).into(), ("側", 1).into()]
+/// );
+/// user_dict.insert(
+/// vec![syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]],
+/// vec![("策", 100).into(), ("冊", 100).into()]
+/// );
+///
+/// let user_block_list = Box::new(HashSet::from(["側".to_string()]));
+///
+/// let dict = LayeredDictionary::new(vec![sys_dict, user_dict], vec![user_block_list]);
+/// assert_eq!(
+/// [
+/// ("策", 100).into(),
+/// ("冊", 100).into(),
+/// ("測", 1).into(),
+/// ]
+/// .into_iter()
+/// .collect::<HashSet<_>>(),
+/// dict.lookup_phrase(&[
+/// syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]
+/// ])
+/// .collect::<HashSet<_>>(),
+/// );
+/// # Ok(())
+/// # }
+/// ```
+#[derive(Debug)]
+pub struct LayeredDictionary {
+ inner: Vec<Box<dyn Dictionary>>,
+ blocked: Vec<Box<dyn BlockList>>,
+}
+
+impl LayeredDictionary {
+ /// Creates a new `LayeredDictionary` with the list of dictionaries and
+ /// block lists.
+ pub fn new(
+ dictionaries: Vec<Box<dyn Dictionary>>,
+ block_lists: Vec<Box<dyn BlockList>>,
+ ) -> LayeredDictionary {
+ LayeredDictionary {
+ inner: dictionaries,
+ blocked: block_lists,
+ }
+ }
+ fn is_blocked(&self, phrase: &str) -> bool {
+ self.blocked.iter().any(|b| b.is_blocked(phrase))
+ }
+}
+
+impl Dictionary for LayeredDictionary {
+ /// Lookup phrases from all underlying dictionaries.
+ ///
+ /// Phrases are ordered by their first apperance in the underlying dictionaries.
+ ///
+ /// Pseudo code
+ ///
+ /// ```pseudo_code
+ /// Set phrases = list()
+ /// Set [d_base, d_layers] = d_list
+ /// Foreach phrase, freq in d_base.lookup(syllables)
+ /// Add phrases <- (phrase, freq)
+ /// Foreach d in d_layers
+ /// Foreach phrase, freq in d.lookup_syllables)
+ /// If phrase in phrases
+ /// Set phrases[phrase].freq = freq
+ /// Else
+ /// Add phrases <- (phrase, freq)
+ /// ```
+ fn lookup_phrase(&self, syllables: &[Syllable]) -> Phrases {
+ let (base, layers) = match self.inner.split_first() {
+ Some(d) => d,
+ None => return Box::new(std::iter::empty()),
+ };
+ let mut phrases = base
+ .lookup_phrase(syllables)
+ .map(LookupPhrase)
+ .collect::<IndexSet<_>>();
+ for d in layers {
+ for phrase in d.lookup_phrase(syllables) {
+ phrases.replace(LookupPhrase(phrase));
+ }
+ }
+ Box::new(
+ phrases
+ .into_iter()
+ .map(|p| p.0)
+ .filter(|phrase| !self.is_blocked(&phrase.phrase)),
+ )
+ }
+
+ fn entries(&self) -> DictEntries {
+ todo!("entries from all layers")
+ // Box::new(std::iter::empty())
+ }
+
+ fn about(&self) -> DictionaryInfo {
+ DictionaryInfo {
+ name: Some("Built-in LayeredDictionary".to_string()),
+ ..Default::default()
+ }
+ }
+
+ fn as_mut_dict(&mut self) -> Option<&mut dyn DictionaryMut> {
+ Some(self)
+ }
+}
+
+impl DictionaryMut for LayeredDictionary {
+ fn insert(
+ &mut self,
+ syllables: &[Syllable],
+ phrase: Phrase<'static>,
+ ) -> Result<(), DictionaryUpdateError> {
+ for dict in &mut self.inner {
+ if let Some(dict_mut) = dict.as_mut_dict() {
+ dict_mut.insert(syllables, phrase.clone())?;
+ }
+ }
+ Ok(())
+ }
+
+ fn update(
+ &mut self,
+ syllables: &[Syllable],
+ phrase: Phrase,
+ user_freq: u32,
+ time: u64,
+ ) -> Result<(), DictionaryUpdateError> {
+ for dict in &mut self.inner {
+ if let Some(dict_mut) = dict.as_mut_dict() {
+ dict_mut.update(syllables, phrase.clone(), user_freq, time)?;
+ }
+ }
+ Ok(())
+ }
+
+ fn remove(
+ &mut self,
+ syllables: &[Syllable],
+ phrase_str: &str,
+ ) -> Result<(), DictionaryUpdateError> {
+ for dict in &mut self.inner {
+ if let Some(dict_mut) = dict.as_mut_dict() {
+ dict_mut.remove(syllables, phrase_str)?;
+ }
+ }
+ Ok(())
+ }
+}
+
+#[derive(Debug, Eq)]
+struct LookupPhrase<'a>(Phrase<'a>);
+
+impl Hash for LookupPhrase<'_> {
+ fn hash<H: Hasher>(&self, state: &mut H) {
+ self.0.phrase.hash(state);
+ }
+}
+
+impl PartialEq for LookupPhrase<'_> {
+ fn eq(&self, other: &Self) -> bool {
+ self.0.phrase == other.0.phrase
+ }
+}
diff --git a/src/dictionary/
sqlite.rs b/src/dictionary/
sqlite.rs
new file mode 100644
index 0000000..22edd2e
--- /dev/null
+++ b/src/dictionary/
sqlite.rs
@@ -0,0 +1,625 @@
+use std::{os::unix::prelude::OsStrExt, path::Path, str};
+
+use rusqlite::{params, Connection, Error as RusqliteError, OpenFlags, OptionalExtension};
+use thiserror::Error;
+
+use crate::zhuyin::{IntoSyllablesBytes, Syllable};
+
+use super::{
+ BuildDictionaryError, DictEntries, Dictionary, DictionaryBuilder, DictionaryInfo,
+ DictionaryMut, DictionaryUpdateError, Phrase, Phrases,
+};
+
+#[derive(Debug, Error)]
+#[error("sqlite error")]
+pub enum SqliteDictionaryError {
+ SqliteError {
+ #[from]
+ source: RusqliteError,
+ },
+ MissingTable {
+ table: String,
+ },
+}
+
+#[derive(Debug)]
+pub struct SqliteDictionary {
+ conn: Connection,
+ info: DictionaryInfo,
+ read_only: bool,
+}
+
+impl SqliteDictionary {
+ pub fn open<P: AsRef<Path>>(path: P) -> Result<SqliteDictionary, SqliteDictionaryError> {
+ let mut conn = Connection::open(path)?;
+ Self::initialize_tables(&conn)?;
+ Self::migrate_from_userphrase_v1(&mut conn)?;
+ Self::ensure_tables(&conn)?;
+ let info = Self::read_info_v1(&conn)?;
+
+ Ok(SqliteDictionary {
+ conn,
+ info,
+ read_only: false,
+ })
+ }
+
+ pub fn open_read_only<P: AsRef<Path>>(
+ path: P,
+ ) -> Result<SqliteDictionary, SqliteDictionaryError> {
+ let conn = Connection::open_with_flags(path, OpenFlags::SQLITE_OPEN_READ_ONLY)?;
+ Self::ensure_tables(&conn)?;
+ let info = Self::read_info_v1(&conn)?;
+
+ Ok(SqliteDictionary {
+ conn,
+ info,
+ read_only: true,
+ })
+ }
+
+ pub fn open_in_memory() -> Result<SqliteDictionary, SqliteDictionaryError> {
+ let conn = Connection::open_in_memory()?;
+ Self::initialize_tables(&conn)?;
+ Self::ensure_tables(&conn)?;
+ let info = Self::read_info_v1(&conn)?;
+
+ Ok(SqliteDictionary {
+ conn,
+ info,
+ read_only: false,
+ })
+ }
+
+ fn initialize_tables(conn: &Connection) -> Result<(), SqliteDictionaryError> {
+ conn.pragma_update(None, "journal_mode", "WAL")?;
+ conn.execute(
+ "CREATE TABLE IF NOT EXISTS dictionary_v1 (
+ syllables BLOB NOT NULL,
+ phrase TEXT NOT NULL,
+ freq INTEGER NOT NULL,
+ sort_id INTEGER,
+ userphrase_id INTEGER,
+ PRIMARY KEY (syllables, phrase)
+ ) WITHOUT ROWID",
+ [],
+ )?;
+
+ conn.execute(
+ "CREATE TABLE IF NOT EXISTS userphrase_v2 (
+ id INTEGER PRIMARY KEY,
+ user_freq INTEGER,
+ time INTEGER
+ )",
+ [],
+ )?;
+
+ conn.execute(
+ "CREATE TABLE IF NOT EXISTS migration_v1 (name TEXT PRIMARY KEY) WITHOUT ROWID",
+ [],
+ )?;
+
+ conn.execute(
+ "CREATE TABLE IF NOT EXISTS info_v1 (
+ key TEXT PRIMARY KEY,
+ value TEXT NOT NULL
+ ) WITHOUT ROWID",
+ [],
+ )?;
+
+ Ok(())
+ }
+
+ fn ensure_tables(conn: &Connection) -> Result<(), SqliteDictionaryError> {
+ let mut stmt = conn
+ .prepare("SELECT EXISTS (SELECT 1 FROM sqlite_schema WHERE type='table' AND name=?)")?;
+ for table_name in ["dictionary_v1", "userphrase_v2", "migration_v1", "info_v1"] {
+ let has_table: bool = stmt.query_row([table_name], |row| row.get(0))?;
+ if !has_table {
+ return Err(SqliteDictionaryError::MissingTable {
+ table: table_name.into(),
+ });
+ }
+ }
+ Ok(())
+ }
+
+ fn migrate_from_userphrase_v1(conn: &mut Connection) -> Result<(), SqliteDictionaryError> {
+ let has_userphrase_v1: bool = conn.query_row(
+ "SELECT EXISTS (SELECT 1 FROM sqlite_master WHERE type='table' AND name='userphrase_v1')",
+ [],
+ |row| row.get(0)
+ )?;
+ let migrated: bool = conn.query_row(
+ "SELECT EXISTS (SELECT 1 FROM migration_v1 WHERE name='migrate_from_userphrase_v1')",
+ [],
+ |row| row.get(0),
+ )?;
+ if !has_userphrase_v1 || migrated {
+ // Don't need to migrate
+ conn.execute(
+ "INSERT OR IGNORE INTO migration_v1 (name) VALUES ('migrate_from_userphrase_v1')",
+ [],
+ )?;
+ return Ok(());
+ }
+
+ let mut userphrases: Vec<(Vec<Syllable>, String, u32, u32, u64)> = vec![];
+ {
+ let mut stmt = conn.prepare(
+ "SELECT
+ phrase,
+ orig_freq,
+ user_freq,
+ time,
+ phone_0,
+ phone_1,
+ phone_2,
+ phone_3,
+ phone_4,
+ phone_5,
+ phone_6,
+ phone_7,
+ phone_8,
+ phone_9,
+ phone_10
+ FROM userphrase_v1",
+ )?;
+ let mut rows = stmt.query([])?;
+ while let Some(row) = rows.next()? {
+ let mut syllables = vec![];
+ for i in 4..15 {
+ let syllable_u16: u16 = row.get(i)?;
+ if let Ok(syllable) = Syllable::try_from(syllable_u16) {
+ if !syllable.is_empty() {
+ syllables.push(syllable);
+ }
+ }
+ }
+ userphrases.push((
+ syllables,
+ row.get(0)?,
+ row.get(1)?,
+ row.get(2)?,
+ row.get(3)?,
+ ));
+ }
+ }
+
+ let tx = conn.transaction()?;
+ {
+ for item in userphrases {
+ let mut stmt = tx.prepare_cached(
+ "INSERT INTO userphrase_v2 (
+ user_freq,
+ time
+ ) VALUES (?, ?)",
+ )?;
+ stmt.execute(params![item.3, item.4])?;
+ let row_id = tx.last_insert_rowid();
+ let mut stmt = tx.prepare_cached(
+ "INSERT OR REPLACE INTO dictionary_v1 (
+ syllables,
+ phrase,
+ freq,
+ userphrase_id
+ ) VALUES (?, ?, ?, ?)",
+ )?;
+ let mut syllables_bytes = vec![];
+ item.0
+ .into_iter()
+ .for_each(|syl| syllables_bytes.extend_from_slice(&syl.to_u16().to_le_bytes()));
+ stmt.execute(params![syllables_bytes, item.1, item.2, row_id])?;
+ }
+ tx.execute(
+ "INSERT INTO migration_v1 (name) VALUES ('migrate_from_userphrase_v1')",
+ [],
+ )?;
+ }
+ tx.commit()?;
+ Ok(())
+ }
+
+ fn read_info_v1(conn: &Connection) -> Result<DictionaryInfo, SqliteDictionaryError> {
+ let mut info = DictionaryInfo::default();
+ let mut stmt = conn.prepare(
+ "SELECT key, value FROM info_v1 WHERE key IN (
+ 'name',
+ 'copyright',
+ 'license',
+ 'version',
+ 'software'
+ )",
+ )?;
+ let mut rows = stmt.query([])?;
+ while let Some(row) = rows.next()? {
+ let key: String = row.get(0)?;
+ let value: String = row.get(1)?;
+ match key.as_str() {
+ "name" =>
info.name = Some(value),
+ "copyright" => info.copyright = Some(value),
+ "license" => info.license = Some(value),
+ "version" => info.version = Some(value),
+ "software" => info.software = Some(value),
+ _ => (),
+ }
+ }
+ Ok(info)
+ }
+}
+
+impl Dictionary for SqliteDictionary {
+ fn lookup_phrase(&self, syllables: &[Syllable]) -> Phrases {
+ let syllables_bytes = syllables.into_syllables_bytes();
+ let mut stmt = self
+ .conn
+ .prepare_cached(
+ "SELECT
+ phrase,
+ max(freq, coalesce(user_freq, 0)),
+ time
+ FROM dictionary_v1 LEFT JOIN userphrase_v2 ON userphrase_id = id
+ WHERE syllables = ?
+ ORDER BY sort_id ASC, max(freq, coalesce(user_freq, 0)) DESC, phrase DESC",
+ )
+ .expect("SQL error");
+ Box::new(
+ stmt.query_map([syllables_bytes], |row| {
+ let (phrase, freq, time): (String, _, _) = row.try_into()?;
+ let mut phrase = Phrase::new(phrase, freq);
+ if let Some(last_used) = time {
+ phrase = phrase.with_time(last_used);
+ }
+ Ok(phrase)
+ })
+ .unwrap()
+ .map(|r| r.unwrap())
+ .collect::<Vec<_>>()
+ .into_iter(),
+ )
+ }
+
+ fn entries(&self) -> DictEntries {
+ let mut stmt = self
+ .conn
+ .prepare_cached(
+ "SELECT syllables, phrase, max(freq, coalesce(user_freq, 0)), time
+ FROM dictionary_v1 LEFT JOIN userphrase_v2 ON userphrase_id = id",
+ )
+ .expect("SQL error");
+ Box::new(
+ stmt.query_map([], |row| {
+ let (syllables_bytes, phrase, freq, time): (Vec<u8>, String, _, _) =
+ row.try_into()?;
+ let syllables = syllables_bytes
+ .chunks_exact(2)
+ .map(|bytes| {
+ let mut u16_bytes = [0; 2];
+ u16_bytes.copy_from_slice(bytes);
+ let syl_u16 = u16::from_le_bytes(u16_bytes);
+ Syllable::try_from(syl_u16).unwrap()
+ })
+ .collect::<Vec<_>>();
+ let mut phrase = Phrase::new(phrase, freq);
+ if let Some(last_used) = time {
+ phrase = phrase.with_time(last_used);
+ }
+ Ok((syllables, phrase))
+ })
+ .unwrap()
+ .map(|r| r.unwrap())
+ .collect::<Vec<_>>()
+ .into_iter(),
+ )
+ }
+
+ fn about(&self) -> DictionaryInfo {
+ self.info.clone()
+ }
+
+ fn as_mut_dict(&mut self) -> Option<&mut dyn DictionaryMut> {
+ if self.read_only {
+ None
+ } else {
+ Some(self)
+ }
+ }
+}
+
+impl From<RusqliteError> for DictionaryUpdateError {
+ fn from(source: RusqliteError) -> Self {
+ DictionaryUpdateError {
+ source: source.into(),
+ }
+ }
+}
+
+impl DictionaryMut for SqliteDictionary {
+ fn insert(
+ &mut self,
+ syllables: &[Syllable],
+ phrase: Phrase,
+ ) -> Result<(), DictionaryUpdateError> {
+ let syllables_bytes = syllables.into_syllables_bytes();
+ let mut stmt = self.conn.prepare_cached(
+ "INSERT OR REPLACE INTO dictionary_v1 (
+ syllables,
+ phrase,
+ freq
+ ) VALUES (?, ?, ?)",
+ )?;
+ stmt.execute(params![syllables_bytes, phrase.as_str(), phrase.freq()])?;
+ Ok(())
+ }
+
+ fn update(
+ &mut self,
+ syllables: &[Syllable],
+ phrase: Phrase,
+ user_freq: u32,
+ time: u64,
+ ) -> Result<(), DictionaryUpdateError> {
+ let syllables_bytes = syllables.into_syllables_bytes();
+ let tx = self.conn.transaction()?;
+ {
+ let mut stmt = tx.prepare_cached(
+ "SELECT userphrase_id FROM dictionary_v1 WHERE syllables = ? AND phrase = ?",
+ )?;
+ let userphrase_id: Option<Option<u64>> = stmt
+ .query_row(params![syllables_bytes, phrase.as_str()], |row| row.get(0))
+ .optional()?;
+ match userphrase_id {
+ Some(Some(id)) => {
+ let mut stmt =
+ tx.prepare_cached("UPDATE userphrase_v2 SET user_freq = ? WHERE id = ?")?;
+ stmt.execute(params![user_freq, id])?;
+ }
+ Some(None) | None => {
+ let mut stmt = tx.prepare_cached(
+ "INSERT INTO userphrase_v2 (user_freq, time) VALUES (?, ?)",
+ )?;
+ stmt.execute(params![user_freq, time])?;
+ let userphrase_id = tx.last_insert_rowid();
+ let mut stmt = tx.prepare_cached(
+ "INSERT OR REPLACE INTO dictionary_v1 (
+ syllables,
+ phrase,
+ freq,
+ userphrase_id
+ ) VALUES (?, ?, ?, ?)",
+ )?;
+ stmt.execute(params![
+ syllables_bytes,
+ phrase.as_str(),
+ phrase.freq(),
+ userphrase_id
+ ])?;
+ }
+ }
+ }
+ tx.commit()?;
+ Ok(())
+ }
+
+ fn remove(
+ &mut self,
+ syllables: &[Syllable],
+ phrase_str: &str,
+ ) -> Result<(), DictionaryUpdateError> {
+ let syllables_bytes = syllables.into_syllables_bytes();
+ let mut stmt = self
+ .conn
+ .prepare_cached("DELETE FROM dictionary_v1 WHERE syllables = ? AND phrase = ?")?;
+ stmt.execute(params![syllables_bytes, phrase_str])?;
+ Ok(())
+ }
+}
+
+pub struct SqliteDictionaryBuilder {
+ dict: SqliteDictionary,
+ sort_id: u64,
+}
+
+impl SqliteDictionaryBuilder {
+ pub fn new() -> SqliteDictionaryBuilder {
+ let dict = SqliteDictionary::open_in_memory().unwrap();
+ SqliteDictionaryBuilder { dict, sort_id: 0 }
+ }
+}
+
+impl Default for SqliteDictionaryBuilder {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl From<RusqliteError> for BuildDictionaryError {
+ fn from(source: RusqliteError) -> Self {
+ BuildDictionaryError {
+ source: Box::new(source),
+ }
+ }
+}
+
+impl From<std::str::Utf8Error> for BuildDictionaryError {
+ fn from(source: std::str::Utf8Error) -> Self {
+ BuildDictionaryError {
+ source: Box::new(source),
+ }
+ }
+}
+
+impl DictionaryBuilder for SqliteDictionaryBuilder {
+ fn set_info(&mut self, info: DictionaryInfo) -> Result<(), BuildDictionaryError> {
+ let tx = self.dict.conn.transaction()?;
+ {
+ let mut stmt =
+ tx.prepare("INSERT OR REPLACE INTO info_v1 (key, value) VALUES (?, ?)")?;
+ if let Some(name) =
info.name {
+ stmt.execute(["name", &name])?;
+ }
+ if let Some(copyright) = info.copyright {
+ stmt.execute(["copyright", ©right])?;
+ }
+ if let Some(license) = info.license {
+ stmt.execute(["license", &license])?;
+ }
+ if let Some(version) = info.version {
+ stmt.execute(["version", &version])?;
+ }
+ if let Some(software) = info.software {
+ stmt.execute(["software", &software])?;
+ }
+ }
+ tx.commit()?;
+ Ok(())
+ }
+
+ fn insert(
+ &mut self,
+ syllables: &[Syllable],
+ phrase: Phrase,
+ ) -> Result<(), BuildDictionaryError> {
+ let sort_id = if syllables.len() == 1 {
+ self.sort_id += 1;
+ self.sort_id
+ } else {
+ 0
+ };
+ let syllables_bytes = syllables.into_syllables_bytes();
+ let mut stmt = self.dict.conn.prepare_cached(
+ "INSERT OR REPLACE INTO dictionary_v1 (
+ syllables,
+ phrase,
+ freq,
+ sort_id
+ ) VALUES (?, ?, ?, ?)",
+ )?;
+ stmt.execute(params![
+ syllables_bytes,
+ phrase.as_str(),
+ phrase.freq(),
+ sort_id
+ ])?;
+
+ Ok(())
+ }
+
+ fn build(&mut self, path: &Path) -> Result<(), BuildDictionaryError> {
+ let path = str::from_utf8(path.as_os_str().as_bytes())?;
+ self.dict.conn.execute("VACUUM INTO ?", [path])?;
+ Ok(())
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use std::error::Error;
+
+ use rusqlite::{params, Connection};
+ use tempfile::NamedTempFile;
+
+ use crate::{
+ dictionary::{Dictionary, DictionaryMut, Phrase},
+ syl,
+ zhuyin::Bopomofo,
+ };
+
+ use super::SqliteDictionary;
+
+ #[test]
+ fn migration_from_userphrase_v1() {
+ let temp_path = NamedTempFile::new()
+ .expect("Unable to create tempfile")
+ .into_temp_path();
+ let temp_db = Connection::open(&temp_path).expect("Unable to open database");
+ temp_db.execute(
+ "CREATE TABLE IF NOT EXISTS userphrase_v1 (
+ time INTEGER,
+ user_freq INTEGER,
+ max_freq INTEGER,
+ orig_freq INTEGER,
+ length INTEGER,
+ phone_0 INTEGER,
+ phone_1 INTEGER,
+ phone_2 INTEGER,
+ phone_3 INTEGER,
+ phone_4 INTEGER,
+ phone_5 INTEGER,
+ phone_6 INTEGER,
+ phone_7 INTEGER,
+ phone_8 INTEGER,
+ phone_9 INTEGER,
+ phone_10 INTEGER,
+ phrase TEXT,
+ PRIMARY KEY (phone_0,phone_1,phone_2,phone_3,phone_4,phone_5,phone_6,phone_7,phone_8,phone_9,phone_10,phrase)
+ )", []).expect("Initialize db failed");
+ temp_db
+ .execute(
+ "INSERT INTO userphrase_v1 (
+ time, user_freq, max_freq, orig_freq, length,
+ phone_0,phone_1,phone_2,phone_3,phone_4,phone_5,phone_6,phone_7,phone_8,phone_9,phone_10,phrase
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
+ params![186613,9318,9318,9318,2,10268,8708,0,0,0,0,0,0,0,0,0,"測試".to_string(),
+ 186613,318,9318,9318,2,10268,8708,0,0,0,0,0,0,0,0,0,"策士".to_string()],
+ )
+ .expect("Initialize db failed");
+ temp_db.close().expect("Unable to close database");
+
+ let dict = SqliteDictionary::open(&temp_path).expect("Unable to open database");
+ assert_eq!(
+ vec![
+ Phrase::new("策士", 9318).with_time(186613),
+ Phrase::new("測試", 9318).with_time(186613)
+ ],
+ dict.lookup_phrase(&[
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ])
+ .collect::<Vec<_>>()
+ );
+ }
+
+ #[test]
+ fn insert_and_update_user_freq() -> Result<(), Box<dyn Error>> {
+ let mut dict = SqliteDictionary::open_in_memory()?;
+ dict.update(
+ &[
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ],
+ ("測試", 9318).into(),
+ 9900,
+ 0,
+ )?;
+ assert_eq!(
+ vec![Phrase::new("測試", 9900).with_time(0)],
+ dict.lookup_phrase(&[
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ])
+ .collect::<Vec<_>>()
+ );
+ Ok(())
+ }
+
+ #[test]
+ fn update_user_freq() -> Result<(), Box<dyn Error>> {
+ let mut dict = SqliteDictionary::open_in_memory()?;
+ let syllables = [
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ];
+ dict.insert(&syllables, ("測試", 9318).into())?;
+ dict.update(&syllables, ("測試", 9318).into(), 9900, 0)?;
+ assert_eq!(
+ vec![Phrase::new("測試", 9900).with_time(0)],
+ dict.lookup_phrase(&[
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ])
+ .collect::<Vec<_>>()
+ );
+ Ok(())
+ }
+}
diff --git a/src/dictionary/
trie.rs b/src/dictionary/
trie.rs
new file mode 100644
index 0000000..023fe32
--- /dev/null
+++ b/src/dictionary/
trie.rs
@@ -0,0 +1,1224 @@
+use std::{
+ cmp::Ordering,
+ collections::VecDeque,
+ ffi::CString,
+ fmt::Debug,
+ fs::File,
+ io::{self, BufWriter, Read, Seek, Write},
+ path::Path,
+};
+
+use binary_layout::define_layout;
+use riff::{Chunk, ChunkContents, ChunkId, RIFF_ID};
+
+use crate::zhuyin::Syllable;
+
+use super::{
+ BuildDictionaryError, Dictionary, DictionaryBuilder, DictionaryInfo, DictionaryMut,
+ DuplicatePhraseError, Phrase, Phrases,
+};
+
+const CHEW: ChunkId = ChunkId { value: *b"CHEW" };
+const DICT: ChunkId = ChunkId { value: *b"DICT" };
+const DATA: ChunkId = ChunkId { value: *b"DATA" };
+const LIST: ChunkId = ChunkId { value: *b"LIST" };
+const INFO: ChunkId = ChunkId { value: *b"INFO" };
+const INAM: ChunkId = ChunkId { value: *b"INAM" };
+const ICOP: ChunkId = ChunkId { value: *b"ICOP" };
+const ILIC: ChunkId = ChunkId { value: *b"ILIC" };
+const IREV: ChunkId = ChunkId { value: *b"IREV" };
+const ISFT: ChunkId = ChunkId { value: *b"ISFT" };
+
+define_layout!(trie_node, LittleEndian, {
+ syllable: u16,
+ child_begin: u32,
+ child_end: u32,
+});
+
+define_layout!(trie_leaf, LittleEndian, {
+ zero: u16,
+ data_position: u32,
+ frequency: u32,
+});
+
+/// A read-only dictionary using a pre-built [Trie][] index that is both space
+/// efficient and fast to lookup.
+///
+/// `TrieDictionary`s are used as system dictionaries, or shared dictionaries.
+/// The dictionary file is defined using the platform independent [Resource
+/// Interchange File Format (RIFF)][RIFF], allowing them to be versioned and
+/// shared easily.
+///
+/// `TrieDictionary`s can be created from anything that implements the [`Read`]
+/// and [`Seek`] trait, as long as the underlying data conforms to the file
+/// format spec.
+///
+/// A new dictionary can be built using a [`TrieDictionaryBuilder`].
+///
+/// # Examples
+///
+/// We may want to read a dictionary from a [File][`std::fs::File`]:
+///
+/// ```
+/// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+/// use std::fs::File;
+///
+/// use chewing::{syl, zhuyin::{Bopomofo, Syllable}};
+/// # use chewing::dictionary::{DictionaryBuilder, TrieDictionaryBuilder};
+/// use chewing::dictionary::{Dictionary, TrieDictionary};
+/// # let mut tempfile = File::create("dict.dat")?;
+/// # let mut builder = TrieDictionaryBuilder::new();
+/// # builder.insert(&[
+/// # syl![Bopomofo::Z, Bopomofo::TONE4],
+/// # syl![Bopomofo::D, Bopomofo::I, Bopomofo::AN]
+/// # ], ("字典", 0).into());
+/// # builder.write(&mut tempfile)?;
+///
+/// let mut file = File::open("dict.dat")?;
+/// let dict = TrieDictionary::new(&mut file)?;
+///
+/// // Find the phrase ㄗˋㄉ一ㄢˇ (dictionary)
+/// let mut phrases = dict.lookup_phrase(&[
+/// syl![Bopomofo::Z, Bopomofo::TONE4],
+/// syl![Bopomofo::D, Bopomofo::I, Bopomofo::AN]
+/// ]);
+/// assert_eq!("字典", phrases.next().unwrap().as_str());
+/// # Ok(())
+/// # }
+/// ```
+///
+/// [Trie]:
https://en.m.wikipedia.org/wiki/Trie
+/// [RIFF]:
https://en.m.wikipedia.org/wiki/Resource_Interchange_File_Format
+#[derive(Debug)]
+pub struct TrieDictionary {
+ info: DictionaryInfo,
+ dict: Vec<u8>,
+ data: Vec<u8>,
+}
+
+impl TrieDictionary {
+ /// Creates a new `TrieDictionary` instance from a file.
+ ///
+ /// The data in the file must conform to the dictionary format spec. See
+ /// [`TrieDictionaryBuilder`] on how to build a dictionary.
+ ///
+ /// # Examples
+ ///
+ /// ```no_run
+ /// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+ /// use chewing::dictionary::TrieDictionary;
+ ///
+ /// let dict = TrieDictionary::open("dict.dat")?;
+ /// # Ok(())
+ /// # }
+ /// ```
+ pub fn open<P: AsRef<Path>>(path: P) -> io::Result<TrieDictionary> {
+ let mut file = File::open(path)?;
+ TrieDictionary::new(&mut file)
+ }
+ /// Creates a new `TrieDictionary` instance from a input stream.
+ ///
+ /// The underlying data of the input stream must conform to the dictionary
+ /// format spec. See [`TrieDictionaryBuilder`] on how to build a dictionary.
+ ///
+ /// # Examples
+ ///
+ /// ```no_run
+ /// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+ /// use std::fs::File;
+ ///
+ /// use chewing::dictionary::TrieDictionary;
+ ///
+ /// let mut file = File::open("dict.dat")?;
+ /// let dict = TrieDictionary::new(&mut file)?;
+ /// # Ok(())
+ /// # }
+ /// ```
+ pub fn new<T>(mut stream: T) -> io::Result<TrieDictionary>
+ where
+ T: Read + Seek,
+ {
+ let root = Chunk::read(&mut stream, 0)?;
+ if
root.id() != RIFF_ID {
+ return Err(io::Error::from(io::ErrorKind::InvalidData));
+ }
+ let file_type = root.read_type(&mut stream)?;
+ if file_type != CHEW {
+ return Err(io::Error::from(io::ErrorKind::InvalidData));
+ }
+ let mut dict_chunk = None;
+ let mut data_chunk = None;
+ let mut info_chunk = None;
+ for chunk in root.iter(&mut stream) {
+ match
chunk.id() {
+ LIST => info_chunk = Some(chunk),
+ DICT => dict_chunk = Some(chunk),
+ DATA => data_chunk = Some(chunk),
+ _ => (),
+ }
+ }
+ let mut info = DictionaryInfo::default();
+ if let Some(chunk) = info_chunk {
+ info = Self::read_dictionary_info(chunk, &mut stream)?;
+ }
+ let dict = dict_chunk
+ .ok_or_else(|| io::Error::new(io::ErrorKind::UnexpectedEof, "expecting DICT chunk"))?
+ .read_contents(&mut stream)?;
+ let data = data_chunk
+ .ok_or_else(|| io::Error::new(io::ErrorKind::UnexpectedEof, "expecting DATA chunk"))?
+ .read_contents(&mut stream)?;
+ Ok(TrieDictionary { info, dict, data })
+ }
+
+ fn read_dictionary_info<T>(list_chunk: Chunk, mut stream: T) -> io::Result<DictionaryInfo>
+ where
+ T: Read + Seek,
+ {
+ let mut info = DictionaryInfo::default();
+ let chunk_type = list_chunk.read_type(&mut stream)?;
+ if chunk_type != INFO {
+ return Ok(info);
+ }
+
+ let mut chunks = vec![];
+
+ for chunk in list_chunk.iter(&mut stream) {
+ match
chunk.id() {
+ INAM | ICOP | ILIC | IREV | ISFT => chunks.push((
chunk.id(), chunk)),
+ _ => (),
+ }
+ }
+
+ for (id, chunk) in chunks {
+ let content = match id {
+ INAM | ICOP | ILIC | IREV | ISFT => Some(
+ CString::new(chunk.read_contents(&mut stream)?)?
+ .into_string()
+ .map_err(|err| io::Error::new(io::ErrorKind::InvalidData, err))?,
+ ),
+ _ => None,
+ };
+ match id {
+ INAM =>
info.name = content,
+ ICOP => info.copyright = content,
+ ILIC => info.license = content,
+ IREV => info.version = content,
+ ISFT => info.software = content,
+ _ => (),
+ }
+ }
+
+ Ok(info)
+ }
+}
+
+fn trie_leaf_iter(dict: &TrieDictionary, begin: usize, end: usize) -> Phrases {
+ Box::new(
+ dict.dict[begin..end]
+ .chunks(trie_leaf::SIZE.unwrap())
+ .map(trie_leaf::View::new)
+ .filter(|view| view.zero().read() == 0)
+ .map(|leaf| {
+ let pos = leaf.data_position().read() as usize;
+ let len = dict.data[pos] as usize;
+ let start = pos + 1;
+ let end = start + len;
+ Phrase::new(
+ std::str::from_utf8(&dict.data[start..end]).expect("invalid data"),
+ leaf.frequency().read(),
+ )
+ }),
+ )
+}
+
+impl Dictionary for TrieDictionary {
+ fn lookup_phrase(&self, syllables: &[Syllable]) -> Phrases {
+ let chunk_size = trie_node::SIZE.unwrap();
+ let root = trie_node::View::new(self.dict.as_slice());
+ let mut node = root;
+ 'next: for syl in syllables {
+ debug_assert!(syl.to_u16() != 0);
+ let child_begin = node.child_begin().read() as usize * chunk_size;
+ let child_end = node.child_end().read() as usize * chunk_size;
+ for storage in self.dict[child_begin..child_end].chunks(chunk_size) {
+ let child = trie_node::View::new(storage);
+ if child.syllable().read() == syl.to_u16() {
+ node = child;
+ continue 'next;
+ }
+ }
+ return Box::new(std::iter::empty());
+ }
+ trie_leaf_iter(
+ self,
+ node.child_begin().read() as usize * chunk_size,
+ node.child_end().read() as usize * chunk_size,
+ )
+ }
+
+ fn entries(&self) -> super::DictEntries {
+ todo!();
+ }
+
+ fn about(&self) -> DictionaryInfo {
+ self.info.clone()
+ }
+
+ fn as_mut_dict(&mut self) -> Option<&mut dyn DictionaryMut> {
+ None
+ }
+}
+
+/// A builder to create a dictionary that can be loaded by the
+/// [`TrieDictionary`].
+///
+/// # Examples
+///
+/// We may want to create a dictionary [File][`std::fs::File`]:
+///
+/// ```
+/// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+/// use std::fs::File;
+///
+/// use chewing::{syl, zhuyin::Bopomofo};
+/// use chewing::dictionary::{DictionaryBuilder, TrieDictionaryBuilder};
+///
+/// let mut file = File::create("dict.dat")?;
+/// let mut builder = TrieDictionaryBuilder::new();
+/// builder.insert(&[
+/// syl![Bopomofo::Z, Bopomofo::TONE4],
+/// syl![Bopomofo::D, Bopomofo::I, Bopomofo::AN]
+/// ], ("字典", 0).into());
+/// builder.write(&mut file)?;
+/// # Ok(())
+/// # }
+/// ```
+///
+/// # RIFF File Format
+///
+/// The dictionary file is defined using the platform independent [Resource
+/// Interchange File Format (RIFF)][RIFF], allowing them to be versioned and
+/// shared easily. The text describing the RIFF format in this document is
+/// adopted from the [WebP Container Specification][WebP].
+///
+/// The basic element of a RIFF file is a chunk. It consists of:
+///
+/// ```text
+/// 0 1 2 3
+/// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Chunk FourCC |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Chunk Size |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Chunk Payload |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ```
+///
+/// - **Chunk FourCC: 32 bits**
+/// - ASCII four-character code used for chunk identification.
+/// - **Chunk Size: 32 bits (u32)**
+/// - The size of the chunk not including this field, the chunk identifier
+/// or padding.
+/// - **Chunk Payload: Chunk Size bytes**
+/// - The data payload. If Chunk Size is odd, a single padding byte -- that
+/// SHOULD be 0 -- is added.
+/// - **ChunkHeader('ABCD')**
+/// - This is used to describe the FourCC and Chunk Size header of
+/// individual chunks, where 'ABCD' is the FourCC for the chunk. This
+/// element's size is 8 bytes.
+///
+/// ## File Header
+///
+/// ```text
+/// 0 1 2 3
+/// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | 'R' | 'I' | 'F' | 'F' |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | File Size |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | 'C' | 'H' | 'E' | 'W' |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ```
+///
+/// - **'RIFF': 32 bits**
+/// - The ASCII characters 'R' 'I' 'F' 'F'.
+/// - **File Size: 32 bits (u32)**
+/// - The size of the file in bytes starting at offset 8. The maximum value
+/// of this field is 2^32 minus 10 bytes and thus the size of the whole
+/// file is at most 4GiB minus 2 bytes.
+/// - **'CHEW': 32 bits**
+/// - The ASCII characters 'C' 'H' 'E' 'W'.
+///
+/// A TrieDictionary file MUST begin with a RIFF header with the FourCC 'CHEW'.
+/// The file size in the header is the total size of the chunks that follow plus
+/// 4 bytes for the 'CHEW' FourCC. The file SHOULD NOT contain anything after
+/// it. As the size of any chunk is even, the size given by the RIFF header is
+/// also even. The contents of individual chunks will be described in the
+/// following sections.
+///
+/// ## File Layout
+///
+/// ```text
+/// 0 1 2 3
+/// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Dictionary file header (12 bytes) |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Info chunk |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Index chunk |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Phrases chunk |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ```
+///
+/// ### Info chunk:
+///
+/// ```text
+/// 0 1 2 3
+/// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | ChunkHeader('LIST') |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | 'I' | 'N' | 'F' | 'O' |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Sub chunk header |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Sub chunk payload |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | .... |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ```
+///
+/// The `LIST` chunk and the list type `INFO` is a standard RIFF chunk. The list
+/// contains information about the copyright, author, engineer of the file, and
+/// other similar text. Each sub-chunk's data is a null-terminated string.
+///
+/// Info data chunks recognized by this library:
+///
+/// - **INAM**: The name of the file
+/// - **ICOP**: Copyright information about the file
+/// - **ILIC**: License information about the file
+/// - **IREV**: The version of the file
+/// - **ISFT**: The name of the software package used to create the file
+///
+/// ### Index chunk:
+///
+/// ```text
+/// 0 1 2 3
+/// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | ChunkHeader('DICT') |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Reserved | Child Begin ...
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ... | Child End ...
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ... | SyllableU16 |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Child Begin |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Child End |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Zero | Data Position ...
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ... | Phrase Frequency ...
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ... | ...
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ```
+///
+/// The index chunk contains the trie node records serialized in BFS order. The
+/// first record is the root node, followed by the nodes in the first layer,
+/// followed by the nodes in the second layer, and so on.
+///
+/// Each node record has fixed size. There are two kinds of nodes.
+///
+/// Internal node:
+///
+/// ```text
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | SyllableU16 | Child Begin | Child End |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ```
+///
+/// - **SyllableU16: 16 bits (u16)**
+/// - The [`Syllable`] encoded as an u16 integer.
+/// - **Child Begin: 32 bits (u32)**
+/// - The record index of the first child node.
+/// - **Child End: 32 bits (u32)**
+/// - The record index of the end of the child nodes, exclusive.
+///
+/// Leaf node:
+///
+/// ```text
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Zero | Data Position | Frequency |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ```
+///
+/// - **Zero: 16 bits (u16)**
+/// - Must be all zeros, indicating a leaf node.
+/// - **Data Position: 32 bits (u32)**
+/// - The offset into the Phrases chunk for the phrase data.
+/// - **Frequency: 32 bits (u32)**
+/// - The frequency of the phrase.
+///
+/// ### Phrases chunk:
+///
+/// ```text
+/// 0 1 2 3
+/// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | ChunkHeader('DATA') |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Length | Phrase |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Length | ...
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// ```
+///
+/// The phrases chunk contains all the phrases strings. Each phrase is written
+/// as length prefixed strings.
+///
+/// - **Length: 8 bits (u8)**
+/// - Each phrase encoded in UTF-8 must not exceed 255 bytes long.
+/// - **Phrase: variable bits**
+/// - UTF-8 encoded string, not null-terminated.
+///
+/// [WebP]:
https://developers.google.com/speed/webp/docs/riff_container
+/// [Trie]:
https://en.m.wikipedia.org/wiki/Trie
+/// [RIFF]:
https://en.m.wikipedia.org/wiki/Resource_Interchange_File_Format
+pub struct TrieDictionaryBuilder {
+ // The builder uses an arena to allocate nodes and reference each node with
+ // node index.
+ arena: Vec<TrieBuilderNode>,
+ info: DictionaryInfo,
+}
+
+#[derive(Debug, PartialEq)]
+struct TrieBuilderNode {
+ id: usize,
+ syllable: Option<Syllable>,
+ children: Vec<usize>,
+ frequency: u32,
+ phrase: String,
+}
+
+/// A container for trie dictionary statistics.
+#[derive(Debug)]
+pub struct TrieDictionaryStatistics {
+ /// The number of nodes in the dictionary.
+ pub node_count: usize,
+ /// The number of internal nodes at the edge (phrases with same syllables).
+ pub internal_leaf_count: usize,
+ /// The number of leaf nodes (total number of phrases).
+ pub leaf_node_count: usize,
+ /// The max height (longest phrase) of the trie.
+ pub max_height: usize,
+ /// The average height (average phrase length) of the trie.
+ pub avg_height: usize,
+ /// The max branch count (shared prefix) including the root of the trie.
+ pub root_branch_count: usize,
+ /// The max branch count (shared prefix) excluding the root of the trie.
+ pub max_branch_count: usize,
+ /// The average branch count of the trie.
+ pub avg_branch_count: usize,
+}
+
+impl TrieDictionaryBuilder {
+ /// Creates a new `TrieDictionaryBuilder`.
+ ///
+ /// The builder is initialized with a empty root node. Use the [`insert`][Self::insert]
+ /// method to add more entries to the dictionary.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use chewing::dictionary::TrieDictionaryBuilder;
+ ///
+ /// let mut builder = TrieDictionaryBuilder::new();
+ /// ```
+ pub fn new() -> TrieDictionaryBuilder {
+ let root = TrieBuilderNode {
+ id: 0,
+ syllable: None,
+ children: vec![],
+ frequency: 0,
+ phrase: String::new(),
+ };
+ TrieDictionaryBuilder {
+ arena: vec![root],
+ info: Default::default(),
+ }
+ }
+
+ /// Allocates a new leaf node and returns the new node id.
+ fn alloc_leaf(&mut self, phrase: &str, frequency: u32) -> usize {
+ let next_id = self.arena.len();
+ let leaf = TrieBuilderNode {
+ id: next_id,
+ syllable: None,
+ children: vec![],
+ frequency,
+ phrase: phrase.to_owned(),
+ };
+ self.arena.push(leaf);
+ next_id
+ }
+
+ /// Allocates a new internal node and returns the new node id.
+ fn alloc_internal(&mut self, syl: Syllable) -> usize {
+ let next_id = self.arena.len();
+ let internal = TrieBuilderNode {
+ id: next_id,
+ syllable: Some(syl),
+ children: vec![],
+ frequency: 0,
+ phrase: String::new(),
+ };
+ self.arena.push(internal);
+ next_id
+ }
+
+ /// Iterates through the syllables and insert all missing internal nodes.
+ ///
+ /// Returns the id to the last internal node so we can add leaf nodes to it.
+ fn find_or_insert_internal(&mut self, syllables: &[Syllable]) -> usize {
+ let mut node_id = 0;
+ 'next: for &syl in syllables {
+ for &child_node_id in &self.arena[node_id].children {
+ if self.arena[child_node_id].syllable == Some(syl) {
+ node_id = child_node_id;
+ continue 'next;
+ }
+ }
+ // We didn't find the child node so insert a new one
+ let next_id = self.alloc_internal(syl);
+ self.arena[node_id].children.push(next_id);
+ node_id = next_id;
+ }
+ node_id
+ }
+
+ /// Writes the dictionary to an output stream and returns the number of
+ /// bytes written.
+ ///
+ /// This method creates the sub-chunks containing the index, phrases, and
+ /// metadata, then wraps them in a RIFF container.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+ /// use std::io::Cursor;
+ ///
+ /// use chewing::dictionary::TrieDictionaryBuilder;
+ ///
+ /// let mut writer = Cursor::new(vec![]);
+ /// let mut builder = TrieDictionaryBuilder::new();
+ ///
+ /// builder.write(&mut writer)?;
+ /// # Ok(())
+ /// # }
+ /// ```
+ pub fn write<T>(&self, mut writer: T) -> io::Result<u64>
+ where
+ T: Write + Seek,
+ {
+ const ROOT_ID: usize = 0;
+ let mut dict_buf = Vec::new();
+ let mut data_buf = Vec::new();
+ let mut queue = VecDeque::new();
+
+ // The root node's child index starts from 1 (0 is the root).
+ let mut child_begin = 1;
+
+ // Walk the tree in BFS order and write the nodes to the dict buffer.
+ queue.push_back(ROOT_ID);
+ while !queue.is_empty() {
+ // Insert nodes layer by layer.
+ let layer_nodes_count = queue.len();
+ for _ in 0..layer_nodes_count {
+ let id = queue.pop_front().unwrap();
+ let node = &self.arena[id];
+
+ // An internal node has an associated syllable. The root node is
+ // a special case with no syllable.
+ if node.syllable.is_some() || id == ROOT_ID {
+ debug_assert_eq!(Some(10), trie_node::SIZE);
+ let mut record = [0; 10];
+ let mut view = trie_node::View::new(&mut record);
+ let syllable_u16 = node.syllable.map_or(0, |v| v.to_u16());
+ let child_end = child_begin + node.children.len() as u32;
+ view.syllable_mut().write(syllable_u16);
+ view.child_begin_mut().write(child_begin);
+ view.child_end_mut().write(child_end);
+ dict_buf.write_all(view.into_storage())?;
+ } else {
+ debug_assert_eq!(Some(10), trie_leaf::SIZE);
+ let mut record = [0; 10];
+ let mut view = trie_leaf::View::new(&mut record);
+ view.zero_mut().write(0);
+ view.data_position_mut().write(data_buf.len() as u32);
+ view.frequency_mut().write(node.frequency);
+ dict_buf.write_all(view.into_storage())?;
+
+ let phrase = &node.phrase;
+ debug_assert!(phrase.len() <= u8::MAX as usize);
+ data_buf.write_all(&[phrase.len() as u8])?;
+ data_buf.write_all(phrase.as_bytes())?;
+ }
+
+ child_begin += node.children.len() as u32;
+
+ // Sort the children nodes by their syllables
+ //
+ // NB: this must use a stable sorting algorithm so that lookup
+ // results are stable according to the input file.
+ let mut children = node.children.clone();
+ children.sort_by(|&a, &b| {
+ let a = &self.arena[a];
+ let b = &self.arena[b];
+ let syllable_u16_a = a.syllable.map_or(0, |syl| syl.to_u16());
+ let syllable_u16_b = b.syllable.map_or(0, |syl| syl.to_u16());
+ match (syllable_u16_a, syllable_u16_b) {
+ // Don't sort single word leaves.
+ // But sort phrases first by the frequency, then by the UTF-8 order.
+ (0, 0) => match (a.phrase.chars().count(), b.phrase.chars().count()) {
+ (1, 1) => Ordering::Equal,
+ (1, _) | (_, 1) => a.phrase.len().cmp(&b.phrase.len()),
+ _ => {
+ if a.frequency == b.frequency {
+ b.phrase.cmp(&a.phrase)
+ } else {
+ b.frequency.cmp(&a.frequency)
+ }
+ }
+ },
+ _ => syllable_u16_b.cmp(&syllable_u16_a),
+ }
+ });
+ for child_id in children {
+ queue.push_back(child_id);
+ }
+ }
+ }
+
+ // Wrap the data in a RIFF container
+ let contents = ChunkContents::Children(
+ RIFF_ID.clone(),
+ CHEW,
+ vec![
+ ChunkContents::Children(LIST, INFO, self.info_chunks()?),
+ ChunkContents::Data(DICT, dict_buf),
+ ChunkContents::Data(DATA, data_buf),
+ ],
+ );
+
+ contents.write(&mut writer)
+ }
+
+ fn info_chunks(&self) -> Result<Vec<ChunkContents>, io::Error> {
+ let mut info_chunks = vec![];
+ if let Some(name) = &
self.info.name {
+ info_chunks.push(ChunkContents::Data(
+ INAM,
+ CString::new(name.as_bytes())?.into_bytes(),
+ ))
+ }
+ if let Some(copyright) = &self.info.copyright {
+ info_chunks.push(ChunkContents::Data(
+ ICOP,
+ CString::new(copyright.as_bytes())?.into_bytes(),
+ ))
+ }
+ if let Some(license) = &self.info.license {
+ info_chunks.push(ChunkContents::Data(
+ ILIC,
+ CString::new(license.as_bytes())?.into_bytes(),
+ ))
+ }
+ if let Some(version) = &self.info.version {
+ info_chunks.push(ChunkContents::Data(
+ IREV,
+ CString::new(version.as_bytes())?.into_bytes(),
+ ))
+ }
+ if let Some(software) = &self.info.software {
+ info_chunks.push(ChunkContents::Data(
+ ISFT,
+ CString::new(software.as_bytes())?.into_bytes(),
+ ))
+ }
+ Ok(info_chunks)
+ }
+
+ /// Calculates the statistics of the dictionary.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use chewing::{syl, zhuyin::Bopomofo};
+ /// use chewing::dictionary::{DictionaryBuilder, TrieDictionaryBuilder};
+ ///
+ /// let mut builder = TrieDictionaryBuilder::new();
+ /// builder.insert(&[
+ /// syl![Bopomofo::G, Bopomofo::U, Bopomofo::O, Bopomofo::TONE2],
+ /// ], ("國", 0).into());
+ /// builder.insert(&[
+ /// syl![Bopomofo::M, Bopomofo::I, Bopomofo::EN, Bopomofo::TONE2]
+ /// ], ("民", 0).into());
+ /// builder.insert(&[
+ /// syl![Bopomofo::D, Bopomofo::A, Bopomofo::TONE4],
+ /// ], ("大", 0).into());
+ /// builder.insert(&[
+ /// syl![Bopomofo::H, Bopomofo::U, Bopomofo::EI, Bopomofo::TONE4],
+ /// ], ("會", 0).into());
+ /// builder.insert(&[
+ /// syl![Bopomofo::G, Bopomofo::U, Bopomofo::O, Bopomofo::TONE2],
+ /// syl![Bopomofo::M, Bopomofo::I, Bopomofo::EN, Bopomofo::TONE2]
+ /// ], ("國民", 0).into());
+ /// builder.insert(&[
+ /// syl![Bopomofo::G, Bopomofo::U, Bopomofo::O, Bopomofo::TONE2],
+ /// syl![Bopomofo::M, Bopomofo::I, Bopomofo::EN, Bopomofo::TONE2],
+ /// syl![Bopomofo::D, Bopomofo::A, Bopomofo::TONE4],
+ /// syl![Bopomofo::H, Bopomofo::U, Bopomofo::EI, Bopomofo::TONE4],
+ /// ], ("國民大會", 0).into());
+ /// let stats = builder.statistics();
+ /// assert_eq!(14, stats.node_count);
+ /// assert_eq!(6, stats.internal_leaf_count);
+ /// assert_eq!(6, stats.leaf_node_count);
+ /// assert_eq!(6, stats.max_height);
+ /// assert_eq!(2, stats.avg_height);
+ /// assert_eq!(4, stats.root_branch_count);
+ /// assert_eq!(2, stats.max_branch_count);
+ /// assert_eq!(0, stats.avg_branch_count);
+ /// ```
+ pub fn statistics(&self) -> TrieDictionaryStatistics {
+ let mut node_count = 0;
+ let mut internal_leaf_count = 0;
+ let mut leaf_node_count = 0;
+ let mut max_height = 0;
+ let mut branch_heights = vec![];
+ let mut root_branch_count = 0;
+ let mut max_branch_count = 0;
+ let mut branch_counts = vec![];
+
+ const ROOT_ID: usize = 0;
+ let mut queue = VecDeque::new();
+ queue.push_back(ROOT_ID);
+
+ while !queue.is_empty() {
+ let layer_nodes_count = queue.len();
+
+ max_height += 1;
+ for _ in 0..layer_nodes_count {
+ let id = queue.pop_front().unwrap();
+ let node = &self.arena[id];
+
+ node_count += 1;
+
+ if node.syllable.is_some() || id == ROOT_ID {
+ if node
+ .children
+ .iter()
+ .any(|&child_id| self.arena[child_id].syllable.is_none())
+ {
+ internal_leaf_count += 1;
+ branch_heights.push(max_height);
+ }
+ let branch_count = node
+ .children
+ .iter()
+ .filter(|&&child_id| self.arena[child_id].syllable.is_some())
+ .count();
+ branch_counts.push(branch_count);
+ if branch_count > max_branch_count && id != ROOT_ID {
+ max_branch_count = node.children.len();
+ }
+ if branch_count > root_branch_count {
+ root_branch_count = node.children.len();
+ }
+ } else {
+ leaf_node_count += 1;
+ }
+ for &child_id in &node.children {
+ queue.push_back(child_id);
+ }
+ }
+ }
+
+ TrieDictionaryStatistics {
+ node_count,
+ internal_leaf_count,
+ leaf_node_count,
+ max_height,
+ avg_height: branch_heights.iter().sum::<usize>() / branch_counts.len(),
+ root_branch_count,
+ max_branch_count,
+ avg_branch_count: branch_counts.iter().sum::<usize>() / branch_counts.len(),
+ }
+ }
+}
+
+impl DictionaryBuilder for TrieDictionaryBuilder {
+ fn set_info(&mut self, info: DictionaryInfo) -> Result<(), BuildDictionaryError> {
+
self.info = info;
+ Ok(())
+ }
+
+ /// Inserts a new entry to the dictionary.
+ ///
+ /// A DuplicatePhraseError is returned if a phrase is already present with
+ /// the same syllables.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use chewing::{syl, zhuyin::Bopomofo};
+ /// use chewing::dictionary::{DictionaryBuilder, TrieDictionaryBuilder};
+ ///
+ /// let mut builder = TrieDictionaryBuilder::new();
+ ///
+ /// builder.insert(&[
+ /// syl![Bopomofo::Z, Bopomofo::TONE4],
+ /// syl![Bopomofo::D, Bopomofo::I, Bopomofo::AN]
+ /// ], ("字典", 0).into());
+ /// ```
+ fn insert(
+ &mut self,
+ syllables: &[Syllable],
+ phrase: Phrase,
+ ) -> Result<(), BuildDictionaryError> {
+ let leaf_id = self.alloc_leaf(phrase.as_str(), phrase.freq());
+ let parent_id = self.find_or_insert_internal(syllables);
+ if self.arena[parent_id]
+ .children
+ .iter()
+ .map(|&child_id| &self.arena[child_id])
+ .any(|child| child.phrase == phrase.as_str())
+ {
+ return Err(BuildDictionaryError {
+ source: Box::new(DuplicatePhraseError),
+ });
+ }
+ self.arena[parent_id].children.push(leaf_id);
+ Ok(())
+ }
+
+ fn build(&mut self, path: &Path) -> Result<(), BuildDictionaryError> {
+ let database = File::create(path)?;
+ let mut writer = BufWriter::new(database);
+ self.write(&mut writer)?;
+ Ok(())
+ }
+}
+
+impl Default for TrieDictionaryBuilder {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use std::io::Cursor;
+
+ use crate::{
+ dictionary::{
+ trie::TrieBuilderNode, Dictionary, DictionaryBuilder, DictionaryInfo, Phrase,
+ },
+ syl,
+ zhuyin::Bopomofo,
+ };
+
+ use super::{TrieDictionary, TrieDictionaryBuilder};
+
+ #[test]
+ fn test_tree_construction() -> Result<(), Box<dyn std::error::Error>> {
+ let mut builder = TrieDictionaryBuilder::new();
+ builder.insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ],
+ ("測試", 100).into(),
+ )?;
+ builder.insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::S, Bopomofo::U, Bopomofo::O, Bopomofo::TONE3],
+ ],
+ ("廁所", 100).into(),
+ )?;
+ assert_eq!(
+ vec![
+ TrieBuilderNode {
+ id: 0,
+ syllable: None,
+ children: vec![2],
+ frequency: 0,
+ phrase: String::new(),
+ },
+ TrieBuilderNode {
+ id: 1,
+ syllable: None,
+ children: vec![],
+ frequency: 100,
+ phrase: String::from("測試"),
+ },
+ TrieBuilderNode {
+ id: 2,
+ syllable: Some(syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]),
+ children: vec![3, 5],
+ frequency: 0,
+ phrase: String::new(),
+ },
+ TrieBuilderNode {
+ id: 3,
+ syllable: Some(syl![Bopomofo::SH, Bopomofo::TONE4]),
+ children: vec![1],
+ frequency: 0,
+ phrase: String::new(),
+ },
+ TrieBuilderNode {
+ id: 4,
+ syllable: None,
+ children: vec![],
+ frequency: 100,
+ phrase: String::from("廁所"),
+ },
+ TrieBuilderNode {
+ id: 5,
+ syllable: Some(syl![Bopomofo::S, Bopomofo::U, Bopomofo::O, Bopomofo::TONE3]),
+ children: vec![4],
+ frequency: 0,
+ phrase: String::new(),
+ },
+ ],
+ builder.arena
+ );
+ Ok(())
+ }
+
+ #[test]
+ fn tree_lookup_word() -> Result<(), Box<dyn std::error::Error>> {
+ let mut builder = TrieDictionaryBuilder::new();
+ builder.insert(
+ &vec![syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]],
+ ("測", 1).into(),
+ )?;
+ builder.insert(
+ &vec![syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]],
+ ("冊", 1).into(),
+ )?;
+ let mut cursor = Cursor::new(vec![]);
+ builder.write(&mut cursor)?;
+
+ let dict = TrieDictionary::new(&mut cursor)?;
+ assert_eq!(
+ vec![Phrase::new("測", 1), Phrase::new("冊", 1)],
+ dict.lookup_word(syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4])
+ .collect::<Vec<_>>()
+ );
+
+ Ok(())
+ }
+
+ #[test]
+ fn tree_lookup_phrase() -> Result<(), Box<dyn std::error::Error>> {
+ let mut builder = TrieDictionaryBuilder::new();
+ builder.insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ],
+ ("測試", 1).into(),
+ )?;
+ builder.insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ],
+ ("策試", 2).into(),
+ )?;
+ builder.insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ syl![Bopomofo::CH, Bopomofo::ENG, Bopomofo::TONE2],
+ syl![Bopomofo::G, Bopomofo::U, Bopomofo::ENG],
+ ],
+ ("測試成功", 3).into(),
+ )?;
+ let mut cursor = Cursor::new(vec![]);
+ builder.write(&mut cursor)?;
+
+ let dict = TrieDictionary::new(&mut cursor)?;
+ assert_eq!(
+ vec![Phrase::new("策試", 2), Phrase::new("測試", 1)],
+ dict.lookup_phrase(&[
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4]
+ ])
+ .collect::<Vec<_>>()
+ );
+ assert_eq!(
+ vec![Phrase::new("測試成功", 3)],
+ dict.lookup_phrase(&[
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ syl![Bopomofo::CH, Bopomofo::ENG, Bopomofo::TONE2],
+ syl![Bopomofo::G, Bopomofo::U, Bopomofo::ENG],
+ ])
+ .collect::<Vec<_>>()
+ );
+ assert_eq!(
+ Vec::<Phrase>::new(),
+ dict.lookup_phrase(&[
+ syl![Bopomofo::C, Bopomofo::U, Bopomofo::O, Bopomofo::TONE4],
+ syl![Bopomofo::U, Bopomofo::TONE4]
+ ])
+ .collect::<Vec<_>>()
+ );
+
+ Ok(())
+ }
+
+ #[test]
+ #[should_panic]
+ fn tree_builder_duplicate_phrase_error() {
+ let mut builder = TrieDictionaryBuilder::new();
+ builder
+ .insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ],
+ ("測試", 1).into(),
+ )
+ .expect("Duplicate phrase error");
+ builder
+ .insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ],
+ ("測試", 2).into(),
+ )
+ .expect("Duplicate phrase error");
+ }
+
+ #[test]
+ fn stable_word_sort_order() -> Result<(), Box<dyn std::error::Error>> {
+ let mut builder = TrieDictionaryBuilder::new();
+ for word in ["冊", "策", "測", "側"] {
+ builder.insert(
+ &vec![syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4]],
+ (word, 0).into(),
+ )?;
+ }
+ let mut cursor = Cursor::new(vec![]);
+ builder.write(&mut cursor)?;
+
+ let dict = TrieDictionary::new(&mut cursor)?;
+ assert_eq!(
+ vec![
+ Phrase::new("冊", 0),
+ Phrase::new("策", 0),
+ Phrase::new("測", 0),
+ Phrase::new("側", 0),
+ ],
+ dict.lookup_phrase(&vec![syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],])
+ .collect::<Vec<Phrase>>()
+ );
+ Ok(())
+ }
+
+ #[test]
+ fn stable_phrase_sort_order() -> Result<(), Box<dyn std::error::Error>> {
+ let mut builder = TrieDictionaryBuilder::new();
+ builder.insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ],
+ ("側室", 318).into(),
+ )?;
+ builder.insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ],
+ ("側視", 318).into(),
+ )?;
+ builder.insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ],
+ ("策士", 318).into(),
+ )?;
+ builder.insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ],
+ ("策試", 318).into(),
+ )?;
+ builder.insert(
+ &vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ],
+ ("測試", 9318).into(),
+ )?;
+ let mut cursor = Cursor::new(vec![]);
+ builder.write(&mut cursor)?;
+
+ let dict = TrieDictionary::new(&mut cursor)?;
+ assert_eq!(
+ vec![
+ Phrase::new("測試", 9318),
+ Phrase::new("策試", 318),
+ Phrase::new("策士", 318),
+ Phrase::new("側視", 318),
+ Phrase::new("側室", 318),
+ ],
+ dict.lookup_phrase(&vec![
+ syl![Bopomofo::C, Bopomofo::E, Bopomofo::TONE4],
+ syl![Bopomofo::SH, Bopomofo::TONE4],
+ ])
+ .collect::<Vec<Phrase>>()
+ );
+ Ok(())
+ }
+
+ #[test]
+ fn tree_builder_write_read_metadata() {
+ let mut builder = TrieDictionaryBuilder::new();
+ let info = DictionaryInfo {
+ name: Some("name".into()),
+ copyright: Some("copyright".into()),
+ license: Some("license".into()),
+ version: Some("version".into()),
+ software: Some("software".into()),
+ };
+ builder.set_info(info).unwrap();
+
+ let mut cursor = Cursor::new(vec![]);
+ builder.write(&mut cursor).unwrap();
+
+ let dict = TrieDictionary::new(&mut cursor).unwrap();
+ let info = dict.about();
+
+ assert_eq!("name", info.name.unwrap());
+ assert_eq!("copyright", info.copyright.unwrap());
+ assert_eq!("license", info.license.unwrap());
+ assert_eq!("version", info.version.unwrap());
+ assert_eq!("software", info.software.unwrap());
+ }
+}
diff --git a/src/
editor.rs b/src/
editor.rs
new file mode 100644
index 0000000..d3aa66a
--- /dev/null
+++ b/src/
editor.rs
@@ -0,0 +1,6 @@
+mod estimate;
+pub mod keymap;
+pub mod layout;
+
+pub use estimate::{EstimateError, SqliteUserFreqEstimate, UserFreqEstimate};
+pub use layout::SyllableEditor;
diff --git a/src/editor/
estimate.rs b/src/editor/
estimate.rs
new file mode 100644
index 0000000..c138939
--- /dev/null
+++ b/src/editor/
estimate.rs
@@ -0,0 +1,112 @@
+use std::path::Path;
+
+use rusqlite::Connection;
+use thiserror::Error;
+
+use crate::dictionary::Phrase;
+
+#[derive(Error, Debug)]
+#[error("update estimate error")]
+pub struct EstimateError {
+ source: Box<dyn std::error::Error>,
+}
+
+pub trait UserFreqEstimate {
+ fn tick(&mut self) -> Result<(), EstimateError>;
+ fn now(&self) -> Result<u64, EstimateError>;
+ fn estimate(&self, phrase: &Phrase, orig_freq: u32, max_freq: u32) -> u32;
+}
+
+pub struct SqliteUserFreqEstimate {
+ conn: Connection,
+ lifetime: u64,
+}
+
+impl From<rusqlite::Error> for EstimateError {
+ fn from(source: rusqlite::Error) -> Self {
+ EstimateError {
+ source: source.into(),
+ }
+ }
+}
+
+impl SqliteUserFreqEstimate {
+ pub fn open<P: AsRef<Path>>(path: P) -> Result<SqliteUserFreqEstimate, EstimateError> {
+ let conn = Connection::open(path)?;
+ Self::initialize_tables(&conn)?;
+ let lifetime = conn.query_row("SELECT value FROM config_v1 WHERE id = 0", [], |row| {
+ row.get(0)
+ })?;
+ Ok(SqliteUserFreqEstimate { conn, lifetime })
+ }
+
+ pub fn open_in_memory() -> Result<SqliteUserFreqEstimate, EstimateError> {
+ let conn = Connection::open_in_memory()?;
+ Self::initialize_tables(&conn)?;
+ let lifetime = conn.query_row("SELECT value FROM config_v1 WHERE id = 0", [], |row| {
+ row.get(0)
+ })?;
+ Ok(SqliteUserFreqEstimate { conn, lifetime })
+ }
+
+ fn initialize_tables(conn: &Connection) -> Result<(), EstimateError> {
+ conn.execute(
+ "CREATE TABLE IF NOT EXISTS config_v1 (
+ id INTEGER PRIMARY KEY,
+ value INTEGER
+ ) WITHOUT ROWID",
+ [],
+ )?;
+ conn.execute(
+ "INSERT OR IGNORE INTO config_v1 (id, value) VALUES (0, 0)",
+ [],
+ )?;
+ Ok(())
+ }
+}
+
+const SHORT_INCREASE_FREQ: u32 = 10;
+const MEDIUM_INCREASE_FREQ: u32 = 5;
+const LONG_DECREASE_FREQ: u32 = 10;
+const MAX_USER_FREQ: u32 = 99999999;
+
+impl UserFreqEstimate for SqliteUserFreqEstimate {
+ fn tick(&mut self) -> Result<(), EstimateError> {
+ // TODO debounce write
+ self.conn
+ .execute("UPDATE config_v1 SET value = value + 1 WHERE id = 0", [])?;
+ self.lifetime =
+ self.conn
+ .query_row("SELECT value FROM config_v1 WHERE id = 0", [], |row| {
+ row.get(0)
+ })?;
+ Ok(())
+ }
+
+ fn now(&self) -> Result<u64, EstimateError> {
+ Ok(self.lifetime)
+ }
+
+ fn estimate(&self, phrase: &Phrase, orig_freq: u32, max_freq: u32) -> u32 {
+ let delta_time = self.lifetime - phrase.last_used().unwrap_or(self.lifetime);
+
+ if delta_time < 4000 {
+ let delta = if phrase.freq() >= max_freq {
+ ((max_freq - orig_freq) / 5 + 1).min(SHORT_INCREASE_FREQ)
+ } else {
+ ((max_freq - orig_freq) / 5 + 1).max(SHORT_INCREASE_FREQ)
+ };
+ (phrase.freq() + delta).min(MAX_USER_FREQ)
+ } else if delta_time < 50000 {
+ let delta = if phrase.freq() >= max_freq {
+ ((max_freq - orig_freq) / 10 + 1).min(MEDIUM_INCREASE_FREQ)
+ } else {
+ ((max_freq - orig_freq) / 10 + 1).max(MEDIUM_INCREASE_FREQ)
+ };
+ (phrase.freq() + delta).min(MAX_USER_FREQ)
+ } else {
+ let delta = ((phrase.freq() - orig_freq) / 5).max(LONG_DECREASE_FREQ);
+ (phrase.freq() - delta).max(orig_freq)
+ }
+ }
+}
diff --git a/src/editor/
keymap.rs b/src/editor/
keymap.rs
new file mode 100644
index 0000000..f956310
--- /dev/null
+++ b/src/editor/
keymap.rs
@@ -0,0 +1,159 @@
+//! Keyboard layout conversion
+//!
+//! People usually practice Zhuyin input method independently from practicing
+//! English typing, they acquire different muscle memory. This module provides APIs
+//! to map different English layouts to layout independent key indexes that can be
+//! used to drive the phonetic conversion engines.
+
+/// Layout independent key index
+#[derive(Debug, Clone, Copy, PartialEq)]
+#[rustfmt::skip]
+pub enum KeyIndex {
+ K0 = 0,
+// 1 2 3 4 5 6 7 8 9 0 - = \ `
+ K1, K2, K3, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14,
+// Q W E R T Y U I O P [ ]
+ K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26,
+// A S D F G H J K L ; '
+ K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37,
+// Z X C V B N M , . / SPC
+ K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, K48
+}
+
+/// USB HID KeyCodes
+#[derive(Debug, Clone, Copy, PartialEq)]
+#[rustfmt::skip]
+pub enum KeyCode {
+ Unknown = 0,
+ N1, N2, N3, N4, N5, N6, N7, N8, N9, N0, Minus, Equal, BSlash, Grave,
+ Q, W, E, R, T, Y, U, I, O, P, LBracket, RBracket,
+ A, S, D, F, G, H, J, K, L, SColon, Quote,
+ Z, X, C, V, B, N, M, Comma, Dot, Slash, Space
+}
+
+/// Key processed by a keymap
+#[derive(Debug, Clone, Copy, PartialEq)]
+pub struct KeyEvent {
+ pub index: KeyIndex,
+ pub code: KeyCode,
+}
+
+#[derive(Debug, Clone, Copy, PartialEq)]
+pub struct Layout {
+ name: &'static str,
+ map: [KeyCode; 48],
+}
+
+pub trait Keymap {
+ fn map_key(&self, input: KeyCode) -> KeyEvent;
+}
+
+#[derive(Debug)]
+pub struct IdentityKeymap {
+ inner: RemappingKeymap,
+}
+
+impl IdentityKeymap {
+ pub fn new(source: Layout) -> IdentityKeymap {
+ IdentityKeymap {
+ inner: RemappingKeymap::new(source, source),
+ }
+ }
+}
+
+impl Keymap for IdentityKeymap {
+ fn map_key(&self, input: KeyCode) -> KeyEvent {
+ self.inner.map_key(input)
+ }
+}
+
+#[derive(Debug)]
+pub struct RemappingKeymap {
+ source: Layout,
+ target: Layout,
+}
+
+impl RemappingKeymap {
+ pub fn new(source: Layout, target: Layout) -> RemappingKeymap {
+ RemappingKeymap { source, target }
+ }
+}
+
+impl Keymap for RemappingKeymap {
+ fn map_key(&self, input: KeyCode) -> KeyEvent {
+ let position = self
+ .source
+ .map
+ .iter()
+ .position(|&key| input == key)
+ .expect("invalid keycode");
+ let index = BLANK[position];
+ let code = self.target.map[position];
+ KeyEvent { index, code }
+ }
+}
+
+#[rustfmt::skip]
+const QWERTY_INDEX: [u8; 48] = [
+ b'1', b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9', b'0', b'-', b'=', b'\\', b'`',
+ b'q', b'w', b'e', b'r', b't', b'y', b'u', b'i', b'o', b'p', b'[', b']',
+ b'a', b's', b'd', b'f', b'g', b'h', b'j', b'k', b'l', b';', b'\'',
+ b'z', b'x', b'c', b'v', b'b', b'n', b'm', b',', b'.', b'/', b' '
+];
+
+pub trait KeyCodeFromQwerty {
+ fn as_key_code(&self) -> Option<KeyCode>;
+}
+
+impl KeyCodeFromQwerty for u8 {
+ fn as_key_code(&self) -> Option<KeyCode> {
+ let position = QWERTY_INDEX.iter().position(|key| key == self);
+ position.map(|pos| QWERTY.map[pos])
+ }
+}
+
+use std::fmt::Debug;
+
+use KeyCode::*;
+use KeyIndex::*;
+
+#[rustfmt::skip]
+const BLANK: [KeyIndex; 48] = [
+ K1, K2, K3, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14,
+ K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26,
+ K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37,
+ K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, K48
+];
+
+#[rustfmt::skip]
+pub const QWERTY: Layout = Layout {
+ name: "QWERTY",
+ map: [
+ N1, N2, N3, N4, N5, N6, N7, N8, N9, N0, Minus, Equal, BSlash, Grave,
+ Q, W, E, R, T, Y, U, I, O, P, LBracket, RBracket,
+ A, S, D, F, G, H, J, K, L, SColon, Quote,
+ Z, X, C, V, B, N, M, Comma, Dot, Slash, Space
+ ],
+};
+
+#[rustfmt::skip]
+pub const DVORAK: Layout = Layout {
+ name: "DVORAK",
+ map: [
+ N1, N2, N3, N4, N5, N6, N7, N8, N9, N0, LBracket, RBracket, BSlash, Grave,
+ Quote, Comma, Dot, P, Y, F, G, C, R, L, Slash, Equal,
+ A, O, E, U, I, D, H, T, N, S, Minus,
+ SColon, Q, J, K, X, B, M, W, V, Z, Space
+ ],
+};
+
+#[rustfmt::skip]
+pub const CARPALX: Layout = Layout {
+ name: "CARPALX (QGMLWY)",
+ map: [
+ N1, N2, N3, N4, N5, N6, N7, N8, N9, N0, Minus, Equal, BSlash, Grave,
+ Q, G, M, L, W, Y, F, U, B, SColon, LBracket, RBracket,
+ D, S, T, N, R, I, A, E, O, H, Quote,
+ Z, X, C, V, J, K, P, Comma, Dot, Slash, Space
+ ],
+};
diff --git a/src/editor/
layout.rs b/src/editor/
layout.rs
new file mode 100644
index 0000000..7b9f541
--- /dev/null
+++ b/src/editor/
layout.rs
@@ -0,0 +1,87 @@
+//! Conversion from key events to phonetic keys
+//!
+//! This module contains engines for phonetic key conversions.
+//!
+//! Traditionally the keyboards sold in Chinese speaking region have
+//! both the English alphabets and Zhuyin symbols printed on the keys.
+//! Like English keyboards can have different layouts (QWERTY, Dvorak, etc.),
+//! Zhuyin keyboards also have different layouts.
+//!
+//! The most widely used Zhuyin layout is the one directly printed on the keyboards.
+//! It is a one to one mapping from keys to Zhuyin symbols. However, some layouts
+//! have smarter mapping from keys to Zhuyin symbols, taking advantage of impossible
+//! combinations, to reduce the total keys required.
+//!
+//! Chewing currently supports the default layout, Hsu's layout, ET26 layout,
+//! DaChen CP26 layout, and the Pinyin layout.
+
+use std::fmt::Debug;
+
+use crate::zhuyin::Syllable;
+
+pub use self::{
+ dc26::DaiChien26,
+ et::Et,
+ et26::Et26,
+ ginyieh::GinYieh,
+ hsu::Hsu,
+ ibm::Ibm,
+ pinyin::{Pinyin, PinyinVariant},
+ standard::Standard,
+};
+
+use super::keymap::KeyEvent;
+
+mod dc26;
+mod et;
+mod et26;
+mod ginyieh;
+mod hsu;
+mod ibm;
+mod pinyin;
+mod standard;
+
+#[derive(Clone, Copy, Debug, PartialEq)]
+#[repr(C)]
+pub enum KeyboardLayoutCompat {
+ Default = 0,
+ Hsu,
+ Ibm,
+ GinYieh,
+ Et,
+ Et26,
+ Dvorak,
+ DvorakHsu,
+ DachenCp26,
+ HanyuPinyin,
+ ThlPinyin,
+ Mps2Pinyin,
+ Carpalx,
+}
+
+#[derive(Debug, PartialEq)]
+#[repr(C)]
+pub enum KeyBehavior {
+ Ignore = 0,
+ Absorb,
+ Commit,
+ KeyError,
+ Error,
+ NoWord,
+ OpenSymbolTable,
+}
+
+pub trait SyllableEditor {
+ /// Handles a key press event and returns the behavior of the layout.
+ fn key_press(&mut self, key: KeyEvent) -> KeyBehavior;
+ /// Removes the last input from the buffer.
+ fn remove_last(&mut self);
+ /// Clears the phonetic key buffer, removing all values.
+ fn clear(&mut self);
+ /// Returns true if the editor buffer is empty.
+ fn is_empty(&self) -> bool;
+ /// Returns the current syllable without changing the editor buffer.
+ fn read(&self) -> Syllable;
+ /// Returns the current key seq buffer as printable string, if supported by the layout.
+ fn key_seq(&self) -> Option<String>;
+}
diff --git a/src/editor/layout/
dc26.rs b/src/editor/layout/
dc26.rs
new file mode 100644
index 0000000..83c6fac
--- /dev/null
+++ b/src/editor/layout/
dc26.rs
@@ -0,0 +1,185 @@
+//! Dai Chien CP26
+
+use crate::{
+ editor::keymap::{KeyEvent, KeyIndex},
+ zhuyin::{Bopomofo, Syllable},
+};
+
+use super::{KeyBehavior, SyllableEditor};
+
+#[derive(Debug)]
+pub struct DaiChien26 {
+ syllable: Syllable,
+}
+
+impl DaiChien26 {
+ pub fn new() -> DaiChien26 {
+ DaiChien26 {
+ syllable: Default::default(),
+ }
+ }
+ fn is_end_key(&self, key: KeyIndex) -> bool {
+ match key {
+ KeyIndex::K17 | KeyIndex::K18 | KeyIndex::K29 | KeyIndex::K20 | KeyIndex::K48 => {
+ !self.syllable.is_empty()
+ }
+ _ => false,
+ }
+ }
+ fn has_initial_or_medial(&self) -> bool {
+ self.syllable.has_initial() || self.syllable.has_medial()
+ }
+}
+
+impl Default for DaiChien26 {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+fn default_or_alt(source: Option<Bopomofo>, default: Bopomofo, alt: Bopomofo) -> Bopomofo {
+ match source {
+ None => default,
+ Some(src) => {
+ if src == default {
+ alt
+ } else {
+ default
+ }
+ }
+ }
+}
+
+impl SyllableEditor for DaiChien26 {
+ fn key_press(&mut self, key: KeyEvent) -> KeyBehavior {
+ if self.is_end_key(key.index) {
+ match key.index {
+ // KeyIndex::K48 => Some(Bopomofo::TONE1),
+ KeyIndex::K17 => self.syllable.update(Bopomofo::TONE2),
+ KeyIndex::K18 => self.syllable.update(Bopomofo::TONE3),
+ KeyIndex::K29 => self.syllable.update(Bopomofo::TONE4),
+ KeyIndex::K20 => self.syllable.update(Bopomofo::TONE5),
+ _ => {
+ self.syllable.remove_tone();
+ }
+ };
+ return KeyBehavior::Commit;
+ }
+ let bopomofo = match key.index {
+ KeyIndex::K15 => default_or_alt(self.syllable.initial(), Bopomofo::B, Bopomofo::P),
+ KeyIndex::K27 => Bopomofo::M,
+ KeyIndex::K38 => Bopomofo::F,
+ KeyIndex::K16 => default_or_alt(self.syllable.initial(), Bopomofo::D, Bopomofo::T),
+ KeyIndex::K28 => Bopomofo::N,
+ KeyIndex::K39 => Bopomofo::L,
+ KeyIndex::K17 => Bopomofo::G,
+ KeyIndex::K29 => Bopomofo::K,
+ KeyIndex::K40 => Bopomofo::H,
+ KeyIndex::K18 => Bopomofo::J,
+ KeyIndex::K30 => Bopomofo::Q,
+ KeyIndex::K41 => Bopomofo::X,
+ KeyIndex::K19 => default_or_alt(self.syllable.initial(), Bopomofo::ZH, Bopomofo::CH),
+ KeyIndex::K31 => Bopomofo::SH,
+ KeyIndex::K42 => {
+ if self.has_initial_or_medial() {
+ Bopomofo::EH
+ } else {
+ Bopomofo::R
+ }
+ }
+ KeyIndex::K20 => Bopomofo::Z,
+ KeyIndex::K32 => Bopomofo::C,
+ KeyIndex::K43 => {
+ if self.has_initial_or_medial() {
+ Bopomofo::ENG
+ } else {
+ Bopomofo::S
+ }
+ }
+ KeyIndex::K21 => {
+ match (self.syllable.medial(), self.syllable.rime()) {
+ (Some(Bopomofo::I), Some(Bopomofo::A)) => {
+ self.syllable.remove_medial();
+ self.syllable.remove_rime();
+ return KeyBehavior::Absorb;
+ }
+ (_, Some(Bopomofo::A)) => {
+ self.syllable.update(Bopomofo::I);
+ return KeyBehavior::Absorb;
+ }
+ (Some(Bopomofo::I), _) => {
+ self.syllable.remove_medial();
+ self.syllable.update(Bopomofo::A);
+ return KeyBehavior::Absorb;
+ }
+ (Some(_), _) => {
+ self.syllable.update(Bopomofo::A);
+ return KeyBehavior::Absorb;
+ }
+ _ => (),
+ }
+ Bopomofo::I
+ }
+ KeyIndex::K33 => Bopomofo::U,
+ KeyIndex::K44 => {
+ match (self.syllable.medial(), self.syllable.rime()) {
+ (Some(Bopomofo::IU), None) => {
+ self.syllable.remove_medial();
+ self.syllable.update(Bopomofo::OU);
+ return KeyBehavior::Absorb;
+ }
+ (Some(Bopomofo::IU), Some(f)) if f != Bopomofo::OU => {
+ self.syllable.remove_medial();
+ self.syllable.update(Bopomofo::OU);
+ return KeyBehavior::Absorb;
+ }
+ (None, Some(Bopomofo::OU)) => {
+ self.syllable.update(Bopomofo::IU);
+ self.syllable.remove_rime();
+ return KeyBehavior::Absorb;
+ }
+ (Some(f), Some(Bopomofo::OU)) if f != Bopomofo::IU => {
+ self.syllable.update(Bopomofo::IU);
+ self.syllable.remove_rime();
+ return KeyBehavior::Absorb;
+ }
+ (Some(_), _) => {
+ self.syllable.update(Bopomofo::OU);
+ return KeyBehavior::Absorb;
+ }
+ _ => (),
+ }
+ Bopomofo::IU
+ }
+ KeyIndex::K22 => default_or_alt(self.syllable.rime(), Bopomofo::O, Bopomofo::AI),
+ KeyIndex::K34 => Bopomofo::E,
+ KeyIndex::K23 => default_or_alt(self.syllable.rime(), Bopomofo::EI, Bopomofo::AN),
+ KeyIndex::K35 => default_or_alt(self.syllable.rime(), Bopomofo::AU, Bopomofo::ANG),
+ KeyIndex::K24 => default_or_alt(self.syllable.rime(), Bopomofo::EN, Bopomofo::ER),
+ _ => return KeyBehavior::KeyError,
+ };
+
+ self.syllable.update(bopomofo);
+ KeyBehavior::Absorb
+ }
+
+ fn is_empty(&self) -> bool {
+ self.syllable.is_empty()
+ }
+
+ fn remove_last(&mut self) {
+ self.syllable.pop();
+ }
+
+ fn clear(&mut self) {
+ self.syllable.clear();
+ }
+
+ fn read(&self) -> Syllable {
+ self.syllable
+ }
+
+ fn key_seq(&self) -> Option<String> {
+ None
+ }
+}
diff --git a/src/editor/layout/
et.rs b/src/editor/layout/
et.rs
new file mode 100644
index 0000000..29dbb67
--- /dev/null
+++ b/src/editor/layout/
et.rs
@@ -0,0 +1,135 @@
+//! ET41 keyboard layout
+//!
+//! Another commonly used keyboard layout on older IBM PC.
+
+use crate::{
+ editor::keymap::{KeyEvent, KeyIndex},
+ zhuyin::{Bopomofo, BopomofoKind, Syllable},
+};
+
+use super::{KeyBehavior, SyllableEditor};
+
+#[derive(Debug)]
+pub struct Et {
+ syllable: Syllable,
+}
+
+impl Et {
+ pub fn new() -> Et {
+ Et {
+ syllable: Syllable::new(),
+ }
+ }
+}
+
+impl Default for Et {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl SyllableEditor for Et {
+ fn key_press(&mut self, key: KeyEvent) -> KeyBehavior {
+ let bopomofo = match key.index {
+ KeyIndex::K1 => Bopomofo::TONE5,
+ KeyIndex::K2 => Bopomofo::TONE2,
+ KeyIndex::K3 => Bopomofo::TONE3,
+ KeyIndex::K4 => Bopomofo::TONE4,
+ KeyIndex::K7 => Bopomofo::Q,
+ KeyIndex::K8 => Bopomofo::AN,
+ KeyIndex::K9 => Bopomofo::EN,
+ KeyIndex::K10 => Bopomofo::ANG,
+ KeyIndex::K11 => Bopomofo::ENG,
+ KeyIndex::K12 => Bopomofo::ER,
+ KeyIndex::K15 => Bopomofo::EI,
+ KeyIndex::K16 => Bopomofo::EH,
+ KeyIndex::K17 => Bopomofo::I,
+ KeyIndex::K18 => Bopomofo::E,
+ KeyIndex::K19 => Bopomofo::T,
+ KeyIndex::K20 => Bopomofo::OU,
+ KeyIndex::K21 => Bopomofo::IU,
+ KeyIndex::K22 => Bopomofo::AI,
+ KeyIndex::K23 => Bopomofo::O,
+ KeyIndex::K24 => Bopomofo::P,
+ KeyIndex::K27 => Bopomofo::A,
+ KeyIndex::K28 => Bopomofo::S,
+ KeyIndex::K29 => Bopomofo::D,
+ KeyIndex::K30 => Bopomofo::F,
+ KeyIndex::K31 => Bopomofo::J,
+ KeyIndex::K32 => Bopomofo::H,
+ KeyIndex::K33 => Bopomofo::R,
+ KeyIndex::K34 => Bopomofo::K,
+ KeyIndex::K35 => Bopomofo::L,
+ KeyIndex::K36 => Bopomofo::Z,
+ KeyIndex::K37 => Bopomofo::C,
+ KeyIndex::K38 => Bopomofo::AU,
+ KeyIndex::K39 => Bopomofo::U,
+ KeyIndex::K40 => Bopomofo::X,
+ KeyIndex::K41 => Bopomofo::G,
+ KeyIndex::K42 => Bopomofo::B,
+ KeyIndex::K43 => Bopomofo::N,
+ KeyIndex::K44 => Bopomofo::M,
+ KeyIndex::K45 => Bopomofo::ZH,
+ KeyIndex::K46 => Bopomofo::CH,
+ KeyIndex::K47 => Bopomofo::SH,
+ KeyIndex::K48 => Bopomofo::TONE1,
+ _ => return KeyBehavior::KeyError,
+ };
+ if bopomofo.kind() == BopomofoKind::Tone {
+ if !self.syllable.is_empty() {
+ if bopomofo != Bopomofo::TONE1 {
+ self.syllable.update(bopomofo);
+ }
+ return KeyBehavior::Commit;
+ }
+ } else {
+ self.syllable.remove_tone();
+ }
+
+ // In C libchewing TONE1 / Space is not a phonetic symbol
+ if bopomofo == Bopomofo::TONE1 {
+ return KeyBehavior::KeyError;
+ }
+
+ self.syllable.update(bopomofo);
+ KeyBehavior::Absorb
+ }
+
+ fn is_empty(&self) -> bool {
+ self.syllable.is_empty()
+ }
+
+ fn remove_last(&mut self) {
+ self.syllable.pop();
+ }
+
+ fn clear(&mut self) {
+ self.syllable.clear()
+ }
+
+ fn read(&self) -> Syllable {
+ self.syllable
+ }
+
+ fn key_seq(&self) -> Option<String> {
+ None
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use crate::editor::{
+ keymap::{IdentityKeymap, KeyCode, Keymap, QWERTY},
+ layout::{KeyBehavior, SyllableEditor},
+ };
+
+ use super::Et;
+
+ #[test]
+ fn space() {
+ let mut editor = Et::new();
+ let keymap = IdentityKeymap::new(QWERTY);
+ let behavior = editor.key_press(keymap.map_key(KeyCode::Space));
+ assert_eq!(KeyBehavior::KeyError, behavior);
+ }
+}
diff --git a/src/editor/layout/
et26.rs b/src/editor/layout/
et26.rs
new file mode 100644
index 0000000..2a3cedb
--- /dev/null
+++ b/src/editor/layout/
et26.rs
@@ -0,0 +1,222 @@
+//! ET26 (倚天26鍵)
+
+use crate::{
+ editor::keymap::{KeyCode, KeyEvent},
+ zhuyin::{Bopomofo, BopomofoKind, Syllable},
+};
+
+use super::{KeyBehavior, SyllableEditor};
+
+#[derive(Debug)]
+pub struct Et26 {
+ syllable: Syllable,
+}
+
+impl Et26 {
+ pub fn new() -> Et26 {
+ Et26 {
+ syllable: Default::default(),
+ }
+ }
+ fn is_end_key(&self, key: KeyCode) -> bool {
+ match key {
+ KeyCode::D | KeyCode::F | KeyCode::J | KeyCode::K | KeyCode::Space => {
+ !self.syllable.is_empty()
+ }
+ _ => false,
+ }
+ }
+ fn has_initial_or_medial(&self) -> bool {
+ self.syllable.has_initial() || self.syllable.has_medial()
+ }
+}
+
+impl Default for Et26 {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl SyllableEditor for Et26 {
+ fn key_press(&mut self, key: KeyEvent) -> KeyBehavior {
+ if self.is_end_key(key.code) {
+ if !self.syllable.has_medial() && !self.syllable.has_rime() {
+ match self.syllable.initial() {
+ Some(Bopomofo::J) => {
+ self.syllable.update(Bopomofo::ZH);
+ }
+ Some(Bopomofo::X) => {
+ self.syllable.update(Bopomofo::SH);
+ }
+ Some(Bopomofo::P) => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::OU);
+ }
+ Some(Bopomofo::M) => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::AN);
+ }
+ Some(Bopomofo::N) => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::EN);
+ }
+ Some(Bopomofo::T) => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::ANG);
+ }
+ Some(Bopomofo::L) => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::ENG);
+ }
+ Some(Bopomofo::H) => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::ER);
+ }
+ _ => (),
+ }
+ }
+ match key.code {
+ // KeyCode::Space => Some(Bopomofo::TONE1),
+ KeyCode::F => self.syllable.update(Bopomofo::TONE2),
+ KeyCode::J => self.syllable.update(Bopomofo::TONE3),
+ KeyCode::K => self.syllable.update(Bopomofo::TONE4),
+ KeyCode::D => self.syllable.update(Bopomofo::TONE5),
+ _ => {
+ self.syllable.remove_tone();
+ }
+ };
+ KeyBehavior::Commit
+ } else {
+ let bopomofo = match key.code {
+ KeyCode::A => Bopomofo::A,
+ KeyCode::B => Bopomofo::B,
+ KeyCode::C => Bopomofo::X,
+ KeyCode::D => Bopomofo::D,
+ KeyCode::E => Bopomofo::I,
+ KeyCode::F => Bopomofo::F,
+ KeyCode::G => Bopomofo::J,
+ KeyCode::H => {
+ if self.has_initial_or_medial() {
+ Bopomofo::ER
+ } else {
+ Bopomofo::H
+ }
+ }
+ KeyCode::I => Bopomofo::AI,
+ KeyCode::J => Bopomofo::R,
+ KeyCode::K => Bopomofo::K,
+ KeyCode::L => {
+ if self.has_initial_or_medial() {
+ Bopomofo::ENG
+ } else {
+ Bopomofo::L
+ }
+ }
+ KeyCode::M => {
+ if self.has_initial_or_medial() {
+ Bopomofo::AN
+ } else {
+ Bopomofo::M
+ }
+ }
+ KeyCode::N => {
+ if self.has_initial_or_medial() {
+ Bopomofo::EN
+ } else {
+ Bopomofo::N
+ }
+ }
+ KeyCode::O => Bopomofo::O,
+ KeyCode::P => {
+ if self.has_initial_or_medial() {
+ Bopomofo::OU
+ } else {
+ Bopomofo::P
+ }
+ }
+ KeyCode::Q => {
+ if self.has_initial_or_medial() {
+ Bopomofo::EI
+ } else {
+ Bopomofo::Z
+ }
+ }
+ KeyCode::R => Bopomofo::E,
+ KeyCode::S => Bopomofo::S,
+ KeyCode::T => {
+ if self.has_initial_or_medial() {
+ Bopomofo::ANG
+ } else {
+ Bopomofo::T
+ }
+ }
+ KeyCode::U => Bopomofo::IU,
+ KeyCode::V => Bopomofo::G,
+ KeyCode::W => {
+ if self.has_initial_or_medial() {
+ Bopomofo::EH
+ } else {
+ Bopomofo::C
+ }
+ }
+ KeyCode::X => Bopomofo::U,
+ KeyCode::Y => Bopomofo::CH,
+ KeyCode::Z => Bopomofo::AU,
+ _ => return KeyBehavior::NoWord,
+ };
+
+ match bopomofo.kind() {
+ BopomofoKind::Medial => {
+ if bopomofo == Bopomofo::U {
+ match self.syllable.initial() {
+ Some(Bopomofo::J) => {
+ self.syllable.update(Bopomofo::ZH);
+ }
+ Some(Bopomofo::X) => {
+ self.syllable.update(Bopomofo::SH);
+ }
+ _ => (),
+ }
+ } else if let Some(Bopomofo::G) = self.syllable.initial() {
+ self.syllable.update(Bopomofo::Q);
+ }
+ }
+ BopomofoKind::Rime if !self.syllable.has_medial() => {
+ match self.syllable.initial() {
+ Some(Bopomofo::J) => {
+ self.syllable.update(Bopomofo::ZH);
+ }
+ Some(Bopomofo::X) => {
+ self.syllable.update(Bopomofo::SH);
+ }
+ _ => (),
+ };
+ }
+ _ => (),
+ };
+
+ self.syllable.update(bopomofo);
+ KeyBehavior::Absorb
+ }
+ }
+
+ fn is_empty(&self) -> bool {
+ self.syllable.is_empty()
+ }
+
+ fn remove_last(&mut self) {
+ self.syllable.pop();
+ }
+
+ fn clear(&mut self) {
+ self.syllable.clear();
+ }
+
+ fn read(&self) -> Syllable {
+ self.syllable
+ }
+
+ fn key_seq(&self) -> Option<String> {
+ None
+ }
+}
diff --git a/src/editor/layout/
ginyieh.rs b/src/editor/layout/
ginyieh.rs
new file mode 100644
index 0000000..feba4d5
--- /dev/null
+++ b/src/editor/layout/
ginyieh.rs
@@ -0,0 +1,134 @@
+//! GinYieh keyboard layout
+//!
+//! Another commonly used keyboard layout on older IBM PC.
+
+use crate::{
+ editor::keymap::{KeyEvent, KeyIndex},
+ zhuyin::{Bopomofo, BopomofoKind, Syllable},
+};
+
+use super::{KeyBehavior, SyllableEditor};
+
+#[derive(Debug)]
+pub struct GinYieh {
+ syllable: Syllable,
+}
+
+impl GinYieh {
+ pub fn new() -> GinYieh {
+ GinYieh {
+ syllable: Syllable::new(),
+ }
+ }
+}
+
+impl Default for GinYieh {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl SyllableEditor for GinYieh {
+ fn key_press(&mut self, key: KeyEvent) -> KeyBehavior {
+ let bopomofo = match key.index {
+ KeyIndex::K1 => Bopomofo::TONE5,
+ KeyIndex::K2 => Bopomofo::B,
+ KeyIndex::K3 => Bopomofo::D,
+ KeyIndex::K6 => Bopomofo::ZH,
+ KeyIndex::K8 => Bopomofo::A,
+ KeyIndex::K9 => Bopomofo::AI,
+ KeyIndex::K10 => Bopomofo::AN,
+ KeyIndex::K11 => Bopomofo::I,
+ KeyIndex::K12 => Bopomofo::ER,
+ KeyIndex::K15 => Bopomofo::TONE2,
+ KeyIndex::K16 => Bopomofo::P,
+ KeyIndex::K17 => Bopomofo::T,
+ KeyIndex::K18 => Bopomofo::G,
+ KeyIndex::K19 => Bopomofo::J,
+ KeyIndex::K20 => Bopomofo::CH,
+ KeyIndex::K21 => Bopomofo::Z,
+ KeyIndex::K22 => Bopomofo::O,
+ KeyIndex::K23 => Bopomofo::EI,
+ KeyIndex::K24 => Bopomofo::EN,
+ KeyIndex::K27 => Bopomofo::TONE3,
+ KeyIndex::K28 => Bopomofo::M,
+ KeyIndex::K29 => Bopomofo::N,
+ KeyIndex::K30 => Bopomofo::K,
+ KeyIndex::K31 => Bopomofo::Q,
+ KeyIndex::K32 => Bopomofo::SH,
+ KeyIndex::K33 => Bopomofo::C,
+ KeyIndex::K34 => Bopomofo::E,
+ KeyIndex::K35 => Bopomofo::OU,
+ KeyIndex::K36 => Bopomofo::ANG,
+ KeyIndex::K37 => Bopomofo::IU,
+ KeyIndex::K38 => Bopomofo::TONE4,
+ KeyIndex::K39 => Bopomofo::F,
+ KeyIndex::K40 => Bopomofo::L,
+ KeyIndex::K41 => Bopomofo::H,
+ KeyIndex::K42 => Bopomofo::X,
+ KeyIndex::K43 => Bopomofo::R,
+ KeyIndex::K44 => Bopomofo::S,
+ KeyIndex::K45 => Bopomofo::EH,
+ KeyIndex::K46 => Bopomofo::OU,
+ KeyIndex::K47 => Bopomofo::ENG,
+ KeyIndex::K48 => Bopomofo::TONE1,
+ _ => return KeyBehavior::KeyError,
+ };
+ if bopomofo.kind() == BopomofoKind::Tone {
+ if !self.syllable.is_empty() {
+ if bopomofo != Bopomofo::TONE1 {
+ self.syllable.update(bopomofo);
+ }
+ return KeyBehavior::Commit;
+ }
+ } else {
+ self.syllable.remove_tone();
+ }
+
+ // In C libchewing TONE1 / Space is not a phonetic symbol
+ if bopomofo == Bopomofo::TONE1 {
+ return KeyBehavior::KeyError;
+ }
+
+ self.syllable.update(bopomofo);
+ KeyBehavior::Absorb
+ }
+
+ fn is_empty(&self) -> bool {
+ self.syllable.is_empty()
+ }
+
+ fn remove_last(&mut self) {
+ self.syllable.pop();
+ }
+
+ fn clear(&mut self) {
+ self.syllable.clear()
+ }
+
+ fn read(&self) -> Syllable {
+ self.syllable
+ }
+
+ fn key_seq(&self) -> Option<String> {
+ None
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use crate::editor::{
+ keymap::{IdentityKeymap, KeyCode, Keymap, QWERTY},
+ layout::{KeyBehavior, SyllableEditor},
+ };
+
+ use super::GinYieh;
+
+ #[test]
+ fn space() {
+ let mut editor = GinYieh::new();
+ let keymap = IdentityKeymap::new(QWERTY);
+ let behavior = editor.key_press(keymap.map_key(KeyCode::Space));
+ assert_eq!(KeyBehavior::KeyError, behavior);
+ }
+}
diff --git a/src/editor/layout/
hsu.rs b/src/editor/layout/
hsu.rs
new file mode 100644
index 0000000..ce14619
--- /dev/null
+++ b/src/editor/layout/
hsu.rs
@@ -0,0 +1,281 @@
+//! Hsu keyboard layout
+
+use crate::{
+ editor::keymap::KeyCode,
+ zhuyin::{Bopomofo, BopomofoKind, Syllable},
+};
+
+use super::{KeyBehavior, KeyEvent, SyllableEditor};
+
+#[derive(Debug)]
+pub struct Hsu {
+ syllable: Syllable,
+}
+
+impl Hsu {
+ pub fn new() -> Hsu {
+ Hsu {
+ syllable: Default::default(),
+ }
+ }
+ fn is_hsu_end_key(&self, key: KeyEvent) -> bool {
+ // TODO allow customize end key mapping
+ match key.code {
+ KeyCode::S | KeyCode::D | KeyCode::F | KeyCode::J | KeyCode::Space => {
+ !self.syllable.is_empty()
+ }
+ _ => false,
+ }
+ }
+ fn has_initial_or_medial(&self) -> bool {
+ self.syllable.has_initial() || self.syllable.has_medial()
+ }
+}
+
+impl Default for Hsu {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl SyllableEditor for Hsu {
+ fn key_press(&mut self, key: KeyEvent) -> KeyBehavior {
+ if self.is_hsu_end_key(key) {
+ if !self.syllable.has_medial() && !self.syllable.has_rime() {
+ if let Some(key) = self.syllable.initial() {
+ match key {
+ Bopomofo::J => {
+ self.syllable.update(Bopomofo::ZH);
+ }
+ Bopomofo::Q => {
+ self.syllable.update(Bopomofo::CH);
+ }
+ Bopomofo::X => {
+ self.syllable.update(Bopomofo::SH);
+ }
+ Bopomofo::H => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::O);
+ }
+ Bopomofo::G => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::E);
+ }
+ Bopomofo::M => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::AN);
+ }
+ Bopomofo::N => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::EN);
+ }
+ Bopomofo::K => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::ANG);
+ }
+ Bopomofo::L => {
+ self.syllable.remove_initial();
+ self.syllable.update(Bopomofo::ER);
+ }
+ _ => (),
+ }
+ }
+ }
+
+ // fuzzy ㄍㄧ to ㄐㄧ and ㄍㄩ to ㄐㄩ
+ match (self.syllable.initial(), self.syllable.medial()) {
+ (Some(Bopomofo::G), Some(Bopomofo::I)) | (Some(Bopomofo::J), Some(Bopomofo::I)) => {
+ self.syllable.update(Bopomofo::IU);
+ }
+ _ => (),
+ }
+
+ match key.code {
+ // KeyCode::Space => Some(Bopomofo::TONE1),
+ KeyCode::D => self.syllable.update(Bopomofo::TONE2),
+ KeyCode::F => self.syllable.update(Bopomofo::TONE3),
+ KeyCode::J => self.syllable.update(Bopomofo::TONE4),
+ KeyCode::S => self.syllable.update(Bopomofo::TONE5),
+ _ => {
+ self.syllable.remove_tone();
+ }
+ };
+ KeyBehavior::Commit
+ } else {
+ let bopomofo = match key.code {
+ KeyCode::A => {
+ if self.has_initial_or_medial() {
+ Bopomofo::EI
+ } else {
+ Bopomofo::C
+ }
+ }
+ KeyCode::B => Bopomofo::B,
+ KeyCode::C => Bopomofo::SH,
+ KeyCode::D => Bopomofo::D,
+ KeyCode::E => Bopomofo::I,
+ KeyCode::F => Bopomofo::F,
+ KeyCode::G => {
+ if self.has_initial_or_medial() {
+ Bopomofo::E
+ } else {
+ Bopomofo::G
+ }
+ }
+ KeyCode::H => {
+ if self.has_initial_or_medial() {
+ Bopomofo::O
+ } else {
+ Bopomofo::H
+ }
+ }
+ KeyCode::I => Bopomofo::AI,
+ KeyCode::J => Bopomofo::ZH,
+ KeyCode::K => {
+ if self.has_initial_or_medial() {
+ Bopomofo::ANG
+ } else {
+ Bopomofo::K
+ }
+ }
+ KeyCode::L => {
+ if self.has_initial_or_medial() {
+ Bopomofo::ENG
+ } else {
+ Bopomofo::L
+ }
+ }
+ KeyCode::M => {
+ if self.has_initial_or_medial() {
+ Bopomofo::AN
+ } else {
+ Bopomofo::M
+ }
+ }
+ KeyCode::N => {
+ if self.has_initial_or_medial() {
+ Bopomofo::EN
+ } else {
+ Bopomofo::N
+ }
+ }
+ KeyCode::O => Bopomofo::OU,
+ KeyCode::P => Bopomofo::P,
+ KeyCode::R => Bopomofo::R,
+ KeyCode::S => Bopomofo::S,
+ KeyCode::T => Bopomofo::T,
+ KeyCode::U => Bopomofo::IU,
+ KeyCode::V => Bopomofo::CH,
+ KeyCode::W => Bopomofo::AU,
+ KeyCode::X => Bopomofo::U,
+ KeyCode::Y => Bopomofo::A,
+ KeyCode::Z => Bopomofo::Z,
+ _ => return KeyBehavior::NoWord,
+ };
+ let kind = bopomofo.kind();
+
+ // fuzzy ㄍㄧ to ㄐㄧ and ㄍㄩ to ㄐㄩ
+ match (self.syllable.initial(), self.syllable.medial()) {
+ (Some(Bopomofo::G), Some(Bopomofo::I)) | (Some(Bopomofo::J), Some(Bopomofo::I)) => {
+ self.syllable.update(Bopomofo::IU);
+ }
+ _ => (),
+ }
+
+ // ㄐㄑㄒ must be followed by ㄧ or ㄩ. If not, convert them to ㄓㄔㄕ
+ if (kind == BopomofoKind::Medial && bopomofo == Bopomofo::U)
+ || (kind == BopomofoKind::Rime && self.syllable.medial().is_none())
+ {
+ match self.syllable.initial() {
+ Some(Bopomofo::J) => {
+ self.syllable.update(Bopomofo::ZH);
+ }
+ Some(Bopomofo::Q) => {
+ self.syllable.update(Bopomofo::CH);
+ }
+ Some(Bopomofo::X) => {
+ self.syllable.update(Bopomofo::SH);
+ }
+ _ => (),
+ }
+ }
+
+ // Likeweise, when ㄓㄔㄕ is followed by ㄧ or ㄩ, convert them to ㄐㄑㄒ
+ if bopomofo == Bopomofo::I || bopomofo == Bopomofo::IU {
+ match self.syllable.initial() {
+ Some(Bopomofo::ZH) => {
+ self.syllable.update(Bopomofo::J);
+ }
+ Some(Bopomofo::CH) => {
+ self.syllable.update(Bopomofo::Q);
+ }
+ Some(Bopomofo::SH) => {
+ self.syllable.update(Bopomofo::X);
+ }
+ _ => (),
+ }
+ }
+
+ self.syllable.update(bopomofo);
+ KeyBehavior::Absorb
+ }
+ }
+
+ fn is_empty(&self) -> bool {
+ self.syllable.is_empty()
+ }
+
+ fn remove_last(&mut self) {
+ self.syllable.pop();
+ }
+
+ fn clear(&mut self) {
+ self.syllable.clear();
+ }
+
+ fn read(&self) -> Syllable {
+ self.syllable
+ }
+
+ fn key_seq(&self) -> Option<String> {
+ None
+ }
+}
+
+#[cfg(test)]
+mod test {
+
+ use crate::{
+ editor::{
+ keymap::{IdentityKeymap, KeyCode, Keymap, QWERTY},
+ layout::SyllableEditor,
+ },
+ zhuyin::Bopomofo,
+ };
+
+ use super::Hsu;
+
+ #[test]
+ fn cen() {
+ let mut hsu = Hsu::new();
+ let keymap = IdentityKeymap::new(QWERTY);
+ hsu.key_press(keymap.map_key(KeyCode::C));
+ hsu.key_press(keymap.map_key(KeyCode::E));
+ hsu.key_press(keymap.map_key(KeyCode::N));
+ hsu.key_press(keymap.map_key(KeyCode::Space));
+ let result = hsu.read();
+ assert_eq!(result.initial(), Some(Bopomofo::X));
+ assert_eq!(result.medial(), Some(Bopomofo::I));
+ assert_eq!(result.rime(), Some(Bopomofo::EN));
+ }
+
+ #[test]
+ fn convert_n_to_en() {
+ let mut hsu = Hsu::new();
+ let keymap = IdentityKeymap::new(QWERTY);
+ hsu.key_press(keymap.map_key(KeyCode::N));
+ hsu.key_press(keymap.map_key(KeyCode::F));
+ let result = hsu.read();
+ assert_eq!(result.rime(), Some(Bopomofo::EN));
+ }
+}
diff --git a/src/editor/layout/
ibm.rs b/src/editor/layout/
ibm.rs
new file mode 100644
index 0000000..67f93d4
--- /dev/null
+++ b/src/editor/layout/
ibm.rs
@@ -0,0 +1,135 @@
+//! IBM keyboard layout
+//!
+//! Another commonly used keyboard layout on older IBM PC.
+
+use crate::{
+ editor::keymap::{KeyEvent, KeyIndex},
+ zhuyin::{Bopomofo, BopomofoKind, Syllable},
+};
+
+use super::{KeyBehavior, SyllableEditor};
+
+#[derive(Debug)]
+pub struct Ibm {
+ syllable: Syllable,
+}
+
+impl Ibm {
+ pub fn new() -> Ibm {
+ Ibm {
+ syllable: Syllable::new(),
+ }
+ }
+}
+
+impl Default for Ibm {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl SyllableEditor for Ibm {
+ fn key_press(&mut self, key: KeyEvent) -> KeyBehavior {
+ let bopomofo = match key.index {
+ KeyIndex::K1 => Bopomofo::B,
+ KeyIndex::K2 => Bopomofo::P,
+ KeyIndex::K3 => Bopomofo::M,
+ KeyIndex::K4 => Bopomofo::F,
+ KeyIndex::K5 => Bopomofo::D,
+ KeyIndex::K6 => Bopomofo::T,
+ KeyIndex::K7 => Bopomofo::N,
+ KeyIndex::K8 => Bopomofo::L,
+ KeyIndex::K9 => Bopomofo::G,
+ KeyIndex::K10 => Bopomofo::K,
+ KeyIndex::K11 => Bopomofo::H,
+ KeyIndex::K15 => Bopomofo::J,
+ KeyIndex::K16 => Bopomofo::Q,
+ KeyIndex::K17 => Bopomofo::X,
+ KeyIndex::K18 => Bopomofo::S,
+ KeyIndex::K19 => Bopomofo::CH,
+ KeyIndex::K20 => Bopomofo::SH,
+ KeyIndex::K21 => Bopomofo::R,
+ KeyIndex::K22 => Bopomofo::Z,
+ KeyIndex::K23 => Bopomofo::C,
+ KeyIndex::K24 => Bopomofo::S,
+ KeyIndex::K27 => Bopomofo::I,
+ KeyIndex::K28 => Bopomofo::U,
+ KeyIndex::K29 => Bopomofo::IU,
+ KeyIndex::K30 => Bopomofo::A,
+ KeyIndex::K31 => Bopomofo::O,
+ KeyIndex::K32 => Bopomofo::E,
+ KeyIndex::K33 => Bopomofo::EH,
+ KeyIndex::K34 => Bopomofo::AI,
+ KeyIndex::K35 => Bopomofo::EI,
+ KeyIndex::K36 => Bopomofo::AU,
+ KeyIndex::K38 => Bopomofo::OU,
+ KeyIndex::K39 => Bopomofo::AN,
+ KeyIndex::K40 => Bopomofo::EN,
+ KeyIndex::K41 => Bopomofo::ANG,
+ KeyIndex::K42 => Bopomofo::ENG,
+ KeyIndex::K43 => Bopomofo::ER,
+ KeyIndex::K44 => Bopomofo::TONE2,
+ KeyIndex::K45 => Bopomofo::TONE3,
+ KeyIndex::K46 => Bopomofo::TONE4,
+ KeyIndex::K47 => Bopomofo::TONE5,
+ KeyIndex::K48 => Bopomofo::TONE1,
+ _ => return KeyBehavior::KeyError,
+ };
+ if bopomofo.kind() == BopomofoKind::Tone {
+ if !self.syllable.is_empty() {
+ if bopomofo != Bopomofo::TONE1 {
+ self.syllable.update(bopomofo);
+ }
+ return KeyBehavior::Commit;
+ }
+ } else {
+ self.syllable.remove_tone();
+ }
+
+ // In C libchewing TONE1 / Space is not a phonetic symbol
+ if bopomofo == Bopomofo::TONE1 {
+ return KeyBehavior::KeyError;
+ }
+
+ self.syllable.update(bopomofo);
+ KeyBehavior::Absorb
+ }
+
+ fn is_empty(&self) -> bool {
+ self.syllable.is_empty()
+ }
+
+ fn remove_last(&mut self) {
+ self.syllable.pop();
+ }
+
+ fn clear(&mut self) {
+ self.syllable.clear()
+ }
+
+ fn read(&self) -> Syllable {
+ self.syllable
+ }
+
+ fn key_seq(&self) -> Option<String> {
+ None
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use crate::editor::{
+ keymap::{IdentityKeymap, KeyCode, Keymap, QWERTY},
+ layout::{KeyBehavior, SyllableEditor},
+ };
+
+ use super::Ibm;
+
+ #[test]
+ fn space() {
+ let mut editor = Ibm::new();
+ let keymap = IdentityKeymap::new(QWERTY);
+ let behavior = editor.key_press(keymap.map_key(KeyCode::Space));
+ assert_eq!(KeyBehavior::KeyError, behavior);
+ }
+}
diff --git a/src/editor/layout/
pinyin.rs b/src/editor/layout/
pinyin.rs
new file mode 100644
index 0000000..4176663
--- /dev/null
+++ b/src/editor/layout/
pinyin.rs
@@ -0,0 +1,498 @@
+//! Pinyin
+
+use crate::{
+ editor::keymap::{KeyCode, KeyEvent},
+ zhuyin::{Bopomofo, Syllable},
+};
+
+use super::{KeyBehavior, SyllableEditor};
+
+const MAX_PINYIN_LEN: usize = 10;
+
+#[derive(Debug)]
+pub enum PinyinVariant {
+ HanyuPinyin,
+ ThlPinyin,
+ Mps2Pinyin,
+}
+
+impl Default for PinyinVariant {
+ fn default() -> PinyinVariant {
+ PinyinVariant::HanyuPinyin
+ }
+}
+
+#[derive(Default, Debug)]
+pub struct Pinyin {
+ key_seq: String,
+ syllable: Syllable,
+ syllable_alt: Syllable,
+ variant: PinyinVariant,
+}
+
+impl Pinyin {
+ pub fn new() -> Pinyin {
+ Default::default()
+ }
+ pub fn hanyu() -> Pinyin {
+ Pinyin {
+ variant: PinyinVariant::HanyuPinyin,
+ ..Default::default()
+ }
+ }
+ pub fn thl() -> Pinyin {
+ Pinyin {
+ variant: PinyinVariant::ThlPinyin,
+ ..Default::default()
+ }
+ }
+ pub fn mps2() -> Pinyin {
+ Pinyin {
+ variant: PinyinVariant::Mps2Pinyin,
+ ..Default::default()
+ }
+ }
+ pub fn alt(&self) -> Syllable {
+ self.syllable_alt
+ }
+ pub fn key_seq(&self) -> &String {
+ &self.key_seq
+ }
+}
+
+impl SyllableEditor for Pinyin {
+ fn key_press(&mut self, key: KeyEvent) -> KeyBehavior {
+ if ![
+ KeyCode::Space,
+ KeyCode::N1,
+ KeyCode::N2,
+ KeyCode::N3,
+ KeyCode::N4,
+ KeyCode::N5,
+ ]
+ .contains(&key.code)
+ {
+ if self.key_seq.len() == MAX_PINYIN_LEN {
+ // buffer is full, ignore this keystroke
+ return KeyBehavior::NoWord;
+ }
+ let ch = match key.code {
+ KeyCode::A => 'a',
+ KeyCode::B => 'b',
+ KeyCode::C => 'c',
+ KeyCode::D => 'd',
+ KeyCode::E => 'e',
+ KeyCode::F => 'f',
+ KeyCode::G => 'g',
+ KeyCode::H => 'h',
+ KeyCode::I => 'i',
+ KeyCode::J => 'j',
+ KeyCode::K => 'k',
+ KeyCode::L => 'l',
+ KeyCode::M => 'm',
+ KeyCode::N => 'n',
+ KeyCode::O => 'o',
+ KeyCode::P => 'p',
+ KeyCode::Q => 'q',
+ KeyCode::R => 'r',
+ KeyCode::S => 's',
+ KeyCode::T => 't',
+ KeyCode::U => 'u',
+ KeyCode::V => 'v',
+ KeyCode::W => 'w',
+ KeyCode::X => 'x',
+ KeyCode::Y => 'y',
+ KeyCode::Z => 'z',
+ _ => return KeyBehavior::KeyError,
+ };
+ self.key_seq.push(ch);
+ return KeyBehavior::Absorb;
+ }
+
+ let tone = match key.code {
+ // KeyCode::Space | KeyCode::N1 => Some(Bopomofo::TONE1),
+ KeyCode::N2 => Some(Bopomofo::TONE2),
+ KeyCode::N3 => Some(Bopomofo::TONE3),
+ KeyCode::N4 => Some(Bopomofo::TONE4),
+ KeyCode::N5 => Some(Bopomofo::TONE5),
+ _ => None,
+ };
+
+ if let Some(entry) = match self.variant {
+ PinyinVariant::HanyuPinyin => table::HANYU_PINYIN_MAPPING.iter(),
+ PinyinVariant::ThlPinyin => table::THL_PINYIN_MAPPING.iter(),
+ PinyinVariant::Mps2Pinyin => table::MPS2_PINYIN_MAPPING.iter(),
+ }
+ .find(|entry| entry.pinyin == self.key_seq)
+ {
+ self.key_seq.clear();
+ self.syllable = entry.primary;
+ self.syllable_alt = entry.alt;
+ if let Some(tone) = tone {
+ self.syllable.update(tone);
+ self.syllable_alt.update(tone);
+ }
+ return KeyBehavior::Commit;
+ }
+
+ if let Some(entry) = table::COMMON_MAPPING
+ .iter()
+ .find(|entry| entry.pinyin == self.key_seq)
+ {
+ self.key_seq.clear();
+ self.syllable = entry.primary;
+ self.syllable_alt = entry.alt;
+ if let Some(tone) = tone {
+ self.syllable.update(tone);
+ self.syllable_alt.update(tone);
+ }
+ return KeyBehavior::Commit;
+ }
+
+ let initial = table::INITIAL_MAPPING
+ .iter()
+ .find(|entry| self.key_seq.starts_with(entry.pinyin));
+
+ let final_seq = match initial {
+ Some(entry) => self.key_seq.trim_start_matches(entry.pinyin),
+ None => &self.key_seq,
+ };
+
+ let fina = table::FINAL_MAPPING
+ .iter()
+ .find(|entry| final_seq == entry.pinyin);
+
+ if initial.is_none() && fina.is_none() {
+ self.key_seq.clear();
+ return KeyBehavior::Absorb;
+ }
+
+ let mut initial = initial.map(|i| i.initial);
+ let mut medial = fina.and_then(|f| f.medial);
+ let mut rime = fina.and_then(|f| f.rime);
+
+ if let Some(Bopomofo::I) = rime {
+ match initial {
+ Some(Bopomofo::ZH) | Some(Bopomofo::CH) | Some(Bopomofo::SH)
+ | Some(Bopomofo::R) | Some(Bopomofo::Z) | Some(Bopomofo::C) | Some(Bopomofo::S) => {
+ medial.take();
+ rime.take();
+ }
+ _ => (),
+ }
+ }
+
+ match initial {
+ Some(Bopomofo::J) | Some(Bopomofo::Q) | Some(Bopomofo::X) => {
+ match (medial, rime) {
+ (Some(Bopomofo::U), Some(Bopomofo::AN))
+ | (Some(Bopomofo::U), Some(Bopomofo::EN))
+ | (Some(Bopomofo::U), None) => {
+ medial.replace(Bopomofo::IU);
+ }
+ _ => (),
+ };
+ }
+ _ => (),
+ }
+
+ match medial {
+ Some(Bopomofo::I) | Some(Bopomofo::IU) => {
+ match initial {
+ Some(Bopomofo::S) | Some(Bopomofo::SH) => {
+ initial.replace(Bopomofo::X);
+ }
+ Some(Bopomofo::C) | Some(Bopomofo::CH) => {
+ initial.replace(Bopomofo::Q);
+ }
+ _ => (),
+ };
+ }
+ _ => {
+ if initial == Some(Bopomofo::J) {
+ initial.replace(Bopomofo::ZH);
+ }
+ }
+ }
+
+ match initial {
+ Some(Bopomofo::B) | Some(Bopomofo::P) | Some(Bopomofo::M) | Some(Bopomofo::F) => {
+ match (medial, rime) {
+ (Some(Bopomofo::U), Some(Bopomofo::ENG))
+ | (Some(Bopomofo::U), Some(Bopomofo::O)) => {
+ medial.take();
+ }
+ _ => (),
+ };
+ }
+ _ => (),
+ }
+
+ self.key_seq.clear();
+ let mut builder = Syllable::builder();
+ if let Some(initial) = initial {
+ builder = builder.insert(initial).unwrap();
+ }
+ if let Some(medial) = medial {
+ builder = builder.insert(medial).unwrap();
+ }
+ if let Some(rime) = rime {
+ builder = builder.insert(rime).unwrap();
+ }
+ if let Some(tone) = tone {
+ builder = builder.insert(tone).unwrap();
+ }
+ self.syllable = builder.build();
+ self.syllable_alt = self.syllable;
+ KeyBehavior::Commit
+ }
+
+ fn is_empty(&self) -> bool {
+ self.key_seq.is_empty()
+ }
+
+ fn remove_last(&mut self) {
+ self.key_seq.pop();
+ }
+
+ fn clear(&mut self) {
+ self.key_seq.clear();
+ self.syllable.clear();
+ self.syllable_alt.clear();
+ }
+
+ fn read(&self) -> Syllable {
+ self.syllable
+ }
+
+ fn key_seq(&self) -> Option<String> {
+ Some(self.key_seq.clone())
+ }
+}
+
+struct AmbiguousMapEntry {
+ pinyin: &'static str,
+ primary: Syllable,
+ alt: Syllable,
+}
+
+macro_rules! amb {
+ ($pinyin:expr, $primary:expr, $alt:expr ) => {
+ AmbiguousMapEntry {
+ pinyin: $pinyin,
+ primary: $primary,
+ alt: $alt,
+ }
+ };
+}
+
+struct InitialMapEntry {
+ pinyin: &'static str,
+ initial: Bopomofo,
+}
+
+macro_rules! ini {
+ ($pinyin:expr, $bopomofo:expr) => {
+ InitialMapEntry {
+ pinyin: $pinyin,
+ initial: $bopomofo,
+ }
+ };
+}
+
+struct FinalMapEntry {
+ pinyin: &'static str,
+ medial: Option<Bopomofo>,
+ rime: Option<Bopomofo>,
+}
+
+macro_rules! fin {
+ ($pinyin:expr, $medial:expr, $rime:expr) => {
+ FinalMapEntry {
+ pinyin: $pinyin,
+ medial: $medial,
+ rime: $rime,
+ }
+ };
+}
+
+mod table {
+
+ use crate::{syl, zhuyin::Bopomofo::*};
+
+ use super::{AmbiguousMapEntry, FinalMapEntry, InitialMapEntry};
+
+ pub(super) const COMMON_MAPPING: [AmbiguousMapEntry; 18] = [
+ // Special cases for WG
+ amb!("tzu", syl![Z], syl![Z, U]),
+ amb!("ssu", syl![S], syl![S, U]),
+ amb!("szu", syl![S], syl![S, U]),
+ // Common multiple mapping
+ amb!("e", syl![E], syl![EH]),
+ amb!("ch", syl![CH], syl![Q]),
+ amb!("sh", syl![SH], syl![X]),
+ amb!("c", syl![C], syl![Q]),
+ amb!("s", syl![S], syl![X]),
+ amb!("nu", syl![N, U], syl![N, IU]),
+ amb!("lu", syl![L, U], syl![L, IU]),
+ amb!("luan", syl![L, U, AN], syl![L, IU, AN]),
+ amb!("niu", syl![N, I, OU], syl![N, IU]),
+ amb!("liu", syl![L, I, OU], syl![L, IU]),
+ amb!("jiu", syl![J, I, OU], syl![J, IU]),
+ amb!("chiu", syl![Q, I, OU], syl![Q, IU]),
+ amb!("shiu", syl![X, I, OU], syl![X, IU]),
+ amb!("ju", syl![J, IU], syl![ZH, U]),
+ amb!("juan", syl![J, IU, AN], syl![ZH, U, AN]),
+ ];
+
+ pub(super) const HANYU_PINYIN_MAPPING: [AmbiguousMapEntry; 4] = [
+ amb!("chi", syl![CH], syl![Q, I]),
+ amb!("shi", syl![SH], syl![X, I]),
+ amb!("ci", syl![C], syl![Q, I]),
+ amb!("si", syl![S], syl![X, I]),
+ ];
+
+ pub(super) const THL_PINYIN_MAPPING: [AmbiguousMapEntry; 4] = [
+ amb!("chi", syl![Q, I], syl![CH]),
+ amb!("shi", syl![X, I], syl![SH]),
+ amb!("ci", syl![Q, I], syl![C]),
+ amb!("si", syl![X, I], syl![S]),
+ ];
+
+ pub(super) const MPS2_PINYIN_MAPPING: [AmbiguousMapEntry; 13] = [
+ amb!("chi", syl![Q, I], syl![CH]),
+ amb!("shi", syl![X, I], syl![SH]),
+ amb!("ci", syl![Q, I], syl![C]),
+ amb!("si", syl![X, I], syl![S]),
+ amb!("niu", syl![N, IU], syl![N, I, OU]),
+ amb!("liu", syl![L, IU], syl![L, I, OU]),
+ amb!("jiu", syl![J, IU], syl![J, I, OU]),
+ amb!("chiu", syl![Q, IU], syl![Q, I, OU]),
+ amb!("shiu", syl![X, IU], syl![X, I, OU]),
+ amb!("ju", syl![ZH, U], syl![J, IU]),
+ amb!("juan", syl![ZH, U, AN], syl![J, IU, AN]),
+ amb!("juen", syl![ZH, U, EN], syl![J, IU, EN]),
+ amb!("tzu", syl![Z, U], syl![Z]),
+ ];
+
+ pub(super) const INITIAL_MAPPING: [InitialMapEntry; 25] = [
+ ini!("tz", Z),
+ ini!("b", B),
+ ini!("p", P),
+ ini!("m", M),
+ ini!("f", F),
+ ini!("d", D),
+ ini!("ts", C),
+ ini!("t", T),
+ ini!("n", N),
+ ini!("l", L),
+ ini!("g", G),
+ ini!("k", K),
+ ini!("hs", X),
+ ini!("h", H),
+ ini!("jh", ZH),
+ ini!("j", J),
+ ini!("q", Q),
+ ini!("x", X),
+ ini!("zh", ZH),
+ ini!("ch", CH),
+ ini!("sh", SH),
+ ini!("r", R),
+ ini!("z", Z),
+ ini!("c", C),
+ ini!("s", S),
+ ];
+
+ pub(super) const FINAL_MAPPING: [FinalMapEntry; 90] = [
+ fin!("uang", Some(U), Some(ANG)),
+ fin!("wang", Some(U), Some(ANG)),
+ fin!("weng", Some(U), Some(ENG)),
+ fin!("wong", Some(U), Some(ENG)),
+ fin!("ying", Some(I), Some(ENG)),
+ fin!("yung", Some(IU), Some(ENG)),
+ fin!("yong", Some(IU), Some(ENG)),
+ fin!("iung", Some(IU), Some(ENG)),
+ fin!("iong", Some(IU), Some(ENG)),
+ fin!("iang", Some(I), Some(ANG)),
+ fin!("yang", Some(I), Some(ANG)),
+ fin!("yuan", Some(IU), Some(AN)),
+ fin!("iuan", Some(IU), Some(AN)),
+ fin!("ing", Some(I), Some(ENG)),
+ fin!("iao", Some(I), Some(AU)),
+ fin!("iau", Some(I), Some(AU)),
+ fin!("yao", Some(I), Some(AU)),
+ fin!("yau", Some(I), Some(AU)),
+ fin!("yun", Some(IU), Some(EN)),
+ fin!("iun", Some(IU), Some(EN)),
+ fin!("vn", Some(IU), Some(EN)),
+ fin!("iou", Some(I), Some(OU)),
+ fin!("iu", Some(I), Some(OU)),
+ fin!("you", Some(I), Some(OU)),
+ fin!("io", Some(I), Some(O)),
+ fin!("yo", Some(I), Some(O)),
+ fin!("ian", Some(I), Some(AN)),
+ fin!("ien", Some(I), Some(AN)),
+ fin!("yan", Some(I), Some(AN)),
+ fin!("yen", Some(I), Some(AN)),
+ fin!("yin", Some(I), Some(EN)),
+ fin!("ang", None, Some(ANG)),
+ fin!("eng", None, Some(ENG)),
+ fin!("uei", Some(U), Some(EI)),
+ fin!("ui", Some(U), Some(EI)),
+ fin!("wei", Some(U), Some(EI)),
+ fin!("uen", Some(U), Some(EN)),
+ fin!("yueh", Some(IU), Some(EH)),
+ fin!("yue", Some(IU), Some(EH)),
+ fin!("iue", Some(IU), Some(EH)),
+ fin!("ueh", Some(IU), Some(EH)),
+ fin!("ue", Some(IU), Some(EH)),
+ fin!("ve", Some(IU), Some(EH)),
+ fin!("uai", Some(U), Some(AI)),
+ fin!("wai", Some(U), Some(AI)),
+ fin!("uan", Some(U), Some(AN)),
+ fin!("wan", Some(U), Some(AN)),
+ fin!("un", Some(U), Some(EN)),
+ fin!("wen", Some(U), Some(EN)),
+ fin!("wun", Some(U), Some(EN)),
+ fin!("ung", Some(U), Some(ENG)),
+ fin!("ong", Some(U), Some(ENG)),
+ fin!("van", Some(IU), Some(AN)),
+ fin!("er", None, Some(ER)),
+ fin!("ai", None, Some(AI)),
+ fin!("ei", None, Some(EI)),
+ fin!("ao", None, Some(AU)),
+ fin!("au", None, Some(AU)),
+ fin!("ou", None, Some(OU)),
+ fin!("an", None, Some(AN)),
+ fin!("en", None, Some(EN)),
+ fin!("yi", None, Some(I)),
+ fin!("ia", Some(I), Some(A)),
+ fin!("ya", Some(I), Some(A)),
+ fin!("ieh", Some(I), Some(EH)),
+ fin!("ie", Some(I), Some(EH)),
+ fin!("yeh", Some(I), Some(EH)),
+ fin!("ye", Some(I), Some(EH)),
+ fin!("in", Some(I), Some(EN)),
+ fin!("wu", Some(U), None),
+ fin!("ua", Some(U), Some(A)),
+ fin!("wa", Some(U), Some(A)),
+ fin!("uo", Some(U), Some(O)),
+ fin!("wo", Some(U), Some(O)),
+ fin!("yu", Some(IU), None),
+ fin!("ve", Some(IU), Some(EH)),
+ fin!("vn", Some(IU), Some(EN)),
+ fin!("ih", None, None),
+ fin!("a", None, Some(A)),
+ fin!("o", None, Some(O)),
+ fin!("eh", None, Some(EH)),
+ fin!("e", None, Some(E)),
+ fin!("v", Some(IU), None),
+ fin!("i", Some(I), None),
+ fin!("u", Some(U), None),
+ fin!("E", None, Some(EH)),
+ fin!("n", None, Some(EN)),
+ fin!("ng", None, Some(ENG)),
+ fin!("r", None, None),
+ fin!("z", None, None),
+ ];
+}
diff --git a/src/editor/layout/
standard.rs b/src/editor/layout/
standard.rs
new file mode 100644
index 0000000..8f394e5
--- /dev/null
+++ b/src/editor/layout/
standard.rs
@@ -0,0 +1,136 @@
+//! Standard keyboard layout
+//!
+//! Also known as the Dai Chien (大千) layout. It's the default layout on almost
+//! all platforms and the most commonly used one.
+
+use crate::{
+ editor::keymap::{KeyEvent, KeyIndex},
+ zhuyin::{Bopomofo, BopomofoKind, Syllable},
+};
+
+use super::{KeyBehavior, SyllableEditor};
+
+#[derive(Debug)]
+pub struct Standard {
+ syllable: Syllable,
+}
+
+impl Standard {
+ pub fn new() -> Standard {
+ Standard {
+ syllable: Syllable::new(),
+ }
+ }
+}
+
+impl Default for Standard {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl SyllableEditor for Standard {
+ fn key_press(&mut self, key: KeyEvent) -> KeyBehavior {
+ let bopomofo = match key.index {
+ KeyIndex::K1 => Bopomofo::B,
+ KeyIndex::K2 => Bopomofo::D,
+ KeyIndex::K3 => Bopomofo::TONE3,
+ KeyIndex::K4 => Bopomofo::TONE4,
+ KeyIndex::K5 => Bopomofo::ZH,
+ KeyIndex::K6 => Bopomofo::TONE2,
+ KeyIndex::K7 => Bopomofo::TONE5,
+ KeyIndex::K8 => Bopomofo::A,
+ KeyIndex::K9 => Bopomofo::AI,
+ KeyIndex::K10 => Bopomofo::AN,
+ KeyIndex::K11 => Bopomofo::ER,
+ KeyIndex::K15 => Bopomofo::P,
+ KeyIndex::K16 => Bopomofo::T,
+ KeyIndex::K17 => Bopomofo::G,
+ KeyIndex::K18 => Bopomofo::J,
+ KeyIndex::K19 => Bopomofo::CH,
+ KeyIndex::K20 => Bopomofo::Z,
+ KeyIndex::K21 => Bopomofo::I,
+ KeyIndex::K22 => Bopomofo::O,
+ KeyIndex::K23 => Bopomofo::EI,
+ KeyIndex::K24 => Bopomofo::EN,
+ KeyIndex::K27 => Bopomofo::M,
+ KeyIndex::K28 => Bopomofo::N,
+ KeyIndex::K29 => Bopomofo::K,
+ KeyIndex::K30 => Bopomofo::Q,
+ KeyIndex::K31 => Bopomofo::SH,
+ KeyIndex::K32 => Bopomofo::C,
+ KeyIndex::K33 => Bopomofo::U,
+ KeyIndex::K34 => Bopomofo::E,
+ KeyIndex::K35 => Bopomofo::AU,
+ KeyIndex::K36 => Bopomofo::ANG,
+ KeyIndex::K38 => Bopomofo::F,
+ KeyIndex::K39 => Bopomofo::L,
+ KeyIndex::K40 => Bopomofo::H,
+ KeyIndex::K41 => Bopomofo::X,
+ KeyIndex::K42 => Bopomofo::R,
+ KeyIndex::K43 => Bopomofo::S,
+ KeyIndex::K44 => Bopomofo::IU,
+ KeyIndex::K45 => Bopomofo::EH,
+ KeyIndex::K46 => Bopomofo::OU,
+ KeyIndex::K47 => Bopomofo::ENG,
+ KeyIndex::K48 => Bopomofo::TONE1,
+ _ => return KeyBehavior::KeyError,
+ };
+ if bopomofo.kind() == BopomofoKind::Tone {
+ if !self.syllable.is_empty() {
+ if bopomofo != Bopomofo::TONE1 {
+ self.syllable.update(bopomofo);
+ }
+ return KeyBehavior::Commit;
+ }
+ } else {
+ self.syllable.remove_tone();
+ }
+
+ // In C libchewing TONE1 / Space is not a phonetic symbol
+ if bopomofo == Bopomofo::TONE1 {
+ return KeyBehavior::KeyError;
+ }
+
+ self.syllable.update(bopomofo);
+ KeyBehavior::Absorb
+ }
+
+ fn is_empty(&self) -> bool {
+ self.syllable.is_empty()
+ }
+
+ fn remove_last(&mut self) {
+ self.syllable.pop();
+ }
+
+ fn clear(&mut self) {
+ self.syllable.clear()
+ }
+
+ fn read(&self) -> Syllable {
+ self.syllable
+ }
+
+ fn key_seq(&self) -> Option<String> {
+ None
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use crate::editor::{
+ keymap::{IdentityKeymap, KeyCode, Keymap, QWERTY},
+ layout::{KeyBehavior, SyllableEditor},
+ };
+
+ use super::Standard;
+
+ #[test]
+ fn space() {
+ let mut editor = Standard::new();
+ let keymap = IdentityKeymap::new(QWERTY);
+ let behavior = editor.key_press(keymap.map_key(KeyCode::Space));
+ assert_eq!(KeyBehavior::KeyError, behavior);
+ }
+}
diff --git a/src/hash.c b/src/hash.c
index 7eb8f09..b83eb61 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -79,7 +79,7 @@ static unsigned int HashFunc(const uint16_t phoneSeq[])
HASH_ITEM *HashFindPhonePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], HASH_ITEM *pItemLast)
{
- HASH_ITEM *pNow = pItemLast ? pItemLast->next : pgdata->static_data.hashtable[HashFunc(phoneSeq)];
+ HASH_ITEM *pNow = pItemLast ? pItemLast->next : pgdata->staticData.hashtable[HashFunc(phoneSeq)];
for (; pNow; pNow = pNow->next)
if (PhoneSeqTheSame(pNow->data.phoneSeq, phoneSeq))
@@ -92,7 +92,7 @@ HASH_ITEM **HashFindHead(ChewingData *pgdata, const uint16_t phoneSeq[])
assert(pgdata);
assert(phoneSeq);
- return &pgdata->static_data.hashtable[HashFunc(phoneSeq)];
+ return &pgdata->staticData.hashtable[HashFunc(phoneSeq)];
}
HASH_ITEM *HashFindEntry(ChewingData *pgdata, const uint16_t phoneSeq[], const char wordSeq[])
@@ -102,7 +102,7 @@ HASH_ITEM *HashFindEntry(ChewingData *pgdata, const uint16_t phoneSeq[], const c
hashvalue = HashFunc(phoneSeq);
- for (pItem = pgdata->static_data.hashtable[hashvalue]; pItem; pItem = pItem->next) {
+ for (pItem = pgdata->staticData.hashtable[hashvalue]; pItem; pItem = pItem->next) {
if (!strcmp(pItem->data.wordSeq, wordSeq) && PhoneSeqTheSame(pItem->data.phoneSeq, phoneSeq)) {
return pItem;
}
@@ -125,7 +125,7 @@ HASH_ITEM *HashInsert(ChewingData *pgdata, UserPhraseData *pData)
hashvalue = HashFunc(pData->phoneSeq);
/* set the new element */
- pItem->next = pgdata->static_data.hashtable[hashvalue];
+ pItem->next = pgdata->staticData.hashtable[hashvalue];
/* transfer ownership of pointers inside |pData| to |pItem->data| */
pItem->data = *pData;
@@ -133,7 +133,7 @@ HASH_ITEM *HashInsert(ChewingData *pgdata, UserPhraseData *pData)
pItem->item_index = -1;
/* set link to the new element */
- pgdata->static_data.hashtable[hashvalue] = pItem;
+ pgdata->staticData.hashtable[hashvalue] = pItem;
return pItem;
}
@@ -152,8 +152,8 @@ HASH_ITEM *FindNextHash(const ChewingData *pgdata, HASH_ITEM *curr)
}
for (; hash_value < HASH_TABLE_SIZE; ++hash_value)
- if (pgdata->static_data.hashtable[hash_value])
- return pgdata->static_data.hashtable[hash_value];
+ if (pgdata->staticData.hashtable[hash_value])
+ return pgdata->staticData.hashtable[hash_value];
return NULL;
}
@@ -213,14 +213,14 @@ void HashModify(ChewingData *pgdata, HASH_ITEM *pItem)
FILE *outfile;
char str[FIELD_SIZE + 1];
- outfile = fopen(pgdata->static_data.hashfilename, "r+b");
+ outfile = fopen(pgdata->staticData.hashfilename, "r+b");
if (!outfile)
return;
/* update "lifetime" */
fseek(outfile, strlen(BIN_HASH_SIG), SEEK_SET);
- fwrite(&pgdata->static_data.chewing_lifetime, 1, 4, outfile);
- sprintf(str, "%d", pgdata->static_data.chewing_lifetime);
+ fwrite(&pgdata->staticData.chewing_lifetime, 1, 4, outfile);
+ sprintf(str, "%d", pgdata->staticData.chewing_lifetime);
DEBUG_OUT("HashModify-1: '%-75s'\n", str);
/* update record */
@@ -436,7 +436,7 @@ static int migrate_hash_to_bin(ChewingData *pgdata)
HASH_ITEM item;
int item_index, iret, tflen;
int ret;
- const char *ofilename = pgdata->static_data.hashfilename;
+ const char *ofilename = pgdata->staticData.hashfilename;
/* allocate dump buffer */
txtfile = open_file_get_length(ofilename, "r", &tflen);
@@ -448,7 +448,7 @@ static int migrate_hash_to_bin(ChewingData *pgdata)
fclose(txtfile);
return 0;
}
- ret = fscanf(txtfile, "%d", &pgdata->static_data.chewing_lifetime);
+ ret = fscanf(txtfile, "%d", &pgdata->staticData.chewing_lifetime);
if (ret != 1) {
free(dump);
return 0;
@@ -458,8 +458,8 @@ static int migrate_hash_to_bin(ChewingData *pgdata)
seekdump = dump;
memcpy(seekdump, BIN_HASH_SIG, strlen(BIN_HASH_SIG));
memcpy(seekdump + strlen(BIN_HASH_SIG),
- &pgdata->static_data.chewing_lifetime, sizeof(pgdata->static_data.chewing_lifetime));
- seekdump += strlen(BIN_HASH_SIG) + sizeof(pgdata->static_data.chewing_lifetime);
+ &pgdata->staticData.chewing_lifetime, sizeof(pgdata->static_data.chewing_lifetime));
+ seekdump += strlen(BIN_HASH_SIG) + sizeof(pgdata->staticData.chewing_lifetime);
/* migrate */
item_index = 0;
@@ -511,7 +511,7 @@ void TerminateUserphrase(ChewingData *pgdata)
int i;
for (i = 0; i < HASH_TABLE_SIZE; ++i) {
- pItem = pgdata->static_data.hashtable[i];
+ pItem = pgdata->staticData.hashtable[i];
FreeHashItem(pItem);
}
}
@@ -522,26 +522,26 @@ int InitUserphrase(struct ChewingData *pgdata, const char *path)
int item_index, hashvalue, iret, fsize, hdrlen, oldest = INT_MAX;
char *dump, *seekdump;
- strncpy(pgdata->static_data.hashfilename, path, ARRAY_SIZE(pgdata->static_data.hashfilename) - 1);
- memset(pgdata->static_data.hashtable, 0, sizeof(pgdata->static_data.hashtable));
+ strncpy(pgdata->staticData.hashfilename, path, ARRAY_SIZE(pgdata->static_data.hashfilename) - 1);
+ memset(pgdata->staticData.hashtable, 0, sizeof(pgdata->static_data.hashtable));
open_hash_file:
- dump = _load_hash_file(pgdata->static_data.hashfilename, &fsize);
- hdrlen = strlen(BIN_HASH_SIG) + sizeof(pgdata->static_data.chewing_lifetime);
+ dump = _load_hash_file(pgdata->staticData.hashfilename, &fsize);
+ hdrlen = strlen(BIN_HASH_SIG) + sizeof(pgdata->staticData.chewing_lifetime);
item_index = 0;
if (dump == NULL || fsize < hdrlen) {
FILE *outfile;
- outfile = fopen(pgdata->static_data.hashfilename, "w+b");
+ outfile = fopen(pgdata->staticData.hashfilename, "w+b");
if (!outfile) {
if (dump) {
free(dump);
}
return -1;
}
- pgdata->static_data.chewing_lifetime = 0;
+ pgdata->staticData.chewing_lifetime = 0;
fwrite(BIN_HASH_SIG, 1, strlen(BIN_HASH_SIG), outfile);
- fwrite(&pgdata->static_data.chewing_lifetime, 1, sizeof(pgdata->static_data.chewing_lifetime), outfile);
+ fwrite(&pgdata->staticData.chewing_lifetime, 1, sizeof(pgdata->static_data.chewing_lifetime), outfile);
fclose(outfile);
} else {
if (memcmp(dump, BIN_HASH_SIG, strlen(BIN_HASH_SIG)) != 0) {
@@ -553,7 +553,7 @@ int InitUserphrase(struct ChewingData *pgdata, const char *path)
goto open_hash_file;
}
- pgdata->static_data.chewing_lifetime = *(int *) (dump + strlen(BIN_HASH_SIG));
+ pgdata->staticData.chewing_lifetime = *(int *) (dump + strlen(BIN_HASH_SIG));
seekdump = dump + hdrlen;
fsize -= hdrlen;
@@ -588,11 +588,11 @@ int InitUserphrase(struct ChewingData *pgdata, const char *path)
pPool = pItem->next;
hashvalue = HashFunc(pItem->data.phoneSeq);
- pItem->next = pgdata->static_data.hashtable[hashvalue];
- pgdata->static_data.hashtable[hashvalue] = pItem;
+ pItem->next = pgdata->staticData.hashtable[hashvalue];
+ pgdata->staticData.hashtable[hashvalue] = pItem;
pItem->data.recentTime -= oldest;
}
- pgdata->static_data.chewing_lifetime -= oldest;
+ pgdata->staticData.chewing_lifetime -= oldest;
}
return 0;
}
@@ -628,7 +628,7 @@ int HashFileSeekToUserPhrase(struct ChewingData *pgdata, HASH_ITEM *pItem, FILE
return 0;
}
- hdrlen = strlen(BIN_HASH_SIG) + sizeof(pgdata->static_data.chewing_lifetime);
+ hdrlen = strlen(BIN_HASH_SIG) + sizeof(pgdata->staticData.chewing_lifetime);
seekdump = buf + hdrlen;
fsize -= hdrlen;
diff --git a/src/
lib.rs b/src/
lib.rs
index fbc5f1b..d372fd6 100644
--- a/src/
lib.rs
+++ b/src/
lib.rs
@@ -1 +1,9 @@
-pub mod zhuyin;
\ No newline at end of file
+//! # Glossary
+//!
+//! 1. **Phonetic Key**
+
+pub mod conversion;
+pub mod dictionary;
+pub mod editor;
+pub mod path;
+pub mod zhuyin;
diff --git a/src/mod_aux.c b/src/mod_aux.c
index 7818f8d..56a0da7 100644
--- a/src/mod_aux.c
+++ b/src/mod_aux.c
@@ -17,11 +17,15 @@
#include <stdlib.h>
#include "chewing-private.h"
-#include "bopomofo-private.h"
#include "chewingio.h"
-#include "chewing-utf8-util.h"
#include "private.h"
+#ifndef WITH_RUST
+#include "global.h"
+#include "bopomofo-private.h"
+#include "chewing-utf8-util.h"
+#endif
+
/**
* @param ctx handle to Chewing IM context
* @retval TRUE if it currnet input state is at the "end-of-a-char"
diff --git a/src/
path.rs b/src/
path.rs
new file mode 100644
index 0000000..1303924
--- /dev/null
+++ b/src/
path.rs
@@ -0,0 +1,58 @@
+//! Types and functions related to file system path operations.
+
+use std::{env, path::PathBuf};
+
+use dirs_next::{data_dir as user_data_dir, home_dir};
+
+/// Returns the path to the user's default chewing data directory.
+///
+/// The returned value depends on the operating system and is either a
+/// Some, containing a value from the following table, or a None.
+///
+/// |Platform | Base | Example |
+/// | ------- | ---------------------------------------- | ------------------------------------------------ |
+/// | Linux | `$XDG_DATA_HOME` or `$HOME`/.local/share | /home/alice/.local/share/chewing |
+/// | macOS | `$HOME`/Library/Application Support | /Users/Alice/Library/Application Support/chewing |
+/// | Windows | `{FOLDERID_RoamingAppData}` | C:\Users\Alice\AppData\Roaming\chewing |
+///
+/// Legacy path is automatically detected and used
+///
+/// |Platform | Base | Example |
+/// | ------- | -------------- | --------------------- ------------ |
+/// | Linux | `$HOME` | /home/alice/.chewing |
+/// | macOS | /Library | /Library/ChewingOSX |
+/// | Windows | `$USERPROFILE` | C:\Users\Alice\ChewingTextService |
+///
+/// Users can set the `CHEWING_USER_PATH` environment variable to
+/// override the default path.
+pub fn data_dir() -> Option<PathBuf> {
+ // TODO per-OS integration test
+ if let Ok(path) = env::var("CHEWING_USER_PATH") {
+ return Some(path.into());
+ }
+ if let Some(path) = legacy_data_dir() {
+ if path.exists() && path.is_dir() {
+ return Some(path);
+ }
+ }
+ user_data_dir().map(|path| path.join("chewing"))
+}
+
+fn legacy_data_dir() -> Option<PathBuf> {
+ #[cfg(target_os = "windows")]
+ return home_dir().map(|path| path.join("ChewingTextService"));
+
+ #[cfg(any(target_os = "macos", target_os = "ios"))]
+ return Some("/Library/ChewingOSX".into());
+
+ home_dir().map(|path| path.join(".chewing"))
+}
+
+/// Returns the path to the user's default userphrase database file.
+///
+/// This function uses the default path from the [`data_dir()`] method
+/// and also respects the `CHEWING_USER_PATH` environment variable.
+pub fn userphrase_path() -> Option<PathBuf> {
+ // TODO support uhash.dat
+ data_dir().map(|path| path.join("chewing.sqlite3"))
+}
diff --git a/src/pinyin.c b/src/pinyin.c
index 989b140..f23a723 100644
--- a/src/pinyin.c
+++ b/src/pinyin.c
@@ -22,8 +22,8 @@
void TerminatePinyin(ChewingData *pgdata)
{
- free(pgdata->static_data.hanyuInitialsMap);
- free(pgdata->static_data.hanyuFinalsMap);
+ free(pgdata->staticData.hanyuInitialsMap);
+ free(pgdata->staticData.hanyuFinalsMap);
}
int InitPinyin(ChewingData *pgdata, const char *prefix)
@@ -40,29 +40,29 @@ int InitPinyin(ChewingData *pgdata, const char *prefix)
if (!fd)
return 0;
- ret = fscanf(fd, "%d", &pgdata->static_data.HANYU_INITIALS);
+ ret = fscanf(fd, "%d", &pgdata->staticData.HANYU_INITIALS);
if (ret != 1) {
goto fail;
}
- ++pgdata->static_data.HANYU_INITIALS;
- pgdata->static_data.hanyuInitialsMap = ALC(keymap, pgdata->static_data.HANYU_INITIALS);
- for (i = 0; i < pgdata->static_data.HANYU_INITIALS - 1; i++) {
+ ++pgdata->staticData.HANYU_INITIALS;
+ pgdata->staticData.hanyuInitialsMap = ALC(keymap, pgdata->staticData.HANYU_INITIALS);
+ for (i = 0; i < pgdata->staticData.HANYU_INITIALS - 1; i++) {
ret = fscanf(fd, "%s %s",
- pgdata->static_data.hanyuInitialsMap[i].pinyin, pgdata->static_data.hanyuInitialsMap[i].bopomofo);
+ pgdata->staticData.hanyuInitialsMap[i].pinyin, pgdata->staticData.hanyuInitialsMap[i].bopomofo);
if (ret != 2) {
goto fail;
}
}
- ret = fscanf(fd, "%d", &pgdata->static_data.HANYU_FINALS);
+ ret = fscanf(fd, "%d", &pgdata->staticData.HANYU_FINALS);
if (ret != 1) {
goto fail;
}
- ++pgdata->static_data.HANYU_FINALS;
- pgdata->static_data.hanyuFinalsMap = ALC(keymap, pgdata->static_data.HANYU_FINALS);
- for (i = 0; i < pgdata->static_data.HANYU_FINALS - 1; i++) {
+ ++pgdata->staticData.HANYU_FINALS;
+ pgdata->staticData.hanyuFinalsMap = ALC(keymap, pgdata->staticData.HANYU_FINALS);
+ for (i = 0; i < pgdata->staticData.HANYU_FINALS - 1; i++) {
ret = fscanf(fd, "%s %s",
- pgdata->static_data.hanyuFinalsMap[i].pinyin, pgdata->static_data.hanyuFinalsMap[i].bopomofo);
+ pgdata->staticData.hanyuFinalsMap[i].pinyin, pgdata->staticData.hanyuFinalsMap[i].bopomofo);
if (ret != 2) {
goto fail;
}
@@ -198,15 +198,15 @@ int PinyinToBopomofo(ChewingData *pgdata, const char *pinyinKeySeq, char *bopomo
}
- for (i = 0; i < pgdata->static_data.HANYU_INITIALS; i++) {
- p = strstr(pinyinKeySeq, pgdata->static_data.hanyuInitialsMap[i].pinyin);
+ for (i = 0; i < pgdata->staticData.HANYU_INITIALS; i++) {
+ p = strstr(pinyinKeySeq, pgdata->staticData.hanyuInitialsMap[i].pinyin);
if (p == pinyinKeySeq) {
- initial = pgdata->static_data.hanyuInitialsMap[i].bopomofo;
- cursor = pinyinKeySeq + strlen(pgdata->static_data.hanyuInitialsMap[i].pinyin);
+ initial = pgdata->staticData.hanyuInitialsMap[i].bopomofo;
+ cursor = pinyinKeySeq + strlen(pgdata->staticData.hanyuInitialsMap[i].pinyin);
break;
}
}
- if (i == pgdata->static_data.HANYU_INITIALS) {
+ if (i == pgdata->staticData.HANYU_INITIALS) {
/* No initials. might be ㄧㄨㄩ */
/* XXX: I NEED Implementation
if(finalsKeySeq[0] != ) {
@@ -216,13 +216,13 @@ int PinyinToBopomofo(ChewingData *pgdata, const char *pinyinKeySeq, char *bopomo
}
if (cursor) {
- for (i = 0; i < pgdata->static_data.HANYU_FINALS; i++) {
- if (strcmp(cursor, pgdata->static_data.hanyuFinalsMap[i].pinyin) == 0) {
- final = pgdata->static_data.hanyuFinalsMap[i].bopomofo;
+ for (i = 0; i < pgdata->staticData.HANYU_FINALS; i++) {
+ if (strcmp(cursor, pgdata->staticData.hanyuFinalsMap[i].pinyin) == 0) {
+ final = pgdata->staticData.hanyuFinalsMap[i].bopomofo;
break;
}
}
- if (i == pgdata->static_data.HANYU_FINALS) {
+ if (i == pgdata->staticData.HANYU_FINALS) {
return 2;
}
}
diff --git a/src/private.h b/src/private.h
index a282f4d..d436a67 100644
--- a/src/private.h
+++ b/src/private.h
@@ -8,6 +8,42 @@
/* Platform-dependent declaration */
#include "plat_types.h"
+#ifdef WITH_RUST
+#define LOG_VERBOSE(fmt, ...) \
+ do { \
+ } while (0)
+
+#define LOG_DEBUG(fmt, ...) \
+ do { \
+ } while (0)
+
+#define LOG_INFO(fmt, ...) \
+ do { \
+ } while (0)
+
+#define LOG_WARN(fmt, ...) \
+ do { \
+ } while (0)
+
+#define LOG_ERROR(fmt, ...) \
+ do { \
+ } while (0)
+
+#define DEBUG_OUT( fmt, ... ) \
+ do { \
+ } while (0)
+
+#define DEBUG_CHECKPOINT() \
+ do { \
+ } while (0)
+
+/* Use LOG_API to log all public API call. */
+#define LOG_API(fmt, ...) \
+ do { \
+ } while (0)
+
+#else
+
#define LOG_VERBOSE(fmt, ...) \
do { \
pgdata->logger(pgdata->loggerData, CHEWING_LOG_VERBOSE, \
@@ -61,6 +97,7 @@
do { \
LOG_INFO("API call: " fmt, ##__VA_ARGS__); \
} while (0)
+#endif
#define ALC(type, size) \
(type *) calloc(size, sizeof(type))
diff --git a/src/tree.c b/src/tree.c
index f6d70dc..2e2baea 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -77,8 +77,8 @@ static int PhraseIntervalIntersect(PhraseIntervalType in1, PhraseIntervalType in
void TerminateTree(ChewingData *pgdata)
{
- pgdata->static_data.tree = NULL;
- plat_mmap_close(&pgdata->static_data.tree_mmap);
+ pgdata->staticData.tree = NULL;
+ plat_mmap_close(&pgdata->staticData.tree_mmap);
}
@@ -92,15 +92,15 @@ int InitTree(ChewingData *pgdata, const char *prefix)
if (len + 1 > sizeof(filename))
return -1;
- plat_mmap_set_invalid(&pgdata->static_data.tree_mmap);
- pgdata->static_data.tree_size = plat_mmap_create(&pgdata->static_data.tree_mmap, filename, FLAG_ATTRIBUTE_READ);
- if (pgdata->static_data.tree_size <= 0)
+ plat_mmap_set_invalid(&pgdata->staticData.tree_mmap);
+ pgdata->staticData.tree_size = plat_mmap_create(&pgdata->staticData.tree_mmap, filename, FLAG_ATTRIBUTE_READ);
+ if (pgdata->staticData.tree_size <= 0)
return -1;
offset = 0;
- pgdata->static_data.tree =
- (const TreeType *) plat_mmap_set_view(&pgdata->static_data.tree_mmap, &offset, &pgdata->static_data.tree_size);
- if (!pgdata->static_data.tree)
+ pgdata->staticData.tree =
+ (const TreeType *) plat_mmap_set_view(&pgdata->staticData.tree_mmap, &offset, &pgdata->staticData.tree_size);
+ if (!pgdata->staticData.tree)
return -1;
return 0;
@@ -249,7 +249,7 @@ static int CompTreeType(const void *a, const void *b)
const TreeType *TreeFindPhrase(ChewingData *pgdata, int begin, int end, const uint16_t *phoneSeq)
{
TreeType target;
- const TreeType *tree_p = pgdata->static_data.tree;
+ const TreeType *tree_p = pgdata->staticData.tree;
uint32_t range[2];
int i;
@@ -258,7 +258,7 @@ const TreeType *TreeFindPhrase(ChewingData *pgdata, int begin, int end, const ui
range[0] = GetUint24(tree_p->child.begin);
range[1] = GetUint24(tree_p->child.end);
assert(range[1] >= range[0]);
- tree_p = (const TreeType *) bsearch(&target, pgdata->static_data.tree + range[0],
+ tree_p = (const TreeType *) bsearch(&target, pgdata->staticData.tree + range[0],
range[1] - range[0], sizeof(TreeType), CompTreeType);
/* if not found any word then fail. */
@@ -267,7 +267,7 @@ const TreeType *TreeFindPhrase(ChewingData *pgdata, int begin, int end, const ui
}
/* If its child has no key value of 0, then it is only a "half" phrase. */
- if (GetUint16(pgdata->static_data.tree[GetUint24(tree_p->child.begin)].key) != 0)
+ if (GetUint16(pgdata->staticData.tree[GetUint24(tree_p->child.begin)].key) != 0)
return NULL;
return tree_p;
}
@@ -277,8 +277,8 @@ const TreeType *TreeFindPhrase(ChewingData *pgdata, int begin, int end, const ui
*/
void TreeChildRange(ChewingData *pgdata, const TreeType *parent)
{
- pgdata->static_data.tree_cur_pos = pgdata->static_data.tree + GetUint24(parent->child.begin);
- pgdata->static_data.tree_end_pos = pgdata->static_data.tree + GetUint24(parent->child.end);
+ pgdata->staticData.tree_cur_pos = pgdata->staticData.tree + GetUint24(parent->child.begin);
+ pgdata->staticData.tree_end_pos = pgdata->staticData.tree + GetUint24(parent->child.end);
}
static void AddInterval(TreeDataType *ptd, int begin, int end, Phrase *p_phrase, int dict_or_user)
diff --git a/src/userphrase-hash.c b/src/userphrase-hash.c
index 39208a0..48d3558 100644
--- a/src/userphrase-hash.c
+++ b/src/userphrase-hash.c
@@ -150,7 +150,7 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
data.maxfreq = LoadMaxFreq(pgdata, phoneSeq, len);
data.userfreq = data.origfreq;
- data.recentTime = pgdata->static_data.chewing_lifetime;
+ data.recentTime = pgdata->staticData.chewing_lifetime;
pItem = HashInsert(pgdata, &data);
DestroyUserPhraseData(&data);
LogUserPhrase(pgdata, phoneSeq, wordSeq, pItem->data.origfreq, pItem->data.maxfreq, pItem->data.userfreq,
@@ -162,8 +162,8 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
pItem->data.userfreq = UpdateFreq(pItem->data.userfreq,
pItem->data.maxfreq,
pItem->data.origfreq,
- pgdata->static_data.chewing_lifetime - pItem->data.recentTime);
- pItem->data.recentTime = pgdata->static_data.chewing_lifetime;
+ pgdata->staticData.chewing_lifetime - pItem->data.recentTime);
+ pItem->data.recentTime = pgdata->staticData.chewing_lifetime;
LogUserPhrase(pgdata, phoneSeq, wordSeq, pItem->data.origfreq, pItem->data.maxfreq, pItem->data.userfreq,
pItem->data.recentTime);
HashModify(pgdata, pItem);
@@ -232,5 +232,5 @@ void IncreaseLifeTime(ChewingData *pgdata)
{
assert(pgdata);
- ++pgdata->static_data.chewing_lifetime;
+ ++pgdata->staticData.chewing_lifetime;
}
diff --git a/src/userphrase-sql.c b/src/userphrase-sql.c
index f2a125e..abde6eb 100644
--- a/src/userphrase-sql.c
+++ b/src/userphrase-sql.c
@@ -33,14 +33,14 @@ static int UserBindPhone(ChewingData *pgdata, int index, const uint16_t phoneSeq
return -1;
}
- ret = sqlite3_bind_int(pgdata->static_data.stmt_userphrase[index], BIND_USERPHRASE_LENGTH, len);
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_userphrase[index], BIND_USERPHRASE_LENGTH, len);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_bind_int returns %d", ret);
return ret;
}
for (i = 0; i < len; ++i) {
- ret = sqlite3_bind_int(pgdata->static_data.stmt_userphrase[index], BIND_USERPHRASE_PHONE_0 + i, phoneSeq[i]);
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_userphrase[index], BIND_USERPHRASE_PHONE_0 + i, phoneSeq[i]);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_bind_int returns %d", ret);
return ret;
@@ -48,7 +48,7 @@ static int UserBindPhone(ChewingData *pgdata, int index, const uint16_t phoneSeq
}
for (i = len; i < MAX_PHRASE_LEN; ++i) {
- ret = sqlite3_bind_int(pgdata->static_data.stmt_userphrase[index], BIND_USERPHRASE_PHONE_0 + i, 0);
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_userphrase[index], BIND_USERPHRASE_PHONE_0 + i, 0);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_bind_int returns %d", ret);
return ret;
@@ -102,7 +102,7 @@ static int LoadMaxFreq(ChewingData *pgdata, const uint16_t phoneSeq[], int len)
}
free(phrase);
- assert(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_GET_MAX_FREQ]);
+ assert(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_GET_MAX_FREQ]);
ret = UserBindPhone(pgdata, STMT_USERPHRASE_GET_MAX_FREQ, phoneSeq, len);
if (ret != SQLITE_OK) {
@@ -110,17 +110,17 @@ static int LoadMaxFreq(ChewingData *pgdata, const uint16_t phoneSeq[], int len)
return maxFreq;
}
- ret = sqlite3_step(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_GET_MAX_FREQ]);
+ ret = sqlite3_step(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_GET_MAX_FREQ]);
if (ret != SQLITE_ROW)
return maxFreq;
- ret = sqlite3_reset(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_GET_MAX_FREQ]);
+ ret = sqlite3_reset(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_GET_MAX_FREQ]);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_reset returns %d", ret);
return maxFreq;
}
- max_userphrase_freq = sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_GET_MAX_FREQ],
+ max_userphrase_freq = sqlite3_column_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_GET_MAX_FREQ],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_GET_MAX_FREQ].column
[COLUMN_USERPHRASE_USER_FREQ]);
@@ -158,7 +158,7 @@ static int UpdateFreq(int freq, int maxfreq, int origfreq, int deltatime)
static int GetCurrentLifeTime(ChewingData *pgdata)
{
- return pgdata->static_data.new_lifetime;
+ return pgdata->staticData.new_lifetime;
}
static void LogUserPhrase(ChewingData *pgdata,
@@ -181,7 +181,7 @@ static void LogUserPhrase(ChewingData *pgdata,
void UserUpdatePhraseBegin(ChewingData *pgdata)
{
- sqlite3_exec(pgdata->static_data.db, "BEGIN", 0, 0, 0);
+ sqlite3_exec(pgdata->staticData.db, "BEGIN", 0, 0, 0);
}
int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char wordSeq[])
@@ -221,7 +221,7 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
goto end;
}
- ret = sqlite3_bind_text(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE],
+ ret = sqlite3_bind_text(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE],
BIND_USERPHRASE_PHRASE, wordSeq, -1, SQLITE_STATIC);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_bind_text returns %d", ret);
@@ -231,21 +231,21 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
recent_time = GetCurrentLifeTime(pgdata);
- ret = sqlite3_step(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE]);
+ ret = sqlite3_step(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE]);
if (ret == SQLITE_ROW) {
action = USER_UPDATE_MODIFY;
- orig_freq = sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE],
+ orig_freq = sqlite3_column_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE].column
[COLUMN_USERPHRASE_ORIG_FREQ]);
max_freq = LoadMaxFreq(pgdata, phoneSeq, phone_len);
- user_freq = sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE],
+ user_freq = sqlite3_column_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE].column
[COLUMN_USERPHRASE_USER_FREQ]);
- orig_time = sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE],
+ orig_time = sqlite3_column_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE].column
[COLUMN_USERPHRASE_TIME]);
@@ -258,9 +258,9 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
user_freq = orig_freq;
}
- assert(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT]);
+ assert(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_UPSERT]);
- ret = sqlite3_bind_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT],
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_UPSERT],
BIND_USERPHRASE_TIME, recent_time);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_bind_int returns %d", ret);
@@ -268,7 +268,7 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
goto end;
}
- ret = sqlite3_bind_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT],
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_UPSERT],
BIND_USERPHRASE_USER_FREQ, user_freq);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_bind_int returns %d", ret);
@@ -276,7 +276,7 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
goto end;
}
- ret = sqlite3_bind_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT],
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_UPSERT],
BIND_USERPHRASE_MAX_FREQ, max_freq);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_bind_int returns %d", ret);
@@ -284,7 +284,7 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
goto end;
}
- ret = sqlite3_bind_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT],
+ ret = sqlite3_bind_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_UPSERT],
BIND_USERPHRASE_ORIG_FREQ, orig_freq);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_bind_int returns %d", ret);
@@ -299,7 +299,7 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
goto end;
}
- ret = sqlite3_bind_text(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT],
+ ret = sqlite3_bind_text(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_UPSERT],
BIND_USERPHRASE_PHRASE, wordSeq, -1, SQLITE_STATIC);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_bind_text returns %d", ret);
@@ -307,7 +307,7 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
goto end;
}
- ret = sqlite3_step(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT]);
+ ret = sqlite3_step(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_UPSERT]);
if (ret != SQLITE_DONE) {
LOG_ERROR("sqlite3_step returns %d", ret);
action = USER_UPDATE_FAIL;
@@ -317,12 +317,12 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
LogUserPhrase(pgdata, phoneSeq, wordSeq, orig_freq, max_freq, user_freq, recent_time);
end:
- ret = sqlite3_reset(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT]);
+ ret = sqlite3_reset(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_UPSERT]);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_reset returns %d", ret);
}
- ret = sqlite3_reset(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE]);
+ ret = sqlite3_reset(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE]);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_reset returns %d", ret);
}
@@ -332,7 +332,7 @@ int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
void UserUpdatePhraseEnd(ChewingData *pgdata)
{
- sqlite3_exec(pgdata->static_data.db, "END", 0, 0, 0);
+ sqlite3_exec(pgdata->staticData.db, "END", 0, 0, 0);
}
int UserRemovePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char wordSeq[])
@@ -345,7 +345,7 @@ int UserRemovePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
assert(phoneSeq);
assert(wordSeq);
- assert(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_DELETE]);
+ assert(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_DELETE]);
len = GetPhoneLen(phoneSeq);
ret = UserBindPhone(pgdata, STMT_USERPHRASE_DELETE, phoneSeq, len);
@@ -354,23 +354,23 @@ int UserRemovePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char
goto end;
}
- ret = sqlite3_bind_text(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_DELETE],
+ ret = sqlite3_bind_text(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_DELETE],
BIND_USERPHRASE_PHRASE, wordSeq, -1, SQLITE_STATIC);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_bind_text returns %d", ret);
goto end;
}
- ret = sqlite3_step(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_DELETE]);
+ ret = sqlite3_step(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_DELETE]);
if (ret != SQLITE_DONE) {
LOG_ERROR("sqlite3_step returns %d", ret);
goto end;
}
- affected = sqlite3_changes(pgdata->static_data.db);
+ affected = sqlite3_changes(pgdata->staticData.db);
end:
- ret = sqlite3_reset(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_DELETE]);
+ ret = sqlite3_reset(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_DELETE]);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_reset returns %d", ret);
}
@@ -387,8 +387,8 @@ UserPhraseData *UserGetPhraseFirst(ChewingData *pgdata, const uint16_t phoneSeq[
assert(pgdata);
assert(phoneSeq);
- assert(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE]);
- ret = sqlite3_reset(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE]);
+ assert(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE]);
+ ret = sqlite3_reset(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE]);
if (ret != SQLITE_OK) {
LOG_ERROR("sqlite3_reset returns %d", ret);
return NULL;
@@ -411,31 +411,31 @@ UserPhraseData *UserGetPhraseNext(ChewingData *pgdata, const uint16_t phoneSeq[]
assert(pgdata);
assert(phoneSeq);
- ret = sqlite3_step(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE]);
+ ret = sqlite3_step(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE]);
if (ret != SQLITE_ROW)
return NULL;
/* FIXME: shall not remove const here. */
pgdata->userphrase_data.wordSeq =
- (char *) sqlite3_column_text(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE],
+ (char *) sqlite3_column_text(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT_BY_PHONE].column
[COLUMN_USERPHRASE_PHRASE]);
pgdata->userphrase_data.phoneSeq = (uint16_t *) phoneSeq;
pgdata->userphrase_data.recentTime =
- sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE],
+ sqlite3_column_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT_BY_PHONE].column[COLUMN_USERPHRASE_TIME]);
pgdata->userphrase_data.userfreq =
- sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE],
+ sqlite3_column_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT_BY_PHONE].column[COLUMN_USERPHRASE_USER_FREQ]);
pgdata->userphrase_data.maxfreq =
- sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE],
+ sqlite3_column_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT_BY_PHONE].column[COLUMN_USERPHRASE_MAX_FREQ]);
pgdata->userphrase_data.origfreq =
- sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE],
+ sqlite3_column_int(pgdata->staticData.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE],
SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT_BY_PHONE].column[COLUMN_USERPHRASE_ORIG_FREQ]);
return &pgdata->userphrase_data;
@@ -448,5 +448,5 @@ void UserGetPhraseEnd(ChewingData *pgdata UNUSED, const uint16_t phoneSeq[] UNUS
void IncreaseLifeTime(ChewingData *pgdata)
{
- ++pgdata->static_data.new_lifetime;
+ ++pgdata->staticData.new_lifetime;
}
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 821bf58..a8d2a0e 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -4,11 +4,9 @@ set(ALL_TESTCASES
test-easy-symbol
test-error-handling
test-fullshape
- test-key2pho
test-keyboard
test-keyboardless
test-logger
- test-mmap
test-path
test-regression
test-reset
@@ -18,6 +16,12 @@ set(ALL_TESTCASES
test-userphrase
test-utf8
)
+if (NOT WITH_RUST)
+ list(APPEND ALL_TESTCASES
+ test-key2pho
+ test-mmap
+ )
+endif()
set(ALL_TESTTOOLS
performance
randkeystroke
@@ -50,6 +54,7 @@ foreach(target ${ALL_TESTS})
add_executable(${target} ${TEST_SRC_DIR}/${target}.c)
if (WITH_RUST)
target_link_libraries(${target} chewing-internal)
+ target_link_libraries(${target} ${SQLITE3_LIBRARY})
endif()
add_dependencies(${target} data all_static_data)
add_dependencies(check ${target})
@@ -60,7 +65,9 @@ add_library(testhelper STATIC
$<TARGET_OBJECTS:chewing>
$<TARGET_OBJECTS:common>
)
-target_link_libraries(testhelper userphrase)
+if (NOT WITH_RUST)
+ target_link_libraries(testhelper userphrase)
+endif()
target_compile_definitions(testhelper PRIVATE
CHEWING_DATA_PREFIX=\"${DATA_BIN_DIR}\"
TEST_HASH_DIR=\"${TEST_BIN_DIR}\"
diff --git a/test/test-bopomofo.c b/test/test-bopomofo.c
index 37e01f2..fa519dd 100644
--- a/test/test-bopomofo.c
+++ b/test/test-bopomofo.c
@@ -17,8 +17,13 @@
#include <stdio.h>
#include <string.h>
+#ifdef WITH_RUST
+#include "chewing_internal.h"
+#else
#include "key2pho-private.h"
#include "bopomofo-private.h"
+#endif
+
#include "plat_types.h"
#include "testhelper.h"
diff --git a/test/test-path.c b/test/test-path.c
index 12d6510..ac24330 100644
--- a/test/test-path.c
+++ b/test/test-path.c
@@ -27,6 +27,16 @@ FILE *fd;
int find_path_by_files(const char *search_path, const char *const *files, char *output, size_t output_len);
+#ifdef WITH_RUST
+static const char *FILES[] = {
+ "tsi.dat",
+ "word.dat",
+ SYMBOL_TABLE_FILE,
+ SOFTKBD_TABLE_FILE,
+ PINYIN_TAB_NAME,
+ NULL,
+};
+#else
static const char *FILES[] = {
DICT_FILE,
PHONE_TREE_FILE,
@@ -35,6 +45,7 @@ static const char *FILES[] = {
PINYIN_TAB_NAME,
NULL,
};
+#endif
void test_plat_get_search_path()
{
diff --git a/test/testhelper.c b/test/testhelper.c
index becb754..e1a5c46 100644
--- a/test/testhelper.c
+++ b/test/testhelper.c
@@ -17,10 +17,16 @@
#include <string.h>
#include "chewing-private.h"
+
+#ifdef WITH_RUST
+#include "plat_types.h"
+#else
#include "chewing-utf8-util.h"
#include "key2pho-private.h"
-#include "plat_path.h"
#include "userphrase-private.h"
+#include "plat_path.h"
+#endif
+
static unsigned int test_run;
static unsigned int test_ok;
diff --git a/test/testhelper.h b/test/testhelper.h
index dc2f2f7..9dbb1a5 100644
--- a/test/testhelper.h
+++ b/test/testhelper.h
@@ -15,9 +15,17 @@
#include "chewing.h"
#include "chewingio.h"
-#include "chewing-utf8-util.h"
+#ifdef WITH_RUST
+#if WITH_SQLITE3
+# define DB_NAME "chewing.sqlite3"
+#else
+# define DB_NAME "uhash.dat"
+#endif
+#else
+#include "chewing-utf8-util.h"
#include "plat_path.h"
+#endif
/* The following macros are modified from GLIB.
* from GNU cpp Manual:
diff --git a/tools/Cargo.toml b/tools/Cargo.toml
new file mode 100644
index 0000000..3ec74b9
--- /dev/null
+++ b/tools/Cargo.toml
@@ -0,0 +1,12 @@
+[package]
+name = "chewing-tools"
+description = "Tools of the Chewing (酷音) intelligent Zhuyin input method."
+license = "LGPL-2.1-or-later"
+version = "0.5.1-alpha.1"
+edition = "2021"
+
+[dependencies]
+chewing = { version = "0.5.1-alpha.1", path = ".." }
+thiserror = "1.0.0"
+anyhow = "1.0.0"
+clap = "4.1.0"
diff --git a/tools/src/bin/
init_database.rs b/tools/src/bin/
init_database.rs
new file mode 100644
index 0000000..500958a
--- /dev/null
+++ b/tools/src/bin/
init_database.rs
@@ -0,0 +1,121 @@
+use std::{
+ fs::{self, File},
+ io::{BufRead, BufReader},
+ path::Path,
+};
+
+use anyhow::{bail, Context, Result};
+use chewing::{
+ dictionary::{
+ DictionaryBuilder, DictionaryInfo, SqliteDictionaryBuilder, TrieDictionaryBuilder,
+ },
+ zhuyin::{Bopomofo, Syllable},
+};
+use clap::{Arg, ArgAction, Command};
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+#[error("parsing failed at line {line_num}")]
+struct ParseError {
+ line_num: usize,
+ column: usize,
+ #[source]
+ source: anyhow::Error,
+}
+
+trait IntoParseError<T> {
+ fn parse_error(self, line_num: usize, column: usize) -> std::result::Result<T, ParseError>;
+}
+
+impl<T> IntoParseError<T> for Result<T> {
+ fn parse_error(self, line_num: usize, column: usize) -> std::result::Result<T, ParseError> {
+ self.map_err(|source| ParseError {
+ line_num,
+ column,
+ source,
+ })
+ }
+}
+
+fn main() -> Result<()> {
+ let m = Command::new("init_database")
+ .about("This program creates a new chewing phrase dictionary file.")
+ .arg(
+ Arg::new("type")
+ .short('t')
+ .value_parser(["sqlite", "trie"])
+ .default_value("trie"),
+ )
+ .arg(Arg::new("name").short('n').default_value("我的詞庫"))
+ .arg(Arg::new("copyright").short('c').default_value("Unknown"))
+ .arg(Arg::new("license").short('l').default_value("Unknown"))
+ .arg(Arg::new("version").short('r').default_value("1.0.0"))
+ .arg(
+ Arg::new("keep-word-freq")
+ .short('k')
+ .action(ArgAction::SetTrue),
+ )
+ .arg(Arg::new("tsi.src").required(true))
+ .arg(Arg::new("output").required(true))
+ .arg_required_else_help(true)
+ .get_matches();
+
+ let tsi_src: &String = m.get_one("tsi.src").unwrap();
+ let output: &String = m.get_one("output").unwrap();
+ let db_type: &String = m.get_one("type").unwrap();
+ let name: &String = m.get_one("name").unwrap();
+ let copyright: &String = m.get_one("copyright").unwrap();
+ let license: &String = m.get_one("license").unwrap();
+ let version: &String = m.get_one("version").unwrap();
+ let keep_word_freq: bool = m.get_flag("keep-word-freq");
+
+ let mut builder: Box<dyn DictionaryBuilder> = match db_type.as_str() {
+ "sqlite" => Box::new(SqliteDictionaryBuilder::new()),
+ "trie" => Box::new(TrieDictionaryBuilder::new()),
+ _ => bail!("Unknown database type {}", db_type),
+ };
+
+ builder.set_info(DictionaryInfo {
+ name: name.to_owned().into(),
+ copyright: copyright.to_owned().into(),
+ license: license.to_owned().into(),
+ version: version.to_owned().into(),
+ software: format!("{} {}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")).into(),
+ })?;
+
+ let tsi = File::open(tsi_src)?;
+ let reader = BufReader::new(tsi);
+ for (line_num, line) in reader.lines().enumerate() {
+ let mut syllables = vec![];
+ let line = line?;
+ let phrase = line.split_ascii_whitespace().next().unwrap();
+ let freq: u32 = match phrase.chars().count() {
+ 1 if !keep_word_freq => 0,
+ _ => line
+ .split_ascii_whitespace()
+ .nth(1)
+ .unwrap()
+ .parse()
+ .context("unable to parse frequency")
+ .parse_error(line_num, 0)?,
+ };
+ for syllable_str in line.split_ascii_whitespace().skip(2) {
+ let mut syllable_builder = Syllable::builder();
+ if syllable_str.starts_with('#') {
+ break;
+ }
+ for c in syllable_str.chars() {
+ syllable_builder = syllable_builder.insert(Bopomofo::try_from(c)?)?;
+ }
+ syllables.push(syllable_builder.build());
+ }
+ builder.insert(&syllables, (phrase, freq).into())?;
+ }
+ let path: &Path = output.as_ref();
+ if path.exists() {
+ fs::remove_file(path).context("unable to overwrite output")?;
+ }
+ builder.build(path)?;
+
+ Ok(())
+}
--
2.39.1