package dict

import (
	"strings"
)

// RADKFILE substitute glyph conventions:
//
// In Michael Raine's original 1994-1995 decomposition for JIS X 0208 and Jim Breen's
// EDRDG RADKFILE/KRADFILE, standard full kanji characters and fullwidth/katakana symbols
// were adopted as placeholders (substitute glyphs) for visual radical forms that had
// no dedicated codepoint in JIS X 0208:
//
//   化 <-> ⺅ (ninben, person radical on left)
//   刈 <-> ⺉ (rittō, knife radical on right)
//   込 <-> 辶 / ⻌ (shinnyō, walk/road radical)
//   汁 <-> 氵 (sanzui, water radical on left)
//   初 <-> 衤 (koromohen, clothing radical on left)
//   尚 <-> ⺌ (shōkanmuri, small radical variant on top)
//   買 <-> 罒 (amigashira, net radical on top)
//   犯 <-> 犭 (kemonohen, animal/dog radical on left)
//   忙 <-> 忄 (risshinben, heart radical on left)
//   礼 <-> 礻 (shimesuhen, altar radical on left)
//   个 <-> 𠆢 (hitoyane, roof/person variant on top)
//   老 <-> ⺹ (oikanmuri, old radical variant)
//   扎 <-> 扌 (tehen, hand radical on left)
//   杰 <-> 灬 (renga/rekka, fire dots on bottom)
//   疔 <-> 疒 (yamaidare, sickness radical)
//   禹 <-> 禸 (jū, track radical)
//   艾 <-> 艹 (kusakanmuri, grass radical on top)
//   邦 <-> ⻏ (ōzato, city/village radical on right)
//   阡 <-> ⻖ (kozatohen, hill/mound radical on left)
//   并 <-> 丷 (Nelson two-stroke horns radical)
//   滴 <-> 啇 (11-stroke constituent element)
//   ｜ <-> 丨 (fullwidth vertical line to Kangxi radical line)
//   ノ <-> 丿 (katakana no to Kangxi radical slash)

// ToDisplayForm maps a legacy KRADFILE/RADKFILE placeholder glyph to its real component form.
var ToDisplayForm = map[rune]rune{
	'化': '⺅',
	'刈': '⺉',
	'込': '辶',
	'汁': '氵',
	'初': '衤',
	'尚': '⺌',
	'買': '罒',
	'犯': '犭',
	'忙': '忄',
	'礼': '礻',
	'个': '𠆢',
	'老': '⺹',
	'扎': '扌',
	'杰': '灬',
	'疔': '疒',
	'禹': '禸',
	'艾': '艹',
	'邦': '⻏',
	'阡': '⻖',
	'并': '丷',
	'滴': '啇',
	'｜': '丨',
	'ノ': '丿',
}

// DisplayComponent returns the display component form for r if r is a placeholder.
func DisplayComponent(r rune) rune {
	if disp, ok := ToDisplayForm[r]; ok {
		return disp
	}
	return r
}

// ToPlaceholderForm maps a real component form back to its legacy RADKFILE placeholder glyph.
var ToPlaceholderForm = map[rune]rune{
	'⺅': '化',
	'亻': '化',
	'⺉': '刈',
	'刂': '刈',
	'⻌': '込',
	'辶': '込',
	'辵': '込',
	'⺡': '汁',
	'氵': '汁',
	'衤': '初',
	'⺌': '尚',
	'⺍': '尚',
	'罒': '買',
	'⺲': '買',
	'犭': '犯',
	'忄': '忙',
	'礻': '礼',
	'𠆢': '个',
	'⺹': '老',
	'扌': '扎',
	'灬': '杰',
	'疒': '疔',
	'禸': '禹',
	'⺾': '艾',
	'艹': '艾',
	'⻏': '邦',
	'⻖': '阡',
	'阝': '阡',
	'丷': '并',
	'啇': '滴',
	'丨': '｜',
	'丿': 'ノ',
}

// CleanKanjidicMeaning cleans non-radical KANJIDIC2 meanings by stripping "... radical (no. N)" suffixes.
func CleanKanjidicMeaning(m string) string {
	cleaned := m
	if idx := strings.Index(strings.ToLower(cleaned), " radical"); idx >= 0 {
		cleaned = cleaned[:idx]
	}
	if idx := strings.Index(cleaned, "(no."); idx >= 0 {
		cleaned = cleaned[:idx]
	}
	cleaned = strings.TrimSpace(cleaned)
	cleaned = strings.Trim(cleaned, ".,;:!?-")
	return strings.ToLower(cleaned)
}

