// Copyright 2025 International Digital Economy Academy
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
///|
/// Language tag data (minimal subset of swash `text` module).
///
/// Ported from `swash/src/text/lang_data.rs`.
///|
const TEXT_LANG_ZHT_TAG : Tag = 0x5A485420 // "ZHT "
///|
const TEXT_LANG_ZHS_TAG : Tag = 0x5A485320 // "ZHS "
///|
let text_lang_tags : ReadOnlyArray[Tag] = [
0x41424120, 0x41424B20, 0x41434820, 0x41435220, 0x41445920, 0x41464B20, 0x41465220,
0x41475720, 0x41494F20, 0x414B4120, 0x414C5320, 0x414C5420, 0x414C5420, 0x414D4820,
0x414E4720, 0x41524120, 0x41524720, 0x41524920, 0x41524B20, 0x41524B20, 0x41534D20,
0x41535420, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820,
0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820,
0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820,
0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820,
0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820,
0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820, 0x41544820,
0x41544820, 0x41544820, 0x41565220, 0x41574120, 0x41594D20, 0x415A4220, 0x415A4520,
0x42414420, 0x42414720, 0x42414C20, 0x42414E20, 0x42415220, 0x42415520, 0x42424320,
0x42434820, 0x42445920, 0x42454C20, 0x42454D20, 0x42454E20, 0x42474320, 0x42475120,
0x42475220, 0x42484920, 0x42484920, 0x42484F20, 0x42494B20, 0x42494B20, 0x42494B20,
0x42494B20, 0x42494B20, 0x42494B20, 0x42494B20, 0x42494B20, 0x42494B20, 0x42494C20,
0x42495320, 0x424A4A20, 0x424B4620, 0x424C4920, 0x424C4B20, 0x424C4E20, 0x424C4E20,
0x424C5420, 0x424D4220, 0x424F5320, 0x42505920, 0x42524520, 0x42524820, 0x42524920,
0x42524D20, 0x42525820, 0x42534820, 0x42534B20, 0x42544920, 0x42544920, 0x42544920,
0x42544920, 0x42544920, 0x42544920, 0x42545320, 0x42554720, 0x42595620, 0x43414B20,
0x43415420, 0x43424B20, 0x4343484E, 0x4343484E, 0x4343484E, 0x4343484E, 0x4343484E,
0x4343484E, 0x4343484E, 0x4343484E, 0x4343484E, 0x4343484E, 0x4343484E, 0x4343484E,
0x4343484E, 0x4343484E, 0x43454220, 0x43474720, 0x43484120, 0x43484520, 0x43484720,
0x43484820, 0x43484920, 0x43484B20, 0x43484B30, 0x43484F20, 0x43485020, 0x43485220,
0x43485520, 0x43485920, 0x434A4120, 0x434A4D20, 0x434D5220, 0x434D5220, 0x434D5220,
0x434D5220, 0x434F5020, 0x434F5220, 0x434F5320, 0x43524520, 0x43525220, 0x43525220,
0x43525420, 0x43534220, 0x43534C20, 0x43535920, 0x43544720, 0x43554B20, 0x44414E20,
0x44415220, 0x44415820, 0x44435220, 0x44455520, 0x44474F20, 0x44475220, 0x44484720,
0x44495120, 0x44495620, 0x444A5220, 0x444A5230, 0x444E4720, 0x444E4A20, 0x444E4B20,
0x44524920, 0x44554A20, 0x44554A20, 0x44554E20, 0x445A4E20, 0x45424920, 0x45435220,
0x45435220, 0x45444F20, 0x45464920, 0x454C4C20, 0x454D4B20, 0x454E4720, 0x45525A20,
0x45535020, 0x45535520, 0x45544920, 0x45555120, 0x45564B20, 0x45564E20, 0x45574520,
0x46414E20, 0x46414E30, 0x46415220, 0x46415420, 0x46494E20, 0x464A4920, 0x464C4520,
0x464D5020, 0x464E4520, 0x464E4520, 0x464F4E20, 0x464F5320, 0x46524120, 0x46524320,
0x46524920, 0x46524C20, 0x46525020, 0x46544120, 0x46554C20, 0x46555620, 0x47414420,
0x47414520, 0x47414720, 0x47414C20, 0x47415720, 0x47455A20, 0x47494820, 0x47494C20,
0x47494C30, 0x474B5020, 0x474C4B20, 0x474D5A20, 0x474E4E20, 0x474F4720, 0x474F4E20,
0x47524E20, 0x47524F20, 0x47554120, 0x47554320, 0x47554620, 0x47554A20, 0x47555A20,
0x48414920, 0x48414C20, 0x48414C20, 0x48415220, 0x48415520, 0x48415720, 0x48415920,
0x48415A20, 0x48424E20, 0x48455220, 0x48494C20, 0x48494E20, 0x484D4120, 0x484D4E20,
0x484D4F20, 0x484E4420, 0x484E4420, 0x48524920, 0x48525620, 0x48554E20, 0x48594520,
0x48594530, 0x49424120, 0x49424220, 0x49424F20, 0x49444F20, 0x494A4F20, 0x494C4520,
0x494C4F20, 0x494E4120, 0x494E4420, 0x494E4720, 0x494E5520, 0x49504B20, 0x49524920,
0x49525420, 0x49534C20, 0x49534D20, 0x49544120, 0x49575220, 0x4A414D20, 0x4A414E20,
0x4A415620, 0x4A424F20, 0x4A435420, 0x4A494920, 0x4A554420, 0x4A554C20, 0x4B414220,
0x4B414230, 0x4B414320, 0x4B414C20, 0x4B414E20, 0x4B415220, 0x4B415420, 0x4B415A20,
0x4B444520, 0x4B454120, 0x4B454220, 0x4B454B20, 0x4B474520, 0x4B484120, 0x4B484B20,
0x4B484D20, 0x4B485320, 0x4B485420, 0x4B485620, 0x4B485720, 0x4B494B20, 0x4B495220,
0x4B495320, 0x4B495320, 0x4B495520, 0x4B4A4420, 0x4B4A5020, 0x4B4A5A20, 0x4B4B4E20,
0x4B4C4D20, 0x4B4D4220, 0x4B4D4E20, 0x4B4D4F20, 0x4B4D5320, 0x4B4D5A20, 0x4B4E5220,
0x4B4F4420, 0x4B4F4820, 0x4B4F4B20, 0x4B4F4D20, 0x4B4F4E20, 0x4B4F4E30, 0x4B4F5020,
0x4B4F5220, 0x4B4F5320, 0x4B4F5A20, 0x4B504C20, 0x4B524920, 0x4B524B20, 0x4B524C20,
0x4B524D20, 0x4B525420, 0x4B534820, 0x4B534830, 0x4B534920, 0x4B534D20, 0x4B535720,
0x4B554120, 0x4B554920, 0x4B554C20, 0x4B554D20, 0x4B555220, 0x4B555520, 0x4B555920,
0x4B594B20, 0x4B595520, 0x4C414420, 0x4C414820, 0x4C414B20, 0x4C414D20, 0x4C414F20,
0x4C415420, 0x4C415A20, 0x4C435220, 0x4C444B20, 0x4C455A20, 0x4C494A20, 0x4C494D20,
0x4C494E20, 0x4C495320, 0x4C4A5020, 0x4C4B4920, 0x4C4D4120, 0x4C4D4220, 0x4C4D4F20,
0x4C4D5720, 0x4C4F4D20, 0x4C524320, 0x4C524320, 0x4C524320, 0x4C524320, 0x4C534220,
0x4C534D20, 0x4C544820, 0x4C545A20, 0x4C554120, 0x4C554220, 0x4C554720, 0x4C554820,
0x4C554F20, 0x4C564920, 0x4D414420, 0x4D414720, 0x4D414820, 0x4D414A20, 0x4D414B20,
0x4D414C20, 0x4D414D20, 0x4D414E20, 0x4D415020, 0x4D415220, 0x4D415720, 0x4D415720,
0x4D415720, 0x4D415720, 0x4D415720, 0x4D415720, 0x4D415720, 0x4D424E20, 0x4D424F20,
0x4D434820, 0x4D435220, 0x4D444520, 0x4D445220, 0x4D454E20, 0x4D455220, 0x4D464120,
0x4D464520, 0x4D494E20, 0x4D495A20, 0x4D4B4420, 0x4D4B5220, 0x4D4B5720, 0x4D4C4520,
0x4D4C4720, 0x4D4C4E20, 0x4D4C5220, 0x4D4C5920, 0x4D4E4420, 0x4D4E4720, 0x4D4E4920,
0x4D4E4B20, 0x4D4E4B20, 0x4D4E4B20, 0x4D4E4B20, 0x4D4E4B20, 0x4D4E4B20, 0x4D4E4B20,
0x4D4E5820, 0x4D4F4820, 0x4D4F4B20, 0x4D4F4E20, 0x4D4F5320, 0x4D524920, 0x4D544820,
0x4D545320, 0x4D554E20, 0x4D555320, 0x4D574C20, 0x4D575720, 0x4D5A4E20, 0x4E414720,
0x4E414E20, 0x4E415020, 0x4E415320, 0x4E415520, 0x4E415620, 0x4E435220, 0x4E444220,
0x4E444220, 0x4E444320, 0x4E444720, 0x4E445320, 0x4E455020, 0x4E455720, 0x4E474120,
0x4E484320, 0x4E495320, 0x4E495320, 0x4E495520, 0x4E4B4C20, 0x4E4B4F20, 0x4E4C4420,
0x4E4F4520, 0x4E4F4720, 0x4E4F5220, 0x4E4F5620, 0x4E534D20, 0x4E534F20, 0x4E544120,
0x4E544F20, 0x4E594D20, 0x4E594E20, 0x4E5A4120, 0x4F434920, 0x4F435220, 0x4F4A4220,
0x4F524920, 0x4F524F20, 0x4F535320, 0x50414120, 0x50414720, 0x50414C20, 0x50414D20,
0x50414E20, 0x50415020, 0x50415030, 0x50415320, 0x50415520, 0x50434320, 0x50434420,
0x50444320, 0x50475220, 0x50484B20, 0x50494820, 0x50494C20, 0x504C4720, 0x504C4720,
0x504C4720, 0x504C4B20, 0x504D5320, 0x504E4220, 0x504F4820, 0x504F4E20, 0x50524F20,
0x50544720, 0x50574F20, 0x51494E20, 0x51494E20, 0x51494E20, 0x51494E20, 0x51494E20,
0x51494E20, 0x51494E20, 0x51494E20, 0x51494E20, 0x51494E20, 0x51494E20, 0x51494E20,
0x51494E20, 0x51494E20, 0x51494E20, 0x51494E20, 0x51494E20, 0x51494E20, 0x51494E20,
0x51554320, 0x51554820, 0x51555A20, 0x51564920, 0x51574820, 0x52414A20, 0x52415220,
0x52425520, 0x52435220, 0x52454A20, 0x52494120, 0x52494620, 0x52495420, 0x524B5720,
0x524D5320, 0x524D5920, 0x524F4D20, 0x524F5920, 0x52535920, 0x52544D20, 0x52554120,
0x52554E20, 0x52555020, 0x52555320, 0x53414420, 0x53414E20, 0x53415320, 0x53415420,
0x53415920, 0x53434E20, 0x53434F20, 0x53435320, 0x53454B20, 0x53454C20, 0x53474120,
0x53474F20, 0x53475320, 0x53484920, 0x53484E20, 0x53494220, 0x53494420, 0x53494720,
0x53494720, 0x534B5320, 0x534B5920, 0x534C4120, 0x534C4120, 0x534C5620, 0x534D4C20,
0x534D4F20, 0x534E4120, 0x534E4130, 0x534E4420, 0x534E4820, 0x534E4B20, 0x534F4720,
0x534F5020, 0x534F5420, 0x53514920, 0x53524220, 0x53524420, 0x53524B20, 0x53525220,
0x53534C20, 0x53534D20, 0x53545120, 0x53554B20, 0x53554E20, 0x53555220, 0x53564120,
0x53564520, 0x53574120, 0x53574B20, 0x53575A20, 0x53585420, 0x53585520, 0x53594C20,
0x53595220, 0x53595220, 0x53595220, 0x53595220, 0x53595220, 0x53595220, 0x53595245,
0x53595245, 0x5359524A, 0x5359524A, 0x5359524E, 0x5359524E, 0x535A4C20, 0x54414220,
0x54414A20, 0x54414D20, 0x54415420, 0x54435220, 0x54444420, 0x54454C20, 0x54455420,
0x54474C20, 0x54474E20, 0x54475220, 0x54475920, 0x54484120, 0x54485420, 0x54494220,
0x54495620, 0x544B4D20, 0x544D4820, 0x544D4E20, 0x544E4120, 0x544E4520, 0x544E4520,
0x544E4720, 0x544F4420, 0x544F4430, 0x54504920, 0x54524B20, 0x54534720, 0x54534A20,
0x54554120, 0x54554C20, 0x54554D20, 0x54555620, 0x54564C20, 0x54574920, 0x54595A20,
0x545A4D20, 0x545A4F20, 0x55444D20, 0x554B5220, 0x554D4220, 0x55524420, 0x55534220,
0x55594720, 0x555A4220, 0x56454320, 0x56454E20, 0x56495420, 0x564F4C20, 0x56524F20,
0x57414720, 0x57415220, 0x57435220, 0x57454C20, 0x574C4620, 0x574C4E20, 0x57544D20,
0x58424420, 0x58485320, 0x584A4220, 0x584B4620, 0x584F4720, 0x58504520, 0x59414B20,
0x59414F20, 0x59415020, 0x59424120, 0x59435220, 0x59494D20, 0x5A454120, 0x5A474820,
0x5A484120, 0x5A484820, 0x5A485020, 0x5A485320, 0x5A485420, 0x5A4E4420, 0x5A554C20,
0x5A5A4120,
]
///|
let text_lang_by_tag2 : ReadOnlyArray[(UInt, Int)] = [
(0x6161, 6),
(0x6162, 1),
(0x6166, 5),
(0x616B, 9),
(0x616B, 670),
(0x616D, 13),
(0x616E, 16),
(0x6172, 15),
(0x6173, 20),
(0x6176, 65),
(0x6179, 67),
(0x617A, 69),
(0x6261, 114),
(0x6265, 79),
(0x6267, 84),
(0x6269, 98),
(0x626D, 106),
(0x626E, 81),
(0x626F, 650),
(0x6272, 109),
(0x6273, 107),
(0x6361, 126),
(0x6365, 145),
(0x6368, 144),
(0x636F, 164),
(0x6372, 703),
(0x6372, 165),
(0x6373, 171),
(0x6375, 170),
(0x6376, 154),
(0x6379, 689),
(0x6461, 174),
(0x6465, 178),
(0x6476, 183),
(0x647A, 193),
(0x6565, 209),
(0x656C, 199),
(0x656C, 512),
(0x656E, 201),
(0x656F, 490),
(0x6573, 203),
(0x6574, 205),
(0x6575, 206),
(0x6661, 212),
(0x6666, 228),
(0x6669, 214),
(0x666A, 215),
(0x666F, 221),
(0x6672, 222),
(0x6679, 224),
(0x6761, 287),
(0x6761, 286),
(0x6764, 231),
(0x676C, 233),
(0x676E, 247),
(0x6775, 250),
(0x6776, 448),
(0x6861, 256),
(0x6865, 291),
(0x6869, 263),
(0x686F, 266),
(0x6872, 270),
(0x6874, 252),
(0x6875, 271),
(0x6879, 273),
(0x6879, 272),
(0x687A, 261),
(0x6961, 281),
(0x6964, 282),
(0x6965, 279),
(0x6967, 276),
(0x6969, 704),
(0x696B, 285),
(0x696F, 277),
(0x6973, 288),
(0x6974, 290),
(0x6975, 284),
(0x6A61, 293),
(0x6A76, 294),
(0x6B61, 312),
(0x6B61, 306),
(0x6B67, 341),
(0x6B69, 320),
(0x6B6A, 357),
(0x6B6B, 307),
(0x6B6C, 245),
(0x6B6D, 315),
(0x6B6E, 304),
(0x6B6F, 343),
(0x6B72, 335),
(0x6B73, 352),
(0x6B75, 361),
(0x6B76, 339),
(0x6B77, 163),
(0x6B79, 321),
(0x6C61, 371),
(0x6C62, 394),
(0x6C67, 397),
(0x6C69, 377),
(0x6C6E, 378),
(0x6C6F, 370),
(0x6C74, 393),
(0x6C75, 396),
(0x6C76, 400),
(0x6D67, 434),
(0x6D68, 403),
(0x6D69, 453),
(0x6D6B, 430),
(0x6D6C, 406),
(0x6D6C, 436),
(0x6D6E, 439),
(0x6D72, 410),
(0x6D73, 437),
(0x6D74, 455),
(0x6D79, 112),
(0x6E61, 465),
(0x6E62, 485),
(0x6E64, 469),
(0x6E65, 473),
(0x6E67, 471),
(0x6E6C, 482),
(0x6E6E, 492),
(0x6E72, 468),
(0x6E76, 50),
(0x6E76, 466),
(0x6E79, 148),
(0x6F63, 494),
(0x6F6A, 496),
(0x6F6D, 498),
(0x6F72, 497),
(0x6F73, 499),
(0x7061, 504),
(0x7069, 502),
(0x706C, 519),
(0x7073, 507),
(0x7074, 525),
(0x726D, 560),
(0x726E, 567),
(0x726F, 562),
(0x7275, 569),
(0x7277, 566),
(0x7361, 571),
(0x7363, 606),
(0x7364, 598),
(0x7365, 487),
(0x7367, 581),
(0x7369, 599),
(0x736B, 590),
(0x736C, 593),
(0x736D, 595),
(0x736E, 597),
(0x736F, 594),
(0x7371, 604),
(0x7372, 605),
(0x7373, 619),
(0x7374, 603),
(0x7375, 613),
(0x7376, 616),
(0x7377, 618),
(0x7461, 638),
(0x7465, 642),
(0x7467, 637),
(0x7468, 648),
(0x7469, 647),
(0x746B, 652),
(0x746C, 644),
(0x746E, 655),
(0x746F, 645),
(0x7472, 662),
(0x7473, 663),
(0x7474, 639),
(0x7479, 649),
(0x7567, 679),
(0x756B, 675),
(0x7572, 677),
(0x757A, 680),
(0x7665, 682),
(0x7669, 683),
(0x766F, 684),
(0x7761, 691),
(0x776F, 690),
(0x7868, 694),
(0x7969, 297),
(0x796F, 702),
(0x7A61, 707),
(0x7A75, 713),
]
///|
let text_lang_by_tag3 : ReadOnlyArray[(UInt, Int)] = [
(0x616172, 6),
(0x61626B, 1),
(0x616271, 0),
(0x616366, 210),
(0x616368, 2),
(0x616372, 3),
(0x616461, 186),
(0x616479, 4),
(0x616672, 5),
(0x616867, 7),
(0x616874, 33),
(0x616969, 617),
(0x616969, 628),
(0x61696F, 8),
(0x616977, 17),
(0x616B61, 670),
(0x616B61, 9),
(0x616C74, 12),
(0x616D66, 260),
(0x616D68, 13),
(0x616D77, 627),
(0x616E67, 14),
(0x61706A, 46),
(0x61706B, 45),
(0x61706C, 47),
(0x61706D, 48),
(0x617077, 49),
(0x617261, 15),
(0x617267, 16),
(0x61726E, 409),
(0x61736D, 20),
(0x617374, 21),
(0x61746A, 554),
(0x617476, 11),
(0x617661, 65),
(0x617761, 66),
(0x61796D, 67),
(0x617A62, 68),
(0x617A65, 69),
(0x62616B, 114),
(0x62616C, 101),
(0x62616D, 106),
(0x62616E, 73),
(0x626172, 74),
(0x626263, 76),
(0x626369, 75),
(0x62636C, 94),
(0x626371, 77),
(0x626372, 53),
(0x626479, 78),
(0x626561, 51),
(0x626562, 116),
(0x62656C, 79),
(0x62656D, 80),
(0x62656E, 81),
(0x626671, 70),
(0x626674, 105),
(0x626675, 367),
(0x626679, 71),
(0x626763, 82),
(0x626771, 83),
(0x626772, 545),
(0x626862, 86),
(0x626869, 85),
(0x62686F, 87),
(0x62696B, 92),
(0x62696E, 197),
(0x626973, 98),
(0x626A6A, 99),
(0x626A74, 104),
(0x626C61, 100),
(0x626C65, 103),
(0x626C6B, 102),
(0x626C6E, 95),
(0x626F64, 650),
(0x626F73, 107),
(0x627079, 108),
(0x627169, 388),
(0x627261, 111),
(0x627265, 109),
(0x627268, 110),
(0x627278, 113),
(0x62736B, 115),
(0x62746F, 96),
(0x627473, 122),
(0x627567, 123),
(0x62756C, 84),
(0x62756D, 117),
(0x627870, 118),
(0x627872, 553),
(0x62796E, 97),
(0x627976, 124),
(0x636166, 54),
(0x636166, 166),
(0x63616B, 125),
(0x636174, 126),
(0x63626B, 127),
(0x63626C, 529),
(0x63636F, 140),
(0x636562, 142),
(0x636573, 171),
(0x63666D, 253),
(0x636767, 143),
(0x636861, 144),
(0x636865, 145),
(0x63686A, 139),
(0x63686B, 150),
(0x63686F, 151),
(0x636870, 574),
(0x636870, 152),
(0x636870, 58),
(0x636871, 138),
(0x636872, 153),
(0x636875, 170),
(0x636876, 154),
(0x636879, 155),
(0x63687A, 137),
(0x636A61, 156),
(0x636A6D, 157),
(0x636B74, 149),
(0x636C63, 55),
(0x636C64, 626),
(0x636C65, 136),
(0x636D72, 534),
(0x636E62, 528),
(0x636E68, 544),
(0x636E6B, 531),
(0x636E6C, 135),
(0x636E74, 141),
(0x636E77, 543),
(0x636F70, 162),
(0x636F71, 25),
(0x636F72, 163),
(0x636F73, 164),
(0x637061, 134),
(0x637265, 165),
(0x637265, 703),
(0x637268, 168),
(0x63726A, 195),
(0x63726B, 688),
(0x63726C, 196),
(0x63726D, 421),
(0x63726D, 373),
(0x637278, 167),
(0x637278, 64),
(0x637361, 132),
(0x637362, 169),
(0x637368, 527),
(0x63736F, 131),
(0x637377, 476),
(0x637377, 467),
(0x637379, 539),
(0x637463, 26),
(0x637464, 538),
(0x637465, 130),
(0x637467, 172),
(0x63746C, 129),
(0x637473, 93),
(0x637563, 128),
(0x63756B, 173),
(0x63766E, 133),
(0x637764, 640),
(0x637764, 177),
(0x63796D, 689),
(0x637A74, 542),
(0x64616E, 174),
(0x64616F, 533),
(0x646172, 175),
(0x646178, 176),
(0x646575, 178),
(0x64676F, 179),
(0x646772, 59),
(0x646864, 416),
(0x646867, 181),
(0x64696E, 188),
(0x646971, 182),
(0x646976, 183),
(0x646A65, 184),
(0x646A72, 185),
(0x646E67, 192),
(0x646E6A, 187),
(0x646F69, 180),
(0x647362, 391),
(0x647775, 190),
(0x647779, 191),
(0x647975, 299),
(0x647A6F, 193),
(0x656669, 198),
(0x656C6C, 199),
(0x656C6C, 512),
(0x656D6B, 200),
(0x656D6B, 442),
(0x656E66, 218),
(0x656E67, 201),
(0x656E68, 656),
(0x65706F, 490),
(0x657374, 205),
(0x657375, 204),
(0x65746F, 119),
(0x657573, 206),
(0x657665, 208),
(0x65766E, 207),
(0x657765, 209),
(0x65776F, 120),
(0x66616E, 211),
(0x66616F, 221),
(0x666173, 212),
(0x666174, 213),
(0x66626C, 91),
(0x66696A, 215),
(0x66696C, 515),
(0x66696E, 214),
(0x666D70, 217),
(0x666F6E, 220),
(0x667261, 222),
(0x667263, 223),
(0x667270, 226),
(0x667279, 224),
(0x667566, 227),
(0x66756C, 228),
(0x667572, 225),
(0x667576, 229),
(0x676161, 230),
(0x676167, 232),
(0x67626D, 234),
(0x676365, 27),
(0x67657A, 235),
(0x676968, 236),
(0x67696C, 238),
(0x676B70, 239),
(0x676C61, 231),
(0x676C64, 462),
(0x676C65, 287),
(0x676C65, 286),
(0x676C67, 233),
(0x676C6B, 240),
(0x676C76, 448),
(0x676E6E, 242),
(0x676F67, 243),
(0x676F6E, 244),
(0x67726E, 247),
(0x677274, 246),
(0x677275, 601),
(0x677377, 10),
(0x677563, 248),
(0x677566, 249),
(0x67756A, 250),
(0x67756B, 241),
(0x67757A, 251),
(0x677769, 56),
(0x686161, 57),
(0x686172, 269),
(0x686174, 252),
(0x686175, 256),
(0x686177, 257),
(0x686179, 258),
(0x68617A, 259),
(0x686562, 291),
(0x686572, 261),
(0x68696C, 262),
(0x68696E, 263),
(0x686C74, 532),
(0x686D6E, 265),
(0x686D6F, 266),
(0x686E64, 267),
(0x686E65, 147),
(0x686E6F, 268),
(0x686F69, 63),
(0x686F6A, 255),
(0x687276, 270),
(0x687362, 678),
(0x68756E, 271),
(0x687570, 31),
(0x687965, 273),
(0x687965, 272),
(0x696261, 274),
(0x696262, 275),
(0x69626F, 276),
(0x69646F, 277),
(0x696762, 194),
(0x696969, 704),
(0x696A63, 278),
(0x696B75, 284),
(0x696C65, 279),
(0x696C6F, 280),
(0x696E61, 281),
(0x696E64, 282),
(0x696E67, 44),
(0x696E68, 283),
(0x69706B, 285),
(0x69736C, 288),
(0x697461, 290),
(0x6A616D, 292),
(0x6A6176, 294),
(0x6A626F, 295),
(0x6A6374, 296),
(0x6A706E, 293),
(0x6B6161, 348),
(0x6B6162, 301),
(0x6B616C, 245),
(0x6B616D, 330),
(0x6B616E, 304),
(0x6B6173, 352),
(0x6B6174, 312),
(0x6B6174, 306),
(0x6B6175, 335),
(0x6B617A, 307),
(0x6B6264, 300),
(0x6B6361, 314),
(0x6B6361, 318),
(0x6B6361, 316),
(0x6B6465, 308),
(0x6B6472, 350),
(0x6B6474, 363),
(0x6B6561, 309),
(0x6B656B, 311),
(0x6B6578, 328),
(0x6B6661, 336),
(0x6B6672, 302),
(0x6B6678, 359),
(0x6B6679, 331),
(0x6B6861, 354),
(0x6B6862, 693),
(0x6B686D, 315),
(0x6B6874, 317),
(0x6B6877, 319),
(0x6B696B, 320),
(0x6B696E, 566),
(0x6B6972, 321),
(0x6B6975, 324),
(0x6B6A64, 325),
(0x6B6A68, 313),
(0x6B6A70, 326),
(0x6B6A7A, 327),
(0x6B6B7A, 30),
(0x6B6C6E, 303),
(0x6B6D62, 418),
(0x6B6D77, 332),
(0x6B6D7A, 334),
(0x6B6F69, 342),
(0x6B6F6B, 338),
(0x6B6F6D, 339),
(0x6B6F6E, 341),
(0x6B6F72, 343),
(0x6B6F73, 344),
(0x6B6F79, 42),
(0x6B7065, 346),
(0x6B7076, 345),
(0x6B7079, 364),
(0x6B7173, 323),
(0x6B7179, 351),
(0x6B7263, 305),
(0x6B7263, 72),
(0x6B7269, 347),
(0x6B726C, 349),
(0x6B7275, 362),
(0x6B7368, 353),
(0x6B7373, 322),
(0x6B7377, 356),
(0x6B7462, 310),
(0x6B7475, 340),
(0x6B7477, 43),
(0x6B7561, 357),
(0x6B756D, 360),
(0x6B7572, 361),
(0x6B7575, 38),
(0x6B7863, 333),
(0x6B7875, 358),
(0x6B7975, 365),
(0x6C6164, 298),
(0x6C616F, 370),
(0x6C6174, 371),
(0x6C6176, 400),
(0x6C6265, 368),
(0x6C626A, 374),
(0x6C626C, 90),
(0x6C657A, 375),
(0x6C6966, 383),
(0x6C696A, 376),
(0x6C696D, 377),
(0x6C696E, 378),
(0x6C6973, 379),
(0x6C6974, 393),
(0x6C6A70, 380),
(0x6C6B69, 381),
(0x6C6C64, 366),
(0x6C6D6E, 369),
(0x6C6D6F, 384),
(0x6C6F6D, 386),
(0x6C7263, 389),
(0x6C747A, 394),
(0x6C7561, 395),
(0x6C7562, 396),
(0x6C7567, 397),
(0x6C756F, 399),
(0x6C7573, 429),
(0x6C7579, 398),
(0x6C757A, 390),
(0x6C7A7A, 372),
(0x6D6164, 401),
(0x6D6167, 402),
(0x6D6168, 403),
(0x6D6169, 454),
(0x6D616B, 431),
(0x6D616C, 436),
(0x6D616C, 406),
(0x6D616D, 407),
(0x6D616E, 447),
(0x6D6172, 410),
(0x6D626F, 419),
(0x6D6374, 121),
(0x6D6466, 450),
(0x6D6472, 423),
(0x6D6479, 433),
(0x6D656E, 422),
(0x6D6572, 425),
(0x6D6661, 426),
(0x6D6665, 427),
(0x6D6872, 382),
(0x6D696E, 428),
(0x6D6B64, 430),
(0x6D6B75, 446),
(0x6D6B77, 432),
(0x6D6C67, 434),
(0x6D6C71, 441),
(0x6D6C71, 435),
(0x6D6C74, 455),
(0x6D6E63, 420),
(0x6D6E69, 440),
(0x6D6E6B, 445),
(0x6D6E6B, 438),
(0x6D6E73, 408),
(0x6D6E77, 451),
(0x6D6F68, 449),
(0x6D6F6E, 439),
(0x6D6F73, 452),
(0x6D7065, 404),
(0x6D7268, 530),
(0x6D7269, 453),
(0x6D726A, 264),
(0x6D7361, 437),
(0x6D7363, 443),
(0x6D7472, 412),
(0x6D7573, 457),
(0x6D7662, 23),
(0x6D7665, 417),
(0x6D776B, 444),
(0x6D776C, 458),
(0x6D7772, 414),
(0x6D7777, 459),
(0x6D7961, 112),
(0x6D796D, 424),
(0x6D7976, 202),
(0x6D7A6E, 460),
(0x6E6167, 461),
(0x6E6170, 463),
(0x6E6175, 465),
(0x6E6176, 466),
(0x6E6176, 50),
(0x6E626C, 468),
(0x6E6463, 470),
(0x6E6465, 469),
(0x6E646F, 471),
(0x6E6473, 472),
(0x6E6570, 473),
(0x6E6577, 474),
(0x6E6761, 475),
(0x6E676C, 385),
(0x6E676F, 620),
(0x6E6975, 479),
(0x6E6976, 237),
(0x6E6A7A, 478),
(0x6E6C64, 482),
(0x6E6E6F, 492),
(0x6E6F62, 485),
(0x6E6F64, 489),
(0x6E6F65, 483),
(0x6E6F67, 484),
(0x6E6F76, 486),
(0x6E716F, 481),
(0x6E736B, 464),
(0x6E736F, 488),
(0x6E7961, 148),
(0x6E796D, 491),
(0x6E796E, 480),
(0x6E7A61, 493),
(0x6F6369, 494),
(0x6F6A69, 496),
(0x6F6A73, 495),
(0x6F6B6D, 337),
(0x6F7269, 497),
(0x6F726D, 498),
(0x6F7373, 499),
(0x706167, 501),
(0x70616D, 503),
(0x70616E, 504),
(0x706170, 506),
(0x706175, 508),
(0x706363, 509),
(0x706364, 510),
(0x706365, 516),
(0x70636B, 537),
(0x706463, 511),
(0x70686B, 513),
(0x706968, 514),
(0x706C69, 502),
(0x706C6C, 518),
(0x706C70, 505),
(0x706D73, 520),
(0x706E62, 521),
(0x706F68, 522),
(0x706F6C, 519),
(0x706F6E, 523),
(0x706F72, 525),
(0x70726F, 524),
(0x707273, 189),
(0x707573, 507),
(0x70776F, 526),
(0x717563, 546),
(0x717568, 547),
(0x71757A, 548),
(0x717669, 549),
(0x717768, 550),
(0x72616A, 551),
(0x726172, 552),
(0x726262, 517),
(0x72626C, 89),
(0x72656A, 555),
(0x726961, 556),
(0x726966, 557),
(0x726974, 558),
(0x726B69, 19),
(0x726B77, 559),
(0x726D79, 561),
(0x726D7A, 18),
(0x726E6C, 254),
(0x726F68, 560),
(0x726F6D, 563),
(0x726F6E, 562),
(0x72746D, 565),
(0x727565, 564),
(0x72756E, 567),
(0x727570, 568),
(0x727573, 569),
(0x727772, 415),
(0x736167, 581),
(0x736168, 699),
(0x73616D, 500),
(0x73616E, 571),
(0x736173, 572),
(0x736174, 573),
(0x73636B, 570),
(0x73636E, 575),
(0x73636F, 576),
(0x736373, 60),
(0x736373, 577),
(0x736373, 591),
(0x736568, 596),
(0x73656B, 52),
(0x73656C, 579),
(0x73657A, 541),
(0x736761, 580),
(0x736773, 582),
(0x736777, 146),
(0x736869, 583),
(0x73686E, 584),
(0x736964, 586),
(0x73696E, 599),
(0x736A64, 355),
(0x736A6F, 585),
(0x736B72, 607),
(0x736C6B, 590),
(0x736C76, 593),
(0x736D61, 610),
(0x736D65, 487),
(0x736D6A, 392),
(0x736D6E, 289),
(0x736D6F, 595),
(0x736D73, 589),
(0x736E61, 597),
(0x736E64, 598),
(0x736E6B, 600),
(0x736F6D, 594),
(0x736F70, 602),
(0x736F74, 603),
(0x737061, 203),
(0x737169, 604),
(0x737264, 606),
(0x737270, 605),
(0x737272, 608),
(0x737273, 62),
(0x737377, 619),
(0x737471, 611),
(0x737476, 587),
(0x73756B, 612),
(0x73756E, 613),
(0x737571, 614),
(0x737661, 615),
(0x737761, 618),
(0x737762, 158),
(0x737765, 616),
(0x737776, 411),
(0x737875, 621),
(0x737963, 631),
(0x737963, 629),
(0x737963, 625),
(0x737963, 633),
(0x73796C, 622),
(0x737972, 632),
(0x737972, 634),
(0x737972, 624),
(0x737972, 630),
(0x737A6C, 635),
(0x746161, 35),
(0x746162, 636),
(0x746168, 649),
(0x74616D, 638),
(0x746174, 639),
(0x746175, 36),
(0x746362, 37),
(0x746365, 39),
(0x746370, 540),
(0x746379, 666),
(0x74637A, 536),
(0x746464, 641),
(0x74656C, 642),
(0x74656D, 654),
(0x746574, 643),
(0x74666E, 34),
(0x74676A, 477),
(0x74676B, 637),
(0x74676C, 644),
(0x746778, 32),
(0x746861, 648),
(0x746874, 41),
(0x746967, 646),
(0x746972, 647),
(0x746976, 651),
(0x746D68, 653),
(0x746F64, 660),
(0x746F69, 658),
(0x746F6C, 28),
(0x746F6E, 645),
(0x747069, 661),
(0x747275, 623),
(0x747275, 665),
(0x74736A, 664),
(0x74736E, 655),
(0x74736F, 663),
(0x74746D, 40),
(0x74756B, 652),
(0x74756D, 667),
(0x747572, 662),
(0x747575, 29),
(0x74766C, 669),
(0x747863, 22),
(0x747976, 668),
(0x74797A, 671),
(0x747A6D, 672),
(0x747A6F, 673),
(0x75626C, 88),
(0x75646D, 674),
(0x756967, 679),
(0x756B72, 675),
(0x756D62, 676),
(0x756E72, 456),
(0x757264, 677),
(0x757A62, 680),
(0x766563, 681),
(0x76656E, 682),
(0x766965, 683),
(0x766C73, 216),
(0x766D77, 405),
(0x766F6C, 684),
(0x76726F, 685),
(0x776172, 687),
(0x776272, 686),
(0x776C63, 159),
(0x776C65, 588),
(0x776C6B, 24),
(0x776C6E, 691),
(0x776E69, 160),
(0x776F6C, 690),
(0x777279, 413),
(0x77746D, 692),
(0x78616C, 329),
(0x78616C, 659),
(0x78616E, 578),
(0x78686F, 694),
(0x786A62, 695),
(0x786B66, 696),
(0x786F67, 697),
(0x787065, 698),
(0x78736C, 592),
(0x78736C, 609),
(0x78736C, 61),
(0x79616F, 700),
(0x796170, 701),
(0x796964, 297),
(0x796F72, 702),
(0x79726B, 657),
(0x79726B, 219),
(0x7A646A, 161),
(0x7A6561, 705),
(0x7A6768, 706),
(0x7A6861, 707),
(0x7A6E65, 712),
(0x7A6F6D, 535),
(0x7A756C, 713),
(0x7A756D, 387),
(0x7A7A61, 714),
]
///|
let text_lang_entries : ReadOnlyArray[(String, String)] = [
("Abaza", "abq"),
("Abkhazian", "ab"),
("Acoli", "ach"),
("Achi", "acr"),
("Adyghe", "ady"),
("Afrikaans", "af"),
("Afar", "aa"),
("Qimant", "ahg"),
("Aiton", "aio"),
("Akan", "ak"),
("Swiss German", "gsw"),
("Northern Altai", "atv"),
("Southern Altai", "alt"),
("Amharic", "am"),
("Old English (ca. 450-1100)", "ang"),
("Arabic", "ar"),
("Aragonese", "an"),
("Aari", "aiw"),
("Marma", "rmz"),
("Rakhine", "rki"),
("Assamese", "as"),
("Asturian", "ast"),
("Tsetsaut", "txc"),
("Mattole", "mvb"),
("Wailaki", "wlk"),
("Coquille", "coq"),
("Chetco", "ctc"),
("Galice", "gce"),
("Tolowa", "tol"),
("Tututni", "tuu"),
("Kaska", "kkz"),
("Hupa", "hup"),
("Tagish", "tgx"),
("Ahtena", "aht"),
("Tanaina", "tfn"),
("Lower Tanana", "taa"),
("Upper Tanana", "tau"),
("Tanacross", "tcb"),
("Upper Kuskokwim", "kuu"),
("Southern Tutchone", "tce"),
("Northern Tutchone", "ttm"),
("Tahltan", "tht"),
("Koyukon", "koy"),
("Kato", "ktw"),
("Degexit'an", "ing"),
("Kiowa Apache", "apk"),
("Jicarilla Apache", "apj"),
("Lipan Apache", "apl"),
("Mescalero-Chiricahua Apache", "apm"),
("Western Apache", "apw"),
("Navajo", "nv"),
("Beaver", "bea"),
("Sekani", "sek"),
("Babine", "bcr"),
("Southern Carrier", "caf"),
("Chilcotin", "clc"),
("Gwichʼin", "gwi"),
("Han", "haa"),
("Chipewyan", "chp"),
("Dogrib", "dgr"),
("North Slavey", "scs"),
("South Slavey", "xsl"),
("Sarsi", "srs"),
("Holikachuk", "hoi"),
("Carrier", "crx"),
("Avaric", "av"),
("Awadhi", "awa"),
("Aymara", "ay"),
("South Azerbaijani", "azb"),
("Azerbaijani", "az"),
("Badaga", "bfq"),
("Bagheli", "bfy"),
("Karachay-Balkar", "krc"),
("Balinese", "ban"),
("Bavarian", "bar"),
("Baoulé", "bci"),
("Batak Toba", "bbc"),
("Bench", "bcq"),
("Bandjalang", "bdy"),
("Belarusian", "be"),
("Bemba (Zambia)", "bem"),
("Bengali", "bn"),
("Haryanvi", "bgc"),
("Bagri", "bgq"),
("Bulgarian", "bg"),
("Bhilali", "bhi"),
("Bhili", "bhb"),
("Bhojpuri", "bho"),
("Buhi'non Bikol", "ubl"),
("Miraya Bikol", "rbl"),
("Libon Bikol", "lbl"),
("West Albay Bikol", "fbl"),
("Bikol", "bik"),
("Northern Catanduanes Bikol", "cts"),
("Central Bikol", "bcl"),
("Southern Catanduanes Bikol", "bln"),
("Rinconada Bikol", "bto"),
("Bilin", "byn"),
("Bislama", "bi"),
("Kanauji", "bjj"),
("Siksika", "bla"),
("Baluchi", "bal"),
("Pa'o Karen", "blk"),
("Balanta-Kentohe", "ble"),
("Balanta-Ganja", "bjt"),
("Balti", "bft"),
("Bambara", "bm"),
("Bosnian", "bs"),
("Bishnupriya", "bpy"),
("Breton", "br"),
("Brahui", "brh"),
("Braj", "bra"),
("Burmese", "my"),
("Bodo (India)", "brx"),
("Bashkir", "ba"),
("Burushaski", "bsk"),
("Bebele", "beb"),
("Bulu (Cameroon)", "bum"),
("Bebil", "bxp"),
("Eton (Cameroon)", "eto"),
("Ewondo", "ewo"),
("Mengisa", "mct"),
("Batak Simalungun", "bts"),
("Buginese", "bug"),
("Medumba", "byv"),
("Kaqchikel", "cak"),
("Catalan", "ca"),
("Chavacano", "cbk"),
("Usila Chinantec", "cuc"),
("Tlacoatzintepec Chinantec", "ctl"),
("Tepinapa Chinantec", "cte"),
("Sochiapam Chinantec", "cso"),
("Chiltepec Chinantec", "csa"),
("Valle Nacional Chinantec", "cvn"),
("Palantla Chinantec", "cpa"),
("Lalana Chinantec", "cnl"),
("Lealao Chinantec", "cle"),
("Ozumacín Chinantec", "chz"),
("Quiotepec Chinantec", "chq"),
("Ojitlán Chinantec", "chj"),
("Comaltepec Chinantec", "cco"),
("Tepetotutla Chinantec", "cnt"),
("Cebuano", "ceb"),
("Chiga", "cgg"),
("Chamorro", "ch"),
("Chechen", "ce"),
("Sebat Bet Gurage", "sgw"),
("Chhattisgarhi", "hne"),
("Nyanja", "ny"),
("Chukot", "ckt"),
("Chuukese", "chk"),
("Choctaw", "cho"),
("Chipewyan", "chp"),
("Cherokee", "chr"),
("Chuvash", "cv"),
("Cheyenne", "chy"),
("Western Cham", "cja"),
("Eastern Cham", "cjm"),
("Maore Comorian", "swb"),
("Mwali Comorian", "wlc"),
("Ndzwani Comorian", "wni"),
("Ngazidja Comorian", "zdj"),
("Coptic", "cop"),
("Cornish", "kw"),
("Corsican", "co"),
("Cree", "cr"),
("Southern Carrier", "caf"),
("Carrier", "crx"),
("Crimean Tatar", "crh"),
("Kashubian", "csb"),
("Church Slavic", "cu"),
("Czech", "cs"),
("Chittagonian", "ctg"),
("San Blas Kuna", "cuk"),
("Danish", "da"),
("Dargwa", "dar"),
("Dayi", "dax"),
("Woods Cree", "cwd"),
("German", "de"),
("Dogri (individual language)", "dgo"),
("Dogri (macrolanguage)", "doi"),
("Dhangu-Djangu", "dhg"),
("Dimli (individual language)", "diq"),
("Dhivehi", "dv"),
("Zarma", "dje"),
("Djambarrpuyngu", "djr"),
("Adangme", "ada"),
("Dan", "dnj"),
("Dinka", "din"),
("Dari", "prs"),
("Dhuwal", "dwu"),
("Dhuwaya", "dwy"),
("Dungan", "dng"),
("Dzongkha", "dz"),
("Ebira", "igb"),
("Southern East Cree", "crj"),
("Northern East Cree", "crl"),
("Bini", "bin"),
("Efik", "efi"),
("Modern Greek (1453-)", "el"),
("Eastern Maninkakan", "emk"),
("English", "en"),
("Erzya", "myv"),
("Spanish", "es"),
("Central Yupik", "esu"),
("Estonian", "et"),
("Basque", "eu"),
("Evenki", "evn"),
("Even", "eve"),
("Ewe", "ee"),
("Saint Lucian Creole French", "acf"),
("Fang (Equatorial Guinea)", "fan"),
("Persian", "fa"),
("Fanti", "fat"),
("Finnish", "fi"),
("Fijian", "fj"),
("Vlaams", "vls"),
("Fe'fe'", "fmp"),
("Forest Enets", "enf"),
("Nenets", "yrk"),
("Fon", "fon"),
("Faroese", "fo"),
("French", "fr"),
("Cajun French", "frc"),
("Western Frisian", "fy"),
("Friulian", "fur"),
("Arpitan", "frp"),
("Pular", "fuf"),
("Fulah", "ff"),
("Nigerian Fulfulde", "fuv"),
("Ga", "gaa"),
("Scottish Gaelic", "gd"),
("Gagauz", "gag"),
("Galician", "gl"),
("Garhwali", "gbm"),
("Geez", "gez"),
("Githabul", "gih"),
("Gilyak", "niv"),
("Gilbertese", "gil"),
("Guinea Kpelle", "gkp"),
("Gilaki", "glk"),
("Gumuz", "guk"),
("Gumatj", "gnn"),
("Gogo", "gog"),
("Gondi", "gon"),
("Kalaallisut", "kl"),
("Garo", "grt"),
("Guarani", "gn"),
("Wayuu", "guc"),
("Gupapuyngu", "guf"),
("Gujarati", "gu"),
("Gusii", "guz"),
("Haitian", "ht"),
("Falam Chin", "cfm"),
("Ranglong", "rnl"),
("Hadothi", "hoj"),
("Hausa", "ha"),
("Hawaiian", "haw"),
("Haya", "hay"),
("Hazaragi", "haz"),
("Hamer-Banna", "amf"),
("Herero", "hz"),
("Hiligaynon", "hil"),
("Hindi", "hi"),
("Western Mari", "mrj"),
("Hmong", "hmn"),
("Hiri Motu", "ho"),
("Southern Hindko", "hnd"),
("Northern Hindko", "hno"),
("Harari", "har"),
("Croatian", "hr"),
("Hungarian", "hu"),
("Armenian", "hy"),
("Armenian", "hy"),
("Iban", "iba"),
("Ibibio", "ibb"),
("Igbo", "ig"),
("Ido", "io"),
("Izon", "ijc"),
("Interlingue", "ie"),
("Iloko", "ilo"),
("Interlingua (International Auxiliary Language Association)", "ia"),
("Indonesian", "id"),
("Ingush", "inh"),
("Inuktitut", "iu"),
("Inupiaq", "ik"),
("Irish", "ga"),
("Irish", "ga"),
("Icelandic", "is"),
("Inari Sami", "smn"),
("Italian", "it"),
("Hebrew", "he"),
("Jamaican Creole English", "jam"),
("Japanese", "ja"),
("Javanese", "jv"),
("Lojban", "jbo"),
("Krymchak", "jct"),
("Yiddish", "yi"),
("Ladino", "lad"),
("Dyula", "dyu"),
("Kabardian", "kbd"),
("Kabyle", "kab"),
("Kachhi", "kfr"),
("Kalenjin", "kln"),
("Kannada", "kn"),
("Karachay-Balkar", "krc"),
("Georgian", "ka"),
("Kazakh", "kk"),
("Makonde", "kde"),
("Kabuverdianu", "kea"),
("Kambaata", "ktb"),
("Kekchí", "kek"),
("Georgian", "ka"),
("Khakas", "kjh"),
("Khanty", "kca"),
("Central Khmer", "km"),
("Khanty", "kca"),
("Khamti", "kht"),
("Khanty", "kca"),
("Khowar", "khw"),
("Kikuyu", "ki"),
("Kirghiz", "ky"),
("Southern Kisi", "kss"),
("Northern Kissi", "kqs"),
("Kirmanjki (individual language)", "kiu"),
("Southern Kiwai", "kjd"),
("Pwo Eastern Karen", "kjp"),
("Bumthangkha", "kjz"),
("Kukna", "kex"),
("Kalmyk", "xal"),
("Kamba (Kenya)", "kam"),
("Kumaoni", "kfy"),
("Komo (Democratic Republic of Congo)", "kmw"),
("Konso", "kxc"),
("Khorasani Turkish", "kmz"),
("Kanuri", "kr"),
("Kodava", "kfa"),
("Middle Korean (10th-16th cent.)", "okm"),
("Konkani (macrolanguage)", "kok"),
("Komi", "kv"),
("Kituba (Democratic Republic of Congo)", "ktu"),
("Kongo", "kg"),
("Komi-Permyak", "koi"),
("Korean", "ko"),
("Kosraean", "kos"),
("Komi-Zyrian", "kpv"),
("Kpelle", "kpe"),
("Krio", "kri"),
("Kara-Kalpak", "kaa"),
("Karelian", "krl"),
("Karaim", "kdr"),
("Koorete", "kqy"),
("Kashmiri", "ks"),
("Kölsch", "ksh"),
("Khasi", "kha"),
("Kildin Sami", "sjd"),
("S'gaw Karen", "ksw"),
("Kuanyama", "kj"),
("Kui (India)", "kxu"),
("Kullu Pahari", "kfx"),
("Kumyk", "kum"),
("Kurdish", "ku"),
("Kurukh", "kru"),
("Kuy", "kdt"),
("Koryak", "kpy"),
("Western Kayah", "kyu"),
("Ladin", "lld"),
("Gahri", "bfu"),
("Lak", "lbe"),
("Lambadi", "lmn"),
("Lao", "lo"),
("Latin", "la"),
("Laz", "lzz"),
("Moose Cree", "crm"),
("Ladakhi", "lbj"),
("Lezghian", "lez"),
("Ligurian", "lij"),
("Limburgan", "li"),
("Lingala", "ln"),
("Lisu", "lis"),
("Lampung Api", "ljp"),
("Laki", "lki"),
("Eastern Mari", "mhr"),
("Limbu", "lif"),
("Lombard", "lmo"),
("Lomwe", "ngl"),
("Loma (Liberia)", "lom"),
("Kumzari", "zum"),
("Bakhtiari", "bqi"),
("Northern Luri", "lrc"),
("Southern Luri", "luz"),
("Lower Sorbian", "dsb"),
("Lule Sami", "smj"),
("Lithuanian", "lt"),
("Luxembourgish", "lb"),
("Luba-Lulua", "lua"),
("Luba-Katanga", "lu"),
("Ganda", "lg"),
("Luyia", "luy"),
("Luo (Kenya and Tanzania)", "luo"),
("Latvian", "lv"),
("Madurese", "mad"),
("Magahi", "mag"),
("Marshallese", "mh"),
("Majang", "mpe"),
("Makhuwa", "vmw"),
("Malayalam", "ml"),
("Mam", "mam"),
("Mansi", "mns"),
("Mapudungun", "arn"),
("Marathi", "mr"),
("Shekhawati", "swv"),
("Mewari", "mtr"),
("Merwari", "wry"),
("Marwari", "mwr"),
("Marwari (India)", "rwr"),
("Dhundari", "dhd"),
("Marwari (Pakistan)", "mve"),
("Kimbundu", "kmb"),
("Mbo (Cameroon)", "mbo"),
("Manchu", "mnc"),
("Moose Cree", "crm"),
("Mende (Sierra Leone)", "men"),
("Mandar", "mdr"),
("Me'en", "mym"),
("Meru", "mer"),
("Pattani Malay", "mfa"),
("Morisyen", "mfe"),
("Minangkabau", "min"),
("Lushai", "lus"),
("Macedonian", "mk"),
("Makasar", "mak"),
("Kituba (Congo)", "mkw"),
("Male (Ethiopia)", "mdy"),
("Malagasy", "mg"),
("Western Maninkakan", "mlq"),
("Malayalam", "ml"),
("Malay (macrolanguage)", "ms"),
("Mandinka", "mnk"),
("Mongolian", "mn"),
("Manipuri", "mni"),
("Western Maninkakan", "mlq"),
("Eastern Maninkakan", "emk"),
("Sankaran Maninka", "msc"),
("Kita Maninkakan", "mwk"),
("Mandinka", "mnk"),
("Konyanka Maninka", "mku"),
("Mandingo", "man"),
("Manx", "gv"),
("Mohawk", "moh"),
("Moksha", "mdf"),
("Mon", "mnw"),
("Mossi", "mos"),
("Maori", "mi"),
("Maithili", "mai"),
("Maltese", "mt"),
("Mundari", "unr"),
("Creek", "mus"),
("Mirandese", "mwl"),
("Hmong Daw", "mww"),
("Mazanderani", "mzn"),
("Naga Pidgin", "nag"),
("Nanai", "gld"),
("Neapolitan", "nap"),
("Naskapi", "nsk"),
("Nauru", "na"),
("Navajo", "nv"),
("Swampy Cree", "csw"),
("South Ndebele", "nr"),
("North Ndebele", "nd"),
("Ndau", "ndc"),
("Ndonga", "ng"),
("Low German", "nds"),
("Nepali (macrolanguage)", "ne"),
("Newari", "new"),
("Ngbaka", "nga"),
("Swampy Cree", "csw"),
("Tagin", "tgj"),
("Nyishi", "njz"),
("Niuean", "niu"),
("Nyankole", "nyn"),
("N'Ko", "nqo"),
("Dutch", "nl"),
("Nimadi", "noe"),
("Nogai", "nog"),
("Norwegian Bokmål", "nb"),
("Novial", "nov"),
("Northern Sami", "se"),
("Pedi", "nso"),
("Northern Thai", "nod"),
("Esperanto", "eo"),
("Nyamwezi", "nym"),
("Norwegian Nynorsk", "nn"),
("Tigon Mbembe", "nza"),
("Occitan (post 1500)", "oc"),
("Severn Ojibwa", "ojs"),
("Ojibwa", "oj"),
("Oriya (macrolanguage)", "or"),
("Oromo", "om"),
("Ossetian", "os"),
("Samaritan Aramaic", "sam"),
("Pangasinan", "pag"),
("Pali", "pi"),
("Pampanga", "pam"),
("Panjabi", "pa"),
("Palpa", "plp"),
("Papiamento", "pap"),
("Pushto", "ps"),
("Palauan", "pau"),
("Bouyei", "pcc"),
("Picard", "pcd"),
("Pennsylvania German", "pdc"),
("Modern Greek (1453-)", "el"),
("Phake", "phk"),
("Pitcairn-Norfolk", "pih"),
("Filipino", "fil"),
("Ruching Palaung", "pce"),
("Rumai Palaung", "rbb"),
("Shwe Palaung", "pll"),
("Polish", "pl"),
("Piemontese", "pms"),
("Western Panjabi", "pnb"),
("Poqomchi'", "poh"),
("Pohnpeian", "pon"),
("Old Provençal (to 1500)", "pro"),
("Portuguese", "pt"),
("Pwo Western Karen", "pwo"),
("Asho Chin", "csh"),
("Chinbon Chin", "cnb"),
("Bualkhaw Chin", "cbl"),
("Mara Chin", "mrh"),
("Khumi Chin", "cnk"),
("Matu Chin", "hlt"),
("Daai Chin", "dao"),
("Mro-Khimi Chin", "cmr"),
("Zou", "zom"),
("Thado Chin", "tcz"),
("Paite Chin", "pck"),
("Tedim Chin", "ctd"),
("Siyin Chin", "csy"),
("Tawr Chin", "tcp"),
("Senthang Chin", "sez"),
("Zotung Chin", "czt"),
("Ngawn Chin", "cnw"),
("Hakha Chin", "cnh"),
("Bawm Chin", "bgr"),
("K'iche'", "quc"),
("South Bolivian Quechua", "quh"),
("Cusco Quechua", "quz"),
("Imbabura Highland Quichua", "qvi"),
("Huaylas Ancash Quechua", "qwh"),
("Rajasthani", "raj"),
("Rarotongan", "rar"),
("Russia Buriat", "bxr"),
("Atikamekw", "atj"),
("Rejang", "rej"),
("Riang (India)", "ria"),
("Tarifit", "rif"),
("Ritarungo", "rit"),
("Arakwal", "rkw"),
("Romansh", "rm"),
("Vlax Romani", "rmy"),
("Romanian", "ro"),
("Romany", "rom"),
("Rusyn", "rue"),
("Rotuman", "rtm"),
("Kinyarwanda", "rw"),
("Rundi", "rn"),
("Macedo-Romanian", "rup"),
("Russian", "ru"),
("Sadri", "sck"),
("Sanskrit", "sa"),
("Sasak", "sas"),
("Santali", "sat"),
("Chipewyan", "chp"),
("Sicilian", "scn"),
("Scots", "sco"),
("North Slavey", "scs"),
("Xamtanga", "xan"),
("Selkup", "sel"),
("Old Irish (to 900)", "sga"),
("Sango", "sg"),
("Samogitian", "sgs"),
("Tachelhit", "shi"),
("Shan", "shn"),
("Xibe", "sjo"),
("Sidamo", "sid"),
("Silt'e", "stv"),
("Wolane", "wle"),
("Skolt Sami", "sms"),
("Slovak", "sk"),
("North Slavey", "scs"),
("South Slavey", "xsl"),
("Slovenian", "sl"),
("Somali", "so"),
("Samoan", "sm"),
("Sena", "seh"),
("Shona", "sn"),
("Sindhi", "sd"),
("Sinhala", "si"),
("Soninke", "snk"),
("Kistane", "gru"),
("Songe", "sop"),
("Southern Sotho", "st"),
("Albanian", "sq"),
("Serbian", "sr"),
("Sardinian", "sc"),
("Saraiki", "skr"),
("Serer", "srr"),
("South Slavey", "xsl"),
("Southern Sami", "sma"),
("Saterfriesisch", "stq"),
("Sukuma", "suk"),
("Sundanese", "su"),
("Suri", "suq"),
("Svan", "sva"),
("Swedish", "sv"),
("Assyrian Neo-Aramaic", "aii"),
("Swahili (macrolanguage)", "sw"),
("Swati", "ss"),
("Ngoni", "ngo"),
("Upper Saxon", "sxu"),
("Sylheti", "syl"),
("Turoyo", "tru"),
("Syriac", "syr"),
("Classical Syriac", "syc"),
("Chaldean Neo-Aramaic", "cld"),
("Western Neo-Aramaic", "amw"),
("Assyrian Neo-Aramaic", "aii"),
("Classical Syriac", "syc"),
("Syriac", "syr"),
("Classical Syriac", "syc"),
("Syriac", "syr"),
("Classical Syriac", "syc"),
("Syriac", "syr"),
("Silesian", "szl"),
("Tabassaran", "tab"),
("Tajik", "tg"),
("Tamil", "ta"),
("Tatar", "tt"),
("Woods Cree", "cwd"),
("Tai Nüa", "tdd"),
("Telugu", "te"),
("Tetum", "tet"),
("Tagalog", "tl"),
("Tonga (Tonga Islands)", "to"),
("Tigre", "tig"),
("Tigrinya", "ti"),
("Thai", "th"),
("Tahitian", "ty"),
("Tibetan", "bo"),
("Tiv", "tiv"),
("Turkmen", "tk"),
("Tamashek", "tmh"),
("Timne", "tem"),
("Tswana", "tn"),
("Tundra Enets", "enh"),
("Nenets", "yrk"),
("Tonga (Zambia)", "toi"),
("Kalmyk", "xal"),
("Toma", "tod"),
("Tok Pisin", "tpi"),
("Turkish", "tr"),
("Tsonga", "ts"),
("Tshangla", "tsj"),
("Turoyo", "tru"),
("Tulu", "tcy"),
("Tumbuka", "tum"),
("Tuvinian", "tyv"),
("Tuvalu", "tvl"),
("Akan", "ak"),
("Tày", "tyz"),
("Central Atlas Tamazight", "tzm"),
("Tzotzil", "tzo"),
("Udmurt", "udm"),
("Ukrainian", "uk"),
("Umbundu", "umb"),
("Urdu", "ur"),
("Upper Sorbian", "hsb"),
("Uighur", "ug"),
("Uzbek", "uz"),
("Venetian", "vec"),
("Venda", "ve"),
("Vietnamese", "vi"),
("Volapük", "vo"),
("Võro", "vro"),
("Wagdi", "wbr"),
("Waray (Philippines)", "war"),
("Plains Cree", "crk"),
("Welsh", "cy"),
("Wolof", "wo"),
("Walloon", "wa"),
("Mewati", "wtm"),
("Lü", "khb"),
("Xhosa", "xh"),
("Minjungbal", "xjb"),
("Khengkha", "xkf"),
("Soga", "xog"),
("Liberia Kpelle", "xpe"),
("Yakut", "sah"),
("Yao", "yao"),
("Yapese", "yap"),
("Yoruba", "yo"),
("Cree", "cr"),
("Sichuan Yi", "ii"),
("Zeeuws", "zea"),
("Standard Moroccan Tamazight", "zgh"),
("Zhuang", "za"),
("Chinese", "zh"),
("Chinese", "zh"),
("Chinese", "zh"),
("Chinese", "zh"),
("Zande (individual language)", "zne"),
("Zulu", "zu"),
("Zaza", "zza"),
]