#!/usr/bin/env python3 import assetmgr import json import os import re import sys def main(): fd = open(sys.argv[1], 'r') data = fd.read() fd.close() basename = os.path.basename(sys.argv[1]).replace('.json', '') shortname = get_shortname(basename) rows = json.loads(data) if sys.argv[2] == 'en': make_header(rows, shortname) make_object(rows, basename, sys.argv[2]) def get_shortname(basename): return re.match(r'^[a-z0-9]+', basename)[0] def make_header(rows, shortname): typename = 'l_%s' % shortname enums = [row['id'] for row in rows] filename = 'lang/%s.h' % shortname terminator = 'L_%s_END' % shortname.upper() start = banks.index(shortname) * 512 assetmgr.write_enums(typename, enums, filename, terminator, start=start) def make_object(rows, basename, key): binary = make_binary(rows, key) zipped = assetmgr.zip(binary) suffix = { 'en': 'E', 'gb': 'P', 'jp': 'J', 'fr': '_str_f', 'de': '_str_g', 'it': '_str_i', 'es': '_str_s', }[key] filename = 'files/L%s%s.o' % (basename, suffix) assetmgr.write_object(zipped, filename) def make_binary(rows, key): if len(rows) == 0: return (0).to_bytes(16, 'big') output = bytes() pos = len([row for row in rows if key in row]) * 4 strings = [] for index, row in enumerate(rows): if key in row: if row[key] is None: output += (0).to_bytes(4, 'big') else: output += pos.to_bytes(4, 'big') if os.environ['ROMID'] == 'jpn-final' and key == 'jp': string = encode_jp(row[key]) else: string = row[key].encode('latin_1') strings.append(string) pos += assetmgr.align4(len(string) + 1) for string in strings: output += string amount = 4 - (len(string) % 4) output += (0).to_bytes(amount, 'big') if len(output) % 16: amount = 16 - (len(output) % 16) output += (0).to_bytes(amount, 'big') return output """ The input string is UTF-8, and it needs to be re-encoded to a custom encoding. A lookup array is used for this. However, some UTF-8 characters appear multiple types with a different encoding. For duplicates, we store the character in JSON as something like \habcd where abcd is the target value in hex. """ def encode_jp(string): outbytes = bytes() i = 0 while i < len(string): if string[i] in jpnchars: outbytes += jpnchars[string[i]].to_bytes(2, 'big') i += 1; else: match = re.match(r'^\\h([a-z0-9]{4})', string[i:]) if match: dec = int(match[1], 16) outbytes += dec.to_bytes(2, 'big') i += 6; else: outbytes += ord(string[i]).to_bytes(1, 'big') i += 1; return outbytes banks = [ '', 'ame', 'arch', 'ark', 'ash', 'azt', 'cat', 'cave', 'arec', 'crad', 'cryp', 'dam', 'depo', 'dest', 'dish', 'ear', 'eld', 'imp', 'jun', 'lee', 'len', 'lip', 'lue', 'oat', 'pam', 'pete', 'ref', 'rit', 'run', 'sevb', 'sev', 'sevx', 'sevxb', 'sho', 'silo', 'stat', 'tra', 'wax', 'gun', 'title', 'mpmenu', 'propobj', 'mpweapons', 'options', 'misc', 'uff', 'old', 'ate', 'lam', 'mp1', 'mp2', 'mp3', 'mp4', 'mp5', 'mp6', 'mp7', 'mp8', 'mp9', 'mp10', 'mp11', 'mp12', 'mp13', 'mp14', 'mp15', 'mp16', 'mp17', 'mp18', 'mp19', 'mp20', ] jpnchars = { ' ': 0x8080, '、': 0x8081, '$': 0x8082, '(': 0x8083, ')': 0x8084, '・': 0x8085, '%': 0x8086, '「': 0x8087, '」': 0x8088, '“': 0x8089, '<': 0x808a, '>': 0x808b, '&': 0x808c, '~': 0x808d, '…': 0x808e, ' ': 0x808f, '0': 0x8090, '1': 0x8091, '2': 0x8092, '3': 0x8093, '4': 0x8094, '5': 0x8095, '6': 0x8096, '7': 0x8097, '8': 0x8098, '9': 0x8099, 'A': 0x809a, 'B': 0x809b, 'C': 0x809c, 'D': 0x809d, 'E': 0x809e, 'F': 0x809f, 'G': 0x80a0, 'H': 0x80a1, 'I': 0x80a2, 'J': 0x80a3, 'K': 0x80a4, 'L': 0x80a5, 'M': 0x80a6, 'N': 0x80a7, 'O': 0x80a8, 'P': 0x80a9, 'Q': 0x80aa, 'R': 0x80ab, 'S': 0x80ac, 'T': 0x80ad, 'U': 0x80ae, 'V': 0x80af, 'W': 0x80b0, 'X': 0x80b1, 'Y': 0x80b2, 'Z': 0x80b3, '!': 0x80b4, '”': 0x80b5, '#': 0x80b6, '’': 0x80b7, '*': 0x80b8, '+': 0x80b9, ',': 0x80ba, '-': 0x80bb, '.': 0x80bc, '/': 0x80bd, ':': 0x80be, '=': 0x80bf, '?': 0x80c0, '@': 0x80c1, '。': 0x80c2, '゛': 0x80c3, '゜': 0x80c4, 'ァ': 0x80c5, 'ィ': 0x80c6, 'ゥ': 0x80c7, 'ェ': 0x80c8, 'ォ': 0x80c9, 'ッ': 0x80ca, 'ャ': 0x80cb, 'ュ': 0x80cc, 'ョ': 0x80cd, 'ヲ': 0x80ce, 'ン': 0x80cf, 'ア': 0x80d0, 'イ': 0x80d1, 'ウ': 0x80d2, 'エ': 0x80d3, 'オ': 0x80d4, 'カ': 0x80d5, 'キ': 0x80d6, 'ク': 0x80d7, 'ケ': 0x80d8, 'コ': 0x80d9, 'サ': 0x80da, 'シ': 0x80db, 'ス': 0x80dc, 'セ': 0x80dd, 'ソ': 0x80de, 'タ': 0x80df, 'チ': 0x80e0, 'ツ': 0x80e1, 'テ': 0x80e2, 'ト': 0x80e3, 'ナ': 0x80e4, 'ニ': 0x80e5, 'ヌ': 0x80e6, 'ネ': 0x80e7, 'ノ': 0x80e8, 'ハ': 0x80e9, 'ヒ': 0x80ea, 'フ': 0x80eb, 'ヘ': 0x80ec, 'ホ': 0x80ed, 'マ': 0x80ee, 'ミ': 0x80ef, 'ム': 0x80f0, 'メ': 0x80f1, 'モ': 0x80f2, 'ヤ': 0x80f3, 'ユ': 0x80f4, 'ヨ': 0x80f5, 'ラ': 0x80f6, 'リ': 0x80f7, 'ル': 0x80f8, 'レ': 0x80f9, 'ロ': 0x80fa, 'ワ': 0x80fb, 'ガ': 0x80fc, 'ギ': 0x80fd, 'グ': 0x80fe, 'ゲ': 0x80ff, 'ゴ': 0x8180, 'ザ': 0x8181, 'ジ': 0x8182, 'ズ': 0x8183, 'ゼ': 0x8184, 'ゾ': 0x8185, 'ダ': 0x8186, 'ヂ': 0x8187, 'ヅ': 0x8188, 'デ': 0x8189, 'ド': 0x818a, 'バ': 0x818b, 'ビ': 0x818c, 'ブ': 0x818d, 'ベ': 0x818e, 'ボ': 0x818f, 'パ': 0x8190, 'ピ': 0x8191, 'プ': 0x8192, 'ペ': 0x8193, 'ポ': 0x8194, 'a': 0x8195, 'b': 0x8196, 'c': 0x8197, 'd': 0x8198, 'e': 0x8199, 'f': 0x819a, 'g': 0x819b, 'h': 0x819c, 'i': 0x819d, 'j': 0x819e, 'k': 0x819f, 'l': 0x81a0, 'm': 0x81a1, 'n': 0x81a2, 'o': 0x81a3, 'p': 0x81a4, 'q': 0x81a5, 'r': 0x81a6, 's': 0x81a7, 't': 0x81a8, 'u': 0x81a9, 'v': 0x81aa, 'w': 0x81ab, 'x': 0x81ac, 'y': 0x81ad, 'z': 0x81ae, 'ぁ': 0x81af, 'ぃ': 0x81b0, 'ぅ': 0x81b1, 'ぇ': 0x81b2, 'ぉ': 0x81b3, 'っ': 0x81b4, 'ゃ': 0x81b5, 'ゅ': 0x81b6, 'ょ': 0x81b7, 'を': 0x81b8, 'ん': 0x81b9, 'あ': 0x81ba, 'い': 0x81bb, 'う': 0x81bc, 'え': 0x81bd, 'お': 0x81be, 'か': 0x81bf, 'き': 0x81c0, 'く': 0x81c1, 'け': 0x81c2, 'こ': 0x81c3, 'さ': 0x81c4, 'し': 0x81c5, 'す': 0x81c6, 'せ': 0x81c7, 'そ': 0x81c8, 'た': 0x81c9, 'ち': 0x81ca, 'つ': 0x81cb, 'て': 0x81cc, 'と': 0x81cd, 'な': 0x81ce, 'に': 0x81cf, 'ぬ': 0x81d0, 'ね': 0x81d1, 'の': 0x81d2, 'は': 0x81d3, 'ひ': 0x81d4, 'ふ': 0x81d5, 'へ': 0x81d6, 'ほ': 0x81d7, 'ま': 0x81d8, 'み': 0x81d9, 'む': 0x81da, 'め': 0x81db, 'も': 0x81dc, 'や': 0x81dd, 'ゆ': 0x81de, 'よ': 0x81df, 'ら': 0x81e0, 'り': 0x81e1, 'る': 0x81e2, 'れ': 0x81e3, 'ろ': 0x81e4, 'わ': 0x81e5, 'が': 0x81e6, 'ぎ': 0x81e7, 'ぐ': 0x81e8, 'げ': 0x81e9, 'ご': 0x81ea, 'ざ': 0x81eb, 'じ': 0x81ec, 'ず': 0x81ed, 'ぜ': 0x81ee, 'ぞ': 0x81ef, 'だ': 0x81f0, 'ぢ': 0x81f1, 'づ': 0x81f2, 'で': 0x81f3, 'ど': 0x81f4, 'ば': 0x81f5, 'び': 0x81f6, 'ぶ': 0x81f7, 'べ': 0x81f8, 'ぼ': 0x81f9, 'ぱ': 0x81fa, 'ぴ': 0x81fb, 'ぷ': 0x81fc, 'ぺ': 0x81fd, 'ぽ': 0x81fe, 'ヴ': 0x81ff, '口': 0x8280, '工': 0x8281, '力': 0x8282, '一': 0x8283, 'ー': 0x8284, '々': 0x8285, '解': 0x8286, '背': 0x8287, '景': 0x8288, '警': 0x8289, '戒': 0x828a, '体': 0x828b, '制': 0x828c, '中': 0x828d, '内': 0x828e, '部': 0x828f, '級': 0x8290, '戦': 0x8291, '闘': 0x8292, '員': 0x8293, '配': 0x8294, '置': 0x8295, '外': 0x8296, '敵': 0x8297, '地': 0x8298, '隊': 0x8299, '包': 0x829a, '囲': 0x829b, '玄': 0x829c, '関': 0x829d, '脱': 0x829e, '出': 0x829f, '不': 0x82a0, '可': 0x82a1, '能': 0x82a2, '協': 0x82a3, '会': 0x82a4, '輸': 0x82a5, '送': 0x82a6, '君': 0x82a7, '救': 0x82a8, '言': 0x82a9, '何': 0x82aa, '身': 0x82ab, '守': 0x82ac, '最': 0x82ad, '優': 0x82ae, '先': 0x82af, '死': 0x82b0, '妨': 0x82b1, '害': 0x82b2, '幸': 0x82b3, '運': 0x82b4, '任': 0x82b5, '務': 0x82b6, '進': 0x82b7, '路': 0x82b8, '確': 0x82b9, '保': 0x82ba, '付': 0x82bb, '近': 0x82bc, '階': 0x82bd, '続': 0x82be, '共': 0x82bf, '乗': 0x82c0, '込': 0x82c1, '再': 0x82c2, '起': 0x82c3, '動': 0x82c4, '途': 0x82c5, '番': 0x82c6, '認': 0x82c7, '発': 0x82c8, '見': 0x82c9, '変': 0x82ca, '更': 0x82cb, '武': 0x82cc, '装': 0x82cd, '破': 0x82ce, '壊': 0x82cf, '周': 0x82d0, '旋': 0x82d1, '回': 0x82d2, '当': 0x82d3, '方': 0x82d4, '持': 0x82d5, '狙': 0x82d6, '撃': 0x82d7, '落': 0x82d8, '倒': 0x82d9, '行': 0x82da, '彼': 0x82db, '女': 0x82dc, '手': 0x82dd, '避': 0x82de, '激': 0x82df, '銃': 0x82e0, '覚': 0x82e1, '悟': 0x82e2, '戻': 0x82e3, '我': 0x82e4, '派': 0x82e5, '既': 0x82e6, '待': 0x82e7, '忘': 0x82e8, '管': 0x82e9, '理': 0x82ea, '照': 0x82eb, '明': 0x82ec, '攻': 0x82ed, '受': 0x82ee, '余': 0x82ef, '計': 0x82f0, '失': 0x82f1, '敗': 0x82f2, '完': 0x82f3, '了': 0x82f4, '告': 0x82f5, '入': 0x82f6, '嬢': 0x82f7, '除': 0x82f8, '使': 0x82f9, '貸': 0x82fa, '絶': 0x82fb, '対': 0x82fc, '間': 0x82fd, '違': 0x82fe, '速': 0x82ff, '遅': 0x8380, '遂': 0x8381, '欠': 0x8382, '要': 0x8383, '素': 0x8384, '全': 0x8385, '向': 0x8386, '必': 0x8387, '用': 0x8388, '逃': 0x8389, '場': 0x838a, '以': 0x838b, '早': 0x838c, '急': 0x838d, '備': 0x838e, '兵': 0x838f, '来': 0x8390, '消': 0x8391, '灯': 0x8392, '時': 0x8393, '私': 0x8394, '今': 0x8395, '返': 0x8396, '自': 0x8397, '分': 0x8398, '働': 0x8399, '悪': 0x839a, '取': 0x839b, '画': 0x839c, '前': 0x839d, '誰': 0x839e, '話': 0x839f, '後': 0x83a0, '映': 0x83a1, '像': 0x83a2, '才': 0x83a3, '信': 0x83a4, '得': 0x83a5, '経': 0x83a6, '験': 0x83a7, '生': 0x83a8, '組': 0x83a9, '並': 0x83aa, '程': 0x83ab, '度': 0x83ac, '油': 0x83ad, '断': 0x83ae, '禁': 0x83af, '物': 0x83b0, '成': 0x83b1, '績': 0x83b2, '相': 0x83b3, '意': 0x83b4, '気': 0x83b5, '政': 0x83b6, '府': 0x83b7, '非': 0x83b8, '常': 0x83b9, '強': 0x83ba, '恐': 0x83bb, '無': 0x83bc, '決': 0x83bd, '勝': 0x83be, '努': 0x83bf, '末': 0x83c0, '飛': 0x83c1, '機': 0x83c2, '空': 0x83c3, '衝': 0x83c4, '突': 0x83c5, '大': 0x83c6, '統': 0x83c7, '領': 0x83c8, '電': 0x83c9, '波': 0x83ca, '助': 0x83cb, '墜': 0x83cc, '現': 0x83cd, '点': 0x83ce, '通': 0x83cf, '段': 0x83d0, '的': 0x83d1, '源': 0x83d2, '安': 0x83d3, '重': 0x83d4, '収': 0x83d5, '健': 0x83d6, '康': 0x83d7, '状': 0x83d8, '態': 0x83d9, '号': 0x83da, '作': 0x83db, '効': 0x83dc, '果': 0x83dd, '高': 0x83de, '性': 0x83df, '流': 0x83e0, '有': 0x83e1, '利': 0x83e2, '次': 0x83e3, '第': 0x83e4, '直': 0x83e5, '居': 0x83e6, '所': 0x83e7, '排': 0x83e8, '命': 0x83e9, '反': 0x83ea, '応': 0x83eb, '辺': 0x83ec, '偽': 0x83ed, '者': 0x83ee, '脅': 0x83ef, '威': 0x83f0, '援': 0x83f1, '到': 0x83f2, '着': 0x83f3, '危': 0x83f4, '険': 0x83f5, '去': 0x83f6, '護': 0x83f7, '衛': 0x83f8, '船': 0x83f9, '面': 0x83fa, '役': 0x83fb, '立': 0x83fc, '答': 0x83fd, '聞': 0x83fe, '別': 0x83ff, '探': 0x8480, '事': 0x8481, '調': 0x8482, '子': 0x8483, '復': 0x8484, '野': 0x8485, '心': 0x8486, '家': 0x8487, '教': 0x8488, '深': 0x8489, '海': 0x848a, '査': 0x848b, '艇': 0x848c, '潜': 0x848d, '水': 0x848e, '業': 0x848f, '世': 0x8490, '界': 0x8491, '唯': 0x8492, '社': 0x8493, '与': 0x8494, '圧': 0x8495, '切': 0x8496, '目': 0x8497, '山': 0x8498, '金': 0x8499, '髪': 0x849a, '服': 0x849b, '男': 0x849c, '国': 0x849d, '防': 0x849e, '省': 0x849f, '司': 0x84a0, '令': 0x84a1, '官': 0x84a2, '訪': 0x84a3, '問': 0x84a4, '準': 0x84a5, '軍': 0x84a6, '基': 0x84a7, '移': 0x84a8, '穏': 0x84a9, '思': 0x84aa, '阻': 0x84ab, '止': 0x84ac, '特': 0x84ad, '注': 0x84ae, '望': 0x84af, '係': 0x84b0, '人': 0x84b1, '側': 0x84b2, '味': 0x84b3, '標': 0x84b4, '長': 0x84b5, '功': 0x84b6, '本': 0x84b7, '日': 0x84b8, '専': 0x84b9, '眠': 0x84ba, '品': 0x84bb, '積': 0x84bc, '器': 0x84bd, '怪': 0x84be, '荷': 0x84bf, '載': 0x84c0, '納': 0x84c1, '検': 0x84c2, '策': 0x84c3, '預': 0x84c4, '知': 0x84c5, '予': 0x84c6, '定': 0x84c7, '航': 0x84c8, '図': 0x84c9, '庫': 0x84ca, '搭': 0x84cb, '離': 0x84cc, '陸': 0x84cd, '合': 0x84ce, '法': 0x84cf, '考': 0x84d0, '侵': 0x84d1, '民': 0x84d2, '丈': 0x84d3, '夫': 0x84d4, '呼': 0x84d5, '存': 0x84d6, '開': 0x84d7, '始': 0x84d8, '新': 0x84d9, '拒': 0x84da, '否': 0x84db, '多': 0x84dc, '犠': 0x84dd, '牲': 0x84de, '奪': 0x84df, '小': 0x84e0, '偵': 0x84e1, '察': 0x84e2, '連': 0x84e3, '伝': 0x84e4, '加': 0x84e5, '担': 0x84e6, '裏': 0x84e7, '証': 0x84e8, '拠': 0x84e9, '誘': 0x84ea, '拐': 0x84eb, '情': 0x84ec, '報': 0x84ed, '推': 0x84ee, '測': 0x84ef, '停': 0x84f0, '暴': 0x84f1, '挙': 0x84f2, '母': 0x84f3, '太': 0x84f4, '平': 0x84f5, '洋': 0x84f6, '同': 0x84f7, '底': 0x84f8, '限': 0x84f9, '広': 0x84fa, '範': 0x84fb, '渡': 0x84fc, '被': 0x84fd, '稼': 0x84fe, '研': 0x84ff, '究': 0x8580, '室': 0x8581, '占': 0x8582, '集': 0x8583, '実': 0x8584, '科': 0x8585, '学': 0x8586, '技': 0x8587, '術': 0x8588, '操': 0x8589, '縦': 0x858a, '片': 0x858b, '遠': 0x858c, '隔': 0x858d, '格': 0x858e, '璧': 0x858f, '閉': 0x8590, '殺': 0x8591, '引': 0x8592, '央': 0x8593, '様': 0x8594, '記': 0x8595, '録': 0x8596, '車': 0x8597, '張': 0x8598, '道': 0x8599, '陰': 0x859a, '謀': 0x859b, '絡': 0x859c, '暗': 0x859d, '読': 0x859e, '総': 0x859f, '正': 0x85a0, '複': 0x85a1, '雑': 0x85a2, '爆': 0x85a3, '弾': 0x85a4, '率': 0x85a5, '化': 0x85a6, '想': 0x85a7, '難': 0x85a8, '許': 0x85a9, '過': 0x85aa, '少': 0x85ab, '評': 0x85ac, '価': 0x85ad, '奥': 0x85ae, '細': 0x85af, '胞': 0x85b0, '済': 0x85b1, '線': 0x85b2, '転': 0x85b3, '米': 0x85b4, '秘': 0x85b5, '密': 0x85b6, '射': 0x85b7, '迎': 0x85b8, '残': 0x85b9, '骸': 0x85ba, '頼': 0x85bb, '名': 0x85bc, '夜': 0x85bd, '欲': 0x85be, '請': 0x85bf, '疑': 0x85c0, '感': 0x85c1, '抗': 0x85c2, '議': 0x85c3, '監': 0x85c4, '磁': 0x85c5, '十': 0x85c6, '放': 0x85c7, '位': 0x85c8, '改': 0x85c9, '造': 0x85ca, '掃': 0x85cb, '棟': 0x85cc, '帰': 0x85cd, '械': 0x85ce, '音': 0x85cf, '端': 0x85d0, '接': 0x85d1, '抜': 0x85d2, '倉': 0x85d3, '仕': 0x85d4, '貴': 0x85d5, '荘': 0x85d6, '滞': 0x85d7, '在': 0x85d8, '襲': 0x85d9, '質': 0x85da, '捕': 0x85db, '届': 0x85dc, '惜': 0x85dd, '隠': 0x85de, '屋': 0x85df, '根': 0x85e0, '迫': 0x85e1, '風': 0x85e2, '主': 0x85e3, '試': 0x85e4, '容': 0x85e5, '易': 0x85e6, '為': 0x85e7, '損': 0x85e8, '降': 0x85e9, '伏': 0x85ea, '吐': 0x85eb, '交': 0x85ec, '渉': 0x85ed, '冷': 0x85ee, '却': 0x85ef, '供': 0x85f0, '給': 0x85f1, '昨': 0x85f2, '換': 0x85f3, '求': 0x85f4, '念': 0x85f5, '緒': 0x85f6, '責': 0x85f7, '際': 0x85f8, '然': 0x85f9, '題': 0x85fa, '説': 0x85fb, '登': 0x85fc, '士': 0x85fd, '弱': 0x85fe, '陣': 0x85ff, '遺': 0x8680, '跡': 0x8681, '寺': 0x8682, '院': 0x8683, '系': 0x8684, '神': 0x8685, '殿': 0x8686, '施': 0x8687, '設': 0x8688, '闇': 0x8689, '初': 0x868a, '犯': 0x868b, '揮': 0x868c, '雷': 0x868d, '歩': 0x868e, '席': 0x868f, '緊': 0x8690, '年': 0x8691, '月': 0x8692, '娘': 0x8693, '良': 0x8694, '悔': 0x8695, '減': 0x8696, '示': 0x8697, '他': 0x8698, '亡': 0x8699, '述': 0x869a, '極': 0x869b, '低': 0x869c, '温': 0x869d, '剖': 0x869e, '凍': 0x869f, '医': 0x86a0, '故': 0x86a1, '処': 0x86a2, '繰': 0x86a3, '昇': 0x86a4, '還': 0x86a5, '異': 0x86a6, '壁': 0x86a7, '薬': 0x86a8, '静': 0x86a9, '恵': 0x86aa, '葉': 0x86ab, '超': 0x86ac, '盗': 0x86ad, '聴': 0x86ae, '困': 0x86af, '投': 0x86b0, '好': 0x86b1, '識': 0x86b2, '終': 0x86b3, '判': 0x86b4, '未': 0x86b5, '和': 0x86b6, '御': 0x86b7, '軟': 0x86b8, '執': 0x86b9, '王': 0x86ba, '苦': 0x86bb, '労': 0x86bc, '党': 0x86bd, '短': 0x86be, '個': 0x86bf, '角': 0x86c0, '曲': 0x86c1, '選': 0x86c2, '択': 0x86c3, '追': 0x86c4, '元': 0x86c5, '鉱': 0x86c6, '数': 0x86c7, '頭': 0x86c8, '距': 0x86c9, '獲': 0x86ca, '賞': 0x86cb, '打': 0x86cc, '称': 0x86cd, '況': 0x86ce, '罪': 0x86cf, '書': 0x86d0, '視': 0x86d1, '逆': 0x86d2, '表': 0x86d3, '替': 0x86d4, '両': 0x86d5, '齢': 0x86d6, '種': 0x86d7, '族': 0x86d8, '結': 0x86d9, '足': 0x86da, '秒': 0x86db, '黄': 0x86dc, '修': 0x86dd, '恥': 0x86de, '字': 0x86df, '幕': 0x86e0, '割': 0x86e1, '棄': 0x86e2, '押': 0x86e3, '球': 0x86e4, '提': 0x86e5, '拡': 0x86e6, '索': 0x86e7, '撮': 0x86e8, '露': 0x86e9, '宇': 0x86ea, '宙': 0x86eb, '横': 0x86ec, '須': 0x86ed, '辞': 0x86ee, '退': 0x86ef, '胴': 0x86f0, '序': 0x86f1, '火': 0x86f2, '雪': 0x86f3, '塞': 0x86f4, '焼': 0x86f5, '原': 0x86f6, '滅': 0x86f7, '星': 0x86f8, '嵐': 0x86f9, '巨': 0x86fa, '析': 0x86fb, '建': 0x86fc, '昔': 0x86fd, '核': 0x86fe, '形': 0x86ff, '論': 0x8780, '街': 0x8781, '般': 0x8782, '市': 0x8783, '訓': 0x8784, '練': 0x8785, '満': 0x8786, '陽': 0x8787, '互': 0x8788, '単': 0x8789, '仮': 0x878a, '鎮': 0x878b, '剤': 0x878c, '矢': 0x878d, '例': 0x878e, '丸': 0x878f, '詳': 0x8790, '案': 0x8791, '産': 0x8792, '件': 0x8793, '惑': 0x8794, '適': 0x8795, '療': 0x8796, '匹': 0x8797, '培': 0x8798, '養': 0x8799, '環': 0x879a, '境': 0x879b, '資': 0x879c, '染': 0x879d, '製': 0x879e, '倍': 0x879f, '美': 0x87a0, '維': 0x87a1, '刃': 0x87a2, '指': 0x87a3, '普': 0x87a4, '均': 0x87a5, '刺': 0x87a6, '透': 0x87a7, '型': 0x87a8, '便': 0x87a9, '量': 0x87aa, '走': 0x87ab, '光': 0x87ac, '悲': 0x87ad, '貫': 0x87ae, '振': 0x87af, '差': 0x87b0, '影': 0x87b1, '姿': 0x87b2, '由': 0x87b3, '各': 0x87b4, '版': 0x87b5, '式': 0x87b6, '砂': 0x87b7, '尖': 0x87b8, '塔': 0x87b9, '聖': 0x87ba, '谷': 0x87bb, '怒': 0x87bc, '扱': 0x87bd, '権': 0x87be, '白': 0x87bf, '類': 0x87c0, '沈': 0x87c1, '争': 0x87c2, '活': 0x87c3, '仲': 0x87c4, '熱': 0x87c5, '都': 0x87c6, '古': 0x87c7, '代': 0x87c8, '赤': 0x87c9, '黒': 0x87ca, '上': 0x87cb, '下': 0x87cc, '左': 0x87cd, '右': 0x87ce, } main()