// kangxiRadicalNames maps Kangxi radicals (1..214) and their variants per CJKRadicals.txt
// to their lowercased Unicode radical names.
var kangxiRadicalNames = map[rune]string{
	'\u2E85':     "person",
	'\u2E89':     "knife",
	'\u2E8C':     "small",
	'\u2E8D':     "small",
	'\u2E97':     "heart",
	'\u2EA1':     "water",
	'\u2EA6':     "half tree trunk",
	'\u2EB0':     "silk",
	'\u2EB2':     "net",
	'\u2EB9':     "old",
	'\u2EBE':     "grass",
	'\u2EBF':     "grass",
	'\u2EC5':     "see",
	'\u2EC8':     "words",
	'\u2EC9':     "shell",
	'\u2ECB':     "cart",
	'\u2ECC':     "walk",
	'\u2ECD':     "walk",
	'\u2ECF':     "city",
	'\u2ED0':     "gold",
	'\u2ED3':     "long",
	'\u2ED4':     "gate",
	'\u2ED6':     "mound",
	'\u2ED9':     "tanned leather",
	'\u2EDA':     "leaf",
	'\u2EDB':     "wind",
	'\u2EDC':     "fly",
	'\u2EE0':     "eat",
	'\u2EE2':     "horse",
	'\u2EE5':     "fish",
	'\u2EE6':     "bird",
	'\u2EE7':     "salt",
	'\u2EE8':     "wheat",
	'\u2EE9':     "yellow",
	'\u2EEA':     "frog",
	'\u2EEB':     "even",
	'\u2EEC':     "even",
	'\u2EED':     "tooth",
	'\u2EEE':     "tooth",
	'\u2EEF':     "dragon",
	'\u2EF0':     "dragon",
	'\u2EF2':     "turtle",
	'\u2EF3':     "turtle",
	'\u2F00':     "one",
	'\u2F01':     "line",
	'\u2F02':     "dot",
	'\u2F03':     "slash",
	'\u2F04':     "second",
	'\u2F05':     "hook",
	'\u2F06':     "two",
	'\u2F07':     "lid",
	'\u2F08':     "person",
	'\u2F09':     "legs",
	'\u2F0A':     "enter",
	'\u2F0B':     "eight",
	'\u2F0C':     "down box",
	'\u2F0D':     "cover",
	'\u2F0E':     "ice",
	'\u2F0F':     "table",
	'\u2F10':     "open box",
	'\u2F11':     "knife",
	'\u2F12':     "power",
	'\u2F13':     "wrap",
	'\u2F14':     "spoon",
	'\u2F15':     "box",
	'\u2F16':     "hiding enclosure",
	'\u2F17':     "ten",
	'\u2F18':     "divination",
	'\u2F19':     "seal",
	'\u2F1A':     "cliff",
	'\u2F1B':     "private",
	'\u2F1C':     "again",
	'\u2F1D':     "mouth",
	'\u2F1E':     "enclosure",
	'\u2F1F':     "earth",
	'\u2F20':     "scholar",
	'\u2F21':     "go slowly",
	'\u2F22':     "go",
	'\u2F23':     "evening",
	'\u2F24':     "big",
	'\u2F25':     "woman",
	'\u2F26':     "child",
	'\u2F27':     "roof",
	'\u2F28':     "inch",
	'\u2F29':     "small",
	'\u2F2A':     "lame",
	'\u2F2B':     "corpse",
	'\u2F2C':     "sprout",
	'\u2F2D':     "mountain",
	'\u2F2E':     "river",
	'\u2F2F':     "work",
	'\u2F30':     "oneself",
	'\u2F31':     "turban",
	'\u2F32':     "dry",
	'\u2F33':     "short thread",
	'\u2F34':     "dotted cliff",
	'\u2F35':     "long stride",
	'\u2F36':     "two hands",
	'\u2F37':     "shoot",
	'\u2F38':     "bow",
	'\u2F39':     "snout",
	'\u2F3A':     "bristle",
	'\u2F3B':     "step",
	'\u2F3C':     "heart",
	'\u2F3D':     "halberd",
	'\u2F3E':     "door",
	'\u2F3F':     "hand",
	'\u2F40':     "branch",
	'\u2F41':     "rap",
	'\u2F42':     "script",
	'\u2F43':     "dipper",
	'\u2F44':     "axe",
	'\u2F45':     "square",
	'\u2F46':     "not",
	'\u2F47':     "sun",
	'\u2F48':     "say",
	'\u2F49':     "moon",
	'\u2F4A':     "tree",
	'\u2F4B':     "lack",
	'\u2F4C':     "stop",
	'\u2F4D':     "death",
	'\u2F4E':     "weapon",
	'\u2F4F':     "do not",
	'\u2F50':     "compare",
	'\u2F51':     "fur",
	'\u2F52':     "clan",
	'\u2F53':     "steam",
	'\u2F54':     "water",
	'\u2F55':     "fire",
	'\u2F56':     "claw",
	'\u2F57':     "father",
	'\u2F58':     "double x",
	'\u2F59':     "half tree trunk",
	'\u2F5A':     "slice",
	'\u2F5B':     "fang",
	'\u2F5C':     "cow",
	'\u2F5D':     "dog",
	'\u2F5E':     "profound",
	'\u2F5F':     "jade",
	'\u2F60':     "melon",
	'\u2F61':     "tile",
	'\u2F62':     "sweet",
	'\u2F63':     "life",
	'\u2F64':     "use",
	'\u2F65':     "field",
	'\u2F66':     "bolt of cloth",
	'\u2F67':     "sickness",
	'\u2F68':     "footsteps",
	'\u2F69':     "white",
	'\u2F6A':     "skin",
	'\u2F6B':     "dish",
	'\u2F6C':     "eye",
	'\u2F6D':     "spear",
	'\u2F6E':     "arrow",
	'\u2F6F':     "stone",
	'\u2F70':     "spirit",
	'\u2F71':     "track",
	'\u2F72':     "grain",
	'\u2F73':     "cave",
	'\u2F74':     "stand",
	'\u2F75':     "bamboo",
	'\u2F76':     "rice",
	'\u2F77':     "silk",
	'\u2F78':     "jar",
	'\u2F79':     "net",
	'\u2F7A':     "sheep",
	'\u2F7B':     "feather",
	'\u2F7C':     "old",
	'\u2F7D':     "and",
	'\u2F7E':     "plow",
	'\u2F7F':     "ear",
	'\u2F80':     "brush",
	'\u2F81':     "meat",
	'\u2F82':     "minister",
	'\u2F83':     "oneself",
	'\u2F84':     "arrive",
	'\u2F85':     "mortar",
	'\u2F86':     "tongue",
	'\u2F87':     "oppose",
	'\u2F88':     "boat",
	'\u2F89':     "stopping",
	'\u2F8A':     "color",
	'\u2F8B':     "grass",
	'\u2F8C':     "tiger",
	'\u2F8D':     "insect",
	'\u2F8E':     "blood",
	'\u2F8F':     "walk enclosure",
	'\u2F90':     "clothes",
	'\u2F91':     "west",
	'\u2F92':     "see",
	'\u2F93':     "horn",
	'\u2F94':     "words",
	'\u2F95':     "valley",
	'\u2F96':     "bean",
	'\u2F97':     "pig",
	'\u2F98':     "badger",
	'\u2F99':     "shell",
	'\u2F9A':     "red",
	'\u2F9B':     "run",
	'\u2F9C':     "foot",
	'\u2F9D':     "body",
	'\u2F9E':     "cart",
	'\u2F9F':     "bitter",
	'\u2FA0':     "morning",
	'\u2FA1':     "walk",
	'\u2FA2':     "city",
	'\u2FA3':     "wine",
	'\u2FA4':     "distinguish",
	'\u2FA5':     "village",
	'\u2FA6':     "gold",
	'\u2FA7':     "long",
	'\u2FA8':     "gate",
	'\u2FA9':     "mound",
	'\u2FAA':     "slave",
	'\u2FAB':     "short-tailed bird",
	'\u2FAC':     "rain",
	'\u2FAD':     "blue",
	'\u2FAE':     "wrong",
	'\u2FAF':     "face",
	'\u2FB0':     "leather",
	'\u2FB1':     "tanned leather",
	'\u2FB2':     "leek",
	'\u2FB3':     "sound",
	'\u2FB4':     "leaf",
	'\u2FB5':     "wind",
	'\u2FB6':     "fly",
	'\u2FB7':     "eat",
	'\u2FB8':     "head",
	'\u2FB9':     "fragrant",
	'\u2FBA':     "horse",
	'\u2FBB':     "bone",
	'\u2FBC':     "tall",
	'\u2FBD':     "hair",
	'\u2FBE':     "fight",
	'\u2FBF':     "sacrificial wine",
	'\u2FC0':     "cauldron",
	'\u2FC1':     "ghost",
	'\u2FC2':     "fish",
	'\u2FC3':     "bird",
	'\u2FC4':     "salt",
	'\u2FC5':     "deer",
	'\u2FC6':     "wheat",
	'\u2FC7':     "hemp",
	'\u2FC8':     "yellow",
	'\u2FC9':     "millet",
	'\u2FCA':     "black",
	'\u2FCB':     "embroidery",
	'\u2FCC':     "frog",
	'\u2FCD':     "tripod",
	'\u2FCE':     "drum",
	'\u2FCF':     "rat",
	'\u2FD0':     "nose",
	'\u2FD1':     "even",
	'\u2FD2':     "tooth",
	'\u2FD3':     "dragon",
	'\u2FD4':     "turtle",
	'\u2FD5':     "flute",
	'\u30CE':     "slash",
	'\u30CF':     "eight",
	'\u30DE':     "comma",
	'\u30E6':     "katakana yu",
	'\u30E8':     "snout",
	'\u4E00':     "one",
	'\u4E28':     "line",
	'\u4E2A':     "person",
	'\u4E2C':     "half tree trunk",
	'\u4E36':     "dot",
	'\u4E37':     "horns",
	'\u4E3F':     "slash",
	'\u4E59':     "second",
	'\u4E80':     "turtle",
	'\u4E85':     "hook",
	'\u4E8C':     "two",
	'\u4EA0':     "lid",
	'\u4EBA':     "person",
	'\u4EBB':     "person",
	'\u513F':     "legs",
	'\u5165':     "enter",
	'\u516B':     "eight",
	'\u5182':     "down box",
	'\u5196':     "cover",
	'\u51AB':     "ice",
	'\u51E0':     "table",
	'\u51F5':     "open box",
	'\u5200':     "knife",
	'\u5202':     "knife",
	'\u5208':     "knife",
	'\u521D':     "clothes",
	'\u529B':     "power",
	'\u52F9':     "wrap",
	'\u5315':     "spoon",
	'\u531A':     "box",
	'\u5338':     "hiding enclosure",
	'\u5341':     "ten",
	'\u535C':     "divination",
	'\u5364':     "salt",
	'\u5369':     "seal",
	'\u5382':     "cliff",
	'\u53B6':     "private",
	'\u53C8':     "again",
	'\u53E3':     "mouth",
	'\u5547':     "stem",
	'\u56D7':     "enclosure",
	'\u571F':     "earth",
	'\u58EB':     "scholar",
	'\u5902':     "go slowly",
	'\u590A':     "go",
	'\u5915':     "evening",
	'\u5927':     "big",
	'\u5973':     "woman",
	'\u5B50':     "child",
	'\u5B80':     "roof",
	'\u5BF8':     "inch",
	'\u5C0F':     "small",
	'\u5C1A':     "small",
	'\u5C22':     "lame",
	'\u5C38':     "corpse",
	'\u5C6E':     "sprout",
	'\u5C71':     "mountain",
	'\u5DDB':     "river",
	'\u5DE5':     "work",
	'\u5DF1':     "oneself",
	'\u5DFE':     "turban",
	'\u5E72':     "dry",
	'\u5E76':     "horns",
	'\u5E7A':     "short thread",
	'\u5E7F':     "dotted cliff",
	'\u5EF4':     "long stride",
	'\u5EFE':     "two hands",
	'\u5F0B':     "shoot",
	'\u5F13':     "bow",
	'\u5F50':     "snout",
	'\u5F61':     "bristle",
	'\u5F73':     "step",
	'\u5FC3':     "heart",
	'\u5FC4':     "heart",
	'\u5FD9':     "heart",
	'\u6208':     "halberd",
	'\u6236':     "door",
	'\u624B':     "hand",
	'\u624C':     "hand",
	'\u624E':     "hand",
	'\u652F':     "branch",
	'\u6534':     "rap",
	'\u6587':     "script",
	'\u6589':     "even",
	'\u6597':     "dipper",
	'\u65A4':     "axe",
	'\u65B9':     "square",
	'\u65E0':     "not",
	'\u65E5':     "sun",
	'\u66F0':     "say",
	'\u6708':     "moon",
	'\u6728':     "tree",
	'\u6770':     "fire",
	'\u6B20':     "lack",
	'\u6B62':     "stop",
	'\u6B6F':     "tooth",
	'\u6B79':     "death",
	'\u6BB3':     "weapon",
	'\u6BCB':     "do not",
	'\u6BD4':     "compare",
	'\u6BDB':     "fur",
	'\u6C0F':     "clan",
	'\u6C14':     "steam",
	'\u6C34':     "water",
	'\u6C35':     "water",
	'\u6C3A':     "water",
	'\u6C41':     "water",
	'\u6EF4':     "stem",
	'\u706B':     "fire",
	'\u706C':     "fire",
	'\u722A':     "claw",
	'\u7236':     "father",
	'\u723B':     "double x",
	'\u723F':     "half tree trunk",
	'\u7247':     "slice",
	'\u7259':     "fang",
	'\u725B':     "cow",
	'\u72AC':     "dog",
	'\u72AD':     "dog",
	'\u72AF':     "dog",
	'\u7384':     "profound",
	'\u7389':     "jade",
	'\u74DC':     "melon",
	'\u74E6':     "tile",
	'\u7518':     "sweet",
	'\u751F':     "life",
	'\u7528':     "use",
	'\u7530':     "field",
	'\u758B':     "bolt of cloth",
	'\u7592':     "sickness",
	'\u7594':     "sickness",
	'\u7676':     "footsteps",
	'\u767D':     "white",
	'\u76AE':     "skin",
	'\u76BF':     "dish",
	'\u76EE':     "eye",
	'\u77DB':     "spear",
	'\u77E2':     "arrow",
	'\u77F3':     "stone",
	'\u793A':     "spirit",
	'\u793B':     "spirit",
	'\u793C':     "spirit",
	'\u79B8':     "track",
	'\u79B9':     "track",
	'\u79BE':     "grain",
	'\u7A74':     "cave",
	'\u7ACB':     "stand",
	'\u7ADC':     "dragon",
	'\u7AF9':     "bamboo",
	'\u7C73':     "rice",
	'\u7CF8':     "silk",
	'\u7E9F':     "silk",
	'\u7F36':     "jar",
	'\u7F51':     "net",
	'\u7F52':     "net",
	'\u7F8A':     "sheep",
	'\u7FBD':     "feather",
	'\u8001':     "old",
	'\u8002':     "old",
	'\u800C':     "and",
	'\u8012':     "plow",
	'\u8033':     "ear",
	'\u807F':     "brush",
	'\u8089':     "meat",
	'\u81E3':     "minister",
	'\u81EA':     "oneself",
	'\u81F3':     "arrive",
	'\u81FC':     "mortar",
	'\u820C':     "tongue",
	'\u821B':     "oppose",
	'\u821F':     "boat",
	'\u826E':     "stopping",
	'\u8272':     "color",
	'\u8278':     "grass",
	'\u8279':     "grass",
	'\u827E':     "grass",
	'\u864D':     "tiger",
	'\u866B':     "insect",
	'\u8840':     "blood",
	'\u884C':     "walk enclosure",
	'\u8863':     "clothes",
	'\u8864':     "clothes",
	'\u897E':     "west",
	'\u898B':     "see",
	'\u89C1':     "see",
	'\u89D2':     "horn",
	'\u8A00':     "words",
	'\u8BA0':     "words",
	'\u8C37':     "valley",
	'\u8C46':     "bean",
	'\u8C55':     "pig",
	'\u8C78':     "badger",
	'\u8C9D':     "shell",
	'\u8CB7':     "net",
	'\u8D1D':     "shell",
	'\u8D64':     "red",
	'\u8D70':     "run",
	'\u8DB3':     "foot",
	'\u8EAB':     "body",
	'\u8ECA':     "cart",
	'\u8F66':     "cart",
	'\u8F9B':     "bitter",
	'\u8FB0':     "morning",
	'\u8FB5':     "walk",
	'\u8FB6':     "walk",
	'\u8FBC':     "walk",
	'\u9091':     "city",
	'\u90A6':     "city",
	'\u9149':     "wine",
	'\u91C6':     "distinguish",
	'\u91CC':     "village",
	'\u91D1':     "gold",
	'\u9485':     "gold",
	'\u9577':     "long",
	'\u957F':     "long",
	'\u9580':     "gate",
	'\u95E8':     "gate",
	'\u961C':     "mound",
	'\u961D':     "mound",
	'\u9621':     "mound",
	'\u96B6':     "slave",
	'\u96B9':     "short-tailed bird",
	'\u96E8':     "rain",
	'\u9751':     "blue",
	'\u975E':     "wrong",
	'\u9762':     "face",
	'\u9769':     "leather",
	'\u97CB':     "tanned leather",
	'\u97E6':     "tanned leather",
	'\u97ED':     "leek",
	'\u97F3':     "sound",
	'\u9801':     "leaf",
	'\u9875':     "leaf",
	'\u98A8':     "wind",
	'\u98CE':     "wind",
	'\u98DB':     "fly",
	'\u98DE':     "fly",
	'\u98DF':     "eat",
	'\u9963':     "eat",
	'\u9996':     "head",
	'\u9999':     "fragrant",
	'\u99AC':     "horse",
	'\u9A6C':     "horse",
	'\u9AA8':     "bone",
	'\u9AD8':     "tall",
	'\u9ADF':     "hair",
	'\u9B25':     "fight",
	'\u9B2F':     "sacrificial wine",
	'\u9B32':     "cauldron",
	'\u9B3C':     "ghost",
	'\u9B5A':     "fish",
	'\u9C7C':     "fish",
	'\u9CE5':     "bird",
	'\u9E1F':     "bird",
	'\u9E75':     "salt",
	'\u9E7F':     "deer",
	'\u9EA5':     "wheat",
	'\u9EA6':     "wheat",
	'\u9EBB':     "hemp",
	'\u9EC3':     "yellow",
	'\u9EC4':     "yellow",
	'\u9ECD':     "millet",
	'\u9ED1':     "black",
	'\u9EF9':     "embroidery",
	'\u9EFD':     "frog",
	'\u9EFE':     "frog",
	'\u9F0E':     "tripod",
	'\u9F13':     "drum",
	'\u9F20':     "rat",
	'\u9F21':     "rat",
	'\u9F3B':     "nose",
	'\u9F4A':     "even",
	'\u9F50':     "even",
	'\u9F52':     "tooth",
	'\u9F7F':     "tooth",
	'\u9F8D':     "dragon",
	'\u9F99':     "dragon",
	'\u9F9C':     "turtle",
	'\u9F9F':     "turtle",
	'\u9FA0':     "flute",
	'\uFF5C':     "line",
	'\U000201A2': "person",
	'\U00031DE5': "dragon",
	'\U000322C4': "wind",
}

