import OrderedCollections

extension InputTables {
    static let defaultAzikPieceMap = InputTables.Helper.constructPieceMap([
        "a": "あ",
        "i": "い",
        "u": "う",
        "e": "え",
        "o": "お",
        "ka": "か",
        "ki": "き",
        "ku": "く",
        "ke": "け",
        "ko": "こ",
        "sa": "さ",
        "si": "し",
        "su": "す",
        "se": "せ",
        "so": "そ",
        "ta": "た",
        "ti": "ち",
        "tu": "つ",
        "te": "て",
        "to": "と",
        "na": "な",
        "ni": "に",
        "nu": "ぬ",
        "ne": "ね",
        "no": "の",
        "ha": "は",
        "hi": "ひ",
        "hu": "ふ",
        "he": "へ",
        "ho": "ほ",
        "ma": "ま",
        "mi": "み",
        "mu": "む",
        "me": "め",
        "mo": "も",
        "ya": "や",
        "yu": "ゆ",
        "yo": "よ",
        "ra": "ら",
        "ri": "り",
        "ru": "る",
        "re": "れ",
        "ro": "ろ",
        "wa": "わ",
        "wi": "うぃ",
        "we": "うぇ",
        "wo": "を",
        "ga": "が",
        "gi": "ぎ",
        "gu": "ぐ",
        "ge": "げ",
        "go": "ご",
        "za": "ざ",
        "zi": "じ",
        "zu": "ず",
        "ze": "ぜ",
        "zo": "ぞ",
        "da": "だ",
        "di": "ぢ",
        "du": "づ",
        "de": "で",
        "do": "ど",
        "ba": "ば",
        "bi": "び",
        "bu": "ぶ",
        "be": "べ",
        "bo": "ぼ",
        "pa": "ぱ",
        "pi": "ぴ",
        "pu": "ぷ",
        "pe": "ぺ",
        "po": "ぽ",
        "kya": "きゃ",
        "kyu": "きゅ",
        "kye": "きぇ",
        "kyo": "きょ",
        "kga": "きゃ",
        "kgu": "きゅ",
        "kge": "きぇ",
        "kgo": "きょ",
        "sya": "しゃ",
        "syu": "しゅ",
        "sye": "しぇ",
        "syo": "しょ",
        "xa": "しゃ",
        "xu": "しゅ",
        "xe": "しぇ",
        "xo": "しょ",
        "tya": "ちゃ",
        "tyu": "ちゅ",
        "tye": "ちぇ",
        "tyo": "ちょ",
        "ca": "ちゃ",
        "cu": "ちゅ",
        "ce": "ちぇ",
        "co": "ちょ",
        "nya": "にゃ",
        "nyu": "にゅ",
        "nye": "にぇ",
        "nyo": "にょ",
        "nga": "にゃ",
        "ngu": "にゅ",
        "nge": "にぇ",
        "ngo": "にょ",
        "hya": "ひゃ",
        "hyu": "ひゅ",
        "hye": "ひぇ",
        "hyo": "ひょ",
        "hga": "ひゃ",
        "hgu": "ひゅ",
        "hge": "ひぇ",
        "hgo": "ひょ",
        "mya": "みゃ",
        "myu": "みゅ",
        "mye": "みぇ",
        "myo": "みょ",
        "mga": "みゃ",
        "mgu": "みゅ",
        "mge": "みぇ",
        "mgo": "みょ",
        "rya": "りゃ",
        "ryu": "りゅ",
        "rye": "りぇ",
        "ryo": "りょ",
        "gya": "ぎゃ",
        "gyu": "ぎゅ",
        "gye": "ぎぇ",
        "gyo": "ぎょ",
        "zya": "じゃ",
        "zyu": "じゅ",
        "zye": "じぇ",
        "zyo": "じょ",
        "ja": "じゃ",
        "ju": "じゅ",
        "je": "じぇ",
        "jo": "じょ",
        "bya": "びゃ",
        "byu": "びゅ",
        "bye": "びぇ",
        "byo": "びょ",
        "pya": "ぴゃ",
        "pyu": "ぴゅ",
        "pye": "ぴぇ",
        "pyo": "ぴょ",
        "pga": "ぴゃ",
        "pgu": "ぴゅ",
        "pge": "ぴぇ",
        "pgo": "ぴょ",
        "fa": "ふぁ",
        "fi": "ふぃ",
        "fu": "ふ",
        "fe": "ふぇ",
        "fo": "ふぉ",
        "va": "ヴぁ",
        "vi": "ヴぃ",
        "vu": "ヴ",
        "ve": "ヴぇ",
        "vo": "ヴぉ",
        "tgi": "てぃ",
        "tgu": "とぅ",
        "dci": "でぃ",
        "dcu": "どぅ",
        "wso": "うぉ",
        "la": "ぁ",
        "li": "ぃ",
        "lu": "ぅ",
        "le": "ぇ",
        "lo": "ぉ",
        "lya": "ゃ",
        "lyu": "ゅ",
        "lyo": "ょ",
        "；": "っ",
        "q": "ん",
        "nn": "ん",
        "：": "ー",
        "z。": "…",
        "z、": "‥",
        "zー": "〜",
        "z「": "『",
        "z」": "』",
        "kz": "かん",
        "kn": "かん",
        "kk": "きん",
        "kj": "くん",
        "kd": "けん",
        "kl": "こん",
        "sz": "さん",
        "sn": "さん",
        "sk": "しん",
        "sj": "すん",
        "sd": "せん",
        "sl": "そん",
        "tz": "たん",
        "tn": "たん",
        "tk": "ちん",
        "tj": "つん",
        "td": "てん",
        "tl": "とん",
        "nz": "なん",
        "nk": "にん",
        "nj": "ぬん",
        "nd": "ねん",
        "nl": "のん",
        "hz": "はん",
        "hn": "はん",
        "hk": "ひん",
        "hj": "ふん",
        "hd": "へん",
        "hl": "ほん",
        "mz": "まん",
        "mk": "みん",
        "mj": "むん",
        "md": "めん",
        "ml": "もん",
        "yz": "やん",
        "yn": "やん",
        "yj": "ゆん",
        "yl": "よん",
        "rz": "らん",
        "rn": "らん",
        "rk": "りん",
        "rj": "るん",
        "rd": "れん",
        "rl": "ろん",
        "wz": "わん",
        "wn": "わん",
        "wk": "うぃん",
        "wd": "うぇん",
        "wl": "うぉん",
        "gz": "がん",
        "gn": "がん",
        "gk": "ぎん",
        "gj": "ぐん",
        "gd": "げん",
        "gl": "ごん",
        "zz": "ざん",
        "zn": "ざん",
        "zk": "じん",
        "zj": "ずん",
        "zd": "ぜん",
        "zl": "ぞん",
        "dz": "だん",
        "dn": "だん",
        "dk": "ぢん",
        "dj": "づん",
        "dd": "でん",
        "dl": "どん",
        "bz": "ばん",
        "bn": "ばん",
        "bk": "びん",
        "bj": "ぶん",
        "bd": "べん",
        "bl": "ぼん",
        "pz": "ぱん",
        "pn": "ぱん",
        "pk": "ぴん",
        "pj": "ぷん",
        "pd": "ぺん",
        "pl": "ぽん",
        "kyz": "きゃん",
        "kyn": "きゃん",
        "kyj": "きゅん",
        "kyd": "きぇん",
        "kyl": "きょん",
        "kgz": "きゃん",
        "kgn": "きゃん",
        "kgj": "きゅん",
        "kgd": "きぇん",
        "kgl": "きょん",
        "syz": "しゃん",
        "syn": "しゃん",
        "syj": "しゅん",
        "syd": "しぇん",
        "syl": "しょん",
        "xz": "しゃん",
        "xn": "しゃん",
        "xj": "しゅん",
        "xd": "しぇん",
        "xl": "しょん",
        "tyz": "ちゃん",
        "tyn": "ちゃん",
        "tyj": "ちゅん",
        "tyd": "ちぇん",
        "tyl": "ちょん",
        "cz": "ちゃん",
        "cn": "ちゃん",
        "cj": "ちゅん",
        "cd": "ちぇん",
        "cl": "ちょん",
        "nyz": "にゃん",
        "nyn": "にゃん",
        "nyj": "にゅん",
        "nyd": "にぇん",
        "nyl": "にょん",
        "ngz": "にゃん",
        "ngn": "にゃん",
        "ngj": "にゅん",
        "ngd": "にぇん",
        "ngl": "にょん",
        "hyz": "ひゃん",
        "hyn": "ひゃん",
        "hyj": "ひゅん",
        "hyd": "ひぇん",
        "hyl": "ひょん",
        "hgz": "ひゃん",
        "hgn": "ひゃん",
        "hgj": "ひゅん",
        "hgd": "ひぇん",
        "hgl": "ひょん",
        "myz": "みゃん",
        "myn": "みゃん",
        "myj": "みゅん",
        "myd": "みぇん",
        "myl": "みょん",
        "mgz": "みゃん",
        "mgn": "みゃん",
        "mgj": "みゅん",
        "mgd": "みぇん",
        "mgl": "みょん",
        "ryz": "りゃん",
        "ryn": "りゃん",
        "ryj": "りゅん",
        "ryd": "りぇん",
        "ryl": "りょん",
        "gyz": "ぎゃん",
        "gyn": "ぎゃん",
        "gyj": "ぎゅん",
        "gyd": "ぎぇん",
        "gyl": "ぎょん",
        "zyz": "じゃん",
        "zyn": "じゃん",
        "zyj": "じゅん",
        "zyd": "じぇん",
        "zyl": "じょん",
        "jz": "じゃん",
        "jn": "じゃん",
        "jj": "じゅん",
        "jd": "じぇん",
        "jl": "じょん",
        "byz": "びゃん",
        "byn": "びゃん",
        "byj": "びゅん",
        "byd": "びぇん",
        "byl": "びょん",
        "pyz": "ぴゃん",
        "pyn": "ぴゃん",
        "pyj": "ぴゅん",
        "pyd": "ぴぇん",
        "pyl": "ぴょん",
        "pgz": "ぴゃん",
        "pgn": "ぴゃん",
        "pgj": "ぴゅん",
        "pgd": "ぴぇん",
        "pgl": "ぴょん",
        "fz": "ふぁん",
        "fn": "ふぁん",
        "fk": "ふぃん",
        "fj": "ふん",
        "fd": "ふぇん",
        "fl": "ふぉん",
        "vz": "ゔぁん",
        "vn": "ゔぁん",
        "vk": "ゔぃん",
        "vj": "ゔん",
        "vd": "ゔぇん",
        "vl": "ゔぉん",
        "tgk": "てぃん",
        "tgj": "とぅん",
        "dck": "でぃん",
        "dcj": "どぅん",
        "lz": "ぁん",
        "ln": "ぁん",
        "lk": "ぃん",
        "ld": "ぇん",
        "ll": "ぉん",
        "lyz": "ゃん",
        "lyn": "ゃん",
        "lyj": "ゅん",
        "lyl": "ょん",
        "kq": "かい",
        "kh": "くう",
        "kw": "けい",
        "kp": "こう",
        "sq": "さい",
        "sh": "すう",
        "sw": "せい",
        "sp": "そう",
        "tq": "たい",
        "th": "つう",
        "tw": "てい",
        "tp": "とう",
        "nq": "ない",
        "nh": "ぬう",
        "nw": "ねい",
        "np": "のう",
        "hq": "はい",
        "hh": "ふう",
        "hw": "へい",
        "hp": "ほう",
        "mq": "まい",
        "mh": "むう",
        "mw": "めい",
        "mp": "もう",
        "yq": "やい",
        "yh": "ゆう",
        "yp": "よう",
        "rq": "らい",
        "rh": "るう",
        "rw": "れい",
        "rp": "ろう",
        "gq": "がい",
        "gh": "ぐう",
        "gw": "げい",
        "gp": "ごう",
        "zq": "ざい",
        "zh": "ずう",
        "zw": "ぜい",
        "zp": "ぞう",
        "dq": "だい",
        "dh": "づう",
        "dw": "でい",
        "dp": "どう",
        "bq": "ばい",
        "bh": "ぶう",
        "bw": "べい",
        "bp": "ぼう",
        "pq": "ぱい",
        "ph": "ぷう",
        "pw": "ぺい",
        "pp": "ぽう",
        "kyq": "きゃい",
        "kyh": "きゅう",
        "kyw": "きぇい",
        "kyp": "きょう",
        "kgq": "きゃい",
        "kgh": "きゅう",
        "kgw": "きぇい",
        "kgp": "きょう",
        "syq": "しゃい",
        "syh": "しゅう",
        "syw": "しぇい",
        "syp": "しょう",
        "xq": "しゃい",
        "xh": "しゅう",
        "xw": "しぇい",
        "xp": "しょう",
        "tyq": "ちゃい",
        "tyh": "ちゅう",
        "tyw": "ちぇい",
        "typ": "ちょう",
        "cq": "ちゃい",
        "ch": "ちゅう",
        "cw": "ちぇい",
        "cp": "ちょう",
        "nyq": "にゃい",
        "nyh": "にゅう",
        "nyw": "にぇい",
        "nyp": "にょう",
        "ngq": "にゃい",
        "ngh": "にゅう",
        "ngw": "にぇい",
        "ngp": "にょう",
        "hyq": "ひゃい",
        "hyh": "ひゅう",
        "hyw": "ひぇい",
        "hyp": "ひょう",
        "hgq": "ひゃい",
        "hgh": "ひゅう",
        "hgw": "ひぇい",
        "hgp": "ひょう",
        "myq": "みゃい",
        "myh": "みゅう",
        "myw": "みぇい",
        "myp": "みょう",
        "mgq": "みゃい",
        "mgh": "みゅう",
        "mgw": "みぇい",
        "mgp": "みょう",
        "ryq": "りゃい",
        "ryh": "りゅう",
        "ryw": "りぇい",
        "ryp": "りょう",
        "gyq": "ぎゃい",
        "gyh": "ぎゅう",
        "gyw": "ぎぇい",
        "gyp": "ぎょう",
        "zyq": "じゃい",
        "zyh": "じゅう",
        "zyw": "じぇい",
        "zyp": "じょう",
        "jq": "じゃい",
        "jh": "じゅう",
        "jw": "じぇい",
        "jp": "じょう",
        "byq": "びゃい",
        "byh": "びゅう",
        "byw": "びぇい",
        "byp": "びょう",
        "pyq": "ぴゃい",
        "pyh": "ぴゅう",
        "pyw": "ぴぇい",
        "pyp": "ぴょう",
        "pgq": "ぴゃい",
        "pgh": "ぴゅう",
        "pgw": "ぴぇい",
        "pgp": "ぴょう",
        "fq": "ふぁい",
        "fh": "ふう",
        "fw": "ふぇい",
        "fp": "ふぉー",
        "vq": "ゔぁい",
        "vh": "ゔー",
        "vw": "ゔぇい",
        "vp": "ゔぉー",
        "tgh": "とぅー",
        "dch": "どぅー",
        "wq": "わい",
        "ww": "うぇい",
        "wp": "うぉー",
        "lq": "ぁい",
        "lh": "ぅう",
        "lw": "ぇい",
        "lp": "ぉう",
        "lyq": "ゃい",
        "lyh": "ゅう",
        "lyp": "ょう",
        "kf": "き",
        "jf": "じゅ",
        "hf": "ふ",
        "yf": "ゆ",
        "mf": "む",
        "nf": "ぬ",
        "df": "で",
        "cf": "ちぇ",
        "pf": "ぽん",
        "wf": "わい",
        "sf": "さい",
        "ss": "せい",
        "zc": "ざ",
        "zv": "ざい",
        "zf": "ぜ",
        "zx": "ぜい",
        "kt": "こと",
        "wt": "わた",
        "km": "かも",
        "sr": "する",
        "rr": "られ",
        "nb": "ねば",
        "nt": "にち",
        "st": "した",
        "mn": "もの",
        "tm": "ため",
        "tr": "たら",
        "zr": "ざる",
        "bt": "びと",
        "dt": "だち",
        "tt": "たち",
        "ms": "ます",
        "dm": "でも",
        "nr": "なる",
        "mt": "また",
        "gr": "がら",
        "wr": "われ",
        "ht": "ひと",
        "ds": "です",
        "kr": "から",
        "yr": "よる",
        "tb": "たび",
        "gt": "ごと"
    ], additionalMapping: [
        [.piece(.compositionSeparator)]: []
    ])
}