// radicalNames maps additional characters to their Unicode names.
var radicalNames = map[rune]string{
	'\u2E80':     "repeat",
	'\u2E81':     "cliff",
	'\u2E82':     "second",
	'\u2E83':     "second",
	'\u2E84':     "second",
	'\u2E85':     "person",
	'\u2E86':     "box",
	'\u2E87':     "table",
	'\u2E88':     "knife",
	'\u2E89':     "knife",
	'\u2E8A':     "divination",
	'\u2E8B':     "seal",
	'\u2E8C':     "small",
	'\u2E8D':     "small",
	'\u2E8E':     "lame",
	'\u2E8F':     "lame",
	'\u2E90':     "lame",
	'\u2E91':     "lame",
	'\u2E92':     "snake",
	'\u2E93':     "thread",
	'\u2E94':     "snout",
	'\u2E95':     "snout",
	'\u2E96':     "heart",
	'\u2E97':     "heart",
	'\u2E98':     "hand",
	'\u2E99':     "rap",
	'\u2E9B':     "choke",
	'\u2E9C':     "sun",
	'\u2E9D':     "moon",
	'\u2E9E':     "death",
	'\u2E9F':     "mother",
	'\u2EA0':     "civilian",
	'\u2EA1':     "water",
	'\u2EA2':     "water",
	'\u2EA3':     "fire",
	'\u2EA4':     "paw",
	'\u2EA5':     "paw",
	'\u2EA6':     "half tree trunk",
	'\u2EA7':     "cow",
	'\u2EA8':     "dog",
	'\u2EA9':     "jade",
	'\u2EAA':     "bolt of cloth",
	'\u2EAB':     "eye",
	'\u2EAC':     "spirit",
	'\u2EAD':     "spirit",
	'\u2EAE':     "bamboo",
	'\u2EAF':     "silk",
	'\u2EB0':     "c-simplified silk",
	'\u2EB1':     "net",
	'\u2EB2':     "net",
	'\u2EB3':     "net",
	'\u2EB4':     "net",
	'\u2EB5':     "mesh",
	'\u2EB6':     "sheep",
	'\u2EB7':     "ram",
	'\u2EB8':     "ewe",
	'\u2EB9':     "old",
	'\u2EBA':     "brush",
	'\u2EBB':     "brush",
	'\u2EBC':     "meat",
	'\u2EBD':     "mortar",
	'\u2EBE':     "grass",
	'\u2EBF':     "grass",
	'\u2EC0':     "grass",
	'\u2EC1':     "tiger",
	'\u2EC2':     "clothes",
	'\u2EC3':     "west",
	'\u2EC4':     "west",
	'\u2EC5':     "c-simplified see",
	'\u2EC6':     "horn",
	'\u2EC7':     "horn",
	'\u2EC8':     "c-simplified speech",
	'\u2EC9':     "c-simplified shell",
	'\u2ECA':     "foot",
	'\u2ECB':     "c-simplified cart",
	'\u2ECC':     "walk",
	'\u2ECD':     "walk",
	'\u2ECE':     "walk",
	'\u2ECF':     "city",
	'\u2ED0':     "c-simplified gold",
	'\u2ED1':     "long",
	'\u2ED2':     "long",
	'\u2ED3':     "c-simplified long",
	'\u2ED4':     "c-simplified gate",
	'\u2ED5':     "mound",
	'\u2ED6':     "mound",
	'\u2ED7':     "rain",
	'\u2ED8':     "blue",
	'\u2ED9':     "c-simplified tanned leather",
	'\u2EDA':     "c-simplified leaf",
	'\u2EDB':     "c-simplified wind",
	'\u2EDC':     "c-simplified fly",
	'\u2EDD':     "eat",
	'\u2EDE':     "eat",
	'\u2EDF':     "eat",
	'\u2EE0':     "c-simplified eat",
	'\u2EE1':     "head",
	'\u2EE2':     "c-simplified horse",
	'\u2EE3':     "bone",
	'\u2EE4':     "ghost",
	'\u2EE5':     "c-simplified fish",
	'\u2EE6':     "c-simplified bird",
	'\u2EE7':     "c-simplified salt",
	'\u2EE8':     "wheat",
	'\u2EE9':     "yellow",
	'\u2EEA':     "c-simplified frog",
	'\u2EEB':     "j-simplified even",
	'\u2EEC':     "c-simplified even",
	'\u2EED':     "j-simplified tooth",
	'\u2EEE':     "c-simplified tooth",
	'\u2EEF':     "j-simplified dragon",
	'\u2EF0':     "c-simplified dragon",
	'\u2EF1':     "turtle",
	'\u2EF2':     "j-simplified turtle",
	'\u2EF3':     "c-simplified turtle",
	'\u2F00':     "one",
	'\u2F01':     "line",
	'\u2F02':     "dot",
	'\u2F03':     "slash",
	'\u2F04':     "second",
	'\u2F05':     "hook",
	'\u2F06':     "two",
	'\u2F07':     "lid",
	'\u2F08':     "man",
	'\u2F09':     "legs",
	'\u2F0A':     "enter",
	'\u2F0B':     "eight",
	'\u2F0C':     "down box",
	'\u2F0D':     "cover",
	'\u2F0E':     "ice",
	'\u2F0F':     "table",
	'\u2F10':     "open box",
	'\u2F11':     "knife",
	'\u2F12':     "power",
	'\u2F13':     "wrap",
	'\u2F14':     "spoon",
	'\u2F15':     "right open box",
	'\u2F16':     "hiding enclosure",
	'\u2F17':     "ten",
	'\u2F18':     "divination",
	'\u2F19':     "seal",
	'\u2F1A':     "cliff",
	'\u2F1B':     "private",
	'\u2F1C':     "again",
	'\u2F1D':     "mouth",
	'\u2F1E':     "enclosure",
	'\u2F1F':     "earth",
	'\u2F20':     "scholar",
	'\u2F21':     "go",
	'\u2F22':     "go slowly",
	'\u2F23':     "evening",
	'\u2F24':     "big",
	'\u2F25':     "woman",
	'\u2F26':     "child",
	'\u2F27':     "roof",
	'\u2F28':     "inch",
	'\u2F29':     "small",
	'\u2F2A':     "lame",
	'\u2F2B':     "corpse",
	'\u2F2C':     "sprout",
	'\u2F2D':     "mountain",
	'\u2F2E':     "river",
	'\u2F2F':     "work",
	'\u2F30':     "oneself",
	'\u2F31':     "turban",
	'\u2F32':     "dry",
	'\u2F33':     "short thread",
	'\u2F34':     "dotted cliff",
	'\u2F35':     "long stride",
	'\u2F36':     "two hands",
	'\u2F37':     "shoot",
	'\u2F38':     "bow",
	'\u2F39':     "snout",
	'\u2F3A':     "bristle",
	'\u2F3B':     "step",
	'\u2F3C':     "heart",
	'\u2F3D':     "halberd",
	'\u2F3E':     "door",
	'\u2F3F':     "hand",
	'\u2F40':     "branch",
	'\u2F41':     "rap",
	'\u2F42':     "script",
	'\u2F43':     "dipper",
	'\u2F44':     "axe",
	'\u2F45':     "square",
	'\u2F46':     "not",
	'\u2F47':     "sun",
	'\u2F48':     "say",
	'\u2F49':     "moon",
	'\u2F4A':     "tree",
	'\u2F4B':     "lack",
	'\u2F4C':     "stop",
	'\u2F4D':     "death",
	'\u2F4E':     "weapon",
	'\u2F4F':     "do not",
	'\u2F50':     "compare",
	'\u2F51':     "fur",
	'\u2F52':     "clan",
	'\u2F53':     "steam",
	'\u2F54':     "water",
	'\u2F55':     "fire",
	'\u2F56':     "claw",
	'\u2F57':     "father",
	'\u2F58':     "double x",
	'\u2F59':     "half tree trunk",
	'\u2F5A':     "slice",
	'\u2F5B':     "fang",
	'\u2F5C':     "cow",
	'\u2F5D':     "dog",
	'\u2F5E':     "profound",
	'\u2F5F':     "jade",
	'\u2F60':     "melon",
	'\u2F61':     "tile",
	'\u2F62':     "sweet",
	'\u2F63':     "life",
	'\u2F64':     "use",
	'\u2F65':     "field",
	'\u2F66':     "bolt of cloth",
	'\u2F67':     "sickness",
	'\u2F68':     "dotted tent",
	'\u2F69':     "white",
	'\u2F6A':     "skin",
	'\u2F6B':     "dish",
	'\u2F6C':     "eye",
	'\u2F6D':     "spear",
	'\u2F6E':     "arrow",
	'\u2F6F':     "stone",
	'\u2F70':     "spirit",
	'\u2F71':     "track",
	'\u2F72':     "grain",
	'\u2F73':     "cave",
	'\u2F74':     "stand",
	'\u2F75':     "bamboo",
	'\u2F76':     "rice",
	'\u2F77':     "silk",
	'\u2F78':     "jar",
	'\u2F79':     "net",
	'\u2F7A':     "sheep",
	'\u2F7B':     "feather",
	'\u2F7C':     "old",
	'\u2F7D':     "and",
	'\u2F7E':     "plow",
	'\u2F7F':     "ear",
	'\u2F80':     "brush",
	'\u2F81':     "meat",
	'\u2F82':     "minister",
	'\u2F83':     "self",
	'\u2F84':     "arrive",
	'\u2F85':     "mortar",
	'\u2F86':     "tongue",
	'\u2F87':     "oppose",
	'\u2F88':     "boat",
	'\u2F89':     "stopping",
	'\u2F8A':     "color",
	'\u2F8B':     "grass",
	'\u2F8C':     "tiger",
	'\u2F8D':     "insect",
	'\u2F8E':     "blood",
	'\u2F8F':     "walk enclosure",
	'\u2F90':     "clothes",
	'\u2F91':     "west",
	'\u2F92':     "see",
	'\u2F93':     "horn",
	'\u2F94':     "speech",
	'\u2F95':     "valley",
	'\u2F96':     "bean",
	'\u2F97':     "pig",
	'\u2F98':     "badger",
	'\u2F99':     "shell",
	'\u2F9A':     "red",
	'\u2F9B':     "run",
	'\u2F9C':     "foot",
	'\u2F9D':     "body",
	'\u2F9E':     "cart",
	'\u2F9F':     "bitter",
	'\u2FA0':     "morning",
	'\u2FA1':     "walk",
	'\u2FA2':     "city",
	'\u2FA3':     "wine",
	'\u2FA4':     "distinguish",
	'\u2FA5':     "village",
	'\u2FA6':     "gold",
	'\u2FA7':     "long",
	'\u2FA8':     "gate",
	'\u2FA9':     "mound",
	'\u2FAA':     "slave",
	'\u2FAB':     "short tailed bird",
	'\u2FAC':     "rain",
	'\u2FAD':     "blue",
	'\u2FAE':     "wrong",
	'\u2FAF':     "face",
	'\u2FB0':     "leather",
	'\u2FB1':     "tanned leather",
	'\u2FB2':     "leek",
	'\u2FB3':     "sound",
	'\u2FB4':     "leaf",
	'\u2FB5':     "wind",
	'\u2FB6':     "fly",
	'\u2FB7':     "eat",
	'\u2FB8':     "head",
	'\u2FB9':     "fragrant",
	'\u2FBA':     "horse",
	'\u2FBB':     "bone",
	'\u2FBC':     "tall",
	'\u2FBD':     "hair",
	'\u2FBE':     "fight",
	'\u2FBF':     "sacrificial wine",
	'\u2FC0':     "cauldron",
	'\u2FC1':     "ghost",
	'\u2FC2':     "fish",
	'\u2FC3':     "bird",
	'\u2FC4':     "salt",
	'\u2FC5':     "deer",
	'\u2FC6':     "wheat",
	'\u2FC7':     "hemp",
	'\u2FC8':     "yellow",
	'\u2FC9':     "millet",
	'\u2FCA':     "black",
	'\u2FCB':     "embroidery",
	'\u2FCC':     "frog",
	'\u2FCD':     "tripod",
	'\u2FCE':     "drum",
	'\u2FCF':     "rat",
	'\u2FD0':     "nose",
	'\u2FD1':     "even",
	'\u2FD2':     "tooth",
	'\u2FD3':     "dragon",
	'\u2FD4':     "turtle",
	'\u2FD5':     "flute",
	'\u4E37':     "horns",
	'\u4EBB':     "person",
	'\u5202':     "knife",
	'\u5FC4':     "heart",
	'\u624C':     "hand",
	'\u6C35':     "water",
	'\u706C':     "fire",
	'\u72AD':     "dog",
	'\u7592':     "sickness",
	'\u793B':     "altar",
	'\u79B8':     "track",
	'\u7F52':     "net",
	'\u8279':     "grass",
	'\u8864':     "clothing",
	'\u8FB5':     "walk",
	'\u8FB6':     "walk",
	'\U000201A2': "person",
}
